> ## 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.

# Technical Architecture

> Cosmos EVM is a framework that allows you to add Ethereum Virtual Machine (EVM) compatibility to any Cosmos SDK-based chain. Built on the CometBFT consensus engine, it provides fast finality, high transaction throughput, and short block times (~2 seconds).

This architecture enables users to perform both Cosmos and EVM formatted transactions, allows developers to scale EVM dApps cross-chain via [IBC](https://cosmos.network/ibc), and supports tokens and assets from multiple independent sources.

Cosmos EVM enables these key features by:

* Leveraging [modules](/sdk/latest/guides/module-design/module-design-considerations) and other mechanisms implemented by the Cosmos SDK.
* Implementing CometBFT's Application Blockchain Interface ([ABCI](/cometbft/latest/spec/abci/Overview)) to manage the blockchain.
* Utilizing [`geth`](https://github.com/ethereum/go-ethereum) as a library to promote code reuse and improve maintainability.
* Exposing a fully compatible Web3 [JSON-RPC](/evm/latest/api-reference/ethereum-json-rpc/methods) layer for interacting with existing Ethereum clients and tooling (MetaMask, Remix, etc.).

These features enable developers to leverage existing Ethereum ecosystem tooling and software to seamlessly deploy smart contracts that interact with the rest of the Cosmos [ecosystem](https://cosmos.network/ecosystem).

## Cosmos SDK[​](#cosmos-sdk "Direct link to Cosmos SDK")

Cosmos EVM enables the full composability and modularity of the [Cosmos SDK](/). It includes standard modules from the Cosmos SDK that work side by side with EVM-specific modules. Check out the [list of modules](/evm/latest/documentation/cosmos-sdk/modules) to get an overview of what each module is responsible for.

## CometBFT & ABCI[​](#cometbft--abci "Direct link to CometBFT & ABCI")

[CometBFT](https://github.com/cometbft/cometbft) consists of two core technical components: a blockchain consensus engine and a generic application interface. The consensus engine ensures that the same transactions are recorded on every machine in the same order. The application interface, called the [Application Blockchain Interface (ABCI)](/cometbft/latest/spec/abci/Overview), enables transactions to be processed in any programming language.

CometBFT has evolved into a general-purpose blockchain consensus engine that can host arbitrary application states. Since it can replicate arbitrary applications, it can be used as a plug-and-play replacement for the consensus engines of other blockchains. Cosmos EVM is an example of an ABCI application replacing Ethereum's Proof-of-Stake consensus via CometBFT's consensus engine.

Another example of a cryptocurrency application built on CometBFT is the Cosmos Hub. CometBFT simplifies blockchain design by offering a simple API (the ABCI) between the application process and consensus process.

## EVM Compatibility[​](#evm-compatibility "Direct link to EVM Compatibility")

Cosmos EVM enables EVM compatibility by implementing various components that together support all the EVM state transitions while ensuring the same developer experience as Ethereum:

* Ethereum's transaction format as a Cosmos SDK `Tx` and `Msg` interface
* Ethereum's `secp256k1` curve for the Cosmos Keyring
* `StateDB` interface for state updates and queries
* [JSON-RPC](/evm/latest/api-reference/ethereum-json-rpc) client for interacting with the EVM

Most components are implemented in the [VM module](/evm/latest/documentation/cosmos-sdk/modules/vm). However, to achieve a seamless developer experience, some components are implemented outside of the module.

To learn more about how Cosmos EVM achieves EVM compatibility as a Cosmos chain, explore the following concepts:

* [Accounts](/evm/latest/documentation/concepts/accounts)
* [Gas and Fees](/evm/latest/documentation/concepts/gas-and-fees)
* [Token representations](/evm/latest/documentation/concepts/tokens)
* [Transactions](/evm/latest/documentation/concepts/transactions)

## Contributing[​](#contributing "Direct link to Contributing")

You can contribute to the Cosmos EVM open-source codebase through [issues on GitHub](https://github.com/cosmos/evm/issues) using the [Cosmos EVM Contributor Guideline](https://github.com/cosmos/evm/blob/main/CONTRIBUTING.md).
