LayerZero 白皮书翻译及一些思考

0. 摘要

区块链的不断发展给了开发者更多的选择,让他们可以根据对吞吐量、安全及成本的角度去选择合适的区块链运行自己的智能合约,但同时这也造成了严重的碎片化问题,流动性只局限于区块链内部,很难做到流动性的跨链转移

本文将介绍第一个实现去信任的全链互操作性协议—— LayerZero,其提供了一个强大的底层通信原语,使得各式的跨链应用可以基于其实现,开发者可以使用新的原语开发无缝跨链的应用(比如跨链的DEX或多链的收益聚合器)而不再需要依赖收信人的托管人或者中间交易。LayerZero 是第一个在所有链上实现无信任直接交易的系统。允许交易在链之间自由流动,为用户提供了合并分散的流动性的机会,同时也充分利用单独链上的应用程序。通 LayerZero,我们提供了未来全连接的全链生态系统的网络结构

1. 引言

区块链最核心的概念就是去中心化、透明性和不可变性三大支柱,没有任何一个单一的实体可以控制区块链,任何在链上的交易都是可验证及不可逆的,这些支柱创建了一个实体可以在不信任任何其他实体的情况下交易的基础。这种信任保证是加密货币相较于法定货币更具有吸引力的原因之一

Fig 1. LayerZero enables cross-chain transactions
Fig 1. LayerZero enables cross-chain transactions

如果所有的用户及应用全都存在于一条区块链上,那么本文也就没有存在的必要了,然而区块链的实用性导致了各种应用程序的激增,这些应用程序具有独特的复杂性和需求。对多样化功能的需求阻碍了专业化区块链的发展,每一条链其自身的生态巨大发展,但是不同生态之间的隔绝成为了继续增长的重要阻力,用户及开发者被迫将时间、资源、流动性分割后分配给不同的链,Layer1 的数量众多(写这篇文章时有109条公链)的一个自然结果就是需要去扩展上述的三大支柱,来同时包含不同的跨链操作,特别是代币跨链操作的需求就很高涨,我们之后来讨论

按区块链的说法,工作的单位是交易,不可变且不可逆,最后被区块收纳,构成了区块链系统的安全基础,但是交易从来都是单链上的概念,跨链交互,传统上是需要一个生态以外的第三方,作为对比,本文将介绍第一个使得原生跨链交易成为可能的通信协议——LayerZero

为了说明 LayerZero 提供的强大通信原语,让我们来看一个代币跨链的例子,目前兑换两条不同链的代币,用户必须利用中心化的交易所,或者跨链的去中心化交易所(也被称为跨链桥),但是用二者都有所妥协。在使用中心化交易所(比如币安),用户必须信任跟踪存款和取款的交易所,这种信任关系与区块链最基础的去信任恰恰相反,且相较于链上自动化系统缺乏安全性,使用去中心化交易所(AnySwap, THOR-Chain)视同链上交易减轻了信任问题,但现存的 DEX 在实现链上交易时,会将用户的代币转换为适用于特定协议的代币,通过中间共识层,来实现交易的共识,该中间共识层,虽然通常以安全的方式实现,但确实需要用户信任侧链来促进代币兑换,正如我们在本文中所提及的,这种开销是不必要的,尽管有强烈的需求,但还没有能够提出一个高效、直接的解决方案,同时仍然保持最初使用区块链的核心原因:去信任化。退后一步,LayerZero 的直接跨链交易给了开发者去实现这一切的工具

要留意,LayerZero 和交易所是运行在不同层级的,LayerZero 是通信原语,使得多样化的全链应用成为可能,而交易所只是会从 LayerZero 受益的一种应用。第2节会概述区块链技术的蓝图及进一步探讨交易的实例

为了更恰当的解释 LayerZero 的功能及其在区块链生态中扮演的角色,我们首先呈现一个实现链交易所必须的基础通信原语,我们称之为有效传输(第3节会讲),之后会详述 LayerZero 是如何在去信任的方式下提供原语,并保持区块链的安全承诺。LayerZero 是第一个去信任化的全链互操作层,支持直接与 Layer1,Layer2 通信

Fig 2. LayerZero ensures the validity of cross-chain communication by requiring that two independent entities, the Oracle and Relayer, corroborate the transaction
Fig 2. LayerZero ensures the validity of cross-chain communication by requiring that two independent entities, the Oracle and Relayer, corroborate the transaction

对链A与链B之间的跨链交易来说,包含A链上的交易tA和A与B之间的通信协议,以及信息m,有效传输是说有且只有tA被执行且有效时,才会传递信息m,支持 LayerZero 的关键思想是:如果两个独立的实体证实交易的有效性(在本例中为 tA),那么链 B 可以确定 tA 是有效,图2在更高层面说明了这一点,给定两个并未合谋的实体,如果:(1)其中一个实体可以获取链A上包含tA的区块头;(2)另一个实体可以独立的产生tA的链上交易证明;(3)区块头与交易证明相符,之后通信协议就会在tA已被承认的前提下,將信息m传送至链B上的客户端。LayerZero 的通信协议(第4节说明)保证接收链的交易匹配的是发送链上一个有效的、被承认的交易,而不涉及任何中间链,我们通过结合两个互相独立的实体:一个提供区块头的预言机和一个提供前述交易的证明的中继器来实现上述功能

LayerZero 的接口是一个我们称之为 LayerZero 端点的轻量级客户端,每个(LayerZero 支持的)链上存在一个 LayerZero 端点,任何具有 LayerZero 端点的链都可以与任何其他具有 LayerZero 端点的链进行跨链交易,本质上来说,者创建了一个各个节点直接与其他节点相连接的全链接网络,第5节会通过以太坊链上的例子演示这个过程

直接与网络中其他区块链进行跨链交易的能力使得以前无法实现的大规模应用成为可能,比如跨链去中心化交易所、多链的收益聚合器及跨链借贷应用。第6节会详细解读这样的几个应用,通过LayerZero,用户可以自由的將流动性在不同链之间转移,同时也允许单个流动资金池参与跨不同链和生态系统的多个去中心化金融(DeFi)应用程序,而无需经由第三方或中介代币

2. 背景

为了给 LayerZero 奠定基础,我们回顾了现有的相关系统,来说明它们为何不能满足新兴应用程序的需求,相关的讨论最终深入解释了在 LayerZero 上构建跨链交换的优势

2.1 相关工作

本节建立对跨链交互空间中重要参与者的理解,为什么他们无法实现无信任有效交付的想法,以及 LayerZero 如何解决这个问题的

Ethereum 是基于智能合约构建去中心化金融应用最受欢迎的平台,以太坊使用图灵完备的编程语言扩展其底层区块链,使去中心化应用程序库能够通过对开发人员友好的抽象来利用底层链的强大安全属性,但是底层区块链较低的交易速度(每秒15-45笔交易)被证明是一个严重的瓶颈,限制了直接运行在以太坊区块链上的应用的流行。由于其编程模型及其受欢迎程度,有许多链间通信技术围绕第三方链与以太坊的接口展开,LayerZero提供了直接从/向以太坊区块链传递状态信息的能力,而不需要任何中介,允许用户和应用程序利用以太坊链的稳定性和可信度,而不会出现下述解决方案的成本和瓶颈

Ethereum2.0 是一组提议的升级,以解决以太坊在可扩展性、安全性和可持续性方面的缺点,以太坊2.0 介绍了通过分片链將链上交易压力分散而非集中在以太坊主链的方案,从 POW 到 POS 共识机制的转变则消除了51%攻击的可能,并且降低了交易的能耗。这些进步在很大程度上与 LayerZero 是无关的,除了它们肯定会提高以太坊的流行度,从而产生对方便和廉价的链间通信的更多需求

