Token pair management and conversion between Cosmos coins and ERC20 tokens
x/erc20
module from cosmos/evm enables bidirectional conversion between Cosmos SDK coins and ERC20 tokens within the EVM runtime.
Parameter | Type | Default | Description |
---|---|---|---|
enable_erc20 | bool | true | Enable token conversions globally |
permissionless_registration | bool | false | Allow anyone to register ERC20 tokens |
Object | Key | Value | Description |
---|---|---|---|
TokenPair | 0x01 + ID | TokenPair | Token pair configuration |
TokenPairByERC20 | 0x02 + address | ID | Lookup by ERC20 address |
TokenPairByDenom | 0x03 + denom | ID | Lookup by denomination |
Allowance | 0x04 + hash | Allowance | ERC20 allowances |
NativePrecompiles | 0x05 + address | bool | Native precompile registry |
DynamicPrecompiles | 0x06 + address | bool | Dynamic precompile registry |
permissionless_registration
parameter is true
MsgRegisterERC20
permissionless_registration
is false
permissionless_registration
enabled OR sender is governance authorityEvent | Attributes | When Emitted |
---|---|---|
register_erc20 | erc20_address , cosmos_coin | Token pair registered |
toggle_token_conversion | erc20_address , cosmos_coin | Conversion toggled |
Event | Attributes | When Emitted |
---|---|---|
convert_coin | sender , receiver , amount , cosmos_coin , erc20_token | Coin → ERC20 |
convert_erc20 | sender , receiver , amount , cosmos_coin , erc20_token | ERC20 → Coin |
Event | Attributes | When Emitted |
---|---|---|
ibc_transfer_conversion | sender , receiver , denom , amount | Auto-conversion during IBC |
Issue | Cause | Solution |
---|---|---|
”token pair not found” | Token not registered | Register via governance |
”token pair disabled” | Conversions toggled off | Enable via governance |
”insufficient balance” | Low balance for conversion | Check balance in correct format |
”invalid recipient” | Wrong address format | Use hex for EVM, bech32 for Cosmos |
”module disabled” | enable_erc20 = false | Enable via governance |