Skip to main content

Message debugging

Finding a message ID from an origin transaction

The easiest way is to use the Hyperlane Explorer, if your chain is supported. If your chain isn't supported, the message ID can be found by looking at the originating transaction.

When viewing the origin transaction on the origin chain's block explorer, navigate to the Logs tab.

The DispatchId log contains the message ID as the topic number 1 (the second topic).

Sometimes, chain block explorers won't show the human-friendly "DispatchId" name. In this case, you can find the log by it's topic 0: 0x788dbc1b7152732178210e7f4d9d010ef016f9eafbe66786bd7169f56e0c353a.

Example on Arbiscan showing the DispatchId log on an origin transaction.

Debugging a message to a Cosmos chain

At the moment, the Hyperlane Explorer doesn't support non-EVM chains.

To check if your message has been delivered, select the destination chain and input your message ID below:

Destination Chain:
Message ID:
My warp route transfer says it was delivered, but I don’t see it

We can debug this with two steps:

Verifying if the funds were received:

  1. Open the block explorer for the destination chain, and navigate to your expected recipient address.
  2. If you expect to receive a token (e.g. an ERC-20), check the Token Transfers tab for the token being transferred to your address.
  3. If you expect to receive the native token (e.g. ETH, on Ethereum), check the "Internal Transactions" tab for the native token being transferred to your address.

Verifying the recipient of your transfer

When viewing the origin transaction on the origin chain's block explorer, navigate to the Logs tab.

The SentTransferRemote log contains the recipient as the topic number 1 (the second topic).

Sometimes, chain block explorers won't show the human-friendly "SentTransferRemote" name. In this case, you can find the log by it's topic 0: 0xd229aacb94204188fe8042965fa6b269c62dc5818b21238779ab64bdd17efeec.

The recipient address is the account on the destination chain that will receive the warped tokens. Zeroes are padded to the left of the address if needed.

If your destination chain is an EVM chain, the log will display 0x0000000000000000000000ffffffffffffffffffffffffffffffffffffffff to mean that 0xffffffffffffffffffffffffffffffffffffffff is the transfer recipient.

If your destination chain is a Cosmos chain, you can take the hexadecimal content and convert it to a bech32 address using tools like this one. Some Cosmos chains have different address lengths, so be conscious of how many characters to copy in.

Example on Arbiscan showing the DispatchId log on an origin transaction.

My Warp Route transfer recipient isn't the address I wanted

Sometimes browser extension wallets can contend with one another, and the address of a wallet you don't typically use takes precedence over your intended wallet. We've seen this happen a few times with OKX Wallet. Please check all your wallet addresses for your recipient address.

Relaying an EVM β†’ EVM message yourself

Using the Hyperlane CLI, it's possible to relay your message yourself if it's between two EVM chains.

  1. Set up the CLI locally following these instructions.
  2. Find your message ID following the above instructions
  3. Obtain a private key for an account with funds on your destination chain.
  4. Run the command to relay the message:
HYP_KEY=<your-private-key> hyperlane status --relay --origin <origin-chain> --destination <destination-chain> --id <message-id>

For example:

HYP_KEY=0xffff00000000000000000000000000000000000000000000000000000000ffff hyperlane status --relay --origin base --destination blast --id 0xabcd00000000000000000000000000000000000000000000000000000000abcd
I still need help with my message not being delivered

If the above steps haven't helped, you can join our Discord and create a new post in the #support-forum channel.