# 一分钟读懂LayerZero协议

By [luxebeng](https://paragraph.com/@luxebeng) · 2022-05-19

---

LayerZero是第一个无需信任地在所有链上实现直接交易的系统。允许交易在链之间自由流动，不再需要中间协议，为用户提供了聚合分散流动性的手段。同时也让不同链上的应用程序能够得到扩展。

### 1 基本概况

目前区块链的多生态系统之间的隔离已成为发展的一个重要瓶颈。用户和开发人员被迫在不同的链之间分配资源和流动性。LayerZero第一次可以实现本地跨链交易的消息传递协议。

![协议简介](https://storage.googleapis.com/papyrus_images/2a2ce73f1b7957a0abaa70bf621a2bf1f392f00565b7395c16ac35b664315ab5.png)

协议简介

### 2 项目详情

#### 2.1 团队

[Bryan Pellegrino](https://ca.linkedin.com/in/bryanpellegrino) - CEO and Co-Founder [Ryan Zarick](https://www.linkedin.com/in/ryanzarick) - CTO and Co-Founder [Caleb Banister](https://www.linkedin.com/in/caleb-banister-240b1142) - Co-Founder

#### 2.2 资金与合作

*   Seed Round($2M at 2021/04/01):
    
*   Series A($6M at 2021/09/17): **_Binance Labs, Multicoin Capital_**, Sino Global Capital, Defiance, Delphi Digital, Robot Ventures, Spartan, Hypersphere Ventures, Protocol Ventures, and Gen Block Capital.
    
*   Funding Round($135M at 2022/03/30): **_Sequoia Capital, FTX Ventures and a16_**, Coinbase Ventures, PayPal Ventures, Tiger Global, Uniswap Labs and others.
    

#### 2.3 社区和生态

*   Twitter: 67460个粉丝。
    
*   Discord:
    

### 3 协议框架

**_最核心的操作就是把区块头的数据通过Oracle进行传输。而其余的数据通过Relayer来发送。Oracle和Relayer相互隔离，能够保证系统的安全。_**

下面就举例，链A上的用户通过LayerZero向链B上的用户发送一条消息。

![协议架构图](https://storage.googleapis.com/papyrus_images/35100c63ac9f37ecc52a8a8f2c2eef4b027ed359ca78882f0843f7995d324aea.png)

协议架构图

**_第 1 步_**：链A上的应用程序A执行一系列动作作为交易T的一部分。 通过交易标识符t唯一地标识交易T —— 该标识符的格式可能会因链A的类型而异。交易 T中包含的一个步骤就是在LayerZero上传输消息。 在这儿，我们假设App A正在使用我们的参考中继器。 应用程序A向 LayerZero Communicator 发送包含以下信息的请求： • t：T 的唯一事务标识符。 • dst：指向在链B上智能合约的全局标识符。 • 有效负载：AppA希望发送到B的应用程序参数。 • 中继器参数：描述应用程序A希望使用参考中继器时的的参数。

**_第 2 步_**：Communicator构造一个包含dst和payload的 LayerZero 数据包，称为Packet(dst, payload)，并连同中继器args一起发送到Validator。

**_第 3 步_**：Validator 将t和dst发送到 Network。 此步骤通知网络需要将链A上当前块的块头发送到链B。

**_第 4 步_**：Validator 向 Relayer 发送如下的信息：Packet(dst, payload)、t和relayer args，通知Relayer需要预取T的交易证明并最终发送到链B。这与Step 3同时发生。

**_第 5 步_**：网络将 dst 和当前事务的块ID（cur\_blk\_id）发送给 Oracle。 通知Oracle获取链A上当前块的块头并将其发送到链B。如果同一块中发生多个LayerZero交易，则步骤5仅执行一次。

**_第 6 步_**：Oracle 从链A读取块头（blk hdr）。

**_第 7 步_**：中继者从链A中读取与交易T相关的交易证明（proof(t)），如果是链下则存储。 步骤6和7彼此异步发生。

**_第 8 步_**：Oracle 确保blk\_hdr对应的块在链A上提交后，然后将blk\_hdr发送到链B上的网络。中间的间隔因链而异，但通常需要等待一些块的长度。

**_第 9 步_**：网络将blk\_hdr对应的hash值blk\_hdr\_hash发送到Validator。

**_第 10 步_**：Validator将blk\_hdr\_hash转发给Relayer。

**_第 11 步_**：接收到blk\_hdr\_hash后，Relayer发送与当前块匹配的Packet(dst, payload), t, proof(t) 元组。 如果多个用户同时在同一端点之间发送消息，则同一块中可能存在多个数据包和关联的交易证明。

**_第 12 步_**：Validator使用接收到的proof(t)与Network存储的区块头一起验证关联的交易 T 是否有效并提交。 如果块头和交易证明不匹配，则丢弃该消息。 如果它们匹配，则将 Packet(dst, payload) 发送到 Communicator。

**_第 13 步_**：Communicator 向App B发送 Packet(dst, payload)。

#### 3.1 主要参与者

*   LayerZero Endpoints Endpoints是 LayerZero的面向用户的界面。 LayerZero网络中的每条链上都会部署一系列智能合约，这些合约就构成了LayerZero Endpoints。Endpoint 的目的是允许用户使用LayerZero协议发送消息，保证有效传递。 LayerZero Endpoint 分为四个模块：Communicator、Validator、Network 和 Libraries。Communicator、Validator 和 Network 模块是Endpoint的核心功能，而 LayerZero 支持的每个链都包含一个特定的库文件。 这种设计允许我们在不修改核心模块的情况下添加对新链的支持。
    
*   The Oracle Oracle 是第三方服务，它提供一种机制，独立于其他LayerZero组件，从一条链读取块头并将其发送到另一条链。 理论上，这个预言机可以是任何提供这种机制的第三方服务，但在实践中使用的是Chainlink。
    
*   The Relayer Relayer 是一种链下服务，在功能上类似于 Oracle，但它不是获取块头，而是获取指定交易的证明。 为了确保有效传递，唯一的要求是对于使用LayerZero协议发送的任何给定消息，Oracle和Relayer必须相互独立。 协议本身不需要任何特定的 Relayer 实现，理论上LayerZero的用户甚至可以实现他们自己的 Relayer 服务。这种设计允许用户确保Relayer不会与Oracle勾结，这种独立性使我们能够实现无信任的验证交付。在实践中，LayerZero 提供Relayer服务，而Oracle由 Chainlink的去中心化预言机网络和相关的共识机制处理。
    

### 参考资料

[LayerZero Whitepaper](https://layerzero.network/pdf/LayerZero_Whitepaper_Release.pdf) [TVL超30亿美元，跨链桥项目Stargate为何这么火](https://zhuanlan.zhihu.com/p/488841191)

---

*Originally published on [luxebeng](https://paragraph.com/@luxebeng/layerzero)*
