> ## Documentation Index
> Fetch the complete documentation index at: https://cosmos-docs-sync-security-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# EVM Compatibility

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](https://hardhat.org), [Foundry](https://book.getfoundry.sh), or [Remix](https://remix.ethereum.org) 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](/evm/latest/documentation/getting-started/tooling-and-resources) for a full list of supported tools, and the [quick-start guide](/evm/latest/documentation/getting-started/build-a-chain/quick-start#deploy-a-solidity-contract-with-forge) for a step-by-step contract deployment walkthrough.

### Deployment

[Deploy using standard Ethereum tools](/evm/latest/documentation/getting-started/build-a-chain/quick-start#deploy-a-solidity-contract-with-forge) 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](https://eips.ethereum.org/all).

| EIP                                                 | Name                          | Purpose                                                                                 |
| --------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------- |
| [EIP-155](https://eips.ethereum.org/EIPS/eip-155)   | Replay Protection             | Chain ID in signatures prevents cross-chain replay attacks                              |
| [EIP-712](https://eips.ethereum.org/EIPS/eip-712)   | Typed Structured Data Signing | Sign structured data, human-readable messages, and custom Cosmos transactions           |
| [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) | Dynamic Fees                  | Base fee + priority fee model; base fee is distributed to validators rather than burned |
| [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) | Diamond Standard              | Proxy pattern for upgradeable contracts with multiple implementation facets             |
| [EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) | Historical Block Hashes       | `BLOCKHASH` opcode provides access to up to 8192 previous block hashes (configurable)   |
| [EIP-4337](https://eips.ethereum.org/EIPS/eip-4337) | Account Abstraction           | Smart contract wallets can pay fees, batch transactions, and use custom auth schemes    |
| [EIP-7702](https://eips.ethereum.org/EIPS/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](https://eips.ethereum.org/EIPS/eip-20) — Fungible Tokens:** Standard interface for currency representations with transfer, approval, and allowance mechanisms.
* **[ERC-721](https://eips.ethereum.org/EIPS/eip-721) — Non-Fungible Tokens:** Standard for unique asset identifiers, digital certificates, or proof of ownership records.
* **[ERC-1155](https://eips.ethereum.org/EIPS/eip-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](https://www.evm.codes/).

The following are **not supported**:

* **[EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) — Blob-Carrying Transactions:** Blob data and L2-specific functionality.
* **[EIP-4399](https://eips.ethereum.org/EIPS/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.

| Tool                                                                                                                        | Category                 |
| --------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| [Hardhat](https://hardhat.org), [Foundry](https://book.getfoundry.sh), [Remix](https://remix.ethereum.org)                  | Contract development     |
| [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts)                                                           | Smart contract libraries |
| [Forge](https://book.getfoundry.sh/forge/), [Hardhat](https://hardhat.org)                                                  | Testing & fuzzing        |
| [MetaMask](https://metamask.io), [WalletConnect](https://walletconnect.com), [Rabby](https://rabby.io)                      | Wallets                  |
| [ethers.js](https://docs.ethers.org/v6/), [viem](https://viem.sh), [web3.js](https://web3js.org), [wagmi](https://wagmi.sh) | JavaScript libraries     |
| [Blockscout](https://github.com/blockscout/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.

<Card title="Ethereum RPC Compatibility" icon="code" href="/evm/latest/api-reference/ethereum-json-rpc/methods">
  Most standard Ethereum JSON-RPC methods are supported, with some returning stub values for compatibility. Click to view the complete reference.
</Card>

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.

| 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](/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

<CardGroup cols={2}>
  <Card title="Precompile Overview" icon="box" href="/evm/latest/documentation/smart-contracts/precompiles/overview">
    Full list of built-in Cosmos precompiles and their addresses.
  </Card>

  <Card title="Add a Custom Precompile" icon="wrench" href="/evm/latest/documentation/getting-started/build-a-chain/additional-configuration/precompiles">
    Enable built-in precompiles or add your own to your chain.
  </Card>
</CardGroup>

All standard Ethereum cryptographic precompiles (ecrecover, sha256, etc.) are also supported; visit [evm.codes/precompiled](https://www.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.

<Card title="Predeployed Contracts" icon="box" href="/evm/latest/documentation/getting-started/build-a-chain/additional-configuration/predeployed-contracts">
  Learn which contracts are preinstalled and how to preinstall contracts at genesis.
</Card>

#### 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, 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](/evm/latest/documentation/getting-started/build-a-chain/additional-configuration/mempool-integration). An optional experimental mempool adds nonce gap handling and automatic transaction promotion.

## Resources

<CardGroup cols={2}>
  <Card title="Quick Start" icon="rocket" href="/evm/latest/documentation/getting-started/build-a-chain/quick-start">
    Deploy a chain and your first contract end-to-end.
  </Card>

  <Card title="Tooling & Resources" icon="wrench" href="/evm/latest/documentation/getting-started/tooling-and-resources">
    Full list of supported tools, libraries, and frameworks.
  </Card>

  <Card title="Precompile Overview" icon="box" href="/evm/latest/documentation/smart-contracts/precompiles/overview">
    Built-in Cosmos precompiles and their addresses.
  </Card>

  <Card title="Predeployed Contracts" icon="box" href="/evm/latest/documentation/getting-started/build-a-chain/additional-configuration/predeployed-contracts">
    Standard EVM contracts available at genesis.
  </Card>
</CardGroup>
