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.
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.| EIP | Name | Purpose |
|---|---|---|
| EIP-155 | Replay Protection | Chain ID in signatures prevents cross-chain replay attacks |
| EIP-712 | Typed Structured Data Signing | Sign structured data, human-readable messages, and custom Cosmos transactions |
| EIP-1559 | Dynamic Fees | Base fee + priority fee model; base fee is distributed to validators rather than burned |
| EIP-2535 | Diamond Standard | Proxy pattern for upgradeable contracts with multiple implementation facets |
| EIP-2935 | Historical Block Hashes | BLOCKHASH opcode provides access to up to 8192 previous block hashes (configurable) |
| EIP-4337 | Account Abstraction | Smart contract wallets can pay fees, batch transactions, and use custom auth schemes |
| EIP-7702 | Set Code for EOA | Temporarily 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
DIFFICULTYopcode withPREVRANDAO.
Tooling
Any tool that connects to a standard Ethereum JSON-RPC endpoint works with Cosmos EVM without custom configuration.| Tool | Category |
|---|---|
| Hardhat, Foundry, Remix | Contract development |
| OpenZeppelin Contracts | Smart contract libraries |
| Forge, Hardhat | Testing & fuzzing |
| MetaMask, WalletConnect, Rabby | Wallets |
| ethers.js, viem, web3.js, wagmi | JavaScript libraries |
| Blockscout | Block 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.
eth_sendRawTransaction, eth_call, eth_estimateGas, event logs and filters, WebSocket subscriptions, and the debug namespace for tracing.
A few things to know:
eth_gasPricereturns 0 — use EIP-1559 fee fields instead- Mining-related methods don’t apply (consensus is handled by CometBFT)
txpoolmethods 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.| Area | Ethereum | Cosmos EVM |
|---|---|---|
| Block time | ~12 seconds | 1–2 seconds |
| Finality | 12+ blocks (~3 min) | 1 block (~2 seconds) |
| Reorganizations | Possible | Not possible |
| Cross-chain | Bridge protocols | Native IBC |
| Fee distribution | Base fee burned | Distributed 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 theNoBaseFee parameter, and a chain-wide minimum gas price floor is configurable.
Address system
Every account has two representations that reference the same underlying key: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
Precompile Overview
Full list of built-in Cosmos precompiles and their addresses.
Add a Custom Precompile
Enable built-in precompiles or add your own to your chain.
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
| Function | Address |
|---|---|
| Staking | 0x0000000000000000000000000000000000000800 |
| Distribution | 0x0000000000000000000000000000000000000801 |
| IBC Transfer | 0x0000000000000000000000000000000000000802 |
| Bank | 0x0000000000000000000000000000000000000804 |
| Governance | 0x0000000000000000000000000000000000000805 |
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, makingeth_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.