Register Existing Token

If you own an ERC-20 token on a single chain and want a wrapped, bridgeable version on other chains, you can register it as a Canonical Interchain Token using the Interchain Token Factory contract. Each token can only be registered once as a canonical token on its “home chain”.

You can register your existing token directly via the contract or use the ITS Portal no-code solution. Take a look at the diagram below to understand the process of registering an existing token as a Canonical Interchain Token.

💡

This diagram is interactive—click on the function names!

Your browser does not support SVG

Use the registerCanonicalInterchainToken function to register your token.

function registerCanonicalInterchainToken(
address tokenAddress // address of your token
) external payable returns (bytes32 tokenId) {}

This function deploys a Lock/Unlock Token Manager on the source chain, connects it to ITS upon deployment, and returns a unique token ID. Triggering the registerCanonicalInterchainToken() function initiates the process of registering your custom token with a Lock/Unlock token manager type on your token’s home chain.

Once your token is registered on the home chain, you can call the deployRemoteCanonicalInterchainToken() function. This will deploy an Interchain Token on a different blockchain that connects to your canonical token on the home chain.

Note: This is just one of many flows available when interacting with ITS.

Use the deployRemoteCanonicalInterchainToken function to deploy the token on a remote chain as a cross-chain transaction:

function deployRemoteCanonicalInterchainToken(
address originalTokenAddress, // original token address
string calldata destinationChain, // destination chain name
uint256 gasValue // gas value
) public payable returns (bytes32 tokenId) {};

This function deploys a token connected to your registered token on the home chain, making it bridgeable to the destination chain, and returns a token ID.

🚨

NOTE: The security of your token is only as strong as the security of the chains with which it integrates. When deploying an interchain token, ensure that all target chains are trustworthy.

You can initiate an interchain transfer from your source chain to a destination chain by using the interchainTransfer method on the ITS contract.

For further examples utilizing the Interchain Token Service, check out the axelar-examples repository on GitHub. There, you will find an example implementation titled its-canonical-token, which demonstrates how to deploy canonical Interchain Tokens and perform cross-chain transfers.

For a step-by-step guide on registering an existing token, check out the Programmatically Create a Canonical Interchain Token Using the Interchain Token Service tutorial.

Edit on GitHub