固定原生 L2 和无状态区块构建

本文为机器翻译
展示原文

使用 Enshrined Native L2 和无状态区块构建来扩展以太坊

介绍

以太坊的可扩展性之旅长期以来一直在探索第 2 层 (L2) 解决方案,以提高吞吐量并保持去中心化。一个有前途的方向 - 基于 rollups 等先前工作 - 是嵌入原生 L2的概念。在这篇文章中,我认为我们可以通过创建深度集成到以太坊协议中的 L2 系统来扩展以太坊,共享其验证器集以并行处理交易。这不是一个新发明,而是对现有想法的改进,通过 Orbit 等概念利用在第 1 层 (L1) 职责中不活跃的验证器来水平扩展吞吐量。通过在 L1 和多个 L2 之间循环验证器,我们可以解锁额外的真正原生的区块空间,增加交易容量,并引入本地费用市场 - 所有这些都不需要越来越重的节点硬件。每个 L2 都将具有与 L1 相同的 gas 限制和其他配置设置。我不认为这些嵌入的原生 L2 可能会与非嵌入的 L2 具有很强的竞争力。它们显然更有能力垂直扩展吞吐量,并创建能够容忍不同程度审查的社区,而这是原生汇总所无法做到的。

我认为,如果没有可行的既定后备方案,我们就无法安全地外包区块构建,因为这将导致吞吐量大幅降低。将区块构建外包给经验丰富的参与者将不可避免地产生对他们的依赖。随着 MEV 随着时间的推移而减少(应用程序被激励自己捕获它),区块构建者的收入越来越少。随着吞吐量的增加,构建区块的成本变得越来越昂贵。因此,盈利能力取决于复杂的专有知识,这大大增加了新进入区块构建竞争的难度。当拍卖是赢家通吃时,所有非竞争性建造者都无法生存,最终导致高度集中化(双头垄断或垄断对我来说并不奇怪)。您可以在这里浏览一些关于我的观点的帖子:为本地区块构建辩护

这篇文章将涉及可用的设计空间,重点讨论权衡以及无状态区块构建对水平扩展的关键作用,这使我们能够保持本地区块构建并保持以太坊可分叉性的实用性。

核心概念:通过共享验证器实现原生 L2 共识

固定的原生 L2 将以太坊的验证者集扩展到 L1 职责之外。目前 31/32 个验证者对以太坊来说并没有真正积极用处。理想情况下,我们希望有一个可以确保尽可能多地利用网络的系统。我们可以将不在 L1 上提议或证明的验证者(例如,由于 Orbit 等系统中的轮换)转移到 L2,组成委员会来处理交易排序和区块生产。例如,我们可以在每个 L2 中设立 96 个验证者的委员会,其中 16 个验证者被分配到 FOCIL/提议职责,其余的验证者则负责证明。就像 L1 一样,我们希望绝大多数 L2 权益能够证明新区块,以便它被接受和最终确定。每个 slot 我们都可以轮换 4 个验证者(我说的好像所有验证者都是 32 ETH的权益,但我知道事实并非如此,这里在验证者选择ETC有一些复杂性,但我认为这是我们可以解决的问题并且希望暂时保持简单)从他们当前所在的 L2 转换回 L1 或另一个 L2,确保持续的生产力。

  • 共享安全性:这些 L2 通过零知识(zk)证明继承了以太坊的安全性,并通过相同的共识机制和几乎等同的抗审查保证进行验证(目前基本上没有 L2 具备这种保证)。

  • 水平扩展:与传统的节点升级相比,添加更多 L2 可以提高吞吐量,而无需垂直扩展硬件。

这利用了这样一个事实:在像 Orbit 这样的系统中,约 80% 的验证者权益可能在 L1 上活跃,剩下约 20% 可用于 L2,从而扩大了本机区块空间。

无状态区块构建的必要性

为了实现这一点,无状态区块构建是理想的。验证者无法存储完整状态,因为存储需求即使在 L1 上也不断增长,更不用说包括所有 L2 了。相反:

  • 工作原理:用户或状态提供者为交易提供见证(状态数据 + 证明)。验证者使用 Verkle 树根据状态根(无本地状态的构建块)验证这些紧凑证明(约 150 字节)。您可能能够进行某些优化,以允许 zkEVM 执行证明不与任何其他状态更改冲突,并且可以以较低的 gas 成本提交为有效交易。

  • 重要性:无状态性使硬件要求保持在较低水平,从而实现 L1 和 L2 任务之间的快速转换。它是水平扩展的支柱,确保验证者无需同步大量数据集即可处理任何 L2。

如果没有无状态性,那么固定的 L2 的优势(灵活性、可扩展性和广泛参与度)就会因不切实际的存储和同步时间需求而崩溃。

设计空间中的权衡

这就是关键所在:平衡验证者角色、状态管理和带宽,以使其可行。

