作者:Vitalik,以太坊创始人;翻译:金色财经0xjs
以太坊L2生态系统在过去一年中迅速扩张。ZK-EVM Rollup生态系统传统上以StarkNet、Arbitrum、Optimism和Scroll为主,目前进展迅速,在提高安全性方面取得了长足进步;L2beat页面很好地总结了每个项目的状态。此外,我们还看到,有侧链团队也开始构建rollups ( Polygon )、有L1项目寻求转向validiums ( Celo ) 以及全新的尝试 ( Linea、Zeth …)。
其不可避免的后果之一是我们看到Layer 2项目变得更加异构的趋势。
我预计这种趋势将持续下去,原因如下:
-
一些目前独立的Layer 1的项目正在寻求更接近以太坊生态系统,并可能成为 Layer 2。这些项目可能需要逐步过渡。现在一次性全部转换会导致可用性下降,因为该技术尚未准备好将所有内容rollup起来。稍后一次性全部转型可能会牺牲动力,而且为时已晚,没有任何意义。
-
一些中心化项目希望给用户更多的安全保证,并正在探索基于区块链的路线。在很多情况下,这些项目在以前的时代都会探索“许可联盟链”。实际上,他们可能只需要“妥协方案”(halfway-house)级别的去中心化。此外,它们通常具有非常高的吞吐量,因此甚至不适合rollup,至少在短期内是这样。
-
非金融应用程序,如游戏或社交媒体,希望实现去中心化,但只需要中等程度的安全性。在社交媒体案例中,这实际上涉及以不同方式对待应用程序的不同部分:用户名注册和帐户恢复等罕见且高价值的活动应在rollup上完成,但发帖和投票等频繁且低价值的活动则需要较低的安全性。如果链的故障导致你的帖子消失,这是可以接受的成本。如果链的故障导致你失去帐户,那就是一个更大的问题。
一个重要主题是,虽然目前以太坊L1上的应用程序和用户可以在短期内支付较小但仍然可见的Rollup费用,但来自非区块链世界的用户不会:如果你之前支付1美元,则更容易证明支付 0.10 美元是合理的。但如果你之前支付 0 美元,则会大不相同。这既适用于当今中心化的应用程序,也适用于较小的L1层,这些应用程序的费用通常非常低,而用户群仍然很小。
一个自然出现的问题是:对于特定的应用程序,rollups、validiums和其他系统之间的复杂权衡中哪一个有意义?
Rollups、validiums、独立于以太坊的系统
我们要探讨的安全性与扩展的第一个维度可以描述如下:如果你有一个在L1上发行的资产,然后存入L2,然后转移给你,你有什么程度的保证,你会得到什么?能把资产带回L1吗?
还有一个并行的问题:导致这种保证水平的技术选择是什么,以及该技术选择的权衡是什么?
我们可以用图表简单地描述这一点:
值得一提的是,这是一个简化的模式,并且有很多中间选项。例如:
-
Rollup 和 validium 之间:任何人都可以进行链上支付以支付交易费用的 validium,此时运营商将被迫在链上提供一些数据,否则会损失押金。
-
Plasma 和 validium 之间:Plasma系统提供类似rollup的安全保证以及链下数据可用性,但它仅支持有限数量的应用程序。系统可以提供完整的 EVM,并为不使用这些更复杂应用程序的用户提供 Plasma 级保证,并为使用这些更复杂应用程序的用户提供 validium 级保证。
这些中间选项可以被视为介于rollup和validium之间。但是,是什么促使应用程序选择该频谱上的特定点,而不是更左或更右的某个点?这里,有两个主要因素:
1、以太坊原生数据可用性的成本,随着技术的进步,成本将随着时间的推移而降低。以太坊的下一个硬分叉Dencun引入了EIP-4844(又名“proto-danksharding”),它提供约 32 kB/秒的链上数据可用性。在接下来的几年中,随着完整 danksharding的推出,这一数字预计将分阶段增加,最终目标是约 1.3 MB/秒的数据可用性。同时,数据压缩的改进将使我们能够用相同数量的数据做更多的事情。
2、应用程序自身的需求:与应用程序中的某些问题相比,用户会因高额费用而遭受多少损失?金融应用程序会因应用程序故障而损失更多;游戏和社交媒体涉及每个用户的大量活动,且活动价值相对较低,因此不同的安全权衡对他们来说是有意义的。
大约,这种权衡看起来像这样:
另一种值得一提的部分保证是预确认(pre-confirmations)。预确认是由一些参与者在rollup或validium中签名的消息,表示“我们证明这些交易包含在这个订单中,并且后状态根就是这个”。这些参与者很可能会签署与后来的实际情况不符的预确认,但如果他们这样做,押金就会被烧毁。这对于消费者支付等低价值应用程序非常有用,而数百万美元的金融转账等高价值应用程序可能会等待由系统完全安全性支持的“常规”确认。
预确认可以被视为混合系统的另一个例子,类似于上面提到的“plasma/validium混合”,但这次是在具有完全安全性但高延迟的rollup(或validium)和具有安全级别低得多,延迟低。需要较低延迟的应用程序的安全性较低,但可以与可以接受较高延迟的应用程序生活在同一生态系统中,以换取最大的安全性。
无需信任地读取以太坊
另一种较少被考虑但仍然非常重要的连接形式与系统读取以太坊区块链的能力有关。特别是,这包括在以太坊恢复时能够恢复。要了解为什么这是有价值的,请考虑以下情况:
假设如图所示,以太坊链恢复。这可能是一个epoch内的暂时性问题,而链尚未最终确定,也可能是一个不活动漏洞( inactivity leak)期,其中链在较长时间内没有最终确定,因为太多验证者处于离线状态。
由此可能出现的最坏情况如下。假设上面链的第一个区块从以太坊链上最左边的区块读取一些数据。例如,以太坊上有人将 100 ETH 存入上面链。然后,以太坊恢复。然而,上面链不会恢复。因此,上面链的未来区块正确地遵循来自新正确的以太坊链的新区块,但现在错误的旧链接(即 100 ETH 存款)的后果仍然是上面链的一部分。这种漏洞可以允许印钞,将上面链上桥接的 ETH 转变为部分储备。
有两种方法可以解决这个问题:
1、上面链只能读取以太坊的最终确定的区块,因此它永远不需要恢复。
2、如果以太坊恢复,上面链可能会恢复。两者都可以防止这个问题。前者更容易实现,但如果以太坊进入不活动漏洞( inactivity leak)期,可能会导致长时间丧失功能。后者更难实现,但始终确保最佳的功能。
请注意,(1) 确实有一种边缘情况。如果对以太坊的 51% 攻击创建了两个新的不兼容的区块,并且这两个区块同时出现,那么上面链很可能会锁定错误的区块(即以太坊社会共识最终不支持的区块),并且会必须恢复以切换到正确的位置。可以说,没有必要提前编写代码来处理这种情况;它可以简单地通过硬分叉上面链来处理。
一条链以无需许可方式读取以太坊的能力很有价值,原因有两个:
1、它减少了将以太坊(或其他 L2)上发行的代币桥接到该链所涉及的安全问题
2、它允许使用共享密钥库架构的账户抽象钱包安全地保存该链上的资产。
1很重要,尽管可以说这种需求已经得到广泛认可。2也很重要,因为这意味着你可以拥有一个允许轻松更改密钥并保存跨大量不同链的资产的钱包。
拥有一座桥会让你成为valium吗?
假设上面的链最初是一条单独的链,然后有人在以太坊上放置了一个桥接合约。桥接合约只是一个接受上面链区块头的合约,验证提交给它的任何区块头是否带有有效证书,表明它已被上面链共识接受,并将该区块头添加到列表中。应用程序可以在此基础上构建来实现诸如存入和提取代币之类的功能。一旦这样的桥就位,是否可以提供我们之前提到的任何资产安全保证?
到目前为止,还不能!有两个原因:
1、我们正在验证区块是否已签名,但不是状态转换是否正确。因此,如果你将在以太坊上发行的资产存入上面链,并且上面链的验证者发生故障,他们可以签署无效的状态转换来窃取这些资产。
2、上面链仍然没有办法读取以太坊。因此,如果不依赖其他一些(可能不安全的)第三方桥,你甚至无法将以太坊原生资产存入上面链。
现在,让我们将桥设为验证桥:它不仅检查共识,还检查 ZK-SNARK,证明任何新区块的状态都已正确计算。
完成此操作后,上面链的验证者将无法再窃取你的资金。他们可以发布一个包含不可用数据的区块,阻止所有人撤回,但他们无法窃取(除非试图为用户提取赎金,以换取允许他们撤回的数据)。这与 validium 的安全模型相同。
然而,我们仍然没有解决第二个问题:上面链无法读取以太坊。
为此,我们需要执行以下两件事之一:
1、在上面链中放置一个桥接合约来验证最终确定的以太坊区块。
2、让上面链中的每个区块都包含最近以太坊区块的哈希值,并具有强制哈希链接的分叉选择规则。也就是说,链接到不在规范链中的以太坊区块的上面链区块本身就是非规范的,并且如果上面链的区块链接到最初是规范的以太坊区块,但随后变得非规范,上面链的区块也必须变得非规范。
紫色链接可以是哈希链接,也可以是验证以太坊共识的桥接合约。
这够了吗?事实证明,仍然不行,因为有一些小概率情况:
1、如果以太坊受到51%攻击会发生什么?
2、如何处理以太坊硬分叉升级?
3、你如何处理链的硬分叉升级?
对以太坊的 51% 攻击与对上面链的 51% 攻击会产生类似的后果,但相反。以太坊的硬分叉可能会导致以太坊在顶上面链内的桥不再有效。如果以太坊恢复最终确定确定的区块,则社会承诺恢复;如果以太坊硬分叉,则社会承诺进行硬分叉,是解决此问题的最干净的方法。这样的承诺很可能永远不需要实际执行:如果发现可能的攻击或硬分叉的证据,你可以激活上面链上的治理小工具,并且只有在治理小工具失败时才对上面链进行硬分叉。
不幸的是,对(3)的唯一可行答案是在以太坊上拥有某种形式的治理小工具,可以使以太坊上的桥接合约意识到顶链的硬分叉升级。
小结:双向验证桥几乎足以使一条链成为validium。剩下的主要成分是社会承诺,如果以太坊发生异常情况导致桥梁不再工作,另一条链将硬分叉作为响应。
结论
“连接到以太坊”有两个关键维度:
1、提现到以太坊的安全性
2、读取以太坊的安全性
这些都很重要,并且有不同的考虑因素。两种情况都有一个光谱:
请注意,这两个维度都有两种不同的衡量方法(所以真的有四个维度吗?):提款的安全性可以通过 (i) 安全级别和 (ii) 受益于最高安全性的用户或用例的百分比来衡量级别;读取安全性可以通过以下指标来衡量:(i) 链读取以太坊区块的速度,特别是最终确定区块与任何区块的速度,以及 (ii) 链处理边缘情况(例如 51% 攻击和攻击)的社会承诺的硬分叉强度。
该设计空间的许多区域的项目都具有价值。对于某些应用程序,高安全性和与与以太坊的紧密连接性非常重要。对于其他人来说,为了获得更大的可扩展性,更宽松的东西是可以接受的。在许多情况下,从今天较松散的耦合开始,并在未来十年随着技术的进步转向更紧密的耦合,很可能是最佳选择。