XRPL EVM v9.0.0: Migration from Evmos to Cosmos EVM v0.4.1
Upgrades to Cosmos EVM v0.4.1, adding ERC-20 mint/burn, Ethereum EIP support, and IBC v10.

Overview
The XRPL EVM sidechain is upgrading from the unmaintained Evmos dependency to Cosmos EVM v0.4.1, a fully supported fork. Key benefits include:
- Long-term sustainability: Evmos lacked active maintenance; Cosmos EVM ensures ongoing compatibility with Cosmos and Ethereum ecosystems
- Future-proof development: Continuous integration of Ethereum standards (EIPs) and protocol upgrades
- Extended functionality: New ERC-20 capabilities including mint, burn, and ownership transfer
- Ecosystem alignment: Better integration with Cosmos SDK chains, IBC modules, and interoperability upgrades
Newly Supported EIPs and Opcodes
Shanghai Upgrade
- ✅ EIP-3855: PUSH0 instruction
- ✅ EIP-3860: Initcode limits and metering
- ⚠️ EIP-3651: Coinbase address warm (partial support)
Cancun Upgrade
- ✅ EIP-1153: Transient storage opcodes
- ✅ EIP-5656: MCOPY memory copying instruction
- ✅ EIP-7516: BLOBBASEFEE opcode
- ⚠️ EIP-6780: Restricts SELFDESTRUCT (partial support)
Prague Upgrade
- ✅ EIP-2537: Precompile for BLS12-381 curve operations
Technical details
Cosmos SDK
The upgrade to Cosmos/EVM v0.4.1 required upgrading to Cosmos SDK v0.53.4. The primary change involved app wiring: "the x/auth module needed to be registered as a pre-blocker within the application's module manager."
Optional deferred features include the ProtocolPool module, Epochs module, and unordered transaction support—reserved for future upgrades.
IBC Go
Migration from IBC-Go v8.1 to v10.0 required updating the rate-limiting module. Key changes applied:
- Middleware integration into the transfer stack
- Manager wiring in the IBC Manager
- Blocker order insertion for proper execution during block lifecycle
- Params integration for configuration persistence
Optional features deferred:
- Transfer Stack V2
- WASM Light Clients
evmos to cosmos/evm
Migrate erc20 custom capabilities
Custom ERC-20 features were ported to maintain Evmos compatibility:
- Mint – allows token creation by authorized accounts
- Burn – supports token destruction (Burn, Burn0, BurnFrom)
- TransferOwnership – enables ownership transfer of token contracts
Updates included:
- Solidity interfaces for precompile functionality
- Extended ERC-20 precompile with custom transactions, queries, and updated ABI
- New wrapped ERC-20 precompile (werc20)
- Regenerated protobuf definitions
- Integration and Solidity test infrastructure
- Expanded x/erc20 module with new keeper methods and CLI commands
Node
Cosmos EVM Breaking Changes
The migration required significant refactoring. Key modifications:
Ante Handler
- Moved to dedicated Go package (/app/ante)
- Updated to support CosmosAnteHandler and MonoEVMAnteHandler
- Preserved legacy key support for ethsecp256k1.PubKey from Evmos
EVMAppOptions
- Enforces eth-format chain IDs
- Maps chain-specific denominations using whitelisted chain ID mapping
- Supports mainnet, testnet, devnet, localnet, and simulation
Encoding and Interface Registry
- Replaced Evmos's MakeConfig with Cosmos/EVM's codec builder
- Included compatibility shims supporting both pre-upgrade (Evmos) and post-upgrade (Cosmos/EVM) types
- Registered legacy messages to prevent transaction decoding breaks
Genesis FeeMarket Fix
- Patched genesis state initialization for the feemarket module due to sdkmath library changes
Precompiles Wiring
- Updated NewAvailableStaticPrecompiles to reflect Cosmos/EVM's precompile model
EVM Mempool
The new evm-mempool package remains experimental with limited production exposure. XRPL EVM deliberately excluded this component to avoid consensus layer instability. Integration is planned for a future upgrade once maturity is demonstrated.
Upgrade Handler
The migration required multiple state transitions across the ERC20, EVM, and Auth modules.
ERC20 Module Migration
The upgrade handler implements store migration to handle IBC-derived ERC-20s and precompiles:
- Iterates over legacy DynamicPrecompiles and re-inserts using Cosmos/EVM's SetDynamicPrecompile
- Iterates over legacy NativePrecompiles and re-inserts using SetNativePrecompile
- Cleans up legacy store keys
EVM Module Migration
Evmos stored ExtraEIPs as strings ("ethereum_3855"), while Cosmos/EVM expects integers (3855). The migration handler:
- Unmarshals legacy Evmos params
- Sanitizes and converts string-formatted EIPs to integer IDs
- Rebuilds AccessControl configuration
- Writes new Cosmos/EVM-compatible Params to state
EthAccounts → BaseAccounts Migration
Evmos embedded CodeHash in EthAccount; Cosmos/EVM decouples these, moving code hash to the EVM module's VM store. The upgrade handler:
- Iterates through all accounts
- Identifies legacy EthAccount types
- Extracts CodeHash for contract-associated accounts and stores in EVM module
- Replaces EthAccount with embedded BaseAccount
Keys
A conflict emerged between cosmos.evm key types (new) and legacy evmos key types in validator keyrings and user wallets. To avoid forced key migration, the encoding registry was modified to "prioritize the legacy Evmos key types over the Cosmos EVM ones," ensuring backward compatibility.
Supported EIPs
- Shanghai
- Deneb
- Cancun
- Prague
Conclusion
The migration from Evmos to Cosmos EVM v0.4.1 ensures long-term sustainability and aligns XRPL EVM with actively maintained infrastructure. Expanded ERC-20 functionality, upgraded IBC support, and latest Ethereum standard compatibility position the chain as "a future-proof environment for building scalable, interoperable applications."
More news

XRPL EVM Is Live: This is how to get started ⚡️
Mainnet is now live. Discover how to get started, explore top dApps and start building.

The Rise of the XRPL EVM Sidechain
XRPL EVM brings Ethereum-compatible smart contracts to the XRP Ledger, unlocking DeFi potential.