Create a New Interchain Token
The Token Whitelisting for Squid Router
form is now live! Download
the repo, install dependencies, and npm run wizard
on the command line to
access the interactive form through the wizard.
Interchain tokens are ERC-20 tokens that are available on multiple blockchains. They are created using the Interchain Token Service and can be used to transfer value between blockchains.
The Interchain Token Service is deployed to 0xB5FB4BE02232B1bBA4dC8f81dc24C26980dE9e3C
while the Interchain Token Factory is deployed to 0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66
.
You can create a new Interchain Token through the Interchain Portal, or by building a custom ERC-20 token and deploying it with a Mint/Burn token manager on all chains. These tokens will be accessible on multiple chains, allowing for seamless interaction on each chain by utilizing familiar methods such as send, transfer, and approve — just as with any standard ERC-20 token.
NOTE: The security of your token is limited to the security of the chains it integrates with. Since blockchains can have different security practices, we recommend doing due diligence on all chains your token will be deployed to.
Create a new Interchain Token using the Interchain Token Portal
The simplest way to create an Interchain Token is to do so through the portal:
- Visit the Interchain Portal.
- Connect your wallet.
- Select a source network where you have funds available.
- Select the option to deploy a new Interchain token.
- Add the required details for your new token:
- Name
- Symbol
- Decimals
- Amount to mint
- You can also choose the advanced option where you can add an account as
Token Minter
andSalt
value. Otherwise, these fields will be prefilled with the deployer (connected account) address and a random, uniquely generated salt value.
- You can also choose the advanced option where you can add an account as
- Select additional chains for your token’s availability. You can optionally add the token amount to mint on each selected chain.
Congratulations! Your new Interchain Token is now available on multiple chains. Furthermore, it follows the Interchain Token Standard, meaning that users can call the interchainTransfer()
method on the token itself to transfer between blockchains.
Refer to the four-step tutorial for more detailed steps on creating Interchain Tokens using the Interchain Token Portal.
Make sure you consider all relevant stakeholders before deploying a token through ITS. Creating a simple token using the ITS Portal will give the token the same name and symbol on all chains. If you need your token to have different names or symbols on different chains, you’ll have to build a custom token.
Create a custom Interchain Token
If you want your token to have more features than the standard Interchain Token, you can create a custom token. With these tokens, you can specify minting policies, ownership structures, rate limits, and other bespoke functionality.
To create a custom Interchain Token:
- Build your ERC-20 token and deploy it on multiple chains.
- Deploy a Mint/Burn - Token Manager for existing tokens on all chains using the
deployTokenManager()
method on the Interchain Token Service specifying parameters likesalt
,destinationChain
,tokenManagerType
,params
, andgasValue
. - Ensure that the Interchain Token Service can invoke the
Mint/Burn
functions on the token by callingtransferMintership()
on your token. This will transfer the minter role to the ITS on all chains, enabling it to mint or burn tokens.- Repeat this step on all other chains where the token exists, using the same deployer address and salt.
- Transfer Interchain Tokens between chains via the Interchain Token Service by calling
interchainTransfer()
.
To create the params
that will be used to initialize the Token Manager in the deployTokenManager
method above, you can use the Online Ethereum ABI Encoder specifying the operator of the Token Manager and the token address with the argument type bytes
and address
respectively.
Tokens can move between chains seamlessly, as the Token Manager contracts will mint and burn tokens as needed. If the minter
parameter consists of empty bytes when deploying a new Interchain Token, use a Mint/Burn TokenManager
. Otherwise, use a Lock/Unlock TokenManager
. Call transferMintership()
on the token to change the token minter to another address.
If you want to build a token with the IInterchainToken
feature yourself, make sure that your token implements the IInterchainTokenStandard
interface so you can offer the interchainTransfer()
and interchainTransferFrom()
methods directly on it.
Once you have designed an Interchain Token, you can deploy it to multiple chains using a tool such as the Constant Address Deployer to give it the same address everywhere.
What’s next
For further examples utilizing the Interchain Token Service, check out the axelar-examples
repo on GitHub.