LayerZero - 跨链消息之旅 (V2) — “通用邮政服务”

  • thogiti
  • 发布于 16小时前
  • 阅读 87

本文介绍了LayerZero V2跨链消息传递协议的工作原理,它像一个用于区块链的通用邮政服务,通过Endpoint、DVN、Executor等组件,实现消息在不同链之间的安全可靠传递,同时具有抗审查、操作弹性等特性,开发者可以通过options灵活控制消息处理方式。

概述

这是一个简短的演示文稿,解释了使用 LayerZero 的跨链消息传递协议传递消息的过程。它的结构类似于一个带有配套注释的演示文稿。

学习意图和成功标准

学习意图

  • 了解 LayerZero V2 如何跨链移动消息——安全可靠
  • 追踪端到端的过程(发送 → 验证 → 提交 → 传递)
  • 了解每个角色:Endpoint(端点)Libraries(库)DVNsExecutors(执行器) 和你的 OApp

成功标准

  • 我可以像叙述包裹出国一样叙述这个过程
  • 我可以说出谁做什么,以及为什么它是无需许可的
  • 我可以为我的应用程序选择合理的 options(选项)DVN quorum(法定人数)

LayerZero — 区块链的通用邮政服务

不同的链是不同的国家:它们自己的语言 (VM)、海关 (共识) 和邮资 (gas)。LayerZero V2 是 postal network(邮政网络),让你的应用程序可以将 parcel (message)(包裹(消息)) 从一个国家发送到另一个国家,而无需任何单一的扼流点。

  • Post office(邮局): 每个链上的 Endpoint V2(端点 V2)
  • Inspectors(检查员): 独立的 DVNs,用于验证包裹是否完好无损地离开了源头
  • Customs stamp bundle(海关印章包): 在目的地提交的 quorum proof(法定人数证明)(链上)
  • Courier(快递员): 一个 Executor(执行器) (或 anyone(任何人)),负责支付 gas 并完成传递

演员阵容 (LayerZero V2 组件)

LayerZero-V2-Components-Message-Journey

  • Endpoint V2 (immutable)(端点 V2(不可变)): 邮局。它使用 lossless channel(无损通道)(无间隙的 nonces(随机数),存储的 payloadHash(有效载荷哈希))来跟踪每个发送者→接收者的 pathway(路径),以实现精确一次性和可审计性。
  • Message Libraries (SendUln302 / ReceiveUln302)(消息库(SendUln302 / ReceiveUln302)): 负责标准化数据包并将 options(选项) 路由到链下 executors(工作者)的打包/拆包人员。
  • Message Send Library(消息发送库): 编码出站 packet(数据包)(GUID + nonce + routing),从你的 options(选项)quotes fees(引用费用)lzReceive 的 gas,可选的 lzCompose,有序执行,原生 drop),并发出链下参与者监听的事件。
  • Message Receive Library(消息接收库): 解码入站数据包,enforces your DVN quorum/config(强制执行你的 DVN 法定人数/配置),一旦满足,帮助 Endpoint(端点)在调用你的应用程序之前,commit (nonce → payloadHash)(提交(随机数 → 有效载荷哈希))lossless channel(无损通道) 中。
  • DVNs: 独立的“海关检查员”,他们监视源头并 attest the payloadHash(证明有效载荷哈希)。你选择一个 quorum(法定人数)(X-of-Y-of-N)。
  • Executor (or anyone)(执行器(或任何人)): 提供 gas 并调用 Endpoint(端点)以传递到你的应用程序的快递员。
  • Your OApp(你的 OApp): 托运人/收货人。它知道它的 Endpoint(端点)trusted peers(受信任的对等方)(从目标 Endpoint IDs (EIDs) 到接收者地址的映射)。接收器实现 _lzReceive(...)
  • Developer surface (what you actually touch)(开发者界面(你实际接触的内容)): 继承 OApp → 调用 _lzSend 发送字节;实现 _lzReceive 来处理到达时的字节。Libraries(库) + Endpoint(端点)处理管道。

消息传递过程 (源 → 目标)

LayerZero-V2-Message-Journey-Map

这是 LayerZero V2 中典型消息流的高级概述。让我们将其分解以了解主要组件及其核心属性。

步骤 1 — Prepare & Post(准备和发布) (源)

你的 Sender OApp(发送者 OApp) 调用 Endpoint.send(MessagingParams)

