Debugging
Why didn't my interchain message get delivered?
When you send an interchain message, there are a few message relay failure modes that you should be aware of.

Invalid Destination

If the destination domain identifier (uint32) is not known to relay clients they will have no way to deliver your message. Refer to the domain identifiers docs for Abacus Works supported domains and the canonical identifiers to use when sending messages to these destinations.

Invalid Recipient

If the recipient address (bytes32) is not a contract address that implements the receive interface (IMessageRecipient) on the destination domain, relay clients will have no way to deliver your message. EVM addresses (address) must be left-padded with zeroes to be compliant. Refer to the send encoding section for details and a pure addressToBytes32 utility function.

Unprocessable

An unprocessable message implies the account receiving the message (via IMessageRecipient.handle) is always reverting (according to the eth_estimateGasRPC). The relayer client will continue to evaluate messages for potential state changes which affect revert conditions, but the relayer will never submit a transaction which it expects will revert.
This conservative behavior is intended to prevent users from losing funds on the source chain unnecessarily. It is subject to change and if you have a use case which is not accommodated by this behavior, please reach out on Discord.

Underfunded

Users are not currently required to pay relaying fees but eventually this will be necessary for the economic sustainability of the protocol.
An underfunded message implies the gas paid for message relay is insufficient. The relayer registered on the gas paymaster can claim these fees to compensate for gas costs incurred on the destination chain. The relayer client uses the eth_estimateGasRPC on the destination chain to determine the absolute cost of relaying a message, uses the CoinGecko API to calculate the exchange rate between the two chains native assets, and will only pay for message processing if the message relay was funded appropriately on the source chain's paymaster (within some acceptable price deviation).

Transaction Debugger

You can use the transaction debugger in the Hyperlane Explorer to debug message delivery. It will check for common issues like those described above. Be sure to set the explorer to the correct environment (e.g. Mainnet, Testnet) or your messages may not be found.
Copy link
On this page
Invalid Destination
Invalid Recipient
Unprocessable
Underfunded
Transaction Debugger