What Is Cosmos EVM and How Does This Technology Work in the Cosmos Ecosystem?

What Is Cosmos EVM and How Does This Technology Work in the Cosmos Ecosystem?

What Is Cosmos EVM?

Cosmos EVM is open-source software that lets developers make a Cosmos SDK chain EVM-compatible. So it is not its own blockchain, not a token, and not the same thing as Cosmos Hub or ATOM.

Simply put, Cosmos EVM adds an environment where Ethereum apps can run on a standalone Cosmos chain. With it, a developer can build a new L1 or expand an existing Cosmos SDK chain with support for Ethereum technology.

That kind of chain sets its own main rules. Think of its own validator set, governance, fees, active modules, and access rules. A validator is a participant that checks new blocks and helps the network reach agreement.

Cosmos EVM is built for chains that want to make their own choices while still using the familiar Ethereum world. For example, the repository includes evmd, a reference implementation for setting up an EVM-compatible chain.

The software is a fork of evmOS and is covered by the Apache-2.0 open-source license. Important to know: Cosmos EVM is still in the v0.x stage. That means future updates before a v1 release may still include bigger technical changes.


Key Takeaways

  • Cosmos EVM is software for making a Cosmos SDK chain EVM-compatible.
  • It is not a standalone blockchain or a token.
  • Each chain chooses its own validators, governance, fees, and access rules, among other things.
  • Ethereum apps and Solidity smart contracts can run on a Cosmos chain because of this.
  • Cosmos EVM is open source and is still in the v0.x stage.

How Does Cosmos EVM Work?

Cosmos EVM lets a chain process both regular Cosmos transactions and Ethereum transactions. The core of this is the x/vm module, which handles EVM execution, gas, fees, and storing changes.

How does that work in practice? An Ethereum transaction is first wrapped as MsgEthereumTx. That makes the transaction fit the way the Cosmos SDK processes transactions. After that, the module unwraps the Ethereum transaction and runs the EVM.

If the transaction succeeds, the changes are stored in the Cosmos SDK store. If execution fails, the temporary change can be rolled back. That matters because a failed transaction should not leave behind half-finished changes.

Under the hood, Cosmos EVM has roughly three parts:

  • CometBFT: handles consensus, meaning how validators decide together which new block is valid.
  • ABCI: the technical connection between CometBFT and the application running on the chain.
  • go-ethereum (geth): provides EVM functionality, such as executing Ethereum transactions.

Cosmos EVM supports different Ethereum transaction types, including legacy/EIP-155, EIP-2930, EIP-1559, and EIP-7702. Unprotected legacy transactions are turned off by default. Which features are available can differ from one Cosmos EVM chain to another.

Another important part is precompiles. These are fixed addresses where a smart contract can call a native function. Instead of regular EVM bytecode, a precompile runs Go code directly. That lets a Solidity contract use functions from Cosmos SDK modules, if the chain has enabled that option.

Example: a smart contract can use a precompile to carry out a native token action or start an IBC transfer. The contract does not have to rebuild that Cosmos functionality from scratch.

What Role Does the Ethereum Virtual Machine Play in Cosmos EVM?

The Ethereum Virtual Machine, or EVM, is the environment inside Cosmos EVM that runs Ethereum bytecode and Solidity smart contracts. You can think of the EVM as the compatibility layer between Ethereum apps and the Cosmos infrastructure underneath.

Because of that, developers can keep using many familiar Ethereum workflows. Think of MetaMask, Hardhat, Foundry, Remix, ethers.js, and viem. Solidity contracts that work on Ethereum can, in principle, be deployed on a Cosmos EVM chain without changing the contract code.

Cosmos EVM provides Ethereum-compatible JSON-RPC, transaction types, addresses, and account functionality for this. Put simply, JSON-RPC is the standard way a wallet or app sends technical requests to a blockchain. So your crypto wallet can communicate with a suitable Cosmos EVM chain in a familiar way.

One underlying key can have two address formats: a hexadecimal Ethereum address and a Bech32 Cosmos address. Hexadecimal is the familiar address format that starts with 0x. Bech32 is the readable Cosmos format with a prefix for the specific chain. They are two forms of the same underlying key.

A Cosmos EVM chain also uses two kinds of chain IDs: a Cosmos chain ID and a separate numeric EVM chain ID. These help software recognize the right environment and transaction rules.

