-
Notifications
You must be signed in to change notification settings - Fork 147
Closed
Description
Issue description
Recently, we have found an issue where the transactions with nonce + n were not being gossiped.
This is the behaviour that we have faced:
If sent to a Validator node with enough voting power
Within a validator, the message is kept on the local mempool and all TXs are added to a block:
- TX A with nonce + 1 is created, lands in queue
- TX B with nonce + 0 is created, lands in runnable
- TX B is processed and lands in a block
- TX A is processed and lands in a block
Non validator node
On non-validator nodes, only the runnable TX is gossiped to the validator and added to a block:
- TX A with nonce + 1 is created, lands in queue
- TX B with nonce + 0 is created, lands in runnable
- TX B is processed and lands in a block
- TX A is now stuck and can't be re-sent unless overpriced under the same nonce
How to replicate
This issue can be replicated by:
- Have a node with the Experimental EVM Mempool enabled
- A node available with P2P connections to a validator, transactions must be sent to the public node
The following must be applied:
- Send an EVM TX with nonce + 1
- Send an EVM TX with nonce + 0 (expected nonce)
The following will happen:
- Only the TX with nonce + 0 will be executed
- TX with nonce + 1 will be stuck on the local mempool and will not be gossiped
- Wallet will be stuck unless an overpriced TX is sent to recover the Nonce + 1 TX
The following would be the expected behaviour:
- Nonce + 0 should be executed
- Nonce + 1 should be executed (after internal mempool reordering)
vladjdk
Metadata
Metadata
Assignees
Labels
No labels