不同类型的Layer 2解决方案

文章详细介绍了以太坊第二层(Layer 2)生态系统的发展,探讨了不同Layer 2项目之间的差异和选择标准,包括Rollups、Validiums和其他系统的安全性与扩展性之间的权衡。

不同类型的 Layer 2

特别感谢 Karl Floersch 的反馈和审阅

过去一年,以太坊的 Layer 2 生态系统迅速扩展。EVM rollup 生态系统,传统上以 ArbitrumOptimismScroll 为代表,最近还有 KakarotTaiko,进展迅速,在安全性改进方面取得了巨大进展;L2beat 页面很好地总结了每个项目的状态。此外,我们看到一些团队在构建侧链的同时也开始构建 rollup(如 Polygon),一些 Layer 1 项目寻求向 validium 转型(如 Celo),以及全新的尝试(如 LineaZeth……)。最后,还有不仅仅是 EVM 的生态系统:比如类似 EVM 的 Zksync,扩展如 Arbitrum Stylus,以及更广泛的努力,如 Starknet 生态系统Fuel 等。

不可避免的后果之一是,我们看到 Layer 2 项目变得更加异质化。我预计这一趋势将继续下去,原因如下:

  • 一些目前独立的 Layer 1 项目正在寻求更接近以太坊生态系统,甚至可能成为 Layer 2。这些项目可能希望逐步过渡。现在一次性过渡会降低可用性,因为技术还没有准备好将所有内容都放在 rollup 上。稍后一次性过渡可能会牺牲势头,并可能为时已晚。
  • 一些中心化项目希望为用户提供更多的安全保障,并正在探索基于区块链的途径。在许多情况下,这些项目在以前的时代可能会探索“许可的联盟链”。实际上,他们可能只需要“半途之家”级别的去中心化。此外,它们通常非常高的吞吐量使它们甚至不适合 rollup,至少在短期内是这样。
  • 非金融应用,如游戏或社交媒体,希望去中心化,但只需要安全性的半途之家级别。在社交媒体的情况下,这实际上涉及对应用程序的不同部分进行不同处理:像用户名注册和账户恢复这样的稀有且高价值的活动应该在 rollup 上进行,但像帖子和投票这样的频繁且低价值的活动需要较少的安全性。如果链故障导致你的帖子消失,这是可以接受的代价。如果链故障导致你失去账户,那就是一个更大的问题。

一个重要的主题是,虽然目前在以太坊 Layer 1 上的应用程序和用户短期内愿意支付较小但仍然可见的 rollup 费用,但来自非区块链世界的用户不会:如果你以前支付 1 美元,那么支付 0.10 美元更容易被接受,而如果你以前支付 0 美元,则不然。这既适用于今天中心化的应用程序,也适用于较小的 Layer 1,这些 Layer 1 在用户基数仍然较小时通常具有非常低的费用。

一个自然的问题是:对于给定的应用程序,这些复杂的权衡(如 rollup、validium 和其他系统)中哪一个是有意义的?

Rollup vs Validium vs 断开连接的系统

我们将探讨的第一个维度是安全性与规模的关系,可以描述如下:如果你有一个在 L1 上发行的资产,然后存入 L2,再转移到你手中,你能保证将该资产带回 L1 的级别是什么?

还有一个平行的问题:导致这种保证级别的技术选择是什么,这种技术选择的权衡是什么?

我们可以用一个简单的图表来描述:

Rollup 通过欺诈证明或 ZK-SNARK 证明计算,数据存储在 L1 上 你始终可以将资产带回 L1 L1 数据可用性 + SNARK 证明或冗余执行以捕获错误
Validium 通过 ZK-SNARK 证明计算(不能使用欺诈证明),数据存储在服务器或其他独立系统上 数据可用性故障可能导致资产丢失,但不会被窃取 SNARK 证明
断开连接 一个独立的链(或服务器) 信任一个或一小群人不会窃取你的资金或丢失密钥 非常便宜

