本文介绍了LayerZero V2跨链消息传递协议的工作原理,它像一个用于区块链的通用邮政服务,通过Endpoint、DVN、Executor等组件,实现消息在不同链之间的安全可靠传递,同时具有抗审查、操作弹性等特性,开发者可以通过options灵活控制消息处理方式。
概述
这是一个简短的演示文稿,解释了使用 LayerZero 的跨链消息传递协议传递消息的过程。它的结构类似于一个带有配套注释的演示文稿。
学习意图和成功标准
学习意图
- 了解 LayerZero V2 如何跨链移动消息——安全可靠
- 追踪端到端的过程(发送 → 验证 → 提交 → 传递)
- 了解每个角色:Endpoint(端点)、Libraries(库)、DVNs、Executors(执行器) 和你的 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 组件)

- 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 中典型消息流的高级概述。让我们将其分解以了解主要组件及其核心属性。
步骤 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 n 是 Verified(已验证) 但其 Delivery(传递) 失败,一旦 n+1 被 Verified(已验证),n+1 仍然可以传递。
- Strict FIFO (opt-in)(严格 FIFO(选择加入)): 在
options(选项)
中添加 ordered execution(有序执行); n+1 等待直到 n executes successfully(成功执行)。
Options = Your Handling Instructions(选项 = 你的处理说明)

Properties (why the LayerZero network works)(属性(为什么 LayerZero 网络有效))
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(参考)