Skip to main content
Cosmos EVM provides full Ethereum compatibility for Cosmos SDK chains. Existing contracts, tools, and workflows run without modification: deploy Solidity contracts, connect MetaMask, and use the same libraries and frameworks you already know.

Solidity Smart Contracts

The Cosmos EVM smart contract development flow is identical to the flow on Ethereum. Contracts that work on Ethereum work on Cosmos EVM without code changes. The same tools, the same Solidity, the same patterns.

Development

Write Solidity using Hardhat, Foundry, or Remix with no custom configuration needed. Point your tooling at your chain’s JSON-RPC endpoint and chain ID and you’re set. See the tooling overview for a full list of supported tools, and the quick-start guide for a step-by-step contract deployment walkthrough.

Deployment

Deploy using standard Ethereum tools by pointing them at your chain’s RPC endpoint. Deployment transactions go through the JSON-RPC or Cosmos gRPC interface and are processed by the EVM module. Once deployed, contract bytecode is stored in chain state and callable at its Ethereum address like any other chain.

Upgrading

Cosmos EVM supports all standard EVM upgrade patterns:
  • Proxy patterns (EIP-1967, Transparent Proxy, UUPS): Delegate calls to an implementation contract. Upgrading means swapping the implementation address in the proxy without touching the proxy’s storage or address.
  • Diamond pattern (EIP-2535): Modular contracts split into “facets” that can be added, replaced, or removed independently. The diamond routes calls to the appropriate facet, enabling granular upgrades without redeploying the whole contract.
Any upgrade architecture that works on Ethereum works on Cosmos EVM.

Supported Standards

Cosmos EVM supports all standard EVM opcodes, EIPs, and ERC token interfaces up to the Prague hard fork.

EIPs

The following are notable supported EIPs; the full list is much longer.
EIPNamePurpose
EIP-155Replay ProtectionChain ID in signatures prevents cross-chain replay attacks
EIP-712Typed Structured Data SigningSign structured data, human-readable messages, and custom Cosmos transactions
EIP-1559Dynamic FeesBase fee + priority fee model; base fee is distributed to validators rather than burned
EIP-2535Diamond StandardProxy pattern for upgradeable contracts with multiple implementation facets
EIP-2935Historical Block HashesBLOCKHASH opcode provides access to up to 8192 previous block hashes (configurable)
EIP-4337Account AbstractionSmart contract wallets can pay fees, batch transactions, and use custom auth schemes
EIP-7702Set Code for EOATemporarily assigns contract code to an EOA for sponsored transactions and complex auth

ERCs

Any ERC standard that runs on the EVM is compatible with Cosmos EVM. The most commonly used are:
  • ERC-20 — Fungible Tokens: Standard interface for currency representations with transfer, approval, and allowance mechanisms.
  • ERC-721 — Non-Fungible Tokens: Standard for unique asset identifiers, digital certificates, or proof of ownership records.
  • ERC-1155 — Multi-Token Standard: Supports both fungible and non-fungible assets in a single contract, enabling batch operations and reduced deployment costs for complex asset systems.

Opcodes

Cosmos EVM supports all EVM opcodes up to the Prague hard fork. For the full reference, see evm.codes. The following are not supported:
  • EIP-4844 — Blob-Carrying Transactions: Blob data and L2-specific functionality.
  • EIP-4399 — PREVRANDAO: The replacement of the DIFFICULTY opcode with PREVRANDAO.

Tooling

Any tool that connects to a standard Ethereum JSON-RPC endpoint works with Cosmos EVM without custom configuration.
ToolCategory
Hardhat, Foundry, RemixContract development
OpenZeppelin ContractsSmart contract libraries
Forge, HardhatTesting & fuzzing
MetaMask, WalletConnect, RabbyWallets
ethers.js, viem, web3.js, wagmiJavaScript libraries
BlockscoutBlock explorer

JSON-RPC

The JSON-RPC interface implements the full Ethereum spec. Point any standard tool at your chain’s RPC endpoint and it works.

Ethereum RPC Compatibility

Most standard Ethereum JSON-RPC methods are supported, with some returning stub values for compatibility. Click to view the complete reference.
All standard transaction, query, and subscription methods work as expected — eth_sendRawTransaction, eth_call, eth_estimateGas, event logs and filters, WebSocket subscriptions, and the debug namespace for tracing. A few things to know:
  • eth_gasPrice returns 0 — use EIP-1559 fee fields instead
  • Mining-related methods don’t apply (consensus is handled by CometBFT)
  • txpool methods require the experimental mempool to be enabled

Beyond Ethereum

Cosmos EVM adds capabilities on top of full Ethereum compatibility. None of these change how existing contracts or tooling behave.
AreaEthereumCosmos EVM
Block time~12 seconds1–2 seconds
Finality12+ blocks (~3 min)1 block (~2 seconds)
ReorganizationsPossibleNot possible
Cross-chainBridge protocolsNative IBC
Fee distributionBase fee burnedDistributed to validators

Finality

Cosmos EVM transactions are final after one block (~2 seconds) via CometBFT consensus—no waiting for confirmations, no reorganizations possible. The validator set requires 2/3+ stake agreement for any block to be committed.

Gas & fees

Cosmos EVM uses EIP-1559 dynamic fees. Unlike Ethereum, the base fee is distributed to validators and delegators rather than burned. The base fee can also be disabled entirely via the NoBaseFee parameter, and a chain-wide minimum gas price floor is configurable.

Address system

Every account has two representations that reference the same underlying key:
Ethereum: 0x742d35cc6644c068532fddb11B4C36A58D6D3eAb
Cosmos:   cosmos1wskntvnryr5qxpe4tv5k64rhc6kx6ma4dxjmav

Chain IDs

Cosmos EVM uses two independent chain IDs: a Cosmos Chain ID (string, e.g. cosmosevm-1) and an EVM Chain ID (integer, e.g. 9000). These are configured separately, unlike legacy Ethermint where the format was coupled.

Precompiled Contracts

All standard Ethereum cryptographic precompiles (ecrecover, sha256, etc.) are also supported; visit evm.codes/precompiled for the full reference.

Predeployed Contracts

Cosmos EVM ships with standard EVM infrastructure contracts already in chain state at their canonical addresses — Create2, Multicall3, Permit2, Safe Singleton Factory, and EIP-2935 block hash storage. Any tooling that depends on these contracts at their well-known addresses works without extra setup.

Predeployed Contracts

Learn which contracts are preinstalled and how to preinstall contracts at genesis.

Key Precompile Addresses

FunctionAddress
Staking0x0000000000000000000000000000000000000800
Distribution0x0000000000000000000000000000000000000801
IBC Transfer0x0000000000000000000000000000000000000802
Bank0x0000000000000000000000000000000000000804
Governance0x0000000000000000000000000000000000000805

Performance

Cosmos EVM gas estimation is optimized: plain ETH transfers return 21000 immediately without simulation, and complex transactions use initial execution results to tighten the binary search bounds, making eth_estimateGas significantly faster across the board. The Cosmos EVM mempool follows standard Ethereum behavior (gas price + nonce ordering, multiple transactions per account per block). Pool limits, timeouts, and priority functions are configurable per chain. An optional experimental mempool adds nonce gap handling and automatic transaction promotion.

Resources