evmd. For conceptual information about mempool design and architecture, see the Mempool Concepts page.
The mempool setup is split across two locations:
evmd/mempool.go—configureEVMMempoolmust be called from yourapp.goaftersetAnteHandlermempool/— the mempool implementation (EVMMempool,TxPool,Rechecker,ReapList,RecheckPool, etc)
MinTip are exposed via
app.toml and require no code changes. The legacy
pool (legacypool.LegacyPool) is a port of go-ethereum’s transaction pool and
handles all EVM transaction ordering and fee enforcement. Some advanced
settings are not covered by app.toml, and require modifying
createMempoolConfig in evmd/mempool.go. BlockGasLimit is read from
consensus_params.block.max_gas in genesis.json.
Configuration Options
TheConfig struct controls mempool behavior:
mempool/mempool.go
Defaults and Fallbacks
- If
BlockGasLimitis0, the mempool uses a fallback of100_000_000gas. - If
LegacyPoolConfigis not provided, defaults fromlegacypool.DefaultConfigare used. - If
CosmosPoolConfigis not provided, a defaultPriorityNonceMempoolis created with:- Priority =
(fee_amount / gas_limit)in the EVM coin denom - Comparator = big-int comparison (higher is selected first)
MinValue = 0
- Priority =
MinTipis optional. If unset, selection uses the effective tip from each tx (min(gas_tip_cap, gas_fee_cap - base_fee)).- If
PendingTxProposalTimeoutis not provided, 0 is used. This means unlimited timeout and always wait for all tx rechecking to finish before creating a proposal. - If
InsertQueueSizeis 0, the mempool uses a fallback of 5000. - If
EnableTxTrackeris not provided, it is kept false.
Custom Legacy Pool Configuration
Customize EVM transaction pool parameters:evmd/mempool.go
Custom Cosmos Mempool Configuration
The mempool uses aPriorityNonceMempool for Cosmos transactions by default. You can customize the priority calculation:
evmd/mempool.go
Custom Block Gas Limit
BlockGasLimit is read automatically from consensus_params.block.max_gas in genesis.json — it is not an app.toml setting. To change it, update the genesis file before chain start. The value can also be overridden in code:
evmd/mempool.go
Event Bus Integration
Users must connect the mempool to CometBFT’s EventBus so it can react to finalized blocks:evmd/app.go
app.toml Configuration
The following settings can be configured inapp.toml and take effect at node startup without code changes:
Monitoring and Debugging
Use the txpool RPC methods to monitor mempool state:txpool_status: Get pending and queued transaction countstxpool_content: View all transactions in the pooltxpool_inspect: Get human-readable transaction summariestxpool_contentFrom: View transactions from specific addresses
Related Documentation
- Mempool Concepts - Understanding mempool behavior and design
- EVM Module Integration - Prerequisites for mempool integration
- JSON-RPC Methods - Mempool query methods