What is Cosmos EVM?
What is Cosmos EVM?
Cosmos EVM is an open-source Cosmos SDK module that embeds a full Ethereum Virtual Machine into a CometBFT-based blockchain. You can launch a sovereign L1 that runs standard Solidity contracts and supports the full Ethereum toolchain, while also getting things Ethereum doesn’t have: single-block finality, no reorganizations, native IBC cross-chain transfers, and direct Cosmos SDK module access from smart contracts.Unlike rollups, you control your own validator set, governance, and fee economics. See the overview for more.
Is it compatible with Ethereum?
Is it compatible with Ethereum?
Yes, fully. Cosmos EVM chains implement the complete Ethereum JSON-RPC API and execute the same EVM bytecode. Contracts that work on Ethereum work on Cosmos EVM without code changes, and tools like MetaMask, Hardhat, Foundry, ethers.js, and viem all work as-is.The differences are additions, not substitutions: faster finality (~1–2 seconds vs. ~3 minutes on Ethereum), no reorgs, native IBC, and precompiles that expose Cosmos SDK functionality from Solidity. See the EVM Compatibility page for a full breakdown.
Is full Solidity supported?
Is full Solidity supported?
Yes. All opcodes, ABI encoding, and libraries work the same as on Ethereum. Any contract that compiles and runs on Ethereum runs on a Cosmos EVM chain without modification. Point your tooling at your chain’s RPC endpoint and chain ID and you’re set.
Is deploying a contract any different?
Is deploying a contract any different?
No. Use Hardhat, Foundry, or Remix pointed at your chain’s JSON-RPC endpoint. Deployment goes through
eth_sendRawTransaction and is processed by the EVM module the same way as on Ethereum. The contract gets an Ethereum address and behaves as expected.See the quick start guide for a step-by-step deployment walkthrough with Forge.What tools can I use?
What tools can I use?
Any tool that speaks standard Ethereum JSON-RPC works without modification:
- Contract development: Hardhat, Foundry, Remix
- Libraries: ethers.js, viem, wagmi, web3.js
- Wallets: MetaMask, Rabby, WalletConnect, Keplr
- Block explorers: Blockscout
What EIPs are supported?
What EIPs are supported?
Cosmos EVM supports all standard EVM opcodes and EIPs up to the Prague hard fork. Some notable ones:
Two things are not supported: EIP-4844 (blob transactions) and EIP-4399 (PREVRANDAO). See the EVM Compatibility page for the complete list.
| EIP | Purpose |
|---|---|
| EIP-155 | Replay protection via chain ID in signatures |
| EIP-712 | Typed structured data signing |
| EIP-1559 | Dynamic fees (base fee + priority fee) |
| EIP-2535 | Diamond proxy pattern for upgradeable contracts |
| EIP-4337 | Account abstraction |
| EIP-7702 | Set code for EOAs |
What are precompiles?
What are precompiles?
Precompiles are smart contract interfaces at fixed addresses where the implementation runs as native Go code rather than EVM bytecode. On standard Ethereum, precompiles handle things like signature verification and hashing. Cosmos EVM adds stateful precompiles that let Solidity contracts interact directly with Cosmos SDK modules.From Solidity, you can call the staking precompile to delegate tokens, the governance precompile to submit a proposal, or the ICS20 precompile to send an IBC transfer, all within a single transaction. Built-in precompiles include:
See the Precompiles Overview for the full list of addresses and interfaces.
| Precompile | Address | Purpose |
|---|---|---|
| Staking | 0x...0800 | Delegate, undelegate, claim rewards |
| Distribution | 0x...0801 | Staking rewards and community pool |
| ICS20 | 0x...0802 | IBC cross-chain token transfers |
| Bank | 0x...0804 | ERC-20 access to native Cosmos tokens |
| Governance | 0x...0805 | Submit proposals and vote |
What are predeployed contracts?
What are predeployed contracts?
Predeployed contracts (also called preinstalls) are standard EVM contracts deployed at their canonical Ethereum addresses from genesis. Any tooling that expects them at those addresses works without extra setup.Cosmos EVM ships five by default:
See the Predeployed Contracts page for addresses, configuration, and how to add your own.
| Contract | Purpose |
|---|---|
| Create2 | Deterministic contract deployment |
| Multicall3 | Batch multiple calls in one transaction |
| Permit2 | Signature-based ERC-20 approvals |
| Safe Singleton Factory | Deploy Safe multisig wallets |
| EIP-2935 | Historical block hash storage |
How do I get started?
How do I get started?
The quickest path is running the example chain locally. It takes a few minutes and only requires Go and Make. The Quick Start guide covers cloning the repo, starting the chain, connecting a wallet, and deploying your first contract.
How can I upgrade from cosmos/evm v-0.1.x to v0.3.x or later?
How can I upgrade from cosmos/evm v-0.1.x to v0.3.x or later?
We’re working on a migration guide for this and will have it posted up here as soon as possible!
What is the difference between `secp256k1` and `ed25519`?
What is the difference between `secp256k1` and `ed25519`?
Both are elliptic curve algorithms that produce 128-bit security. The practical difference is compatibility vs. attack surface.secp256k1 is the curve used by Bitcoin and most EVM chains. It’s well-tested, broadly supported, and the natural choice when you need to interoperate with existing crypto infrastructure, including Ethereum tooling and wallets.ed25519 is faster for signature verification and resistant to certain side-channel attacks that can affect secp256k1. Cosmos SDK validators default to ed25519 for this reason. The tradeoff is narrower tool support, though that gap has closed over time.In practice, the context usually decides for you: EVM contracts and Ethereum-style accounts use secp256k1; Cosmos validator keys use ed25519.
Where can I find the Protobuf interfaces for Cosmos EVM?
Where can I find the Protobuf interfaces for Cosmos EVM?
See the Cosmos Buf project page.