跳到主要内容

Arbitrum L2 到 L1 的 Hook

Arbitrum 的 Outbox 系统允许在乐观挑战期后进行任意的 L2 到 L1 合约调用,即在 L2 链上发起的消息最终在 L1 上执行。有关更多详细信息,请参见 这里。Hyperlane 可以围绕 Outbox 系统进行封装,以利用 Arbitrum L2 的乐观安全性(具有 7 天的提款期和操作欺诈证明)来保护来自任何 Arbitrum Nitro rollups 的 L2 到 L1 消息。我们实现了 ArbL2ToL1HookArbL2ToL1Ism

工作原理

备注

来自 L2 的出站消息无法提供协议内的自动 L1 执行,因为以太坊不通过 L1 节点提供计划执行的便利。

ArbL2ToL1Hook 将编码的函数调用与 messageId 发送到 L2 上的 ArbSys 预编译。在等待提款期后,您可以在 L2 上使用 getOutboxProof() 获取消息的默克尔证明。从这里,您有两个选项:

  • 选项 A. 您可以通过 mailbox.process() 调用 ArbL2ToL1Ism 的验证函数,使用证明和其他编码数据,这将调用 outbox.executeTransaction(),检查消息发送者和消息数据的有效性。
  • 选项 B. 您可以直接使用证明和其他编码数据调用 outbox.executeTransaction()。但是,您需要再次调用 ArbL2ToL1Ism 的验证函数以传递消息。此选项还需要将消息值传递给接收合约。

选项 A

选项 B

注意:在这里,转发者负责从 arbSys.getOutboxProof() 编码消息证明并调用 outbox.executeTransaction() 函数。