Getting Started with Cosmos IBC Transfers

Experience the Interchain Magic with Keplr

Catdotfish
11 min readApr 5, 2021

⚠️ Disclaimer ⚠️

IBC Transfers or Fungible Token Transfer (ICS-20) are based on a standard (ICS) under active and rapid development.
I recommend that users approach this Keplr feature only after careful research and awareness of the risks associated with its improper use.
Please note that Chainapsis discourages users from sending mainnet tokens to zones other than the mainnet chains available here and does not take any liability related to the potential loss of funds due to the improper usage of the Interchain Transfers service.
I personally encourage users to play with IBC Transaction sending the equivalent of few cents each time:
If you are not an experienced user PLEASE USE [INTERCHAIN TRANSFERS] ONLY FOR TESTING PURPOSES!

⚠️ ATTENTION ⚠️

If you are swapping on Emeris/Osmosis before using Keplr [Interchain Transfer] you have to send the obtained tokens back to their native chain via Emeris/Osmosis. Check the MINI-FAQ below and in case of doubts reach out to the support.
Don’t send tokens via [Interchain Transfer] directly to a CEX: this can cause in most cases the loss of the funds
Keplr automatically saves the channel selected the first time, so it is essential to remember to change it if this channel is no longer among the suggested ones. Your funds are not lost in this case! However, you may have your tokens locked for hours before a developer unlocks them.
Mintscan may not be always updated and consequently, you may experience downtimes even with channels that are shown in green [available].

Mainnet Supported

🐇 Cosmos Hub | $ATOM
🐇 IRIS Hub | $IRIS
🐇 Crypto.com |$CRO
🐇 Akash | $AKT
🐇 Osmosis| $OSMO & $ION
🐇 Persistence | $XPRT
🐇 Regen Network| $REGEN
🐇 Sentinel | $DVPN
🐇 Starname| $IOV
🐇 Sifchain| $ROWAN
🐇 Certik ($CTK)
🐇 IXO ($IXO)

Before Starting

This tutorial will take Cosmos Hub and Osmosis as sample cases, but the process is applicable for all chains actively connected via IBC. Read more about how to find the right channel ID for your favorite chains in the Mini-FAQ available at the end of this Tutorial.

  • Download (or update) Keplr Wallet Extension from the Chrome Store.
    Note: the Firefox extension is a note scam!
    Download your Keplr Extension only from official links!
  • If this is your first time with Keplr, set up your extension creating a new account, linking your Ledger, or importing your account via mnemonic phrase (Here you can find the full tutorial).
  • Check that you have enough $ATOM/$OSMO in the [available balance] in your Cosmos Hub & Osmosis accounts.
    [Available balance] means liquid tokens: they cannot be staked, unbonding, in the process of being disseminated as rewards, or in a LP (liquidity pool).
  • Make sure to have ready your Cosmos/Osmosis mainnet addresses.

IBC Transfer Cosmos Hub <> Osmosis

  • On your Keplr Extension, select [Cosmos] in the Network Selection drop-down.
  • In the [IBC Transfer] section, click on [Transfer].
  • Once you display the [Select Chain] field, click on [New IBC Transfer Channel]
  • You can now add a new IBC Channel to your Keplr Extension:
    on [Destination Chain] select [Osmosis] and write on [Destination Chain Channel ID] [channel-141]*. To finalize the operation, click on [Save].
    *Keplr automatically saves the channel selected the first time, so it’s essential to remember to change it if this channel is no longer among the suggested ones on Mintscan.

Notes:
• If you write the wrong number on the [Destination Chain Channel ID], Keplr will reject the operation with the warning [Failed to fetch the channel].
• To find the correct channel ID please follow the instructions available on the MINI-FAQ below, section [How can I find the right channel IDs for each chain to perform Interchain Transfers?]
• Remember that you must write the channel ID in lower case (i.e. channel-X)

  • Once back in the [IBC Transaction] section of your sending address, enter your mainnet Osmosis address (osmosxxxxxxx...) in the [Recipient] field, a MEMO (Optional), and click on [Next] to proceed.
  • Now enter the number of ATOM you’d like to send to Osmosis on the [Amount] field, select the preferred transaction fee then click [Submit].
    I suggest using [Average] or [High] fees at this time.
  • On the transaction confirmation page, you can review the details of your transaction. Click on [Approve] to confirm.

⚛️ Congratulations & Welcome to the IBC Gang! ⚛️

