Overview

The ICS20 precompile exposes standardized IBC fungible token transfer logic to EVM contracts. Initiate cross-chain token transfers, query IBC denominations (denom, denoms, denomHash), and build composable cross-chain payment flows — all from Solidity. Precompile Address: 0x0000000000000000000000000000000000000802

Gas Costs

Transaction Methods

Query Methods

Example

sender must be the direct caller of the precompile. A contract can send only its own tokens, so it passes address(this); an EOA calls the precompile directly with its own address. Any other address reverts with msg.sender address ... does not match the requester address .... For a channel-N (IBC v1) source channel, timeoutTimestamp is an absolute Unix time in nanoseconds, not seconds. For an IBC v2 client ID, the precompile passes the value through unchanged and IBC v2 reads it in seconds.

Trust Model

ICS20 transfers inherit IBC’s trust-minimized model:
  • No trusted intermediary required
  • Safety backed by light-client verification on both chains
  • Timeouts refund the sender after a relayer submits a timeout proof. Refunds depend on a live relayer and an active counterparty light client; if the client expires or is frozen, the refund waits until the client is recovered (for example through a governance client-recovery proposal)
For exact params, events, and return values, see Precompile ABI Reference.