GitHub: ICosmos

Overview

The ICosmos interface defines a set of functions for interacting with the Cosmos blockchain from an Ethereum Virtual Machine (EVM) environment. It includes functions for address conversion, querying, and executing Cosmos messages.

Constants

COSMOS_ADDRESS

The address of the Cosmos precompile contract.

address constant COSMOS_ADDRESS = 0x00000000000000000000000000000000000000f1;

COSMOS_CONTRACT

The instance of the ICosmos contract.

ICosmos constant COSMOS_CONTRACT = ICosmos(COSMOS_ADDRESS);

Functions

is_blocked_address

Checks if an address is blocked by the Cosmos SDK bank module.

function is_blocked_address(address account) external view returns (bool blocked);

Parameters

NameTypeDescription
accountaddressThe address to check

Returns

TypeDescription
booltrue if the address is blocked, false otherwise

is_module_address

Checks if an address is a Cosmos SDK module account.

function is_module_address(address account) external view returns (bool module);

Parameters

NameTypeDescription
accountaddressThe address to check

Returns

TypeDescription
booltrue if the address is a module account, false otherwise

to_cosmos_address

Converts an EVM hex format address to a Cosmos bech32 format address.

function to_cosmos_address(address evm_address) external returns (string memory cosmos_address);

Parameters

NameTypeDescription
evm_addressaddressThe EVM address to convert

Returns

TypeDescription
string memoryThe corresponding Cosmos address

to_evm_address

Convert a Cosmos bech32 format address to an EVM hex format address.

function to_evm_address(string memory cosmos_address) external returns (address evm_address);

Parameters

NameTypeDescription
cosmos_addressstring memoryThe Cosmos address to convert

Returns

TypeDescription
addressThe corresponding EVM address

to_denom

Converts an ERC20 address to a Cosmos coin denom.

function to_denom(address erc20_address) external returns (string memory denom);

Parameters

NameTypeDescription
erc20_addressaddressThe ERC20 address to convert

Returns

TypeDescription
string memoryThe corresponding Cosmos denom

to_erc20

Converts a Cosmos coin denom to an ERC20 address.

function to_erc20(string memory denom) external returns (address erc20_address);

Parameters

NameTypeDescription
denomstring memoryThe Cosmos denom to convert

Returns

TypeDescription
addressThe corresponding ERC20 address

execute_cosmos

Records a Cosmos message to be executed after the current message execution. The message should be in JSON string format.

function execute_cosmos(string memory msg) external returns (bool dummy);

Parameters

NameTypeDescription
msgstring memoryThe Cosmos message in JSON format

Returns

TypeDescription
boolDummy return value

query_cosmos

Queries a whitelisted Cosmos SDK query.

function query_cosmos(string memory path, string memory req) external returns (string memory result);

Parameters

NameTypeDescription
pathstring memoryThe query path
reqstring memoryThe query request in JSON format

Returns

TypeDescription
string memoryThe query result in JSON format