Skip to main content

邮箱

caution

本协议概述来自我们的v2合约版本。

v3现在包括了post-dispatch hooksinterchain gas payments (IGP)作为必需的hooks之一。

我们正在尽快更新相关内容。同时,请参阅完整的updated v3 Reference 选项卡获取最新的合约接口。

HyperlaneMailbox智能合约公开了用于发送和接收链间消息的链上API。Hyperlane支持的每个链上都部署了一个“邮箱”合约。

Mailboxes网络促进了区块链之间的连接,开发人员可利用其创建链间应用程序,并将链间功能添加到其现有应用程序中。

接口

IMailbox接口公开了两个状态变化函数; dispatch()process(),它们分别用于发送和接收消息。

// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity >=0.8.0;

interface IMailbox {
function dispatch(
uint32 _destinationDomain,
bytes32 _recipientAddress,
bytes calldata _messageBody
) external returns (bytes32);

function process(bytes calldata _metadata, bytes calldata _message)
external;
}

发送

要发送链间消息,开发人员需要调用Mailbox.dispatch()

该函数将消息内容、目标链ID和收件人地址作为参数。每条消息都作为叶子插入到由Mailbox存储的incremental merkle tree中。

Hyperlane的权益证明协议使用该merkle树来验证欺诈证据。

进程

为了传递链间消息,relayer调用Mailbox.process()

这个函数接受要传递的消息以及中继器指定的任意元数据作为参数。

Mailbox将消息和元数据传递给收件人的链间安全模块进行验证。如果ISM成功验证消息,Mailbox通过调用recipient.handle()将消息传递给收件人。

info

请参阅Message.sol了解Hyperlane消息编码的更多详细信息