生态系统在过去一年中迅速扩展。传统上以 StarkNet、Arbitrum、Optimism 和 Scroll 为代表的 ZK-EVM Rollup 生态系统进展迅速,不断提高其安全性,L2beat 网站很好地总结了每个项目的状态。此外,我们还看到一些团队正在构建侧链,同时也开始构建 Rollup 方案(如 Polygon),一些 L1 项目试图往validiums 方向发展(如 Celo),还有全新的尝试(如 Linea、Zeth 等)。最后,还有围绕 EVM做文章的这类 L2生态,如:“近乎 EVM 等效” 的 Zksync, Arbitrum Stylus 这类扩展插件,甚至更广泛的尝试如 Starknet 生态、Fuel 等。
一个不可避免的结果是,我们看到了 L2 项目变得更加异构的趋势。我预计这一趋势将持续下去,原因如下:
● 目前,一些独立的 L1 项目正寻求更紧密地与以太坊生态系统对接,并有可能转变为 L2 项目。这些项目可能希望采取分阶段的过渡方式。立即进行整体过渡将降低可用性,因为技术尚未准备好将所有内容放入 rollup 方案中。如果在晚些时候进行转型,可能会牺牲发展势头,而且太迟而失去意义。
● 一些中心化项目希望为其用户提供更多的安全保障,并正在探索基于区块链的途径。在许多情况下,这些项目过去可能会研究「许可联盟链」。实际上,它们可能只需要达到「半中心化」水平的程度。此外,它们通常具有非常高的吞吐量,至少在短期内不适合使用 rollup 方案。
● 非金融应用,如游戏或社交媒体,希望去中心化,但只需要一定程度的安全性。以社交媒体应用为例,实际上涉及以不同方式处理应用的不同部分:像用户名注册和账户恢复这样的罕见且具有高价值的活动应该在 rollup 方案中完成,但像帖子和投票这样频繁且低价值的活动需要较少的安全保障,如果区块链失败导致您的帖子消失,那是可以接受的代价;但如果区块链失败导致您丢失了您的帐户,那将是一个更大的问题。
一个重要的主题是,尽管目前位于以太坊 L1 的应用和用户在短期内愿意支付较小但仍然明显的 rollup 费用,但来自非区块链世界的用户不太愿意这样做:如果您之前支付了 1 美元,那么支付 0.10 美元就更容易接受,而如果之前支付了 0 美元,那就难以接受。这适用于今天仍然中心化的应用,以及通常在其用户群体较小的情况下拥有极低费用的较小的 L1 项目。
一个自然而然的问题是:对于具体的特定应用,rollup 方案、validiums(有效性验证)和其他系统之间的这些复杂权衡中,哪一个对其而言是合理的?
Rollups vs Validiums vs Disconnected Systems
我们将探讨的安全性与扩展性的第一个维度可以描述如下:如果您拥有一个在 L1 上发行的资产,然后将其存入 L2,再将其转移到您手中,那么您能获得多大程度的保证可以将资产取回到 L1?
同时还有一个相关问题:是什么技术选择导致了这种保证程度,以及该技术选择的权衡是什么?
我们可以用一个简单的图表来描述这个问题:
值得一提的是,这是一个简化的方案,其中存在许多中间选项。例如:
● 在 rollup 和 validium 之间:在 validium,任何人可以进行链上支付以支付交易费用,此时,操作者将被迫将一些数据提供到链上,否则将损失押金。
● 在 plasma 和 validium 之间:一个 Plasma 系统提供类似 rollup 的安全保证,具有链下数据可用性,但它仅支持有限数量的应用程序。一个系统可以提供完整的 EVM,并为那些不使用这些较复杂应用程序的用户提供 Plasma 级别的保证,以及为使用这些应用程序的用户提供 validium 级别的保证。
这些中间选项可以看作是在 rollup 和 validium 之间的一个可选范围上。但是,是什么促使应用选择该可选范围上的特定点,而不是更左边或更右边的某个点呢?在这里,有两个主要因素:
以太坊原生数据可用性的成本,随着技术的发展,这一成本将随着时间的推移而降低。以太坊的下一个硬分叉 Dencun 引入了 EIP-4844(又称 「proto-danksharding」),它提供了大约 32 kB/秒的链上数据可用性。预计在未来几年,随着完整的 danksharding 推出,这一数据可用性将逐步提高,最终目标约为 1.3 MB/秒的数据可用性。同时,数据压缩的改进将让我们在相同数据量下实现更多功能。
应用程序的自身需求:用户在高费用方面的损失,相对于应用程序出现问题,有多严重?金融应用程序会因为应用程序的故障而损失更多;游戏和社交媒体涉及大量的用户活动,且相对较低价值的活动,因此对于它们来说,不同的安全权衡是有意义的。
这种权衡大致上看起来如图所示:
另一种值得一提的类型是预确认(pre-confirmations)。预确认是由一组参与者在 rollup 或 validium 中签署的消息,表示「我们证明这些交易按此顺序包含在其中,且 post-state root 是这个」。这些参与者可能会签署一个与现实不符的预确认,但如果确实如此,他们的押金将被销毁。
这对于低价值应用(如消费者支付)非常有用,而高价值应用(如数百万美元的金融转账)可能会等待由系统完整安全性支持的「常规」确认。
预确认可以被视为另一个混合系统的例子,类似于上文提到的「plasma/validium 混合」,但这次是在具有完整安全性但高延迟的 rollup(或 validium)与具有较低安全级别但低延迟的系统之间进行混合。需要较低延迟的应用会获得较低的安全性,但可以与那些愿意为获得最大安全性而承受较高延迟的应用共存于同一生态系统中。
无需信任地读取以太坊
另一种较少被考虑但仍然非常重要的连接形式,与系统读取以太坊区块链的能力有关。具体而言,这包括系统能够在以太坊发生回滚时进行回滚的能力。要了解为什么这是有价值的,请考虑以下情况:
假设如图所示,以太坊区块链发生回滚。这可能是在一个epoch内的临时中断,此时区块链尚未最终确定(finalized);或者可能是因为过多的验证者离线,而导致区块链在较长时间内无法最终确定的不活跃泄漏期(inactivity leak)。
由此可能产生的最糟糕情况如下所示:假设上图中的顶部链的第一个区块从以太坊链的最左侧区块中读取某些数据。例如,有人在以太坊上存入了 100 个 ETH 到顶部链中,然后以太坊发生回滚,然而顶部链没有回滚。结果是,顶部链的未来区块正确地跟随新的、正确的以太坊区块链上的区块,但错误的交易(即 100 个 ETH 的存款)仍然存在于顶部链中。这种漏洞可能导致货币的增发,将顶部链上的桥接 ETH 转变为部分准备金。
有两种方法可以解决这个问题:
顶部链只能读取以太坊已最终确定的区块,因此它永远不需要进行回滚;
如果以太坊发生回滚,顶部链也可能发生回滚。两者都可以防止这个问题。前者更容易实施,但如果以太坊进入不活跃泄漏期,可能会导致功能在较长时间内丧失。后者更难实施,但可以确保始终具有最佳功能。
请注意,第一种方法确实存在一种特殊情况。如果以太坊发生了 51% 攻击,导致同时出现两个新的不兼容区块,它们都看起来已经最终确定,那么顶部链可能会选择错误的区块(即以太坊社会共识最终不支持的区块),并且需要回滚以切换到正确的区块。可以说,事先编写代码来处理这种情况是没有必要的;可以通过对顶部链进行硬分叉来处理这个问题。
区块链能够在无需信任的情况下读取以太坊的能力有两个重要原因:
首先,这种能力可以降低将在以太坊(或其他第二层解决方案)上发行的代币桥接到该链上涉及的安全问题;
其次,这种能力使得使用共享密钥存储结构的账户抽象钱包,能够安全地持有该链上的资产。
尽管有争议,但第一种方法的重要性已经被广泛认可。同样,第二种方法也很重要,因为它意味着你可以拥有一个钱包,可以轻松更改密钥,并在许多不同的链上持有资产。
拥有跨链桥是否意味着你是有效性网络(validium)?
假设顶部链最初是作为一个独立链启动的,然后有人在以太坊上部署了一个桥接合约。桥接合约只是一个接受顶部链区块头(block headers)的合约,它会验证提交给它的任何区块头是否附带有效的证书,证明该区块头已被顶部链的共识接受,并将该区块头添加到列表中。
应用程序可以在此基础上构建功能,如代币的存款和提取。一旦这样的桥建立起来,它是否提供了我们之前提到的任何资产安全保障呢?
到目前为止,还没有!有两个原因:
我们是有验证区块的签名,但没有验证状态转换是否正确。因此,如果您将在以太坊上发行的资产存入顶部链,并且顶部链的验证器变得不诚实,他们可以签署一个无效的状态转换,从而窃取这些资产;
顶部链仍然无法读取以太坊。因此,您无法将以太坊本地资产存入顶部链,除非依赖于其他(可能不安全)的第三方桥接。
现在,让我们将桥构建为验证型桥:它不仅验证共识,还验证了使用 ZK-SNARK 证明计算出的任何新区块的状态是否正确。
一旦完成这一步骤,顶部链的验证器将无法窃取您的资金。他们可以发布一个包含不可用数据的区块,阻止所有人提取资金,但他们无法窃取资金(除非试图通过向用户索要赎金来揭示允许其提取资金的数据)。这与 validium 具有相同的安全模型。
然而,我们仍然没有解决第二个问题:顶部链无法读取以太坊的数据。为了实现这一点,我们需要采取以下两种方式之一:
在顶部链中放置一个验证已最终确定的以太坊区块的桥合约;
让顶部链中的每个区块包含一个最近以太坊区块的哈希,并制定一个分叉选择规则来强制执行这些哈希链接。也就是说,如果顶部链的一个区块链接到一个不在主链中的以太坊区块,那么该顶部链区块也将被视为非主链的。如果一个顶部链区块链接到了最初在主链上的以太坊区块,但后来变成非主链区块,那么该顶部链区块也必须被标记为非主链的。
这些紫色的链接可以是哈希链接,也可以是验证以太坊共识的桥接合约
这就够了吗?实际上,还不够,因为存在一些小的边缘情况:
如果以太坊遭受了 51% 攻击,会发生什么?
如何处理以太坊的硬分叉升级?
如何处理您的链的硬分叉升级?
对以太坊的 51% 攻击会导致与顶部链的 51% 攻击类似的后果,但情况相反。以太坊的硬分叉可能会使顶部链内的以太坊桥失效。一个社会承诺(social commitment),即如果以太坊还原了一个已最终确定的区块,就会还原,如果以太坊进行了硬分叉,就会进行硬分叉,是解决这个问题最干净的方式。
这样的承诺实际上可能永远不需要真正执行:如果顶部链的治理机构发现可能发生攻击或硬分叉的证据,可以激活治理机构,仅在治理机构失败时才对顶部链进行硬分叉。
对于第三个问题,唯一可行的答案是,在以太坊上设置某种形式的治理机构,使其能够让以太坊上的桥接合约意识到顶部链的硬分叉升级。
总结:双向验证桥接几乎足以使区块链成为 validium。主要剩下的要素是一种社会承诺,即如果以太坊发生异常情况导致桥接合约无法正常工作,另一条区块链将进行硬分叉作出回应。
结论
「与以太坊连接」有两个关键维度:
提取到以太坊的安全性;
读取以太坊的安全性。
这两者都非常重要,并有不同的考虑因素。在这两种情况下都存在一个范畴:
请注意,每个维度都有两种不同的衡量方式(实际上有四个维度):提取安全性可以通过(i)安全级别,和(ii)多少用户或使用情况受益于最高安全级别来衡量。
而读取安全性可以通过(i)其他区块链网络能够多快读取以太坊的区块,特别是最终确定的区块与任何区块的区别,以及(ii)其他区块链网络在处理诸如 51% 攻击和硬分叉等边缘情况时的社会承诺程度来衡量。
在这个设计空间的许多区域中都存在项目的价值。对于某些应用程序,高度的安全性和紧密的连接至关重要。对于其他应用程序,为了获得更大的可扩展性,可以接受更宽松的条件。在许多情况下,从今天开始使用较宽松的条件,随着技术的改进,在未来十年内逐渐过渡到更紧密的耦合可能是最优选择。
评论
针对 Vitalik 的此篇文章,推特用户 @tmel0211 认为,Vitalik 此文明里暗里在给以太坊 L2 画边界和树标准,并发表见解:
● 靠拢以太坊可以获得生态同时,一部分过于中心化的项目接轨以太坊也能获得共识安全性,因此以太坊 L2 成了众星捧月般的存在。
● Plasma和Rollup以及Validium,都是 L2 扩容方案,各有优缺点。Rollup 要依赖以太坊做 DA 资产最安全,但成本比较大,Vailidum 放弃了 DA 的依赖,节省了成本,但是安全性受影响;Plasma 这类独立链很便宜,但需第三方信任,无法依赖以太坊做安全和共识。针对这个问题, Vitalik 的观点是 DA 成本问题只是暂时,坎昆升级和 danksharding 后这一问题会得到解决;而至于用哪种方案,应用应考虑自身特性,越偏金融和资产保护就应该偏 Rollup 类型的 L2,反之游戏或者非金融应用就可以用 validium 以及独立侧链;扩容方案的类型适用范围其实很清楚,但眼下却清一色的 Rollup 解决方案,尤其是 OP Stack 放大了一键发链效应,但 L2 发链更应该根据应用场景适配链类型。
● 以太坊 layer2 有两个关键性:1、提款到以太坊的安全性;2、读取以太坊的安全性。提款安全性的核心无疑导向了 DA 在以太坊的 Rollup 解决方案,而长期来看,读取以太坊的安全性,则指向一些有独立安全和共识保障的 Validium 方案。按照这个标准,ZK-Rollup 的安全性最高,其次 OP-Rollup,之后才是 Validium、Plasma 这些。