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