struct MessagingParams {
  uint32 dstEid;        // 目标 Endpoint ID
  bytes32 receiver;     // 接收者 OApp 地址 (bytes32 编码)
  bytes   message;      // 包裹内容
  bytes   options;      // 处理:gas、有序、原生 drop、compose
  bool    payInLzToken; // 费用模式
}
  • Endpoint(端点)盖上一个 GUID(全局跟踪器)并递增一个 pathway(路径)nonce(随机数)(本地序列)。
  • Send library(发送库) 编码数据包并为链下观察者 (DVNs/executors) 发出事件。

✉️ Why both?(为什么两者都有?) GUID = 跨链和重试的全局跟踪。Nonce = 用于精确一次性的每个路径排序。


步骤 2 — Customs Inspection(海关检查) (DVNs,链下)

  • DVNs 独立 observe(观察) 源链;每个都证明 payloadHash(有效载荷哈希)
  • 当你的配置 quorum(法定人数) 满足时,存在一个 quorum proof(法定人数证明)(你的海关印章包)。

没有合约“calls(调用)” DVNs。他们独立观察;他们证明。


步骤 3 — Customs Check-in(海关登记) (目标,链上 & 无需许可)

  • Anyone(任何人)(通常是 executor(执行器))将 quorum proof(法定人数证明) 提交到目标 Endpoint(端点)commitVerified(提交已验证)。(Receive library(接收库)强制执行你的 DVN 配置。)
  • Endpoint(端点)在 pathway(路径)的 lossless channel(无损通道) 中记录 verified(已验证) nonce → payloadHash(Receive library(接收库)强制执行)。

状态:Verified(已验证)(已清关)。尚未传递,只是有资格传递。


步骤 4 — Last-Mile Delivery(最后一英里传递) (目标,无需许可)

  • Anyone(任何人) 现在都可以提供 gas/value 并传递:Endpoint(端点)调用你的接收者的 lzReceive(...),后者调用你的 _lzReceive(...)
  • 如果 options(选项) 指定了后续操作,Endpoint(端点)稍后会调用 lzCompose(...)(也是无需许可的)。

状态:一旦你的应用程序逻辑执行,Delivered(已传递)


步骤 5 — Ordering(排序) (默认是延迟的,如果你要求则是严格的)

  • Default (lazy)(默认(延迟)): 如果 nonce nVerified(已验证) 但其 Delivery(传递) 失败,一旦 n+1Verified(已验证)n+1 仍然可以传递。
  • Strict FIFO (opt-in)(严格 FIFO(选择加入)):options(选项) 中添加 ordered execution(有序执行)n+1 等待直到 n executes successfully(成功执行)

Options = Your Handling Instructions(选项 = 你的处理说明)

LayerZero-V2-Message-Options


Properties (why the LayerZero network works)(属性(为什么 LayerZero 网络有效))

  • Exactly-once per pathway(每个路径精确一次): gapless nonces(无间隙随机数) + 存储在 lossless channel(无损通道) 中的 payloadHash(有效载荷哈希);干净的审计跟踪。
  • Censorship-resistant(抗审查):

    1. 多个独立的 DVN 必须串通才能阻止 quorum(法定人数),并且
    2. commitVerified(提交已验证)delivery(传递) 都是 permissionless(无需许可) 的,没有单一的扼流点。
  • Operationally resilient(运营弹性): Executors(执行器)是 replaceable(可替换) 的;任何人都可以使用更高的 gas 或不同的 options(选项)重试。
  • Simple control surface(简单的控制界面): options(选项) 是你调整 gas、排序、原生 drops 和 compose 的地方。

Receiver Gatekeeping (who’s allowed to ring the doorbell?)(接收者门卫(谁可以按门铃?))

function lzReceive(
  Origin calldata _origin,
  bytes32 _guid,
  bytes calldata _message,
  address _executor,
  bytes calldata _extraData
) public payable {
  if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);
  if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);
  _lzReceive(_origin, _guid, _message, _executor, _extraData);
}

只有邮局 (Endpoint) 可以传递,并且只能从源 EID 上你的 trusted peer(受信任的对等方) 传递。


Quick FAQ(快速常见问题解答)

  • Is there a relayer?(有中继器吗?) 在 V2 中,它被拆分:DVNs 验证;Executors (or anyone)(执行器(或任何人)) 传递。
  • Who contacts DVNs?(谁联系 DVN?) 没有人——DVNs 监视链。第三方在目标链上提交 quorum proof(法定人数证明)
  • Why permissionless delivery?(为什么无需许可传递?) 为了消除最后一英里的审查,并允许任何人重试。
  • When should I enable strict ordering?(我应该何时启用严格排序?) 当业务逻辑需要 FIFO 时;否则,保持默认的延迟模式以保证活跃性。

References(参考)

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

0 条评论

请先 登录 后评论
thogiti
thogiti
https://thogiti.github.io/