Notes:
• IBC transactions may take more time than the average internal transaction but never exceed 5 min.
If more than five minutes have passed and the tokens are not visible in the destination address, please refer to the MINI-FAQ below.
• Don’t send tokens via [Interchain Transfer] directly to a CEX: this can cause in most cases the loss of the funds.
• Don’t send LP tokens to other Hubs.
• Don’t use Keplr Interchain Transfers if you’re swapping tokens via Emeris, please use the Emeris UI.

IBC Transfer Osmosis <> Cosmos Hub

I will perform this process assuming that we have already performed the first transaction from Cosmos Hub to Osmosis.
Since Keplr automatically recognizes the channel ID needed to send the tokens back, we will therefore not have to do the process of entering the channel ID again to perform Osmosis > Cosmos Hub Interchain Transfers.

If this is your first transaction from Osmosis to the Cosmos Hub, follow the tutorial as described in the previous section, taking care to fill in the [New IBC Transfer Channel] section by selecting [Cosmos] and writing [channel-0].

Note:
All IBC Hubs have their own channel ID and knowing this channel ID is necessary to perform the IBC transaction. There may also be backchannels opened by developers for testing purposes, but for the safety of your funds, I strongly discourage sending Mainnet tokens to chains other than the ones listed in this tutorial as Mainnets & [green] channel IDs. See the MINI-FAQ below for more.

  • On your Keplr Extension, select [Osmosis] in the Network Selection drop-down.
  • In the [IBC Transfer] section, click on [Transfer].
    Please use the [IBC Transfer] rather than clicking on the token itself (i.e. ATOM/COSMOS CHANNEL-0) as clicking on the token will only allow you to send the [IBC] ATOM to another Osmosis address via local chain transaction, rather than sending the tokens back to the Cosmos Hub via Interchain Transfer.
  • You can notice now that by clicking in the [Destination Chain — Select Chain] field, [Cosmos] appears automatically.
  • Enter your Cosmos Hub address (cosmosxxxxxxx...) in the [Recipient] field, a MEMO (Optional), and click on [Next] to proceed.
  • Now, enter the amount of $ATOM you‘d like to send back to Cosmos Hub in the [Amount] field, select the preferred transaction Fee and click on [Submit].
    You can select the entire amount of $ATOM available by clicking on [Balance]
  • On the transaction confirmation screen, you can view the details of your transaction. Select [Approve] to confirm the transaction.
    The transaction will be completed at the moment the spinning circle will disappear from the section [IBC Transfer] of your Keplr Extension.

