The EVM module is still in active development: Some of what is detailed here may change or be removed entirely as development continues. This document represents the current state of the implementation.

Quick Summary

Most Important Differences for Developers:
  1. Instant finality - No block reorganizations, transactions are final after one block
  2. 1-2 second blocks - Much faster than Ethereum’s 12-15 seconds
  3. Configurable base fee - Can be dynamic (EIP-1559) or disabled, distributed to validators instead of burned
  4. Native IBC - Built-in cross-chain communication without bridges
  5. Cosmos precompiles - Direct access to staking, governance, and other Cosmos SDK modules
  6. No pending state - Transactions are either in mempool or committed
  7. EIP compatibility - Most Core EIPs supported with some consensus-related exceptions (see full matrix)

Core Differences

AspectCosmos EVMStandard EVMImpact
Transaction OrderingFee priority and nonce with mempoolGas price and nonceSimilar ordering with two-tier system
Transactions per BlockMultiple per accountMultiple per accountFull Ethereum compatibility
MempoolTwo-tiered mempoolTraditional mempoolSupports nonce gaps and batching
Block RewardsNative token inflation to validatorsBlock rewards + tipsDifferent economic model
ConsensusTendermint BFTProof of Work/Stake1-2 second vs 12+ second blocks
FinalityImmediate (single block)Probabilistic (12+ confirmations)No waiting period vs 12-15 minute finality
Chain ReorganizationsNot possiblePossibleEvent handling simplified
Address FormatsDual (0x… and cosmos1…)Ethereum only (0x…)Cross-format compatibility
Gas TokenNative chain tokenETH/derivativesChain-specific economics
Base FeeConfigurable (can be 0 or dynamic)Dynamic based on demandChain-specific configuration
Block Time1-2 seconds12-15 seconds (varies by L2)Faster transaction confirmation
Cross-chainNative IBCBridge protocolsBuilt-in interoperability

Gas Price Behavior

// May return 0 if NoBaseFee is true, or dynamic value if EIP-1559 is enabled
uint256 baseFee = block.basefee;

// BaseFee is distributed to validators (not burned)
// Lower-bounded by global min-gas-price
uint256 gasPrice = tx.gasprice;
Cosmos EVM supports EIP-1559 with dynamic base fees, but with key differences:
  • Base fee is distributed to validators instead of burned (preserving token economics)
  • Can be disabled via NoBaseFee parameter (returns 0 for block.basefee)
  • Lower-bounded by global min-gas-price configuration
  • Calculated based on previous block’s gas usage when enabled
  • Unlike Ethereum where base fee is burned, Cosmos EVM maintains token supply

Precompiled Contracts

Cosmos EVM Precompiles

Cosmos EVM provides access to native Cosmos SDK modules through precompiled contracts:
ModuleAddressPurpose
Staking0x0000000000000000000000000000000000000800Delegate, undelegate, redelegate tokens
Distribution0x0000000000000000000000000000000000000801Claim rewards, manage withdrawals
IBC Transfer0x0000000000000000000000000000000000000802Cross-chain token transfers
Governance0x0000000000000000000000000000000000000805Submit/vote on proposals
Bank0x0000000000000000000000000000000000000804ERC20-style access to native tokens
Slashing0x0000000000000000000000000000000000000806Validator slashing and jail management
Bech320x0000000000000000000000000000000000000400Address format conversion
P2560x0000000000000000000000000000000000000100P-256 elliptic curve operations
ERC20Dynamic per tokenStandard ERC20 for native Cosmos tokens
WERC20Dynamic per tokenWrapped native token functionality
For detailed usage examples and implementation guides, see Precompiled Contracts.

Standard EVM Precompiles

Standard cryptographic functions available on both implementations:
AddressFunctionAvailable on Cosmos EVM
0x01ecrecoverYes
0x02sha256Yes
0x03ripemd160Yes
0x04identityYes
0x05modexpYes
0x06ecaddYes
0x07ecmulYes
0x08ecpairingYes
0x09blake2fYes

JSON-RPC Method Support

Cosmos EVM implements most standard Ethereum JSON-RPC methods with some limitations due to consensus differences:
Method CategoryExamplesNotes
Core Methodseth_getBalance, eth_call, eth_sendTransaction, eth_getTransactionReceiptFull compatibility
Gas Methodseth_gasPrice, eth_estimateGas, eth_maxPriorityFeePerGas, eth_feeHistoryFull EIP-1559 support
Block Methodseth_blockNumber, eth_getBlockByHash, eth_getBlockByNumberImmediate finality
Mining Stub Methodseth_coinbase, eth_mining (always false), eth_hashrate (always 0)Returns static values for compatibility
Uncle Methodseth_getUncleCount* (always 0), eth_getUncleBy* (always null)Returns expected values for no uncles
Filter Methodseth_newFilter, eth_newBlockFilter, eth_getFilterChanges, eth_getFilterLogsFull filter support with block range limits
Transaction Methodseth_resend, eth_sendRawTransaction, eth_getTransactionByHashFull transaction management
Personal Methodspersonal_sign, personal_newAccount, personal_importRawKey, personal_sendTransaction, personal_ecRecover, personal_lockAccount, personal_unlockAccountFull implementation
Debug Methodsdebug_traceTransaction, debug_traceBlockByNumber, debug_traceCall, debug_memStats, debug_freeOSMemory, etc.Full implementation
Admin Methodsadmin_peers, admin_nodeInfo, admin_datadir, admin_startHTTP, admin_stopHTTP, admin_startWS, admin_stopWSFull implementation
For a complete list of all JSON-RPC methods with implementation status, see the Ethereum JSON-RPC Methods reference.

Additional JSON-RPC Methods

