20. Mempool
The mempool is the waiting area for pending transactions before they are included in a block.
20.1 Fee-Priority Ordering
Kortana’s mempool strictly prioritizes transactions by Fee (Priority Tip). The highest-paying transactions are bumped to the top of the queue.
20.2 Nonce Ordering
For a given sender, transactions are strictly ordered by Nonce. A transaction with nonce 5 will never be executed before nonce 4, regardless of the fee attached.
20.3 Authenticated Senders
Upon admission to the mempool, the secp256k1 or Ed25519 signature is verified, and the recovered sender address is cached. Consensus and execution layers read this cached address, meaning cryptographic recovery happens exactly once per transaction.
20.4 Admission Rules
Transactions are rejected from the mempool if:
- The signature is invalid or malleable (fails EIP-2 low-S check).
- The transaction size exceeds
128 KiB. - The base fee is below the network minimum (
1 gwei). - The sender does not have enough DNR to cover
gas_limit * max_fee.
20.5 Replacement Bump
If a user wants to speed up a pending transaction, they can broadcast a new transaction with the same nonce. Kortana requires a minimum percentage replacement bump (typically 10% higher fee) to accept the replacement and evict the old transaction, preventing mempool spam.
20.6 Eviction
If the mempool reaches its memory capacity, it evicts the lowest-paying transactions. Transactions that remain pending for too long (e.g., due to a fee that is consistently below the base fee) are also eventually dropped.
20.7 Deterministic Selection
When a validator is scheduled as the leader, it pulls transactions from the mempool deterministically, ensuring that block construction maximizes fee revenue while strictly obeying nonce ordering.