1. 验证者委员会规模与吞吐量

  • 权衡:规模较小的委员会(例如,数十名验证者)可简化协调和过渡,但存在安全风险。规模较大的委员会(例如,数百名验证者)可增强去中心化,但会增加管理费用。

  • 示例转变:由于约 20% 的验证者不受 L1 影响,因此 100 人的委员会可能会支持许多 L2,而每个 L2 200 人的委员会会使该数字减半,但会增强弹性。

  • 影响:更多的 L2 意味着更高的吞吐量,但委员会规模决定了可以安全并行运行的 L2 数量。不仅如此,在某个时候,L1 Gas 限制也限制了实际可以支持的 L2 数量。

2. 验证者存储的 Verkle 树(或同等树)层级

我们可以设置一个要求,即验证者存储根节点和 Verkle 树的所有中间节点,直到某个级别,而不仅仅是根节点。这样,他们就可以更有效地验证见证,而无需存储整个状态,同时也让我们能够减少为每笔交易传输大量见证的带宽开销。存储根节点和前一个时隙树的 diff 可以帮助避免使引用前一个时隙状态但进入时隙太晚而无法包含且会被修改其证明路径的其他交易无效的原本有效的交易无效。

  • 权衡:存储上层 Verkle 树(例如,从根到中间)会减少见证大小,但会增加内存。不存储任何内容可保持验证器精简,但会使交易数据膨胀。

  • Shift 示例:对于分支因子为 256 的情况,我认为存储 0-3 级大约需要 1.7 GB,大约有 40 亿个叶节点。对于 512 分支,大约需要 13 GB,但可以提供大约 690 亿个叶节点(L1 和每个 L2 的叶节点具有良好的互操作性,我认为这在一段时间内应该足够好了)。

  • 影响:更多的存储级别抵消了带宽的增加,使吞吐量可以扩大而不会阻塞网络。

3. 带宽与吞吐量增益

  • 权衡:无状态性会增加每笔交易(见证)的带宽,但固定的 L2 会使本机区块空间倍增,从而可能使这一成本相形见绌。

  • 主要优势:如果切换到无状态区块构建会使带宽需求增加 5 倍,但使我们能够支持 500 个固定的本地 L2,那么这种权衡可能是值得的。这还会在每个 L2 中创建本地费用市场,因此如果我们允许应用程序迁移,我们可能会看到交互的应用程序经常在 L2 中彼此相邻,以避免互操作开销,而大型应用程序会迁移到使用率较低的 L2,以避免受到其他应用程序需求的影响,从而推高用户费用。所有这些都表明,从长远来看,我们可能会看到接近最佳吞吐量。

4. 验证者转换速度

  • 权衡:验证者在内存中存储的最小状态(仅根)可实现近乎即时的转换,但需要更大的见证。存储中间级别会减慢转换速度以节省 tx 带宽。我们可以包括其他内容,例如所有智能合约代码都应由验证者存储,并且需要同步后才能参与除证明之外的 L2 职责。即合约存储槽或 eoa 账户ETC应由用户提供见证(状态提供者当然也可以向用户提供该数据,理想情况下我们有 eLTS——请参阅我的ETH研究帖子了解更多详细信息——作为备份)。这意味着用户只需要为存储槽或账户余额提供一些见证,所有验证者都可以随时执行所有交易。还有其他替代方案,我们只在内存中保留一组活跃的合约,其余合约需要为其提供见证。这篇最近的文章更详细地讨论了这一点(无状态协议设计视图)。

  • 示例转变:仅根转换大约需要 1 秒,而~1.7 GB 同步可能需要大约 5 分钟,具体取决于验证器的网络速度要求。

  • 影响:更快的转换可以最大化验证器的效用,但较慢的转换可以优化交易效率。

为什么这很重要:吞吐量及其他

  • 原生区块空间:嵌入的 L2大幅增加了原生区块空间,使以太坊能够水平扩展。这是与其他依赖外部验证器的 L2 的关键区别。

  • 带宽偏移:是的,无状态见证会增加带宽,但理想情况下,通过 L2 增加的本机块空间可以远远超过这一点。

  • 本地费用市场:借助已固定的 L2,我们可以创建本地费用市场,防止某个应用程序的需求影响其他地方的简单支付。已固定的 L2 可以获得免费的 blobspace 分配,或者拥有各种其他费用机制和/或发行机制,以找到合理的平衡。

结论

显然,要实现这一愿景,还有大量工作要做,而且还有很多悬而未决的问题需要解决,即如何在某些权衡之间取得平衡。我相信,由无状态区块构建驱动的固定原生 L2 是横向扩展以太坊并保持其长期抗审查能力的最佳途径。控制分叉选择会产生严重后果。当我们从实际角度限制谁有能力构建链条时,我们就会放弃分叉选择,让自己容易受到强大参与者的影响,从而伤害到其他所有人。像 orbit 这样的 SSF 方法允许任何人参与分叉投票,这是我们前进的最佳道路。它还使我们能够利用未在 L1 职责中活跃的验证者来获得潜在的巨大吞吐量增益。我们可以在保持节点可访问的同时增强容量,而不会失去以太坊去中心化的灵魂。


来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
1
收藏
评论