解读LayerZero:如何实现全链互操作性
原标题:LayerZero - An Omnichain Interoperability Protocol
原作者:Ryan Zarick, LayerZero Official
编译:ETH 中文站
对于跨链桥接和通信,基本上每一种现有的方案都是这两大类的其中一种:第一种是由一条形成共识的中间链在不同链之间验证和转发消息;第二种是在链上运行一个轻节点。我们来讨论一下。
中间链 (Middle Chain)
中间链接收、验证和转发各条链之间的消息。在这种模式下,中间链具有对所有消息的完全签名权,这种设计会使得其成为一个单点故障。在共识被破坏的情况下,所有链上的流动性都会立即被盗。现在的中间链仅与数亿美元的资产绑定,而需要保证数百亿美元资产的安全。随着这些链变得越来越去中心化,当这个巨大的蜜罐被利用时,问题就严重了。
链上轻节点 (On-Chain Light Node)
链上轻节点接收并验证对立链的区块头。包含消息的交易证明被转发并在链上对照区块头进行验证。这是在链之间传送消息最安全的方式。不幸的是,这也是最昂贵的。在以太坊上运行一个链上轻节点,每条对立链每天都要花费成千上万的美元。
超轻节点 (Ultra Light Node)
链上轻节点极其安全,但同时也极其昂贵。中间链不贵,但没那么安全。
接下来介绍的是超轻节点 (Ultra Light Node, ULN),具有轻节点的安全性和中间链的低成本。超轻节点通过执行与链上轻节点相同的验证来实现;但不是按顺序保留所有区块头,而是由去中心化预言机按需分发区块头。
LayerZero
LayerZero 是一个用户应用 User Application (UA) 结构的链上端点,这个端点运行着一个超轻节点 (ULN)。LayerZero 依靠两方在链上端点之间传输消息:预言机 (Oracle) 和中继器 (Relayer)。当一个 UA 从 A 链向 B 链发送消息时,消息会通过 A 链上的端点传输。然后端点会通知 UA 指定的 Oracle 和 Relayer 该消息和它的目标链。Oracle 会将区块头转发给 B 链的端点,然后 Relayer 提交交易证明。该证明在目标链上被验证,消息被转发到目标地址。
安全属性
在拆分 Oracle 和 Relayer 之间的责任时,LayerZero 利用已建立的预言机 (Chainlink 和 Band) 的安全特性,通过开放中继系统增加了一层安全性。虽然这乍一眼看起来只是一个小小的区别,但它的影响是相当深刻的。首先,这意味着这种新网络在最坏的情况下安全性也只是下降到和预言机一样安全。如果你使用 Chainlink 作为你的预言机,那么系统中的任意作恶行为仍然是以首先能够击败 Chainlink DON 为前提的 (这可不是一件容易的事)。即便 Oracle 的共识被破坏,也需要 Relayer 的积极串通。比如,在最极端的情况下,Oracle A 的共识被破坏,Relayer A 也串通了,所有这些风险只由那些接收来自 Oracle A 和 Relayer A 的消息的用户应用承担。所有使用 Relayer B-Z 的用户应用 (运行他们自己的 Relayer),或者所有使用 Oracle B-Z 的用户应用仍然完全不受影响。在风险模型方面,这与之前描述的中间链系统相比是一个巨大的改变。
用例
就目前的生态来看,跨链消息传递就是桥接的同义词。但是使用 LayerZero 可以做的事情远不止桥接资产那么简单。LayerZero 可以实现跨链状态共享、桥接、借贷、swap、治理等等更多功能。
状态共享
SushiSwap 存在于 12 条不同的链上,每个实例都运行在一个孤立的生态系统中。如果它们想要与 SushiSwap 在以太坊的主要实例同步状态,他们就必须编写使用 Wormhole、Rainbow 桥接、Polygon Network 桥接和 Avalanche 桥接的代码。最终的结果就是会有 11 套代码,也就是有 11 个独立接口和 11 种不同的安全属性。由于桥接和 L1/L2 的生态系统正不断变化,这会让系统越来越难以管理。
使用 LayerZero 的话,SushiSwap 将只需要有单个接口和代码库用于所有的跨链对。他们只需要执行「发送」和「接收」功能。「发送」包括为目标链形成一条消息,而「接收」只是解释该消息。
统一流动性的桥接
现在的桥接都争相吸引流动性提供者 (Liquidity Providers, LPs),在桥接和它们的独立成对资金池之间分散分布流动性。LP 必须选择连接到某条链的单个资金池,而不是拥有一个为所有连接的链提供流动性的资金池。LayerZero 这样解决桥接问题:通过在来源链确保最终确定性,在所有链之间统一流动性。这意味着,当用户从 A 链转移资产到 B 链时,用户会被保证资产在 B 链上,然后 LP 则从所有进入 B 链的交易中收取手续费,而不用管来源链是什么。
Swaps
可以对现有的 AMM 进行封装来执行跨链 swap (不需要修改任何现有的代码即可将某种资产转换成另一种资产)。用户只需在来源链进行一笔交易,就能够将以太坊上的 ETH 转成 Solana 上的 SOL。
借贷
现在,如果某个用户在 A 链上存有资产,但是想在 B 链上进行流动性挖矿,那么 ta 必须在 A 链上抵押借贷 -> 桥接资产 (产生手续费) -> swap (产生手续费) -> 在目标链上进行流动性挖矿 -> swap 回原来的资产 (产生手续费) -> 桥接回原来的链 (产生手续费) -> 偿还贷款 -> 提出抵押资产。使用 LayerZero,你可以在 A 链上抵押资产,然后直接在目标链上借款、进行流动性挖矿、偿还贷款、然后 A 链的抵押资产就解锁了。省去了桥接和 swap 的四笔手续费。