Converting Addresses Between EVM and Cosmos


This section demonstrates how to convert addresses between EVM formats and Cosmos addresses using the Initia platform. The ICosmos interface from Initia's precompiled contracts provides functionalities for this conversion, which is crucial for interoperability in applications that operate across both blockchain systems.

Sample Contract Implementation

Below is an example contract, ContractA, that showcases methods for converting addresses between EVM and Cosmos formats. This functionality enables seamless interaction and integration of identities across Ethereum and Cosmos networks.

import { ICosmos } from "@initia/evm-precompiles/i_cosmos/ICosmos.sol";

contract ContractA {

    // Method to convert an EVM address to a Cosmos address
    function to_cosmos_address(
        address evm_address
    ) external returns (string memory cosmos_address) {
        // Converts and returns the Cosmos address corresponding to the given EVM address
        return ICosmos.COSMOS_CONTRACT.to_cosmos_address(evm_address);

    // Method to convert a Cosmos address to an EVM address
    function to_evm_address(
        string memory cosmos_address
    ) external returns (address evm_address) {
        // Converts and returns the EVM address corresponding to the given Cosmos address
        return ICosmos.COSMOS_CONTRACT.to_evm_address(cosmos_address);

Key Components

  1. ICosmos Interface: Utilizes COSMOS_CONTRACT for addressing conversions. This precompiled contract serves as a bridge facilitating the translation of address formats between the EVM and Cosmos ecosystems.

  2. Conversion Functions:

    • to_cosmos_address: Takes an EVM address as input and returns its corresponding Cosmos address. This function is useful when needing to identify an Ethereum account within the Cosmos network.

    • to_evm_address: Accepts a Cosmos address and returns the corresponding EVM address. This allows Cosmos identities to interact within Ethereum-based applications.

Usage Scenario

  • These conversion methods are particularly valuable in multi-chain environments where users or contracts need to operate across both Ethereum and Cosmos platforms. For instance, a dApp might need to manage assets or identities across these blockchains, requiring reliable translation of address formats to ensure correct and secure transactions.


By integrating these conversion capabilities, developers can enhance the interoperability of their applications, facilitating a more cohesive operation across the diverse landscape of blockchain technologies. This is essential for creating complex systems that leverage the strengths of both the Ethereum and Cosmos ecosystems.

Last updated


© 2024 Initia Foundation, All rights reserved.