Polygon 前身为 Matic Network,是一个用于解决以太坊链吞吐量与所有权挑战的Layer2,尽管以太坊已经成为最受欢迎的区块链开发平台,但其却被低网络吞吐量所困扰,导致其并不适合部署应用,Polygon 提供特定于应用程序的、与以太坊兼容的侧链,这些侧链结合了独立链的可扩展性和独立性以及以太坊的社区和安全性,特定的或者对吞吐量有高需求的应用运行在侧链,并且阶段性的与以太坊主链进行交易合并。相比之下,LayerZero 是一个较低层级的平台,可实现直接的链间通信,并可用于促进向太坊链的传输,而无需复杂的 Polygon 协议

Polkadot 是一个潜在的开放的跨链生态的早期案例,在 Polkadot 中许多特定的平行链(“parachains”)通过一个公共的中继链连接,使得代币和数据可以在其中流通,但是链间通信总是要通过中继链来实现从而导致了额外的花销,LayerZero 在没有额外交易及链上中介需求的情况下,提供了与 Polkadot 相同的低层级通信网络

THORChain 是利用币对流动性池在第三方链实现代币兑换的去中心化交易所,每一个流动性池將特定的第三方代币与扮演兑换媒介的 THORChain 原生代币RUNE绑定,没有这个公共的媒介,所有交易对都需要一个流动性池,这意味着流动性池的数量將与代币种类数量的平方成正比,不幸的是,虽然RUNE解决了这个问题,但它在处理过程中却产生了繁琐的开销,使简单的操作变得相当复杂,这在 THORChain 交易算法的复杂性中显而易见。LayerZero 不存在 THORChain 内在的可扩展瓶颈、媒介代币的麻烦以及复杂的协议,同时实现了直接的链间通信系统

AnySwap 是一个面向简单的成对代币交换的 DEX,类似于 THORChain。也依赖基于 Fusion的分布式控制权限管理的媒介代币 ANY,与 THORChain 一样,使用 ANY 中间代币会带来不必要的开销、延迟和额外的转账费用

Cosmos 是是一种区块链网络技术,允许在支持的链之间发送任意消息。Cosmos包括一个基于 Tendermint BFT 构建的通信器协议以促进构建在 Cosmos Hub 上的链间消息传递,Cosmos 与 LayerZero 有两个重要区别:(1)IBC运行一个完成的链上轻节点(2)IBC仅提供 fastfinality 链之间的直接通信,这些IBC的局限性连同其利用中介链达成共识使其与AnySwap,THORChain, Polkadot,类似,而不是类似于LayerZero的通用通信层,Cosmos也同样提供与 AnySwap 或 THORChain 类似的被称为 Gravity Bridge 的去中心化交易所,相较于 Cosmos 与 IBC,LayerZero 提供去信任的全链发信功能,并且可以扩展在不同链上运行

Chainlink 是一个去开发和连接至去中心化预言机网络(DONS)的框架,虽然智能合约是防篡改的,但其链上性质阻碍了对其更广泛应用至关重要的基本连接:智能合约无法获取执行合约所需的链下数据,如股票价格、物联网设备测量和保护安全链下计算的输出,DAO 在不信任任何中心化实体的情况下,将智能合约的防篡改属性扩展到合约所依赖的数据源和外部资源。在 DAO 中,用户的智能合约对 Chainlink 的接口智能合约发出一个链上请求,来对其他预言机节点广播请求信息,每一个预言机节点都会针对请求的信息查询多种数据来源,整合并且过滤错误、恶意的数据源,并可选得对数据执行信任最小化计算,预言机节点响应 Chainlink 接口协议,该协议执行第二级聚合以过滤错误或恶意的预言机节点。这种双层过滤保证了最终数据的可信度,而不需要信任任何单独的预言机节点或数据源。因此,Chainlink 提供了一个鲁棒的信息检索网络以及安全的链下计算解决方案,已在整个行业得到广泛应用。通过利用 Chainlink DON框架,LayerZero 协议获得了确保不同链之间无信任传递消息的能力

2.2 实际应用中的 LayerZero

开发者可以在不牺牲去信任化及引入复杂的中间链,智能合约的情况下,基于 LayerZero 开发复杂的跨链应用,Fig 3 演示了 LayerZero 在构建交换环境中的功能

Fig 3. LayerZero is a building block for cross-chain applications. This figure visualizes the architectural differences between a centralized exchange, a decentralized exchange, and a cross-chain bridge built using LayerZero as its underlying communication primitive.
Fig 3. LayerZero is a building block for cross-chain applications. This figure visualizes the architectural differences between a centralized exchange, a decentralized exchange, and a cross-chain bridge built using LayerZero as its underlying communication primitive.

左边的图显示的中心化交易所要求用户将代币存入中心化的可信任机构中,然后跟踪链下存款,并在用户请求时在其他链上授予代币。信任这个权威的机构一开始就违背了使用区块链的初衷,所以这导致了去中心化交易所的出现

中间的图在较高层次通过使用智能合约管理的共识协议来促进链B上的自动铸币,展示了去中心化交易所如何工作,DEX 可以克服对中心化及信任的链下中间人的需要,然而去中心化交易所最大的局限在于其涉及的媒介代币及媒介链,在B链上只能铸造中间代币和包装代币,而这并不是用户真正想要的,用户必须在另外的交易中兑换其中间代币(RUNE)或者包装代币(ANY),这也带来了不必要的开销

右边的图展示了构建在 LayerZero上 的交易所是什么样的,链 A 能够启动一个跨链交易,促进链 A 上的本地交易,并通知链 B 上的应用程序他们可以安全地向用户授予代币。在这个应用程序中,LayerZero 支持干净且最小化的单个交易交换,不包括任何中间代币。实际的交换协议由跨链交易两端的智能合约处理,LayerZero 在两者之间传递消息。这提供了极大的灵活性,并遵循端到端原则,大部分高级交换逻辑由源链和目标链上的智能合约处理

3. 有效传输

在本节中,我们将描述去信任化链间通信的基本属性。为了正式描述在不同链上验证交易的问题,我们定义了有效传输的概念。有效传输是一个通信原语,通过提供以下保证来实现跨链代币的传输:

  1. 通过网络发送的每条消息 m 都与发送端区块链上的交易 t 相绑定

  2. 只有在发送端链上交易 t 被确认及被验证才可以将信息 m 发送给接收端

中心化交易所保证有效传输,因为客户端和交易所之间的协议是,客户端将把他们的代币从一条链转移到交易所,交易所将在收到该代币后,发行一些余额(非加密货币)。然后,这种非加密货币余额可以从任何可用的链中提取,这种便利性是由交易所在每个受支持的链上维护的广泛的流动性池所实现的。交易所在交易中扮演中间人的角色,用户必须相信他们会遵守交易的约定。然而,恶意的交易所可以从客户端获取代币,发出余额,然后拒绝从另一个链中提取余额,有效地从用户那里窃取代币。即使用户愿意信任交易所,近年来已经出现了许多成功的黑客攻击或破坏加密货币交易所[15]的尝试,因此用户最好使用不需要任何可信中间人的解决方案。在更高的层面上,加密货币的核心租户之一是它们独立于银行等中心化实体,因此依赖中心化交易所违背了它们的目的

使用中心化交易所的替代选项就是使用去中心化交易所,如 THORChain 或者 AnySwap,所有现有的 DEX 都使用媒介代币,就像RUNE 之于 THORChain,ANY 之于 AnySwap,因为这些中间代币由每个 DEX 各自的协议管理,所以 DEX 可以保证有效传输,恶意的用户是不可能伪造中间代币的,现有 DEX 的解决方案并不理想,因为它们涉及两个中间交易——一个是将发送方的代币转换为中间代币,另一个是将中间代币转换为接收方链上所需的“真实”代币。除此之外,用户还必须完全信任中间共识层,该层在源链上确认交易,并向目标链传达铸造代币的要求。虽然现有的交易所确实支持跨链代币转移,但他们这样做的代价是不必要的复杂性和成本。这样做的缺点很明显,因为跨链应用程序还没有被广泛采用。链间交易问题的理想解决方案是在链间使用单个一次交换交易,而不涉及任何受信任的中间实体——换句话说,去信任化的有效传输。在我们的工作中,我们实现了一个通用的消息传递协议,它提供了任意用户数据(而不仅仅是代币)的去信任化的有效传输。去中心化交易所或其他 DeFi 应用程序将使用我们的消息传递原语来提供跨链交易,底层的消息传递协议提供的灵活性使高级应用程序能够实现以前不可能实现的广泛功能

