Core smart contract interface for sending and receiving cross-chain messages in Hyperlane
The Hyperlane Mailbox smart contracts expose an on-chain API for sending and receiving interchain messages. There is a Mailbox contract deployed on every chain Hyperlane supports.
The network of Mailboxes facilitates the connective tissue between blockchains that developers leverage to create interchain applications, and add interchain functionality to their existing applications.
To send interchain messages, call the dispatch function.
To receive interchain messages, implement the handle function.
The nonce is a monotonically increasing integer for each message sent from a given Mailbox. It is incremented each time a message is dispatched to serve as a separator for otherwise identical messages.
Copy
Ask AI
function delivered(bytes32 messageId) external view returns (bool);
The messageId is a globally unique message identifier, returned from the dispatch call, computed as the keccak256 hash of the message (with headers).
The Mailbox maintains a mapping of already delivered messageId values to prevent replay attacks. If a message is received with a messageId that has already been delivered, the message is rejected.
To send interchain messages, developers call Mailbox.dispatch().
This function takes as parameters the message contents, the destination chain ID, and the recipient address. Each message get inserted as a leaf into an incremental merkle tree stored by the Mailbox.
Hyperlane’s proof of stake protocol uses this merkle tree to verify fraud proofs.
To deliver interchain messages, the relayer calls Mailbox.process().
This function takes as parameters the message to deliver as well as arbitrary metadata that can be specified by the relayer.
The Mailbox will pass the message and metadata to the recipient’s interchain security module for verification. If the ISM successfully verifies the message, the Mailbox delivers the message to the recipient by calling recipient.handle().
See
Message.sol
for more details on Hyperlane message encoding