IBC Transfer to Osmosis Using Keplr Wallet

This guide walks you through the steps involved in sending an IBC transfer to osmosis using the Keplr wallet.

1. Open Keplr Wallet

Open Keplr Wallet

Start by opening your Keplr wallet. If you don't have it installed, you can download it from the browser extension store.

2. Navigate to Advanced IBC Transaction

Navigate to Advanced IBC Transaction

In your Keplr wallet, navigate to the section where you can initiate an advanced IBC transaction.

Note: If you do not have "Developer Mode" enabled on your Keplr Wallet, you will not see this option. To enable developer mode, go to Settings -> Advanced, and enabled "Developer Mode".

3. Select Asset

Select Asset

Choose the asset/token you want to transfer. Ensure you have sufficient balance for the transfer.

4. Choose Destination Chain

Adding IBC Transfer Channel in Keplr

You must first add the IBC Transfer Channel to Keplr. When you click on destination chain, you will see "Add New IBC Tranfer Channel", with a "+" icon. Choose the relevant destination chain.

New IBC Transfer Channel

Next, you can add an IBC Channel, and the corresponding Source Channel ID

Add IBC Channel

You can find the relevant Configurations for Coreum here: Coreum IBC Channels

Choose Destination Chain

Select the blockchain where you want to send the asset. This is the receiving chain of the IBC transfer.

Note: This will be blank if the channel-id has not been registered in the IBC Chain Registry, and correctly opened by the relayer.

5. Enter Wallet Address

Enter Wallet Address

Provide the address of the recipient's wallet on the destination chain.

6. Enter Amount

Enter Amount

Specify the amount of the asset you wish to transfer. Ensure you account for any transaction fees.

7. Review Transaction

Confirm Transaction

Review all the details of the transfer. Ensure everything looks correct before proceeding.

7a. Confirm Transaction Details

Confirm Transaction Details

Keplr might ask you to confirm the transaction details once more. Double-check and proceed.

7b. Approve Transaction

Confirm Data

Ensure all transaction data is correct. This includes the amount, destination address, and asset type.

10. Final Transaction Confirmation

Final Transaction Confirmation

Before the transaction is broadcasted, confirm it for the last time. This is the final step before the transaction is sent to the network.

11. Transaction Explorer

Transaction Explorer

Once the transaction is confirmed, you can view it on Coreum's blockchain explorer.

Note: Tt's essential to understand that IBC transactions might not be instantaneous. There's a brief delay between sending the transaction from the source chain and receiving it on the destination chain. Additionally, if a transaction timeouts for any reason, this will be visible on the source chain, not the destination chain. Always monitor the source chain's explorer for any timeout or error messages related to your IBC transaction.

12. Transaction Hash

Transaction Hash

This is the unique identifier for your transaction. You can use it to track the status of your transfer.

13. Explorer Transaction Messages

Explorer Transaction Messages

In the blockchain explorer, you can see detailed messages associated with your transaction, including confirmations from validators and more.

Transfer Message

{
    "memo": "",
    "@type": "/ibc.applications.transfer.v1.MsgTransfer",
    "token": {
        "denom": "ucore",
        "amount": "52931"
    },
    "sender": "core10zt2r5p2zh9ltcyg98zt2gtmcypkqgq3qsfj74",
    "receiver": "osmo1pwvcapna75slt3uscvupfe52492yuzhflhakem",
    "source_port": "transfer",
    "source_channel": "channel-2",
    "timeout_height": {
        "revision_height": "10958485",
        "revision_number": "1"
    },
    "timeout_timestamp": "0"
}

Transfer Logs

Here are the example logs from our IBC Transfer:

Logs

[
    {
        "events": [
            {
                "type": "coin_received",
                "attributes": [
                    {
                        "key": "receiver",
                        "value": "core12k2pyuylm9t7ugdvz67h9pg4gmmvhn5vvgafk0"
                    },
                    {
                        "key": "amount",
                        "value": "52931ucore"
                    }
                ]
            },
            {
                "type": "coin_spent",
                "attributes": [
                    {
                        "key": "spender",
                        "value": "core10zt2r5p2zh9ltcyg98zt2gtmcypkqgq3qsfj74"
                    },
                    {
                        "key": "amount",
                        "value": "52931ucore"
                    }
                ]
            },
            {
                "type": "ibc_transfer",
                "attributes": [
                    {
                        "key": "sender",
                        "value": "core10zt2r5p2zh9ltcyg98zt2gtmcypkqgq3qsfj74"
                    },
                    {
                        "key": "receiver",
                        "value": "osmo1pwvcapna75slt3uscvupfe52492yuzhflhakem"
                    }
                ]
            },
            {
                "type": "message",
                "attributes": [
                    {
                        "key": "action",
                        "value": "/ibc.applications.transfer.v1.MsgTransfer"
                    },
                    {
                        "key": "sender",
                        "value": "core10zt2r5p2zh9ltcyg98zt2gtmcypkqgq3qsfj74"
                    },
                    {
                        "key": "module",
                        "value": "ibc_channel"
                    },
                    {
                        "key": "module",
                        "value": "transfer"
                    }
                ]
            },
            {
                "type": "send_packet",
                "attributes": [
                    {
                        "key": "packet_data",
                        "value": "{\"amount\":\"52931\",\"denom\":\"ucore\",\"receiver\":\"osmo1pwvcapna75slt3uscvupfe52492yuzhflhakem\",\"sender\":\"core10zt2r5p2zh9ltcyg98zt2gtmcypkqgq3qsfj74\"}"
                    },
                    {
                        "key": "packet_data_hex",
                        "value": "7b22616d6f756e74223a223532393331222c2264656e6f6d223a2275636f7265222c227265636569766572223a226f736d6f317077766361706e613735736c74337573637675706665353234393279757a68666c68616b656d222c2273656e646572223a22636f726531307a7432723570327a68396c7463796739387a743267746d6379706b716771337173666a3734227d"
                    },
                    {
                        "key": "packet_timeout_height",
                        "value": "1-10958485"
                    },
                    {
                        "key": "packet_timeout_timestamp",
                        "value": "0"
                    },
                    {
                        "key": "packet_sequence",
                        "value": "17"
                    },
                    {
                        "key": "packet_src_port",
                        "value": "transfer"
                    },
                    {
                        "key": "packet_src_channel",
                        "value": "channel-2"
                    },
                    {
                        "key": "packet_dst_port",
                        "value": "transfer"
                    },
                    {
                        "key": "packet_dst_channel",
                        "value": "channel-2188"
                    },
                    {
                        "key": "packet_channel_ordering",
                        "value": "ORDER_UNORDERED"
                    },
                    {
                        "key": "packet_connection",
                        "value": "connection-3"
                    }
                ]
            },
            {
                "type": "transfer",
                "attributes": [
                    {
                        "key": "recipient",
                        "value": "core12k2pyuylm9t7ugdvz67h9pg4gmmvhn5vvgafk0"
                    },
                    {
                        "key": "sender",
                        "value": "core10zt2r5p2zh9ltcyg98zt2gtmcypkqgq3qsfj74"
                    },
                    {
                        "key": "amount",
                        "value": "52931ucore"
                    }
                ]
            }
        ]
    }
]

14. Verify Successful Transfer to Osmosis

Now we can see our tokens have arrived, and are named "CORE on Osmosis", and have an IBC label.

Successful Transfer to Osmosis

By following these steps, you should successfully send an IBC transfer to osmosis using the Keplr wallet on Coreum. Remember to always double-check details before confirming transactions to ensure the security and accuracy of your transfers.