As we begin to bring greater cross-chain interoperability to the blockchain space, one of our early initiatives is the simple transfer of assets across chains. We recently announced the launch of Satellite, a newly-released application that enables users to easily transfer assets across chains through an intuitive web-based UI. This writeup is a step-by-step walkthrough of how you can use Satellite to make such transfers.
The list of supported assets and blockchains is expected to grow, but we will initially include native Terra assets (UST/LUNA) to and from 5 EVM chains — Avalanche, Ethereum, Fantom, Moonbeam, and Polygon.
Whether you are going from Terra to EVM or vice versa, the flow remains the same:
Prerequisites to make asset transfers using Satellite
- Chrome browser with Keplr wallet extension (quick note on this below)
- Funds to cover transaction fees generated in transferring assets from your source chain:
- For transferring assets from an EVM chain to Terra: A Metamask wallet connected to the desired EVM chain with native tokens in that chain to cover transaction fees
- For transferring assets from Terra to EVM: A Terra address with LUNA tokens to cover transaction fees
If there are issues at any point, use the support button on the bottom right corner of the Satellite app for assistance.
Quick Note on the Keplr Wallet Requirement
Our first set of supported chains/assets includes transferring funds on Terra to/from EVM chains. One of the steps in our app for transactions that originate from Terra will involve an IBC transfer from a funded Terra wallet to a one-time Axelar deposit address.
The universe for IBC transfers is ever-growing, and we have found that market-wide options to do that are fairly limited at the moment.
So we built this function into the app, with help from our friends at Keplr. Once you have your Keplr wallet installed and need to inject the Terra network into it, we made that easy for you to do so:
Let’s begin a Terra >> EVM flow!
First, visit the Satellite app
Prefer to watch a video tutorial?
Make your source/destination chain selections
Use the Top Flows icon in the top right to prefill the entry fields with Source Chain, Asset, and Destination Chain information.
Or manually select the source chain and asset to transfer, in this example Terra and UST. Then select the destination EVM chain from the dropdown — let’s go with Avalanche.
You will notice at this point a small table will appear that shows info on:
- Minimum Transfer Amounts
- Fees that the networks will assess on this transaction
- How long we expect the entire flow to take
Next, enter the destination address to receive the transferred tokens on the destination chain. Optionally, you can autofill the destination address as your connected EVM address on Metamask.
Note on Transaction Fees and Minimum Deposit Amounts:
- The network assesses a fee of 0.1% on all transactions made. For example, if you are transferring 100 UST from Terra to Avalanche, you will receive 99.9 of wrapped UST on Avalanche.
- On top of this, you will need to ensure there are funds on the source chain (in the form of native tokens) to pay for transaction fees to that chain. In the example above, you will actually need enough native LUNA to cover transaction fees assessed by Terra. (Pro Tip: If the transferred tokens need to be brought back to the source chain at a later time, you will also need funds on the destination chain to pay for transaction fees on the way back)
- The Minimum Transfer Amount of tokens that must be transferred will differ depending on the selected destination chain.
- Double check that the destination address is correct, or the funds will be lost.
Make your deposit!
After initiating the asset transfer, the Axelar Network will generate a one-time deposit address, where the tokens to be transferred will be deposited.
In our example above, the generated address will be an Axelar Network (not Terra) address. At this stage, you will need to send your deposit through an IBC transfer from your Terra address.
Good news! This can be done directly within the Satellite application, which facilitates the IBC transfer through your connected Keplr wallet.
So if you already have a Keplr Wallet with a funded Terra account, you’re good to go. Otherwise, download the Keplr Wallet and either create a new account and send LUNA and UST funds to your new Keplr account, or import a Terra account you already have into Keplr.
To do this, click to connect the Keplr wallet at step 2 and approve the connection request:
Once connected, the Deposit Notes section will show the Terra UST balance you have in your wallet. Enter the amount of UST to send and make the deposit via IBC transfer, ensuring the number you enter meets the Minimum Transfer Amount requirement and is not more than the balance in the account.
Sit back and relax
Axelar Network will then confirm the deposit and transfer the funds to the destination address provided on Avalanche. Once this is complete, the transferred tokens can be viewed on Metamask… and that’s it!
Note: The UST that is sent to Avalanche will appear in the form of wrapped UST tokens on the Avalanche chain. See the Appendix for how to find the right token contract for UST on Avalanche and how to import it into your Metamask account so you can see the transferred tokens.
Let’s go the other way: EVM >> Terra
The Satellite app also allows for transfer flows in the reverse direction! The steps are largely repetitive of the above, but there are a few differences to highlight when bringing these wrapped tokens back to Terra:
Entering your destination address
Similar to the Terra >> EVM flow, you can optionally elect to auto-populate a destination address from a connected wallet for the EVM >> Terra flow. In this case, you will auto-populate your Terra address from your installed Keplr wallet.
Making Your EVM Deposit
In the Terra >> EVM flow, you will recall in the 4-step transaction status page that Step 2 required you to make a deposit. It is no different here for the EVM >> Terra case, except the deposit address generated is in fact an Avalanche deposit address.
The deposit can be made from your Metamask or you can make that deposit directly from Satellite, through our Metamask integration. Make sure you are depositing Axelar wrapped UST tokens, as depositing assets that are not Axelar wrapped could result in the loss of those funds.
If you do not have the Avalanche network set up on your Metamask extension, we facilitate that for you. After hitting “Connect”, you will see the prompt to add Avalanche to your wallet, if it doesn’t already exist.
The rest of the process is similar to the previous flow. The final funds that arrive back on Terra in this case will not be wrapped UST (as they were when they existed on Avalanche), but in fact native UST on the Terra network.
Appendix: Adding Token Contracts on EVM Chains
First, add the EVM chain to Metamask, if it does not already exist. In Metamask, click the networks dropdown, then Add network.
Enter the network information, which can be found online into Metamasks add network fields. For example, for Avalanche Mainnet:
Save the network. With the EVM chain connected, add the Axelar wrapped UST tokens on the EVM chain to Metamask. Go to the Assets tab and click Import Tokens.
To add the token, first find the contract address using the Axelar Mainnet Address Page. Find the address of the relevant token, in this case, Avalanche UST token address. Copy this address into the Metamask Token Contract Address field. The remaining fields should be filled in automatically, and the token can be added.
The balance should display the newly transferred tokens.
Transfer Terra assets to EVM chains using Satellite was originally published in Axelar on Medium, where people are continuing the conversation by highlighting and responding to this story.