Skip to content

Experimental EVM mempool not gossiping nonce + n transactions #889

@jhelison

Description

@jhelison

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:

  1. TX A with nonce + 1 is created, lands in queue
  2. TX B with nonce + 0 is created, lands in runnable
  3. TX B is processed and lands in a block
  4. 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:

  1. TX A with nonce + 1 is created, lands in queue
  2. TX B with nonce + 0 is created, lands in runnable
  3. TX B is processed and lands in a block
  4. 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:

  1. Send an EVM TX with nonce + 1
  2. 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions