LayerZero笔记

post image

什么是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等公链。
当前的公链格局是一超多强,超级王者是ETH,多强指的是BSC, TRON,AVAX等公链。

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

  • CEX

  • DEX(跨链桥Bridge)

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

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

L1与 L2都可以使用LayerZero提供消息跨链服务,从而实现跨链
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:提供信息发送与接收的接口。

post image

从具体看:

post image

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

对于跨链,大部分用户应该最担心的安全问题,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

最后

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

https://twitter.com/tigafeng