1

The two following commands are inputted into the Javascript live console, but return identical results from HTTP requests (whose methods appear slightly different).

The node is fully synced as indicated in the following result and the block count is keeping up as a synced node would be expected.

> eth.syncing
false

However the transaction pool remains empty (meaning the txpool.content command is useless).

> txpool.status
{
  pending: 0,
  queued: 0
}

This is the incantation I use to start the node.

~geth --config ./config.toml --datadir ./node/ --cache 18000 --txlookuplimit 0 --syncmode light --rpcapi txpool_content --txpool.globalslots=2500 --txpool.globalqueue=250 --http --http.api eth,net,web3,txpool console

Strangely, from within the console, I can use the following incantation to view pending transactions.

eth.getTransaction(eth.getBlock("pending").transactions[0])

But this does not help me access the tx-pool from outside the console, nor is it clear how to access the whole data structure rather than a single index even from within the console. Trying to show the whole structure (omitting the index) gives this result:

> eth.getTransaction(eth.getBlock("pending").transactions)
Error: invalid argument 0: json: cannot unmarshal non-string into Go value of type common.Hash
        at web3.js:6405:37(47)
        at web3.js:5115:62(37)
        at <eval>:1:19(9)

I was under the impression that txpool.status was global - if it is the case that the txpool namespace is for local transactions only, how does one view the global txpool and/or access it from outside the console?

Thanks.

5
  • What does eth.blockNumber returns? That eth.syncing returns false doesn't necessarily mean it has finished syncing it might be disconnected from others peers and it isn't able to continue syncing.
    – Ismael
    Commented Jun 24, 2021 at 19:14
  • It returns a new, increasing number each time - so it appears to be keeping up. Commented Jun 25, 2021 at 22:02
  • I haven't used a geth instance in light mode to check pending transactions, perhaps they aren't supported in that mode since they can't be verified.
    – Ismael
    Commented Jun 25, 2021 at 22:09
  • 1
    Well, as per my post, it is still possible to see pending transactions. Commented Jun 26, 2021 at 19:57
  • I'm currently having the same problem, Have you solved it? In addition, my node is not 100% sync and I don't understand why currentBlock: 8775607, highestBlock: 8775711,
    – Oriok
    Commented Jul 1, 2021 at 11:58

1 Answer 1

3

If my source still applies, light node cannot maintain a pool of pending transactions (except its own transactions).

A light client only maintains its own transactions. It cannot maintain a pool of pending transactions, since it cannot check the validity of those transactions (without the state, which is costly to pull from the network for every single tx).

Edit:

Also, kind of already asked here last year. So it seems still true.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.