Transactions submitted to the Ethereum network through an Ethereum node can have one of the two following statuses before they propagated to the network and included in a block:
Pending are the transactions in the transaction pool that are ready to be included in a block.
Queued are the transactions waiting to become the pending transactions.
Each transaction has an account nonce (not to be confused with the block nonce). Every time an account does a transaction, the account nonce of the transaction is incremented by 1.
The transactions created with the account nonce in sequence go directly in the pool of pending transactions and are eventually included in a block.
The transactions created with the account nonce not in sequence get the status queued and remain queued until all transactions with the account nonce in sequence are created.
Account 0x123... creates a transaction for the first time. The transaction gets the account nonce 0. The transaction goes directly into the pending pool and is eventually processed.
A subsequent transaction from account 0x123... is automatically incremented by 1 and gets the account nonce 1. The transaction goes directly into the pending pool and is eventually processed.
If account 0x123... creates a third transaction and manually sets the transaction's account nonce to 3, the transaction will get the status queued because there is no transaction with the account nonce 2. The queued transaction will not be propagated to the network until there is a transaction with the account nonce in sequence.
Once account 0x123... creates a transaction with the account nonce 2, both the transactions with the account nonce 2 and account nonce 3 will move to the status pending and will be included in a block.
- Checking pending and queued transactions in your Ethereum node's local pool
- Fixing queued transactions with the account nonce not in sequence