值得一提的是,这是一个简化的模式,还有很多中间选项。例如:

  • 介于 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. 应用程序自身的需求:用户在高费用与应用程序出现问题时,哪一个更痛苦? 金融应用程序在应用程序故障时会损失更多;游戏和社交媒体涉及每个用户的大量活动,且活动价值相对较低,因此不同的安全权衡对它们来说是有意义的。

大致上,这种权衡看起来像这样:

另一个值得提及的部分保证是预确认。预确认是由 rollup 或 validium 中的一些参与者签署的消息,表示“我们证明这些交易按此顺序包含在内,并且后状态根是这个”。这些参与者可能会签署一个与后来现实不符的预确认,但如果他们这样做,押金将被销毁。这对于消费者支付等低价值应用程序很有用,而像数百万美元的金融转账这样的高价值应用程序可能会等待系统完全安全支持的“常规”确认。

预确认可以被视为另一种混合系统的例子,类似于上面提到的“plasma / validium 混合”,但这次是在具有完全安全性但高延迟的 rollup(或 validium)与具有较低安全性但低延迟的系统之间进行混合。需要较低延迟的应用程序获得较低的安全性,但可以与那些愿意用较高延迟换取最大安全性的应用程序共存于同一个生态系统中。

无需信任地读取以太坊

另一种较少被考虑但仍然非常重要的连接形式与系统读取以太坊区块链的能力有关。特别是,这包括能够在以太坊回滚时回滚。要了解为什么这有价值,请考虑以下情况:

假设如图所示,以太坊链回滚了。这可能是 epoch 内的临时故障,链尚未最终确定,或者可能是不活动泄漏期间,由于太多验证者离线,链长时间未最终确定。

由此产生的最坏情况如下。假设顶部链的第一个区块从以太坊链的最左侧区块读取了一些数据。例如,某人在以太坊上向顶部链存入了 100 ETH。然后,以太坊回滚了。然而,顶部链没有回滚。结果,顶部链的未来区块正确地跟随新正确的以太坊链的新区块,但现在错误的旧链接的后果(即 100 ETH 的存款)仍然是顶部链的一部分。这种漏洞可能会允许印钞,将顶部链上桥接的 ETH 变成部分准备金。

有两种方法可以解决这个问题:

  1. 顶部链只能读取以太坊的已最终确定的区块,因此它永远不需要回滚。
  2. 顶部链可以在以太坊回滚时回滚。两者都防止了这个问题。前者更容易实现,但如果以太坊进入不活动泄漏期,可能会导致功能长时间丧失。后者更难实现,但确保在任何时候都能获得最佳功能。

需要注意的是,(1) 有一个边缘情况。如果以太坊发生 51% 攻击,创建了两个新的不兼容区块,它们同时显示为已最终确定,那么顶部链可能会锁定错误的区块(即以太坊社会共识最终不支持的区块),并且必须回滚以切换到正确的区块。可以说,没有必要提前编写代码来处理这种情况;只需通过硬分叉顶部链来处理即可。

链能够无需信任地读取以太坊的能力有两个价值:

  1. 它减少了将以太坊(或其他 L2)发行的代币桥接到该链所涉及的安全问题。

  2. 它允许使用共享密钥库架构的账户抽象钱包安全地在该链上持有资产。

  3. 很重要,尽管可以说这种需求已经被广泛认识到。(2) 也很重要,因为它意味着你可以拥有一个允许轻松更改密钥并跨大量不同链持有资产的钱包。

拥有桥接器是否让你成为 Validium?

假设顶部链最初是一个独立的链,然后有人在以太坊上放置了一个桥接合约。桥接合约只是一个接受顶部链区块头的合约,验证提交给它的任何头都带有有效的证书,证明它已被顶部链的共识接受,并将该头添加到列表中。应用程序可以在此基础上构建功能,如存入和提取代币。一旦这样的桥接器到位,它是否提供了我们之前提到的任何资产安全保证?

