文章详细介绍了以太坊第二层(Layer 2)生态系统的发展,探讨了不同Layer 2项目之间的差异和选择标准,包括Rollups、Validiums和其他系统的安全性与扩展性之间的权衡。
特别感谢 Karl Floersch 的反馈和审阅
过去一年,以太坊的 Layer 2 生态系统迅速扩展。EVM rollup 生态系统,传统上以 Arbitrum、Optimism 和 Scroll 为代表,最近还有 Kakarot 和 Taiko,进展迅速,在安全性改进方面取得了巨大进展;L2beat 页面很好地总结了每个项目的状态。此外,我们看到一些团队在构建侧链的同时也开始构建 rollup(如 Polygon),一些 Layer 1 项目寻求向 validium 转型(如 Celo),以及全新的尝试(如 Linea、Zeth……)。最后,还有不仅仅是 EVM 的生态系统:比如类似 EVM 的 Zksync,扩展如 Arbitrum Stylus,以及更广泛的努力,如 Starknet 生态系统、Fuel 等。
不可避免的后果之一是,我们看到 Layer 2 项目变得更加异质化。我预计这一趋势将继续下去,原因如下:
一个重要的主题是,虽然目前在以太坊 Layer 1 上的应用程序和用户短期内愿意支付较小但仍然可见的 rollup 费用,但来自非区块链世界的用户不会:如果你以前支付 1 美元,那么支付 0.10 美元更容易被接受,而如果你以前支付 0 美元,则不然。这既适用于今天中心化的应用程序,也适用于较小的 Layer 1,这些 Layer 1 在用户基数仍然较小时通常具有非常低的费用。
一个自然的问题是:对于给定的应用程序,这些复杂的权衡(如 rollup、validium 和其他系统)中哪一个是有意义的?
我们将探讨的第一个维度是安全性与规模的关系,可以描述如下:如果你有一个在 L1 上发行的资产,然后存入 L2,再转移到你手中,你能保证将该资产带回 L1 的级别是什么?
还有一个平行的问题:导致这种保证级别的技术选择是什么,这种技术选择的权衡是什么?
我们可以用一个简单的图表来描述:
Rollup | 通过欺诈证明或 ZK-SNARK 证明计算,数据存储在 L1 上 | 你始终可以将资产带回 L1 | L1 数据可用性 + SNARK 证明或冗余执行以捕获错误 |
---|---|---|---|
Validium | 通过 ZK-SNARK 证明计算(不能使用欺诈证明),数据存储在服务器或其他独立系统上 | 数据可用性故障可能导致资产丢失,但不会被窃取 | SNARK 证明 |
断开连接 | 一个独立的链(或服务器) | 信任一个或一小群人不会窃取你的资金或丢失密钥 | 非常便宜 |
值得一提的是,这是一个简化的模式,还有很多中间选项。例如:
这些中间选项可以被视为介于 rollup 和 validium 之间的一个光谱。但什么促使应用程序选择光谱上的某个特定点,而不是更左或更右的点?这里有两个主要因素:
大致上,这种权衡看起来像这样:
另一个值得提及的部分保证是预确认。预确认是由 rollup 或 validium 中的一些参与者签署的消息,表示“我们证明这些交易按此顺序包含在内,并且后状态根是这个”。这些参与者可能会签署一个与后来现实不符的预确认,但如果他们这样做,押金将被销毁。这对于消费者支付等低价值应用程序很有用,而像数百万美元的金融转账这样的高价值应用程序可能会等待系统完全安全支持的“常规”确认。
预确认可以被视为另一种混合系统的例子,类似于上面提到的“plasma / validium 混合”,但这次是在具有完全安全性但高延迟的 rollup(或 validium)与具有较低安全性但低延迟的系统之间进行混合。需要较低延迟的应用程序获得较低的安全性,但可以与那些愿意用较高延迟换取最大安全性的应用程序共存于同一个生态系统中。
另一种较少被考虑但仍然非常重要的连接形式与系统读取以太坊区块链的能力有关。特别是,这包括能够在以太坊回滚时回滚。要了解为什么这有价值,请考虑以下情况:
假设如图所示,以太坊链回滚了。这可能是 epoch 内的临时故障,链尚未最终确定,或者可能是不活动泄漏期间,由于太多验证者离线,链长时间未最终确定。
由此产生的最坏情况如下。假设顶部链的第一个区块从以太坊链的最左侧区块读取了一些数据。例如,某人在以太坊上向顶部链存入了 100 ETH。然后,以太坊回滚了。然而,顶部链没有回滚。结果,顶部链的未来区块正确地跟随新正确的以太坊链的新区块,但现在错误的旧链接的后果(即 100 ETH 的存款)仍然是顶部链的一部分。这种漏洞可能会允许印钞,将顶部链上桥接的 ETH 变成部分准备金。
有两种方法可以解决这个问题:
需要注意的是,(1) 有一个边缘情况。如果以太坊发生 51% 攻击,创建了两个新的不兼容区块,它们同时显示为已最终确定,那么顶部链可能会锁定错误的区块(即以太坊社会共识最终不支持的区块),并且必须回滚以切换到正确的区块。可以说,没有必要提前编写代码来处理这种情况;只需通过硬分叉顶部链来处理即可。
链能够无需信任地读取以太坊的能力有两个价值:
它减少了将以太坊(或其他 L2)发行的代币桥接到该链所涉及的安全问题。
它允许使用共享密钥库架构的账户抽象钱包安全地在该链上持有资产。
很重要,尽管可以说这种需求已经被广泛认识到。(2) 也很重要,因为它意味着你可以拥有一个允许轻松更改密钥并跨大量不同链持有资产的钱包。
假设顶部链最初是一个独立的链,然后有人在以太坊上放置了一个桥接合约。桥接合约只是一个接受顶部链区块头的合约,验证提交给它的任何头都带有有效的证书,证明它已被顶部链的共识接受,并将该头添加到列表中。应用程序可以在此基础上构建功能,如存入和提取代币。一旦这样的桥接器到位,它是否提供了我们之前提到的任何资产安全保证?
到目前为止,还没有!原因有两个:
现在,让我们将桥接器变成一个验证桥接器:它不仅检查共识,还检查 ZK-SNARK,证明任何新块的状态都是正确计算的。
一旦完成,顶部链的验证者就无法再窃取你的资金。他们可以发布一个数据不可用的区块,阻止所有人提取,但他们无法窃取(除非试图通过揭示允许用户提取的数据来勒索用户)。这与 validium 的安全模型相同。
然而,我们仍然没有解决第二个问题:顶部链无法读取以太坊。
要做到这一点,我们需要做以下两件事之一:
紫色链接可以是哈希链接或验证以太坊共识的桥接合约。
这足够了吗?事实证明,仍然不够,因为有几个小边缘情况:
以太坊的 51% 攻击将对顶部链产生类似后果,但反过来。以太坊的硬分叉可能会使顶部链中的以太坊桥接器不再有效。如果以太坊回滚一个已最终确定的区块,则社会承诺回滚,如果以太坊硬分叉,则硬分叉,是解决此问题的最干净的方法。这样的承诺可能永远不需要实际执行:你可以在顶部链上设置一个治理小工具,如果它看到可能的攻击或硬分叉的证据,则激活,并且只有在治理小工具失败时才硬分叉顶部链。
对于 (3),唯一可行的答案,不幸的是,在以太坊上设置某种形式的治理小工具,使以太坊上的桥接合约能够了解顶部链的硬分叉升级。
总结:双向验证桥接器几乎足以使一个链成为 validium。剩下的主要成分是,如果以太坊发生异常情况使桥接器不再工作,另一个链将硬分叉的社会承诺。
“与以太坊的连接”有两个关键维度:
这两者都很重要,并且有不同的考虑因素。在这两种情况下都有一个光谱:
请注意,这两个维度各自有两种不同的测量方式(所以实际上有四个维度?):提取的安全性可以通过 (i) 安全级别和 (ii) 有多少百分比的用户或用例受益于最高安全级别来衡量,读取的安全性可以通过 (i) 链读取以太坊区块的速度,特别是已最终确定的区块与任何区块,以及 (ii) 链处理边缘情况(如 51% 攻击和硬分叉)的社会承诺的强度来衡量。
在这个设计空间的许多区域中,项目都有价值。对于某些应用程序,高安全性和紧密连接很重要。对于其他应用程序,为了更大的可扩展性,可以接受较松散的东西。在许多情况下,今天从较松散的东西开始,随着技术的进步,在未来十年内逐步转向更紧密的耦合,可能是最优的。
- 原文链接: vitalik.eth.limo/general...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!