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
    Jun 24 at 19:14
  • It returns a new, increasing number each time - so it appears to be keeping up. Jun 25 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
    Jun 25 at 22:09
  • 1
    Well, as per my post, it is still possible to see pending transactions. Jun 26 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,
    – Oriol
    Jul 1 at 11:58
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, privacy policy and cookie policy

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