0

I encountered a problem, where a web3j transaction was successfully submitted via IPC call and yet, it was not submitted to mempool for another 40 minutes. Etherscan did not show the TX as pending and I am positive that it was not queued in mempool (as in txpool.status).

Is there any known buffer in either web3j, or geth that will queue transactions before sending them to the network?

I am using web3j 5.0.0 and Geth 1.10.3.

1

Geth nodes can configure what transactions they are willing to accept in their txpool. See the Transaction Pools Options section here.

You did not give much details, but I can speculate on a few reasons that could explain a delay.

  • The node txpool global slots or accounts slots was full and your gas price was not high enough to replace another pending transaction in the txpool.
  • Your gas price was below the gas price limit of the node (minimum gas price at which the tx will be accepted).
  • Your transaction was queued because there was a gap in the nonces. This gap was filled 40 minutes later by you.
  • There is a bug in you web3j code that delayed sending the transaction.

FYI, I use web3js and a local geth node and my transactions are included in the txpool instantly.

2
  • What means instantly? I'm seeing delays of up to 100ms until my tx shows up in local mempool. Send via ICP and checked via web3 pending transaction subscription.
    – flo
    Dec 5 '21 at 18:22
  • 1
    I did not do a specific benchmark, so I don't know what's typical.
    – Undead8
    Dec 5 '21 at 20:32

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.