4. 设计

LayerZero 的核心是提供去信任化有效传输的通信协议,我们的协议建立在一系列的组件之上(4.1节介绍),我们在 4.2 节讨论传输协议的通信流,4.3 节讲述 LayerZero 如何在不引入受信任的中介服务情况下实现有效传输,并提出了一种基于智能合约的低成本轻客户端的新设计(4.4节介绍)

4.1 LayerZero 组件

LayerZero Endpoint(LayerZero 端点)使用面向接口连接 LayerZero,每条在 LayerZero网络中的区块链上都有用一系列智能合约实现的 LayerZero 端点,端点的作用为允许用户利用 LayerZero 协议后端来发送信息并保证有效传输

一个 LayerZero 端点被分为 4 个模块:Communicator(通信器)、Validator(验证器)、Network(网络)及Libraries(库),这 4 部分构成了端点的核心功能(Fig 4),LayerZero支持的每一个新链都会被作为一个额外的库添加。这种设计允许我们在不修改三个核心模块的情况下添加对新链的支持。4.4 节中会对每个模块的功能进行说明:

Fig 4. The communication flow in a single LayerZero cross-chain transaction
Fig 4. The communication flow in a single LayerZero cross-chain transaction

Oracle(预言机)是一个独立于 LayerZero 组件在区块链读取区块头并发送给另一条链的第三方服务,理论上这一服务可以被很多第三方预言机提供,但实际中,我们期望用目前去中心化预言机网络行业的龙头—— Chainlink

Relayer(中继器)是一个功能类似于预言机的链下服务,但并不是收取区块头,而是收取特定交易的证明。在用 LayerZero 协议发送特定消息时只需要保障预言机与中继器是相互独立的就可以保证有效传输,协议本身对中继器并无任何要求,同时理论上,用户可以搭建自己的中继器服务,这种设计可以让用户确定中继器与预言机没有合谋,4.3 节会介绍这种独立性也是我们实现去信任化有效传输的基础,实际中,LayerZero 提供中继器服务,而预言机服务则由去中心化预言机网络 Chainlink 提供

4.2 LayerZero 协议

Fig 4 说明了在 LayerZero 中单次信息有效传递的步骤,图中每个数字圈代表协议的一个步骤,对应于本节中的一个段落。本节将介绍链 A 上的用户应用程序通过 LayerZero 向链 B 上的用户应用程序发送一条消息的示例。在第 5 节中,我们描述了在两个以太坊虚拟机之间发送消息的情况下,如何实现各种组件和步骤

**Step1:**在 A 链上的用户应用程序执行一系列的命令来作为交易 T 的一部分,我们用交易标识符 t 唯一的标识交易 T,随着 A 链的不同该标识符也会不同,交易 T 中步骤 A 是在交易 T 有效的条件下,通过 LayerZero 有效传输消息,为了说明问题,同时不失概括性,我们假设该场景下 App A 使用我们参考的中继器,App A 发送包含一下信息的请求给 LayerZero 的通信器:

  • t:交易 T 的唯一标识符

  • dst:指向链 B 上智能合约的全局标识符

  • payload:App A 希望发送给App B 的消息

  • relayer_args:当 App A 希望使用引用中继器时,描述支付信息的参数

**Step2:**通信器构建一个包含dstpayload的 LayerZero 数据包,被称为Packet(dst, payload),然后將数据包连同trelayer_args一起发送给验证器

**Step3:**验证器发送tdst给 Network,这一步是通知 Network 需要将链 A 上当前区块的区块头发送到链 B