The compatibility is broad, but not exactly identical to Ethereum. Cosmos EVM supports EVM opcodes, EIPs, and ERC interfaces up to the Prague hard fork. Blob transactions from EIP-4844 and PREVRANDAO from EIP-4399 are not supported.

How Does Cosmos EVM Support Interoperability?

Cosmos EVM can support interoperability by including IBC in the chain. IBC is a protocol that lets independent blockchains send data, messages, and tokens to each other.

That does not mean every Cosmos EVM chain is automatically connected to every other blockchain. Communication requires, among other things, IBC support, a connection, channels, relayers, and a compatible counterparty. Cosmos EVM also does not create a direct connection to Ethereum mainnet by itself.

Through precompiles, EVM contracts can also use functions from other Cosmos SDK modules. Think of staking, distribution, governance, bank functions, and IBC transfers. Which options are available depends on what the builder of that chain has added and enabled.

How Does Communication With Other Cosmos Blockchains Work?

Communication with other Cosmos blockchains happens through IBC packets. A packet is just a small package of data that needs to move from one blockchain to another.

The source chain first records that such a packet exists. Then a relayer picks up the message and delivers it, along with cryptographic proof, to the other blockchain. So a relayer carries data, but does not centrally hold your tokens.

The receiving blockchain uses an IBC light client to verify that proof. A light client keeps compact information about the consensus state of the other blockchain. That way, it can check whether the sent information really exists on the source chain.

After two blockchains set up an IBC connection, each one gets a link to the other party's light client. Apps then use ports and channels to send packets. A combination of portID and channelID tells the packet where to go.

Channels can be ordered or unordered. With ordered channels, packets must arrive in the same order. With unordered channels, the arrival order can differ.

For a Cosmos EVM chain, Solidity contracts can start token transfers through the ICS-20 precompile. ICS-20 is the IBC standard for sending fungible tokens, meaning interchangeable tokens of the same kind. Received IBC assets can also become available to EVM contracts as dynamic ERC-20 precompiles through the ERC-20 module.

What Role Does IBC Play in Cosmos EVM?

IBC is the protocol layer that lets a Cosmos EVM chain exchange messages and tokens with other IBC-compatible blockchains. For Solidity developers, the ICS-20 precompile is an important tool here.

With it, a contract can start a cross-chain transfer and fill in, among other things, the source port, channel, token denomination, amount, recipient, and a timeout. A timeout is the latest time or block height by which a packet must be processed.

The ICS-20 precompile has a fixed address: 0x0000000000000000000000000000000000000802. That address only works if the chain in question has enabled this precompile.

Cosmos EVM also adds callbacks for ICS-20 transfers. A callback is a function that can automatically run when a certain step has happened:

  • On the destination chain, onRecvPacket can run as soon as a packet is received.
  • On the source chain, onAcknowledgePacket can respond to an acknowledgment.
  • On the source chain, onTimeoutPacket can respond if the transfer is not completed on time.

That lets a smart contract run extra logic after receiving tokens, for example a swap on a DEX or adding liquidity. The token transfer and callback are handled together during that packet's processing. So they either succeed together or fail together.

There is one practical limitation, though: for an IBC transfer, the recipient currently has to use a Bech32 address. A hexadecimal 0x address as the recipient is not supported yet. The sender's address is automatically converted from hexadecimal to Bech32.

Callbacks make cross-chain apps more powerful, but also more complex. Developers need to handle timeouts, acknowledgments, memo data, gas limits, and error handling carefully.

What Can Cosmos EVM Be Used For?

Cosmos EVM is mainly used to build or expand a Cosmos SDK chain where existing Solidity smart contracts and Ethereum tools can run. That is useful for teams that want to combine Ethereum compatibility with the freedom of their own L1.

A builder can decide what the chain looks like. For example, which validators participate, how governance works, which fees apply, who can deploy contracts, and which Cosmos SDK modules are available.

Possible uses include:

  • Building EVM apps: existing Solidity smart contracts can run on the chain.
  • Using native Cosmos functions: smart contracts can call staking, delegation, governance, and native token interactions through precompiles.
  • Running IBC token flows: contracts can send tokens to another IBC-compatible blockchain.
  • Automating cross-chain logic: callbacks can respond to the receipt, acknowledgment, or timeout of a transfer.
  • Providing ERC-20-like access: native Cosmos tokens and incoming IBC assets can be made usable for EVM contracts through the ERC-20 module.
  • Restricting access: a chain can set up a permissioned EVM, where certain addresses may or may not deploy or call contracts.