Cosmos EVM implements these non-standard methods:
MethodPurpose
eth_getTransactionLogsRetrieve logs for a specific transaction
eth_getBlockReceiptsGet all receipts for a given block
debug_freeOSMemoryForce garbage collection
debug_setGCPercentConfigure garbage collector
debug_memStatsReturn detailed memory statistics
debug_setBlockProfileRateSet block profiling rate
debug_writeBlockProfileWrite block profile to file
debug_writeMemProfileWrite memory profile to file
debug_writeMutexProfileWrite mutex profile to file

Unimplemented Standard Methods

These standard Ethereum methods are not available:
MethodCategoryReason
All trace_* methodsTraceParity/OpenEthereum trace methods not implemented
eth_subscribe syncingWebSocketOnly newHeads, logs, and newPendingTransactions events supported

Non-Relevant RPC Namespaces

The following Ethereum RPC namespaces are not implemented or relevant to Cosmos EVM due to architectural differences:
NamespacePurposeWhy Not Relevant
les_*Light Ethereum SubprotocolCosmos uses full nodes with Tendermint consensus, no light client protocol
clique_*Clique PoA consensusCosmos uses Tendermint BFT consensus instead of Proof of Authority
engine_*Engine API for PoSUsed for Ethereum’s execution/consensus client separation, not applicable with Tendermint
trace_*Parity/OpenEthereum tracingDifferent tracing implementation, limited debug_* methods available instead
miner_*Mining operationsNo mining in Tendermint BFT consensus, but stub methods respond for compatibility
parity_*Parity-specific methodsClient-specific methods not implemented
bor_*Polygon Bor consensusChain-specific consensus methods not applicable
Cosmos EVM focuses on implementing the core eth_*, web3_*, net_*, txpool_*, personal_*, debug_*, and admin_* namespaces that are essential for Ethereum compatibility and developer tooling.

Address Format Examples

Cosmos EVM supports dual address formats with deterministic conversion:
Ethereum: 0x742d35cc6644c068532fddb11B4C36A58D6D3eAb
Cosmos:   cosmos1wskntvnryr5qxpe4tv5k64rhc6kx6ma4dxjmav
Both formats represent the same account and can be used interchangeably. Use the Bech32 precompile at 0x0000000000000000000000000000000000000400 for conversion.

EIP Compatibility

Cosmos EVM implements most Ethereum Improvement Proposals (EIPs) through the Geth EVM, with modifications for Cosmos consensus compatibility.
For a comprehensive searchable table of all 339+ Core EIPs with implementation status, see the EIP Compatibility Matrix.

Implementation Strategy

  1. Core EVM Features: Most opcodes and execution features are inherited directly from Geth EVM
  2. Consensus-Related: Features related to PoW/PoS consensus are not applicable due to Tendermint BFT
  3. Economic Model: EIP-1559 implemented with modifications (fees to validators instead of burning)
  4. Future Support: Critical EIPs like EIP-7702 are actively being developed

Key EIP Implementation Differences

EIP-1559 (Dynamic Base Fee)

  • Supported
  • Base fee is distributed to validators instead of burned
  • Can be disabled via NoBaseFee parameter
  • Lower-bounded by global min-gas-price
  • Maintains token supply unlike Ethereum

EIP-155 (Replay Protection)

  • Different implementation
  • Currently enforced at chain level rather than per-transaction
  • Plans to align with Geth implementation for better compatibility
  • See GitHub Issue #401

EIP-7702 (Set Code for EOAs)

  • Coming in v0.5.0
  • Will enable account abstraction capabilities
  • Critical for wallet innovation and user experience improvements

EIP-2681 (Nonce Limit)

  • Partial support
  • Needs stricter overflow checking at AnteHandler
  • See GitHub Issue #400

EIP-2930 (Access Lists)

  • Fully supported
  • eth_createAccessList method implemented
  • Transaction access lists fully functional
The following categories of EIPs are not applicable due to Cosmos using Tendermint BFT consensus:
  • Difficulty adjustments: EIP-100, 649, 1234, 2384, 3554, 4345, 5133
  • Proof-of-Work to Proof-of-Stake transition: EIP-3675
  • Beacon chain operations: EIP-4788, 4895, 7002, etc.
  • Validator deposits and withdrawals: EIP-6110, 7044, 7045, 7251, 7514

Additional Key Differences

Transaction Execution

  • Two-tiered mempool: Local queue for gapped nonces, public pool for executable transactions
  • Fee-priority ordering: Transactions ordered by fee and nonce similar to Ethereum
  • Multiple transactions per block per EOA: Full support for batched transactions
  • Transaction replacement: Same-nonce transactions with higher fees replace lower-fee ones
  • Deterministic execution: Same transaction order for all validators due to BFT consensus

State and Storage

  • No state rent: No storage rent or state expiry mechanisms
  • Pruning: Historical state can be pruned based on node configuration
  • Archive nodes: Full historical state requires archive node configuration

Network Architecture

  • Validator set: Fixed validator set with stake-based voting power
  • No light clients: Full or archive nodes only, no light client protocol
  • P2P differences: Uses Tendermint P2P networking instead of devp2p

Developer Considerations

  • Gas refunds: At least 50% of unused gas is refunded (configurable)
  • Revert reasons: Full revert reason strings always available
  • Event reliability: Events are immediately final, no need to wait for confirmations
  • Block timestamps: More reliable due to BFT consensus requirements
  • Account abstraction: EIP-7702 support coming in v0.5.0 for EOA code delegation
  • Opcode differences: DIFFICULTY/PREVRANDAO returns 0, COINBASE returns empty address
  • Chain ID: Enforced at chain level rather than per-transaction (EIP-155)
  • Storage costs: No state rent mechanisms, pruning configurable per node