Step4:验证器转发Packet(dst, payload)trelayer_args给中继器,通知中继器交易T的交易证明需要被提前获取并最终发送给链B,这一步与Step3同时进行

**Step5:**Network 给预言机发送当前交易的dst和区块编号(cur_blk_id),这也通知了预言机要拿取链 A 当前区块的区块头并发送给链 B,如果同一个区块中发生多个 LayerZero 交易,Step5 只执行一次

**Step6:**预言机从链 A 读取区块头(blk_hdr

Step7:中继器从链 A 读取与交易T有关的交易证明(proof(t)),并将其在链下存储,Step6 与 Step7 不同时进行

**Step8:**预言机确认链A上该区块头所对应的区块已经在区块链上被确认,之后发送该区块头给链 B 上的 Network,确定何时发生这种情况的机制因链而异,但通常涉及等待一定数量的区块确认

**Step9:**Network 发送该区块头的哈希(blk_hdr_hash)给验证器

**Step10:**验证器转发区块头哈希给中继器

**Step11:**在收到区块头哈希后,中继器发送一个与当前区块匹配的 Packet(dst, payload)tproof(t)清单,如果多个用户同时在相同的端点之间发送消息,则同一块中可能存在多个数据包和相关的交易证明

**Step12:**验证器用收到的交易证明结合 Network 存储的区块头来验证相关的交易T是否有效及被承认,如果区块头和交易证明不匹配,那么消息被废弃,如果匹配,Packet(dst, payload)会被发送给通信器

**Step13:**通信器给 App B 发送 Packet(dst, payload)

4.3 实现去信任化的有效传输

**Trustlessness(去信任化):**LayerZero 设计的核心思想是用户不需要信任 LayerZero 的组件。我们不要求信任,这是一个较强的条件,我们只要求预言机和中继器之间的独立性这个较弱的条件。这种对独立性而不是信任的要求是 LayerZero 高效和轻量级的原因之一。只要预言机和中继器之间没有恶意的勾结,那么 LayerZero 就保证了有效传递

**Valid delivery(有效传输):**通过 4.2 节展示的 LayerZero 协议,当且仅当与 m 关联的交易t的交易证明可以在 Step12 中被验证时,通信器才会将消息 m 传输给用户应用程序。当且仅当区块头和交易证明匹配时,该验证步骤才会成功,这只会在以下两种情况下发生:

  1. 预言机提供的区块头与中继器提供的交易证明都是有效的

  2. 预言机提供的区块头与中继器提供的交易证明都是无效的,但仍然匹配

第 2 种情况只有在预言机和中继器勾结的情况下才会发生,因为从统计上来说,不可能在不知道特定区块头的情况下发送可以针对区块头进行验证的交易证明,反之亦然。然而, LayerZero 的设计消除了共谋的可能性,如第 1 节所述。因此如果消息在接收端被传递给用户应用程序,则保证它满足有效传输

如第 3 节所述,跨链交易的理想解决方案是可以保证无信任有效传输的通信协议,即不信任中介实体或代币的有效传输。LayerZero 是第一个也是唯一一个证明这一特性的系统。这一事实将推动用户采用 LayerZero 作为消息跨链传递的首选方法

4.4 LayerZero 端点

LayerZero 端点目前被 LayerZero 网络中每个链上的一系列智能合约来实现。LayerZero 端点的核心功能封装在三个模块中:通信、验证和网络。这些模块的工作方式类似于网络堆栈,消息从发送方的堆栈向下发送——通信器到验证器再到网络——然后向上发送到接收方的堆栈

除了核心模块外,LayerZero Endpoint 还可以通过库进行扩展,库是辅助智能合约,定义了如何处理特定链的通信。LayerZero 网络中的每个链都有一个相关联的库,每个端点都包含每个库的副本。这种模块化设计允许 LayerZero 网络快速、轻松地扩展,以包括需要被加入的新链。此外,两条链之间的通信只需要它们各自的库出现在两端,使 LayerZero 成为一个完全连接的网络,能够编排任何节点对之间的交易

4.5 LayerZero 端点成本可伸缩性

正如许多读者可能会指出的那样,在 Layer1 上运行智能合约的成本高得令人望而却步,特别是随着存储数据量的增加。为了使 LayerZero 端点经济实用,我们有必要尽可能设计最轻量级的客户端。之前通过跨链状态机复制(SMR)进行的无信任跨链验证工作,如 Golden Gate,每天可能需要花费数百万美元才能在以太坊等流行的 Layer1 上运行

为了解决这个问题,我们开始设计最轻量级的客户端。我们的关键发现是,在客户端复制和存储区块头是不必要的。相反,我们将获取必要的跨链区块头和交易证明的任务委托给链外实体:预言机和中继器。这造就 LayerZero 端点非常轻量级,即使在以太坊这样以昂贵著称的链上也具有成本效益

5 案例学习:EVM 上的 LayerZero

在本节中,我们简要描述了如何实现在以太坊虚拟机(EVMs)上运行 LayerZero。为了简洁起见,我们将重点介绍系统的各个方面,这些方面的实现可能因链而异,并强调 LayerZero 如何处理以太坊链的特定需求。如 4.1 节所述,当前版本的 LayerZero 依赖 Chainlink 提供预言机服务,并期望用户使用我们提供的中继器服务

LayerZero packet(LayerZero包):LayerZero包的格式取决于源链和目标链。我们在图5中演示了EVM端点的LayerZero包的准确布局。每个字段的作用如图6所示

Fig 5. LayerZero packet layout for EVM endpoints
Fig 5. LayerZero packet layout for EVM endpoints
Fig 6. Functions of each field
Fig 6. Functions of each field

**发送端区块链交易稳定性:**为了确保消息交易在源链上是稳定的,我们依赖于去中心化预言机网络的固有属性——预言机只会在听到一定数量的区块确认后通知目标链特定的区块头,在以太坊的情况下是 15 个。准确地说,LayerZero 协议(章节4.2)的 Step8 只有当预言机在链 A 上听到 15 个块确认后才会执行

**LayerZero 端点:**我们将 LayerZero 端点实现为一系列智能合约,由我们在 4.4 节中描述的四个主要模块组成。对于大多数现有的区块链,包括以太坊区块链,我们能够将通信器、验证器和网络分别实现为单独的智能合约。但是,这种设计并不排除在具有不同要求的(未来)链上实现 LayerZero Endpoint

在这个案例研究中,LayerZero 端点的 Library 组件是为以太坊区块链提供支持的关键。我们实现了一个库来处理特定于 EVM 的 LayerZero packet 的构造,如图 5 所示,并处理 EVM 智能合约地址信息的编码和解码

标准库的另一个职责是处理验证交易证明所涉及的实际计算。我们的 EVM 库基于开源的 Golden Gate 处理 EVM 区块上交易的 Merkle-Patricia 验证,我们基于 Golden Gate 的开源实现

6 LayerZero 的应用

**跨链去中心化交易所:**正如 2.2 节中简要描述的那样,LayerZero 启用了一个跨链 DEX(跨链桥),专门处理本地资产。与现有的发行包装代币或通过中间侧链的 DEX 设计相反,使用LayerZero 构建的 DEX 可以在链之间发送消息,这样两条链上都存在流动性池,用户可以简单地将本地资产存入一个池,并从另一个池中提取本地资产。LayerZero 消息原语功能的强大,足以支持直接桥接(1:1 定价)、自动做市(ab = k 定价)和任何其他派生(例如类似于Curve DAO 定价)。LayerZero 提供的有效交付保证使广泛的去中心化交换应用成为可能

**多链受益聚合器:**目前的收益聚合器通常在单链生态的范围内运行,如 Yearn Finance 等项目可以使用单链策略实现收益聚合。这些单链产量聚合系统的一个关键弱点是它们无法利用当前生态系统之外的任何机会,可能会错过许多很好的机会。一个使用 LayerZero 进行跨链交易的收益聚合器将允许在所有生态系统中挖掘最佳的机会,增加获得高收益的机会,并使用户能够利用市场的无效率状态。严格来说,多链收益聚合器要比单链收益聚合器好,因为在最坏的情况下,策略会退化到只利用一条链上的机会,而在最好的情况下,它会有指数级数量的机会可以选择

**多链借贷:**今天,用户没有简单的方法来利用他们未持有资产的链上的机会。例如,假设一个资产在 ETH 的用户想要利用 Polygon 上的机会,他的选择是:(1)将整个资产转移到另一个链上,并将其转换为所需的货币;(2)在以太坊上出借资产,借入所需的资产,然后将该资产连接到目标链上。LayerZero 启用了一个借贷协议,允许用户将他们的整个资产基础保留在以太坊上,将其出借,然后直接在 Polygon 的 MATIC 中借入。这消除了中间成本:如过桥和掉期费用

这三个例子只代表了 LayerZero 实现的众多可能性中的一小部分。通过利用 LayerZero ,开发人员将能够编写他们的应用程序,而不必担心链间和链内交易之间的语义差异,用户将能够在链间自由移动流动性。鉴于无信任的跨链交易的力量,我们期待着社区将开发出创造性的新应用程序

7 结论

本文介绍了首个不涉及任何中间交易的去信任化全链互操作平台 LayerZero 的设计与实现。我们展示了通过利用两个独立的、不受信任的链下实体(预言机和中继器), LayerZero 能在不需要昂贵的跨链状态机复制或中间代币的情况下实现有效传输。我们的协议设计在某种程度上不排除任意中继服务的使用,这确保了中继器和预言机之间没有勾结。LayerZero 协议支持其网络所支持的区块链之间的本地交易,而新颖的 LayerZero 端点设计可以轻松扩展来支持任何区块链。除此之外,我们的端点设计足够轻量级,可以在昂贵的第一层链(如以太坊)上运行,而不会产生过高的成本。我们展示了一个如何在 LayerZero 中实现对基于 evm 的链的支持的案例研究,使用中继器和 Chainlink 的去中心化预言机网络来实现跨链交易

8 一些思考

LayerZero的优点很突出,可以说是区块链必不可少的项目,将碎片化的区块链流动性连接了起来,很有实际意义,下面主要讲讲它的局限性:

通过白皮书的介绍,可以发现 layerZero 具有很强的可扩展性,只要在目标链部署以智能合约为基础的 Endpoint,就可以实现信息的传递了,但同时白皮书也提到了,Endpoint 是以源链与目标链的不同而不同的,如果是这样,考虑最坏的情况(支持智能合约的区块链彼此间的 Endpoint 都不同),那么 Endpoint 的种类,将会是一个目前支持智能合约的区块链的数量的排列问题,Endpoint 的开发复杂程度不可小觑。同时由于其具有很强的扩展能力,势必会牺牲一些复杂的功能实现,鱼与熊掌不可兼得,所以 LayerZero 在不同链之间主要起到的是数据的传递作用,至于数据传递过去会做怎么样的处理,它是一概不管的,同时,LayerZero的网络虽然很轻巧,但是它传递信息的速度一定是要慢于源链确认交易的速度,Step8 需要等待交易确认后才能进行下一步,所以 LayerZero 传递消息速度的极限就是源链交易确认的速度,如果碰到像以太坊这样 TPS 较低的公链时,LayerZero 也是无济于事

LayerZero 在我看来更像是把原来不同跨链桥所用的通信标准给统一了,并做了一定程度的扩展,这样以来,就会有跨链桥基于 LayerZero 来进行开发,既降低了开发的难度,同时如果有其他链上应用是基于 LayerZero 来进行开发,那么彼此之间可以互相交互,虽然之前也有项目尝试去这样做,就比如跨链桥,但是单个跨链桥所支持的区块链数量又很有限,并没有达到像 LayerZero 这样的规模,网络有了规模就容易形成网络效应及产生相应的 LayerZero 生态,所以很看好 LayerZero 及 基于 LayerZero 的生态

Subscribe