Skip to main content
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.
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.
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.
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.
Any tool that speaks standard Ethereum JSON-RPC works without modification:See the Tooling & Resources page for the full list.
Cosmos EVM supports all standard EVM opcodes and EIPs up to the Prague hard fork. Some notable ones:
EIPPurpose
EIP-155Replay protection via chain ID in signatures
EIP-712Typed structured data signing
EIP-1559Dynamic fees (base fee + priority fee)
EIP-2535Diamond proxy pattern for upgradeable contracts
EIP-4337Account abstraction
EIP-7702Set code for EOAs
Two things are not supported: EIP-4844 (blob transactions) and EIP-4399 (PREVRANDAO). See the EVM Compatibility page for the complete list.
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:
PrecompileAddressPurpose
Staking0x...0800Delegate, undelegate, claim rewards
Distribution0x...0801Staking rewards and community pool
ICS200x...0802IBC cross-chain token transfers
Bank0x...0804ERC-20 access to native Cosmos tokens
Governance0x...0805Submit proposals and vote
See the Precompiles Overview for the full list of addresses and interfaces.
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:
ContractPurpose
Create2Deterministic contract deployment
Multicall3Batch multiple calls in one transaction
Permit2Signature-based ERC-20 approvals
Safe Singleton FactoryDeploy Safe multisig wallets
EIP-2935Historical block hash storage
See the Predeployed Contracts page for addresses, configuration, and how to add your own.
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.
We’re working on a migration guide for this and will have it posted up here as soon as possible!
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.
See the Cosmos Buf project page.