Those options are not automatically available everywhere. Whether an app can use IBC, staking, or governance from a smart contract, for example, depends on the modules and precompiles active on that specific chain.

What Is the Difference Between Cosmos EVM and Other EVM Networks?

Cosmos EVM differs from other EVM networks because it is not a separate network, but a software stack for standalone Cosmos SDK chains. So you do not compare it one-to-one with Ethereum, a specific EVM L1, or a Layer 2.

Ethereum compatibility is still an important part of it. Developers can use Ethereum tools, JSON-RPC, and Solidity smart contracts. At the same time, the underlying infrastructure works differently: a Cosmos EVM chain uses CometBFT consensus and its own validator set.

With CometBFT, finality can happen after one committed block, usually in about 1 to 2 seconds. Finality simply means that after that confirmation, the block should no longer be reversible. For this, at least two-thirds of the stake must commit a block.

Cosmos EVM is designed for a sovereign L1. That means the chain manages its own validator set, governance, and fee economy. That is different from rollups, which rely partly on a settlement layer for part of their design and security.

The fee economy can also differ from Ethereum. Cosmos EVM uses EIP-1559, but the base fee goes to validators and delegators instead of being burned. A chain can also turn off the base fee or set a minimum gas price.

On top of that, Cosmos EVM adds features you do not normally find on every EVM network: access to Cosmos SDK modules through precompiles and IBC-based interoperability. But even between two Cosmos EVM chains, there can be major differences. Each chain can add its own precompiles and decide which functions are active.

Not all Ethereum or rollup-specific features are included. For example, blob transactions from EIP-4844 and PREVRANDAO from EIP-4399 are not available.

What Are the Benefits and Limitations of Cosmos EVM?

Cosmos EVM combines familiar Ethereum tools with the flexibility of a standalone Cosmos SDK chain. That creates interesting benefits, but you also need to look closely at the specific chain you are building on or using.

The benefits:

  • Familiar EVM environment: Solidity smart contracts and many Ethereum tools can be used.
  • Fast finality: CometBFT chains can offer fast block times and finality after a committed block.
  • Access to Cosmos functions: precompiles can let smart contracts work with staking, governance, native bank assets, and IBC transfers.
  • Lots of configuration freedom: builders choose modules, active precompiles, fee settings, and access policies.
  • Cross-chain possibilities: IBC and callbacks make more complex token flows between compatible blockchains possible.

The limitations:

  • No uniform experience: validator sets, RPC endpoints, IBC channels, available tokens, precompiles, and parameters differ from chain to chain.
  • Not every EVM feature exists: blob transactions from EIP-4844 and PREVRANDAO from EIP-4399 are missing.
  • IBC address limitation: ICS-20 transfers currently require a Bech32 recipient address, not a hexadecimal one.
  • Extra technical work with different decimals: a gas token with 18 decimals is the simplest and recommended route. An existing chain with a different number of decimals needs x/precisebank, which makes integration more complicated.
  • The software is still being developed: v0.x releases may include breaking changes before a v1 version.

Also important: an audit or EVM compatibility is not an automatic guarantee that every implementation is safe. A specific configuration, smart contracts, IBC channels, and cross-chain integrations can each have their own risks.

Conclusion

Cosmos EVM is a flexible building block for developers who want to combine their own Cosmos SDK chain with the familiar Ethereum environment. So it is not a separate blockchain or token, but software that lets Solidity smart contracts, Ethereum tools, and JSON-RPC work on a standalone Cosmos chain.

Its big strength is the combination: EVM compatibility on one side, and Cosmos SDK modules, its own validator set, and IBC on the other. That lets smart contracts use native token functions or cross-chain transfers, for example.

At the same time, Cosmos EVM is not exactly the same everywhere. The features, fees, IBC connections, precompiles, and technical settings differ from chain to chain. So for users and developers, it is important to always look at the specific implementation, not just the Cosmos EVM label.

About Finst

Finst is a leading cryptocurrency platform in the Netherlands, providing ultra-low trading fees, institutional-grade security, and a comprehensive suite of crypto services such as trading, custody, staking, and fiat on/off-ramp. Finst, founded by DEGIRO's ex-core team, is authorized as a crypto-asset service provider under MiCAR by the Dutch Authority for Financial Markets (AFM) and serves both retail and institutional clients in 30 European countries.

The crypto platform for all investors

Whether you're an active trader or long-term investor, Finst enables you to grow your crypto wealth with confidence and peace of mind.

Sign up