邮箱
caution
本协议概述来自我们的v2合约版本。
v3现在包括了post-dispatch hooks, interchain 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消息编码的更多详细信息