对于 ENS 等应用来说,如何能以信任最小化的方式从某个系统中检索数据,且不需要所有 Layer 2 方案的客户端存储全部数据?
原文标题:《引介 | 一种以太坊 Layer 2 的通用桥》 随着走向成熟的以太坊 Layer 2 解决方案多了起来,ENS 也要能为整个生态系统提供服务,同时让 ENS 用户能够获得 Layer 2 解决方案给他们带来的效率提升。自 Vitalik 的一篇帖子提出了一种可能的方法之后,ENS 团队和广大的 ENS 和 L2 社区也一直在开发一种通用的 「Layer 2 桥」,让包括 ENS 在内的应用,能够以免信任的方式在多个链下信源处检索数据,进而使跨平台的互操作性成为可能。 在 10 月 27 号最新的一次工作会议上,我演示了这个想法的一个初步实现。本文中我会详细讲解这种解决方案。 目标概要来说,Layer 2 和其它相关系统的工作原理都是减少与以太坊交互的需要,它们将原本需要在链上保存和访问的状态移到了别的地方,同时,保证在以太坊区块链上有足够多的信息能验证数据的正确性。举个例子,在 Rollup 这种常见的方案中,(Rollup 的)状态会存储在另外一个系统中,只有 witness 数据例如默克尔根会存储在以太坊区块链上(译者注:作者此处的举例不够完整,witness 还包括用户交易的原始数据)。有了这些 witness 数据和 Layer 2 解决方案的访问权,一个参与者就可以构建出对任意保护在 Layer 2 系统中的数据的有效性证明,并且可以由以太坊来验证。 这个定义比大多数人所认为的 「Layer 2」 要更加广泛 —— 它还包括了其它一些减少链上数据存储的工具,比如使用账户余额默克尔树的空投(airdrop),以及会触发事件但并不在链上存储余额的代币。 对于 ENS 和其它应用来说,关键问题在于,在一个存在许多互不兼容的 Layer 2 方案的世界里,如何能以信任最小化的方式 —— 也就是不引入任何新的信任假设 —— 从某个系统中检索数据,且不需要变成所有 Layer 2 方案的客户端、自己来存储可能有用的数据 。 一个幼稚的方法是,要求所有的系统都使用同样的 witness 数据格式。但这一点是不可能的,两个原因:第一,witness 数据的格式和类型都高度依赖于相关系统的实现细节,ZK Rollup 和 Optimistic Rollup 使用的元件必定不同;第二,客户端仍然无法实际获得数据。 实用的方法必须满足下列条件:
|