到目前为止,还没有!原因有两个:

  1. 我们正在验证区块是否已签名,但没有验证状态转换是否正确。因此,如果你有一个在以太坊上发行的资产存入顶部链,并且顶部链的验证者变得恶意,他们可以签署一个无效的状态转换来窃取这些资产。
  2. 顶部链仍然无法读取以太坊。因此,你甚至无法在不依赖其他(可能不安全的)第三方桥接器的情况下将以太坊原生资产存入顶部链。

现在,让我们将桥接器变成一个验证桥接器:它不仅检查共识,还检查 ZK-SNARK,证明任何新块的状态都是正确计算的。

一旦完成,顶部链的验证者就无法再窃取你的资金。他们可以发布一个数据不可用的区块,阻止所有人提取,但他们无法窃取(除非试图通过揭示允许用户提取的数据来勒索用户)。这与 validium 的安全模型相同。

然而,我们仍然没有解决第二个问题:顶部链无法读取以太坊。

要做到这一点,我们需要做以下两件事之一:

  1. 在顶部链中放置一个验证已最终确定以太坊区块的桥接合约。
  2. 让顶部链中的每个区块都包含最近以太坊区块的哈希,并有一个强制执行哈希链接的分叉选择规则。也就是说,链接到不在规范链中的以太坊区块的顶部链区块本身是非规范的,如果顶部链区块链接到最初是规范但后来变为非规范的以太坊区块,则顶部链区块也必须变为非规范。

紫色链接可以是哈希链接或验证以太坊共识的桥接合约。

这足够了吗?事实证明,仍然不够,因为有几个小边缘情况:

  1. 如果以太坊发生 51% 攻击会发生什么?
  2. 如何处理以太坊的硬分叉升级?
  3. 如何处理你的链的硬分叉升级?

以太坊的 51% 攻击将对顶部链产生类似后果,但反过来。以太坊的硬分叉可能会使顶部链中的以太坊桥接器不再有效。如果以太坊回滚一个已最终确定的区块,则社会承诺回滚,如果以太坊硬分叉,则硬分叉,是解决此问题的最干净的方法。这样的承诺可能永远不需要实际执行:你可以在顶部链上设置一个治理小工具,如果它看到可能的攻击或硬分叉的证据,则激活,并且只有在治理小工具失败时才硬分叉顶部链。

对于 (3),唯一可行的答案,不幸的是,在以太坊上设置某种形式的治理小工具,使以太坊上的桥接合约能够了解顶部链的硬分叉升级。

总结:双向验证桥接器几乎足以使一个链成为 validium。剩下的主要成分是,如果以太坊发生异常情况使桥接器不再工作,另一个链将硬分叉的社会承诺。

结论

“与以太坊的连接”有两个关键维度:

  1. 提取到以太坊的安全性
  2. 读取以太坊的安全性

这两者都很重要,并且有不同的考虑因素。在这两种情况下都有一个光谱:

请注意,这两个维度各自有两种不同的测量方式(所以实际上有四个维度?):提取的安全性可以通过 (i) 安全级别和 (ii) 有多少百分比的用户或用例受益于最高安全级别来衡量,读取的安全性可以通过 (i) 链读取以太坊区块的速度,特别是已最终确定的区块与任何区块,以及 (ii) 链处理边缘情况(如 51% 攻击和硬分叉)的社会承诺的强度来衡量。

在这个设计空间的许多区域中,项目都有价值。对于某些应用程序,高安全性和紧密连接很重要。对于其他应用程序,为了更大的可扩展性,可以接受较松散的东西。在许多情况下,今天从较松散的东西开始,随着技术的进步,在未来十年内逐步转向更紧密的耦合,可能是最优的。

  • 原文链接: vitalik.eth.limo/general...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Vitalik Buterin
Vitalik Buterin
https://vitalik.ca/