Precompiles are smart contract interfaces deployed at fixed addresses where the implementation runs as native Go code rather than EVM bytecode. In standard Ethereum, precompiles are stateless and handle things like signature verification and hashing. In Cosmos EVM, they can also be stateful — reading from and writing to Cosmos SDK module state outside the EVM.
This is what makes them powerful: a smart contract can call the staking precompile to delegate tokens, the governance precompile to submit a proposal, or the IBC precompile to send tokens cross-chain — all using a standard Solidity interface, all within a single transaction.
Precompiles act as a window into the Cosmos SDK: when a precompile is invoked, execution routes from the EVM through the corresponding Cosmos SDK module and returns the result to the EVM for continued execution. Gas is metered across both environments.
All precompile contracts should use Ethereum’s standard 18 decimals.Although typical Cosmos chains use 6 decimals, EVM chains should use 18 decimals.
Always check your chain’s decimal precision before interacting with a precompile.
Built-in Precompiles
| Precompile | Address | Purpose | Reference |
|---|
| P256 | 0x0000000000000000000000000000000000000100 | P-256 elliptic curve signature verification | Details |
| Bech32 | 0x0000000000000000000000000000000000000400 | Address format conversion between Ethereum hex and Cosmos bech32 | Details |
| Staking | 0x0000000000000000000000000000000000000800 | Validator operations, delegation, and staking rewards | Details |
| Distribution | 0x0000000000000000000000000000000000000801 | Staking rewards and community pool management | Details |
| ICS20 | 0x0000000000000000000000000000000000000802 | Cross-chain token transfers via IBC | Details |
| Bank | 0x0000000000000000000000000000000000000804 | ERC20-style access to native Cosmos SDK tokens | Details |
| Governance | 0x0000000000000000000000000000000000000805 | On-chain governance proposals and voting | Details |
| Slashing | 0x0000000000000000000000000000000000000806 | Validator slashing and jail management | Details |
| ICS02 | 0x0000000000000000000000000000000000000807 | IBC light client queries | Source |
| ERC20 | Dynamic per token | Standard ERC20 interface for native Cosmos tokens | Details |
| WERC20 | Dynamic per token | Wrapped native token functionality | Details |
Chain builders can control which precompiles are active and add their own. See the Precompile Configuration guide for details.