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

# EVM Compatibility

> Full EVM compatibility with all opcodes and precompiles

## Is MANTRA Chain Fully EVM Compatible?

**Yes.** MANTRA Chain has all of the opcodes and precompiles that a developer would expect on any other EVM chain, including:

* Ethereum
* Base
* Polygon
* Arbitrum
* And other EVM-compatible chains

## What This Means

### Deploy Without Modification

Deploy contracts written for Ethereum without any modifications. Standard Solidity code works as-is.

### Use Standard Tooling

All standard EVM tooling works out of the box:

* **Hardhat**: Full support
* **Foundry**: Full support
* **Remix**: Full support
* **Web3.js / Ethers.js**: Standard libraries work

### Leverage Existing Libraries

* OpenZeppelin contracts
* Standard Solidity libraries
* Existing EVM frameworks
* DeFi protocol integrations

### Standard Gas Mechanics

* Same gas costs as Ethereum
* Standard gas estimation
* Familiar gas optimization patterns

## Testing Compatibility

All standard EVM opcodes and precompiles are available and behave identically to other EVM chains.

### Supported Opcodes

All standard EVM opcodes including:

* Arithmetic operations
* Logical operations
* Memory operations
* Storage operations
* Control flow
* And more

### Supported Precompiles

Standard Ethereum precompiles plus MANTRA-specific Cosmos precompiles:

* ECRecover
* SHA256
* RIPEMD160
* Identity
* ModExp
* BN256Add
* BN256Mul
* BN256Pairing
* Bls12-381
* **Plus Cosmos SDK precompiles** (see [Cosmos Precompiles](https://mantrachain.mintlify.site/developers/architecture/cosmos-precompiles.md))

## Migration from Other EVM Chains

Migrating from other EVM chains is straightforward:

1. **Update RPC endpoint** to MANTRA Chain
2. **Update chain ID** to `5888` (mainnet) or `5887` (testnet)
3. **Deploy contracts** using your existing deployment scripts
4. **No code changes required**

## Example: Deploying a Standard ERC-20

```solidity theme={null}
// Standard ERC-20 contract - works as-is
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1000000 * 10**decimals());
    }
}
```

This contract works identically on MANTRA Chain as it would on Ethereum, Base, or any other EVM chain.

## Next Steps

* Learn about [Cosmos precompiles](https://mantrachain.mintlify.site/developers/architecture/cosmos-precompiles.md) for unique MANTRA features
* See [EVM module details](https://mantrachain.mintlify.site/developers/architecture/evm-module.md)
* Get started with [EVM development](https://mantrachain.mintlify.site/developers/evm/getting-started.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.