💡 MINI-FAQ

  • Can I perform Interchain transactions to addresses not linked to a Keplr wallet?
    Yes, but the address MUST be a non-custodial wallet account and the receiver will be able to see/manage the tokens only by importing his/her account into Keplr.
  • Can I successfully perform Interchain Transfers to Exchanges?
    NO, if you perform an IBC transfer with an Exchange address as the destination your funds will be lost.
    Please send first the tokens to their own mainnet and then from there send them via local chain transaction to the exchange.
  • Can I send Osmosis and Emeris/Gravity DEX LP tokens via [Interchain Transfer]?
    No, and please don’t try.
  • Are channel IDs the same for every chain?
    No, every chain has its own channel (or even multiple channels per chain): please don’t try to use different paths from the one available on Mintscan in the section [IBC Relayers].
  • How can I find the right channel IDs for each chain to perform Interchain Transfers?
    Go to the [IBC Relayers] section of the starting chain:
    Cosmos Hub, IRISnet, Crypto.org, Akashnet, Osmosis, Persistence, Sentinel, Starname, Sifchain.
    To find the right channel ID (which must be written in lower case channel-[number]) you just have to click on the chain to which you want to send your tokens and look for the channel indicated in green: the number of the channel ID will be the one on the left! For example, the channel-id to send from Cosmos Hub to Osmosis is channel-141, but the channel-id to send from Osmosis to the Cosmos Hub is channel-0.
    Note:
    • If there are no green channels please wait because there is a risk that the relays that connect your starting chain with that zone are temporarily inactive.
    • Regen Network isn’t available on Mintscan but you can check the open channels from the destination chain if needed. Same goes for Certik.
  • When other mainnet chains will be available to perform IBC Transfers?
    Terra, IXO, Sommelier, and few others are almost ready: stay updated by following or Cosmos social media platforms (Twitter, Telegram, Reddit) to not miss any news!
  • How many fees does it cost to make an IBC transfer?
    Just a few cents!
  • How long does a transfer take to complete?
    It depends on the current status of the network and relayer, but should not exceed 1 minute.
    If the funds still have not arrived after 5 minutes, please check the status of the transaction (failed, successful) on Mintscan by pasting in the search bar on the top of the website the mainnet address from which you sent the tokens.
  • How can I know if the transfer was successful?
    You can check the status of the operation via block explorer that supports IBC Transfers, such as Mintscan:
    Copy the mainnet address from which you make the send (i.e. cosmosxxxxxxxxxxxxxxxx) by clicking on it on Keplr Extension.
    Paste the mainnet address in the Mintscan search bar on the top of the website.
    Once Mintscan has loaded the page related to your address, scroll down to the [Transactions] section and look for the specific transaction: next to it you will find the tag [IBC Transfer] in purple and [Success] in green or [Fail] in red depending on whether the transaction was successful or not.
    If the transaction failed scroll down to read how to troubleshoot.
    If the transaction has the tag [Success], click on the transaction hash (series of numbers and letters in blue above the word [IBC Transfer]) and open the transaction tab.
    Scroll down to the [Receiver] field and click on the mainnet address there (which should correspond to the mainnet address you wanted to send the tokens to).
    This will open the page for that specific mainnet address: scroll down and check that the corresponding transaction has the tags [IBC Received] and [Success].
    Note:
    In the destination address page the transaction will be displayed with another transaction hash and if you are sending tokens other than the native ones of the mainnet itself, Mintscan will show 0 in the token details. If this is the case, you can read about the sent IBC tokens by clicking on the transaction hash, which will open the transaction details tab ‘from the perspective’ of the destination address.
  • What should I do if the transaction has failed?
    Please try again after at least 5–10 minutes.
    If the problem persists, please try to check what the bottleneck might be by consulting the FAQ.
    Close to the beginning of the Osmosis epoch at 5PM UTC you may experience congestion, if this is the case please wait a bit longer.
  • What should I do if the transaction was successful but the funds have not arrived?
    If you were using Emeris features such as [Swap]
    If you swapped or did other operations on Emeris and then sent the resulting tokens out from the Cosmos Hub via Keplr [Interchain Transfer], your tokens are probably displayed on Keplr Extension destination mainnet menú as [X Token](X CHAIN — CHANNEL-X) format in the [Tokens] part.
    To unlock them please perform an interchain transfer in reverse using the same channel: Keplr should have saved the channel you used previously, if this is not the case look for the channel ID as described in [How can I find the right channel IDs for each chain to perform Interchain Transfers?].
    Once your tokens are returned to the sending address, use Emeris to perform the operation and send the tokens out of the hub.
    Note:
    To perform the reverse operation to return the tokens to the sending address you must have mainnet tokens available at the destination address to pay the transaction fees
    . [Available balance] means liquid tokens: they cannot be staked, unbonding, in the process of being disseminated as rewards, or in a LP (liquidity pool).
    If you didn’t use Emeris
    If the transaction is shown as successful but the funds do not arrive at the destination chain within an hour of the execution, first do a hard refresh of Keplr, to make sure it is not due to local congestion or a missed update of the user interface. You can find the step-by-step process in Keplr’s FAQ.
    If that doesn’t solve the problem, please ask the team for support and refrain from performing any further operations on the same chain, as this is a sign of a possible relayer down.
    You can find how to effectively notify them in the section below.
  • What information do I need to provide to receive support?
    The hash of the transaction you want to receive assistance with, including a brief explanation of what you were trying to do and what you did right before.
    It is particularly relevant to note whether you performed transactions via Emeris/Osmosis or whether you interacted with a centralized exchange.
  • Where can I find the transaction hash?
    You can check the transaction hash via block explorer that supports IBC Transfers, such as Mintscan:
    Copy the mainnet address from which you make the send (i.e. cosmosxxxxxxxxxxxxxxxx) by clicking on it on Keplr Extension.
    Paste the mainnet address in the Mintscan search bar on the top of the website.
    Once Mintscan has loaded the page related to your address, scroll down to the [Transactions] section and look for the specific transaction.
    Once you have found the transaction for which you wish to receive assistance, please click on the series of numbers and letters in blue above the words [IBC Transfer] for that specific transaction: this will open a page with all the essential information to provide you with assistance, so copy the link and provide it to the support team.

--

--