logoAcademy

Token Remote

Learn about the Token Remote, the asset destination component of the ICTT

TokenRemote

An abstract implementation of ITokenTransferrer for a token transfer contract on a "remote" chain that receives transferred assets from a specific TokenHome instance. Each TokenRemote instance has a single TokenHome instance that it receives token transfers from to mint tokens. It also handles sending messages (and correspondingly burning tokens) to route tokens back to other chains (either its TokenHome, or other TokenRemote instances).

Once deployed, a TokenRemote instance must be registered with its specified TokenHome contract. This is done by calling registerWithHome on the remote contract, which will send a Interchain Messaging message to the home contract with the information to register.

All messages sent by TokenRemote instances are sent to the specified TokenHome contract, whether they are to redeem the collateral from the TokenHome instance or route the tokens to another TokenRemote instance.

Routing tokens from one TokenRemote instance to another is referred to as a "multi-hop", where the tokens are first sent back to their TokenHome contract to update its accounting, and then automatically routed on to their intended destination TokenRemote instance.

TokenRemote contracts allow for scaling token amounts, which should be used when the remote asset has a higher or lower denomination than the home asset, such as allowing for a ERC20 home asset with a denomination of 6 to be used as the native EVM asset on a remote chain (with a denomination of 18).

ERC20TokenRemote

A concrete implementation of TokenRemote, IERC20TokenTransferrer, and IERC20 that handles the minting and burning of an ERC20 asset. Note that the ERC20TokenRemote contract is an ERC20 implementation itself, which is why it takes the tokenName, tokenSymbol, and tokenDecimals in its constructor.

All of the ERC20 interface implementations are inherited from the standard OpenZeppelin ERC20 implementation and can be overridden in other implementations if desired.

NativeTokenRemote

A concrete implementation of TokenRemote, INativeTokenTransferrer, and IWrappedNativeToken that handles the minting and burning of the native EVM asset on its chain using the native minter precompile.

Deployments of this contract must be permitted to mint native coins in the chain's configuration. Note that the NativeTokenRemote is also an implementation of IWrappedNativeToken itself, which is why the nativeAssetSymbol must be provided in its constructor.

NativeTokenRemote instances always have a denomination of 18, which is the denomination of the native asset of EVM chains.

Register with Home

TBD

Updated:

On this page

Edit on Github