Use ERC-20 as Native Token (DIY)
Learn how to transfer an ERC-20 token to a new Avalanche L1 and use it as a native token via ICTT.
In this section, you will learn how to transfer an ERC-20 token from Avalanche’s C-Chain to a new Avalanche L1 using Interchain Token Transfers (ICTT) and set it up to act as the native token on the new L1. This guide will take you through the steps of configuring a local network environment, deploying the necessary contracts, and transferring tokens.
Create a new blockchain and Deploy on Local Network
Use the Avalanche CLI to create a new blockchain where you will deploy the ERC-20 as the native token.
Deploy an ERC-20 Contract on C-Chain
Use the Avalanche CLI to create a new blockchain where you will deploy the ERC-20 as the native token.
You will deploy an ERC-20 token on the Avalanche C-Chain, which will later be transferred and used as the native token on the new L1.
Deploy Interchain Token Transfer Contracts
Set up the home and remote transferer contracts for transferring tokens between the C-Chain and the newly created L1.
ERC20TokenHome
Contract on C-Chain
NativeTokenRemote
Contract onmyblockchain
Note: When deploying the NativeTokenRemote
contract on the L1, ensure that the initial amount matches the native token amount that was minted when the blockchain was created. This ensures consistency between the native token supply and the remote token counterpart.
Granting Native Minting Rights to NativeTokenRemote Contract
To ensure that the NativeTokenRemote
contract can mint native tokens on the L1 when ERC-20 tokens are transferred from the C-Chain
, the contract must be granted minting rights. This is done by adding the NativeTokenRemote contract
address to the Native Minter Precompile
.
-
You will need to interact with the
Native Minter Precompile
, which resides at a fixed address on all Avalanche L1s:
Native Minter Precompile Address:0x0200000000000000000000000000000000000001
-
Use the following command to grant the
NativeTokenRemote
contract minting rights by setting it as an enabled address on the Native Minter Precompile:
$NATIVE_TOKEN_REMOTE_L1
: The deployed address of theNativeTokenRemote
contract on your L1.
Once this step is completed, the NativeTokenRemote
contract will have the necessary permissions to mint native tokens when ERC-20 tokens are transferred from the C-Chain.
Register Remote Token with Home Transferer
Register the remote token on the home chain so that it recognizes the transferer contracts.
Collateralize and Transfer Tokens
Add collateral to the transferer contract on the home chain, and then send the ERC-20 tokens across chains.
- Approve Tokens for Transfer
Approve a certain number of tokens to be used by the Home Transferer.
- Add Collateral and Send Tokens
Add collateral to the transferer contract.
Send tokens to the L1
Conclusion
Follow the steps above to transfer an ERC-20 token from the C-Chain to your custom Avalanche L1 and use it as the native token. This exercise will demonstrate how Avalanche’s Interchain Token Transfer (ICTT) system works, ensuring that tokens are properly locked, transferred, and minted across multiple chains.
For more detailed information, refer to the official Avalanche ICTT documentation.