昨天推特上出现了有很多对LayerZero的讨论,其中也包括很多误解,所以我将从第一性原理开始介绍LayerZero,它是什么?如何工作?开发人员如何保证它的安全性?
LayerZero是什么?
LayerZero是一种可用于消息传递的互操作性协议,允许任何包含有效负载的跨链合约调用。
它是如何工作的?
开发人员在多个链上部署合约,我们统称这些为链A和链B。交易在链A上提交,包含结果的消息可以被传递给链B上的合约。合约与LayerZero端点交互,然后应用程序选择的预言机和中继器检索相应的区块头和tx证明。他们等待A链上指定数量的区块确认后,独立地将各自的信息传送到链B。在链B上,这些信息将通过验证者或证明库进行验证,然后在链B上传送消息合约。
一个简单示例是用户可以在Stargate上桥接,使用SushiXSwap进行交换,或者跨链交易NFT资产。
基础设施提供商有什么保证?
这里有四个真正的组件:中继器、预言机、验证者\证明库、区块确认
应用程序可以完全控制这些组件中的每一个,以下是详细介绍:
中继器——中继器是完全开放且无需许可的。应用程序可以选择任何现有的中继器,中继器可以是中继器网络,也可以是简单的单个签名者。
预言机——预言机也是完全开放和无需许可的。应用程序可以选择任何现有的预言机,预言机可以是预言机网络,也可以是单个签名者。
证明库——验证库在一个只能追加的注册表中发布,也可以发布新库,但现有库永远无法修改,并且是完全不可撤销的不可变验证库。应用程序可以选择任何现有的库来执行其验证。随着新的证明机制的发明、零知识证明等领域的进步以及围绕Gas和采用率的优化协议的出现,注册表能够允许无限的灵活性。
区块确认-区块确认是在消息可以传递到目标链之前必须在当前源链上完成的区块数。这个数字在共识机制和具有概率最终性的系统中差异很大,是应用程序控制给定块的最终确定性的方式,很像中心化交易所在接受来自给定链的存款之前所做的事情。
如果应用程序配置这些参数,它将如下所示
如果应用程序未配置参数,则它会使用「默认」设置,这样就会有一定的适应性和功能性限制。
在场景A中,当应用程序设置了的配置时,任何其他系统都无法修改这些参数。此时,中继器A将与预言机Z一起使用,所有消息将在等待X个区块后通过ULNv2和ProofLibv1进行验证。
在场景B中,当应用程序使用默认设置时,这意味着他们将参数的选择权交给了LayerZero多重签名。LayerZero多重签名唯一能做的就是添加新库和更改默认值。
那么,让我们讨论一下目前存在的现状。
今天大多数互操作系统都是这样工作的:
Wormhole、Nomad等互操作系统都以类似的方式工作。所有控件都位于中,并且可以由控制这些系统的管理员进行升级。这存在一定的风险,导致Wormhole和Nomad出现多个安全问题。使用LayerZero的默认值与这些系统相同,应用程序将参数控制权委托给一组外部管理密钥,系统依赖于秘钥管理者不会作恶。
不同之处在于,这些系统中,应用程序都没有任何控制权,并且永远无法阻止强制对它们进行升级并更改底层消息传递或协议的信任假设。
LayerZero为每个应用程序提供了一种方法来明确选择一组永远无法修改的安全参数。我们认为关键基础设施应该是不可变的、开源的,并且始终由用户应用程序所拥有。
原文作者:BryanPellegrino,LayerZeroLabs联合创始人兼CEO
原文编译:aididiaojp.eth,ForesightNews
来源:星球日报
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。