Erc7786 跨链消息传递示例

  • erc7786
  • 发布于 2024-12-01 18:18
  • 阅读 26

这篇文章详细介绍了如何使用 ERC7786 标准和 Axelar 适配器进行跨链消息传递,包括理论和实际的步骤,如适配器的设置、链等价关系的注册、消息的发送和执行。整篇文章围绕技术实施进行了系统性分析,适合开发者学习跨链技术的集成。

1. 使用 ERC7786 和 Axelar 适配器发送消息

本教程使用 Base Sepolia 作为源链,使用 Arbitrum Sepolia 作为目标链。

概念

ERC7786 定义了两个主要接口用于跨链消息传递:

  1. IERC7786GatewaySource - 源链接口,允许发送消息。关键组成部分:
    • sendMessage:用于启动消息发送的函数,接受:
      • destinationChain(CAIP-2 格式,例如 eip155:421614 表示 Arbitrum Sepolia)
      • 接收者地址
      • 负载(任意字节)
      • 属性(可选的特定协议参数)
    • 返回一个用于跟踪消息的出盒子 ID
    • 触发 MessagePosted 事件
  2. IERC7786Receiver - 目标链接口,接收消息。关键组成部分:
    • executeMessage:目标网关调用的函数,以传递消息
    • 必须验证调用网关是受信任的
    • 必须返回特定选择器( 0x675b049b)以确认成功执行

需要理解的重要概念:

  • 一些协议(如 Axelar)可能需要额外步骤,例如:
    • 注册协议特定和 CAIP-2 标识符之间的链等价性
    • 注册远程适配器地址
    • 支付目标链的Gas费和可能的中继或协议费用
    • 在目标链上进行消息批准和执行

该标准旨在保持与协议无关的同时,允许通过属性参数实现特定协议的功能。

适配器设置

  1. 第一步是在源链和目标链上部署适配器。适配器可以是仅接收、仅发送或双向工作。为了能够双向发送消息,我们在两个链上部署了 AxelarGatewayDuplex.sol。 注意,在部署合约时,其中一个构造函数参数是 Axelar 网关代理,这是负责接收(或发送)各自链上所有消息的合约。 注意每条链都有自己的网关代理(至少一个)。这种架构用于将所有消息集中在一个地方,便于中继器监听事件。 这相当于 LayerZero 端点和 Hyperlane 邮箱。例如,Axelar 不同链上网关的合约地址可在其 文档 中查看。
  2. 合约部署(源链和目标链)后,我们需要注册 Axelar ID 和 ERC7786 标准之间的链等价性。这是因为在发送消息时,目标链的 参数 应遵循 CAIP-2 标准以识别目标链。然而,Axelar 使用的是自己的一组 ID 来表示 。其他协议如 LayerZero 也存在类似情况,使用其 eids。 这使得保持 CAIP-2 标识符和每个桥接协议自己的链标识符之间的映射成为必要。AxelarGatewatBase.sol 通过注册具有这些标识符的链等价性来解决此问题。
    • 这笔交易 中,我们注册了 eip155:421614arbitrum-sepolia(Axelar 名称标识符)之间的链等价性。
    • 这笔交易 中,我们注册了 eip155:84532base-sepolia(Axelar 名称标识符)之间的链等价性。
  3. 下一步是注册远程适配器,以使源链上的适配器知道目标链上的适配器(反之亦然)。
    • 这笔交易 中,我们将地址 0x050193203845D4145Dea5200C7eA49EF28b5f870(目标链上的适配器)映射到其链的 CAIP-2 标识符( eip155:421614)。
    • 这笔交易 中,我们将地址 0xBb6A11d2FdEF18522cC9d14DdAdb676c8c126AEE(源链上的适配器)映射到其链的 CAIP-2 标识符( eip155:84532)。
  4. 在适配器配置完成后,我们只需要在目标链上有一个遵循 IERC7786Receiver 的合约,以接收和执行消息。

发送消息

  1. 要发送消息,应在源链适配器中调用 sendMessage 函数。
    • 这笔交易 中,我们正从源链向目标链发送消息。 参数为:eip155:421614(目标链,遵循 CAIP-2 标准),0x60ff0d6060722db7357f6976c8e5b8f2f42b8759(接收者,支持 IERC7786Receiver 的目标链合约),随机负载和空属性列表。
  2. 下一步是支付目标链上的执行费用。这可以根据协议和适配器通过多种方式进行。
    • 这笔交易 中,我们使用 Axelar 的原生Gas服务为消息添加了原生Gas费用。
  3. 在 Axelar 的架构中,消息由网关代理批准,然后由适配器执行。
    • 这笔交易 中,我们正在网关代理中批准交易。
    • 这笔交易 中,我们正在适配器中执行消息(调用接收者)。

整个流程(设置和发送消息)可以使用 此脚本 进行复制(尚未合并到主分支,且尚未准备好投入生产)。

  • 原文链接: erc7786.org/examples...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
erc7786
erc7786
江湖只有他的大名,没有他的介绍。