# LayerZero笔记

By [Tiga](https://paragraph.com/@tigafeng) · 2022-05-23

---

![](https://storage.googleapis.com/papyrus_images/2312b96fcf5ef5ab2d3fb85418b68b81d519538a7f57528dbf054a950d1788e5.png)

什么是LayerZero
------------

打开LayerZero（以下简称L0）的官网就可以看见LayerZero对自己的介绍：Seamlessly Connected Blockchains — 让链无缝连接。

LayerZero是一个跨链通讯协议，可以将一个链的“信息”发送到另一个链。通过在链上部署一系列的智能合约—Endpoint实现去中心化信息跨链服务。Enpoint上运行着超轻节点，“超轻”两个字体现在该节点只提供指定区块的Block header。传输过程中，通过Oracle与Relayer保证信息发送的有效性与安全性。

LayerZero解决跨链的思路是给链装上一个网络连接器（Endpoint），通过两个路径（Oracle与Relayer）对消息是否真实进行验证，验证通过的消息才会被目标链上的Endpoint认可。目前已经部署在支持EVM的公链，如Ethereum, Avalanche, Polygon, BNB Chain, Fantom, Arbitrum and Optimism，未来会扩展到Solana与Cosmos等非EVM兼容公链。

它解决什么问题？
--------

2020年DeFi Summer后，链上生态进入一个爆发期，各种成熟的产品让消费者，用户可以在链上进行借贷，衍生品交易，token交互等。随着快速爆发的用户需求与Ethereum所能提供的性能之间失衡，最终慢慢导致项目，用户与流动性慢慢溢出到多条链上，形成如今的多链格局。每个链都像是一个孤岛，虽然它们之间可以通过CEX或者跨链桥进行连接，但它们依然是破碎的个体，跨链桥没有将它们连城一个整体。在各方的合力作用下，造成用户的资产被各个链分割，整个DeFi生态的流动性也被一条条的链切割开。链的发展更多的是“独自灿烂”，而非齐头并进。

![当前的公链格局是一超多强，超级王者是ETH，多强指的是BSC, TRON,AVAX等公链。](https://storage.googleapis.com/papyrus_images/bedade8be7d1c2d126034aace2804c302d05fd835313f9d2e22fbf5df8e7440c.png)

当前的公链格局是一超多强，超级王者是ETH，多强指的是BSC, TRON,AVAX等公链。

对于目前多链格局下，目前最大的使用需求还是Token的跨链。目前的跨链方案：

*   CEX
    
*   DEX（跨链桥Bridge）
    

通过CEX跨链必须面对信任的问题，因为CEX是中心化的，通过CEX跨链一点也不DeFi。 而且通过CEX跨链的操作也是最为繁琐，用户需要输入短信/邮箱验证码。而通过跨链桥进行跨链，虽然解决了信任问题，不过目前的跨链方案，都是通过一个”中间“资产进行跨链，而非原生资产。由于跨链一般依靠一个中间链或者轻节点，安全问题频发，造成了另一个更严重的安全信任问题。

LayerZero的目标就是让链与链之间直接进行交流。如下图所示。L0的目标是连接L1与L2。

![L1与 L2都可以使用LayerZero提供消息跨链服务，从而实现跨链](https://storage.googleapis.com/papyrus_images/be59c06c89f5d3334424ed2e04d7dd9af5ba2b042dde2c15c9b767e7160632d7.png)

L1与 L2都可以使用LayerZero提供消息跨链服务，从而实现跨链

在白皮书中，LayerZero也多次强调LayzerZero是一个信息分发协议。

> LayerZero is a communication primitive

> LayerZero is the first trustless omnichain interperability layer, and supports messaging directly between both Layer 1 and Layer 2 chain

如何做到的？
------

**从宏观一点的视角看：**

Dapp可通过与A链上的Endpoint进行交互，交易会在A链上打包上链，并独立产生该交易的证明。Oracle会验证该交易是否已在A链上链。Relayer也会去获取该交易的证明，并存储在链下。当Oracle与Relayer获取到的参数一致时，A链上的消息才会被B链上的Endpoint发送到B链的Dapp。

LayerZero主要依靠三个组件：Oracle， Relayer与Endpoint

*   Oracle会验证交易是否在A链上链并被确认。目前LayerZero使用的是Chainlink提供的服务。
    
*   Relayer是信息的验证者，验证该交易的证明与Endpoint提供的证明是否一致。
    
*   Endpoint：提供信息发送与接收的接口。
    

![](https://storage.googleapis.com/papyrus_images/898e195af94ac7c64c36de227bc03e1f2cbd8af5e0288c25627889ff159ca00d.png)

**从具体看：**

![](https://storage.googleapis.com/papyrus_images/22396c773d94ab67749ef2893f301d1e4b33526ad859269e528f3aa6f551b363.png)

LayerZero将Endpoint分成了三个部分，分别是Communicator，Validator，Network。Communicator是面向Dapp的接口，Validator在接收方是负责对信息进行核验的环节。而Network是对外发送或接受消息的接口。

其具体的步骤如下：

*   Step 1：A链上的Dapp与A链上的Endpoint交互产生一个交易T，会产生4个参数，这些参数会通过LayerZero发送给Communicator。四个参数分别是：
    
    *   t：交易T的唯一交易证明（transaction proof）
        
    *   dst：目标链Endpoint的标识符
        
    *   payload：A链的Dapp要发送到B链的数据
        
    *   relayer\_args：A希望使用的Relayer参数
        
*   Step 2： Communicator将这些参数打包成$Packet(dst, payload)$，并与$t$和relayer\_args一起发送到Validator。
    
*   Step 3：Validator把t与dst传递到Network。
    
*   Step 4：Validator将Packet(dst, payload)，t和relayer\_args一起发送到Relayer。第四步与第三步是同时发生的
    
*   Step 5：Network发送dst与包含当前交易区块的ID（cur\_blk\_id）发送给Oracle。
    
*   Step 6：Oracle 从A链上获取block header
    
*   Step 7：Relayer从A链上获取交易T的交易证明t，并存储在链下。
    
*   Step 8：Oracle确定交易T已经在A链上被提交后，将block header发送给B链的Network。
    
*   Step 9：B链的Network将接收到block hash（记为blk\_hdr\_hash）发送给B链的Validator
    
*   Step 10：Validator将blk\_hdr\_hash发送给Relayer
    
*   Step 11：Relayer接收到B链发送的blk\_hdr\_hash后，将与blk\_hdr\_hash匹配的数据返回给B链的Validator。
    
*   Step 12：B链的Validator将从Oracle获取到的blk\_hdr与从Relayer获取到的交易证明t进行匹配，如果匹配通过，则会将Packet(dst, payload)发送给Communicator。匹配失败则直接忽略本次交易。
    
*   Step 13：Communicator将Packet(dst, payload)数据发送给B链的Dapp，完成信息跨链
    

简单说就是A链的Dapp告诉LayerZero部署在A链的Endpoint：”我要给B链发个XXX消息“，发送消息这个过程也可以看做是一次交易。当这个交易在A链上链后，Oracle会直接到A链上检查是否真的上链了，Relayer也会去A链上获取这个交易的证明，Oracle和Relayer将它们获取到的内容都发送给B链的Endpoint，如果两者内容匹配，则A链的消息发送到了B链上。反之，如果Oracle和Relayer获取到的内容不匹配，则直接忽略该交易。

_这里插入一下，Relayer使用的证明方式是 merkle patricia proof，这个方法可以验证某个区块中的某一个交易，而非验证全部。具体可以看这篇文章：_[_Ethereum Merkle Patricia Trie Explained_](https://medium.com/@chiqing/merkle-patricia-trie-explained-ae3ac6a7e123)_。_

对于跨链，大部分用户应该最担心的安全问题，LayerZero将安全性分散到4个点上，分别是Endpoint，Oracle，Relayer，还有链本身。从上图可以看出，它们之间是相互耦合的，换句话说分散的机制让LayerZero更安全。这四个中，最薄弱的环节是Oracle与Relayer，因为链的51%已经非常罕见了，Endpoint本质上是智能合约，可以通过审计的方式排除安全风险。白皮书也说，如果Oracle与Relayer没有同时被黑，LayerZero都可以保持安全性。

但假如Oracle和Relayer同时被劫持且相互串通这一最坏的情况下，Oracle提供了恶意的block header，Relayer提供了恶意的交易证明，且两者提供的内容是匹配的。这种情况首先从概率上讲非常小，因为Oracle与Relayer是相互独立的组件，且LayerZero使用的是预言机服务是Chainlink提供的，安全性还是很有保障的。其次，在不知道特定的block header的情况下，不可能针对一个block header 进行验证交易证明。反之，根据一个交易证明也不能反推出block header。这是保证Oracle与Relayer安全性的根本，也是保证LayerZero安全性的保障。

一点点展望
-----

基于LayerZero的资产跨链有点像OTC，比如你要把A链的100USDC跨到B链，找到一个有实力有信誉的“大哥”，他在A,B链都有足额USDC。我们可以通过把A链的100USDC发送到“大哥”A链的账户，“大哥”确认到账后，就直接在从他的B链钱包发送100USDC给你(不考虑手续费)，不需要通过CEX中转或是通过跨链桥（跨链桥多通过中间token进行跨链）。

目前跨链协议，都是以跨Token为目的，而LayerZero是跨链发送“消息”，这是LayerZero最大的特点，也是LayerZero的最大不同。不止Token也是LayerZero敢取名L0的原因吧。

做为一名新韭菜，从入场的那一刻，我所看到的链上生态就是繁荣的， 但是链与链之间也是割裂的。虽然也有各种跨链桥链接各个链的生态，不过整体也是支离破碎。受限于我目前有限的认知，链上与链间的生态会是有无限可能的，虽然我目前不知道具体会是什么。它该有无限的可能，正如我相信区块链会有无限的可能，读完LayerZero的白皮书，我觉得我看到了一点点的不一样。

### ref

*   LayerZero白皮书 [https://layerzero.network/pdf/LayerZero\_Whitepaper\_Release.pdf](https://layerzero.network/pdf/LayerZero_Whitepaper_Release.pdf)
    
*   LayerZero- An Omnichain Interoperability Protocol [https://medium.com/layerzero-official/layerzero-an-omnichain-interoperability-protocol-b43d2ae975b6](https://medium.com/layerzero-official/layerzero-an-omnichain-interoperability-protocol-b43d2ae975b6)
    
*   Investing in LayerZero [https://a16z.com/2022/03/30/investing-in-layerzero/](https://a16z.com/2022/03/30/investing-in-layerzero/)
    
*   Ethereum Merkle Patricia Trie Explained [https://medium.com/@chiqing/merkle-patricia-trie-explained-ae3ac6a7e123](https://medium.com/@chiqing/merkle-patricia-trie-explained-ae3ac6a7e123)
    

### 最后

作为一名新韭菜，水平有限，内容有错的地方还望读者不吝赐教。有任何问题都欢迎联系我

[https://twitter.com/tigafeng](https://twitter.com/tigafeng)

---

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