在最初,以太坊的路线图中有两种扩容策略。一种(例如,参见2015年的这篇早期论文)是”分片”:每个节点只需要验证和存储一小部分交易,而不是验证和存储链上的所有交易。这也是其他点对点网络(如BitTorrent)的工作方式,所以我们自然可以让区块链以同样的方式工作。另一种是二层协议:这些网络位于以太坊之上,能够充分受益于以太坊的安全性,同时将大部分数据和计算保持在主链之外。”二层协议”在2015年指的是状态通道,在2017年指的是Plasma,然后在2019年指的是rollups。Rollups比状态通道或Plasma更强大,但它们需要大量的链上数据带宽。幸运的是,到2019年,分片研究已经解决了大规模验证”数据可用性”的问题。因此,这两条路径汇合了,我们得到了以rollup为中心的路线图,这仍然是以太坊目前的扩容策略。
The Surge,2023 年路线图版。
以rollup为中心的路线图提出了一个简单的分工:以太坊L1专注于成为一个强大和去中心化的基础层,而L2则承担帮助生态系统扩展的任务。这是一种在社会各处都能看到的模式:法院系统(L1)并不是为了超快和高效而存在,它是为了保护合同和财产权,而企业家(L2)则在这个坚实的基础层之上建设,将人类带到(比喻和字面意义上的)火星。
今年,以rollup为中心的路线图已经取得了重要成果:以太坊L1的数据带宽通过EIP-4844 blobs大幅增加,多个EVM rollups现在已经处于第1阶段。一种非常异构和多元化的分片实现已经成为现实,每个L2都作为一个”分片”运作,有自己的内部规则和逻辑。但正如我们所见,走这条路也带来了一些独特的挑战。因此,我们现在的任务是完成以rollup为中心的路线图,解决这些问题,同时保持使以太坊L1特别的稳健性和去中心化。
可扩展性三难困境是2017年提出的一个概念,它指出区块链的三个属性之间存在矛盾:去中心化(具体来说:运行节点的低成本)、可扩展性(具体来说:高交易处理量)和安全性(具体来说:攻击者需要破坏网络中大部分节点才能使单个交易失败)。
值得注意的是,这个三难困境并非一个定理,介绍它的文章也没有提供数学证明。但文章给出了一个启发性的数学论证:如果一个支持去中心化的节点(如普通笔记本电脑)每秒可以验证N笔交易,而你有一个每秒处理k*N笔交易的链,那么要么(i)每笔交易只被1/k的节点看到,这意味着攻击者只需破坏少数节点就能推送一笔坏交易,要么(ii)你的节点需要很强大,导致你的链不再去中心化。这篇文章的目的不是证明打破三难困境是不可能的,而是表明打破三难困境很难——它需要某种方式跳出论证所暗示的框框。
多年来,一些高性能链常常声称他们在不做任何基础架构层面创新的情况下解决了三难困境,通常是通过使用软件工程技巧来优化节点。这总是具有误导性的,在这些链上运行节点最终总是比在以太坊上困难得多。这篇文章深入探讨了为什么会这样的诸多微妙之处(因此,为什么仅靠L1客户端软件工程无法扩展以太坊本身)。
然而,数据可用性采样和SNARKs的结合确实解决了三难困境:它允许客户端验证某些数据的可用性,并正确执行一定数量的计算步骤,同时只下载少量数据并运行少量计算。SNARKs是无需信任的。数据可用性采样有一个微妙的N中少数信任模型,但它保留了不可扩展链的基本属性,即即使51%攻击也无法强制网络接受坏区块。
解决三难困境的另一种方式是 Plasma 架构,它使用巧妙的技术,以激励兼容的方式将监视数据可用性的责任推给用户。在2017-2019年,当我们只有欺诈证明来扩展计算时,Plasma在安全操作方面非常有限,但SNARKs的主流化使Plasma架构对更广泛的用例变得更加可行。
自2024年3月13日Dencun升级上线以来,以太坊区块链每12秒的 slot (时隙)中包含三个约125 kB的”数据块”,即每个 slot 约375 kB的数据可用性带宽。假设交易数据直接在链上发布,一笔ERC20转账约需180字节,那么以太坊上rollups的最大每秒交易量(TPS)为:
375000 / 12 / 180 = 173.6 TPS (每秒处理量)
如果我们加上以太坊的calldata(理论最大值:每个 slot 30百万gas / 每字节16 gas = 每个slot 1,875,000字节),这个数字将达到607 TPS。通过PeerDAS,计划是将数据块数量目标增加到8-16个,这将使我们在calldata中达到463-926 TPS。
这相对于以太坊 L1 来说是一个重大的提升,但这还不够。我们想要更多的可扩展性。 我们的中期目标是每个slot 16 MB,如果与汇总数据压缩的改进相结合,将为我们提供 〜58,000 TPS。
PeerDAS是”一维采样”的一种相对简单的实现。以太坊中的每个数据块都是一个253位素数域上的4096度多项式。我们广播多项式的”份额”,每个份额由16个相邻坐标的16个评估组成,这些坐标从总共8192个坐标中选取。8192个评估中的任意4096个(根据当前提议的参数:128个可能样本中的任意64个)都可以恢复整个数据块。
PeerDAS的工作原理是让每个客户端监听少量子网,其中第i个子网广播任何数据块的第i个样本,并通过询问全局p2p网络中的对等节点(它们会监听不同的子网)来获取它需要的其他子网上的数据块。一个更保守的版本SubnetDAS只使用子网机制,没有额外的询问对等节点的层。目前的提议是让参与权益证明的节点使用SubnetDAS,而其他节点(即”客户端”)使用PeerDAS。
理论上,我们可以将一维采样扩展得相当远:如果我们将数据块数量上限增加到256(目标为128),那么我们将达到16 MB的目标,同时数据可用性采样对每个节点的成本仅为每个时隙16个样本 128个数据块 每个样本每个数据块512字节 = 1 MB的数据带宽。这刚好在我们的容忍范围内:可以做到,但这意味着带宽受限的客户端无法进行采样。我们可以通过减少数据块数量并增加数据块大小来优化这一点,但这会使重构更加昂贵。
因此,我们最终想要更进一步,实现二维采样,这种方法不仅在数据块内进行随机采样,还在数据块之间进行采样。KZG承诺的线性特性被用来”扩展”区块中的数据块集合,生成一系列新的”虚拟数据块”,这些虚拟数据块冗余地编码相同的信息。
二维采样。 来源:a16z 加密货币
至关重要的是,计算承诺的扩展不需要拥有数据块,因此该方案从根本上适合分布式区块构建。实际构建区块的节点只需要有数据块的KZG承诺,并且可以自己依靠DAS来验证数据块的可用性。一维DAS也天生适合分布式区块构建。
当前的首要任务是完成PeerDAS的实施和推广。之后,我们需要逐步增加PeerDAS上的数据块数量,同时密切关注网络状况并改进软件以确保安全性。与此同时,我们需要更多的学术工作来正式化PeerDAS和其他版本的DAS,并研究它们与分叉选择规则安全性等问题的相互作用。
展望未来,我们需要更多的工作来确定2D DAS的理想版本并证明其安全性。我们还希望最终从KZG迁移到一个抗量子、无需可信设置的替代方案。目前,我们还没有找到适合分布式区块构建的候选方案。即使是使用递归STARK生成行列重构有效性证明的昂贵”暴力”技术也不够,因为虽然理论上STARK的大小是O(log(n) * log(log(n))个哈希(使用STIR),但实际上STARK几乎和整个数据块一样大。
从长远来看,我认为现实的路径是:
我们可以将这些选择视为一个权衡谱系:
需要注意的是,即使我们决定直接在L1上扩展执行,这个选择仍然存在。这是因为如果L1要处理大量的TPS,L1区块会变得非常大,客户端将需要一种高效的方法来验证它们的正确性,所以我们将不得不在L1上使用与rollups相同的技术(ZK-EVM和DAS)。
如果实施了数据压缩(见下文),2D DAS的需求会有所减少,或至少会推迟。如果Plasma被广泛使用,这种需求会进一步减少。DAS还给分布式区块构建协议和机制带来了挑战:虽然DAS在理论上有利于分布式重构,但在实践中需要与包含列表提案及其周围的分叉选择机制相结合。
rollup中的每个交易都会在链上占用相当大的数据空间:一个ERC20转账大约需要180字节。即使采用理想的数据可用性采样,这也会限制二层协议的可扩展性。以每个 Slot 16 MB计算,我们得到:
16000000 / 12 / 180 = 7407 TPS
如果我们不仅处理分子,还能处理分母,使rollup中的每个交易在链上占用更少的字节,会怎样呢?
我认为最好的解释是两年前的 这个图:
最简单的收益就是零字节压缩:用两个字节表示有多少个连续的零字节来替代长序列的零字节。为了更进一步,我们利用交易的特定属性:
剩下要做的主要工作就是将上述方案落到实处。主要的权衡是:
采用ERC-4337,并最终将其部分内容纳入L2 EVM,可以大大加快聚合技术的部署。在L1上纳入ERC-4337的部分内容可以加快其在L2上的部署。
即使有16 MB的数据块和数据压缩,58,000 TPS(每秒交易数)不一定足以完全接管消费者支付、去中心化社交或其他高带宽领域。特别是当我们考虑隐私因素时,可扩展性可能会下降3-8倍。对于高交易量、低价值的应用,目前的一个选择是validium,它将数据保存在链下,并有一个有趣的安全模型:运营者无法窃取用户资金,但他们可能会消失并暂时或永久冻结所有用户的资金。但我们可以做得更好。
Plasma是一种扩展解决方案,运营者在链下发布区块,并将这些区块的Merkle根放在链上(与rollups不同,rollups将完整的区块放在链上)。对于每个区块,运营者向每个用户发送一个Merkle分支,证明该用户资产发生或未发生的情况。用户可以通过提供Merkle分支来提取他们的资产。重要的是,这个分支不必根植于最新状态 - 因此,即使数据可用性失败,用户仍然可以通过提取他们所拥有的最新可用状态来恢复他们的资产。如果用户提交无效分支(例如,退出已经发送给他人的资产,或运营者凭空创造资产),链上挑战机制可以裁定资产应该归属于谁。
Plasma Cash链的示意图。花费硬币i的交易被放在树的第i个位置。在这个例子中,假设所有先前的树都是有效的,我们知道Eve当前拥有硬币1,David拥有硬币4,George拥有硬币6。
Plasma的早期版本只能处理支付用例,无法有效地进一步推广。然而,如果我们要求每个根都通过SNARK验证,Plasma就变得更加强大。每个挑战游戏可以大大简化,因为我们消除了运营者作弊的大多数可能路径。新的路径也开放了,允许Plasma技术扩展到更广泛的资产类别。最后,如果运营者不作弊,用户可以立即提取他们的资金,而不需要等待一周的挑战期。
制作 EVM 等离子链的一种方法(不是唯一的方法)是:使用ZK-SNARK构建一个与EVM并行的UTXO树,反映EVM中的余额变化,并定义不同时间点上”相同硬币”的唯一映射。然后可以在此基础上构建等离子体系统。
一个关键的见解是,等离子体系统不需要完美无缺。即使你只能保护一部分资产(例如,仅保护过去一周内未移动的硬币),你也已经大大改善了超可扩展EVM的现状,即validium。
另一类构造是等离子体/rollup混合体,例如Intmax。这些构造在链上为每个用户存储很少量的数据(例如5字节),从而获得介于等离子体和rollup之间的特性:以Intmax为例,你可以获得非常高的可扩展性和隐私性,尽管即使在16 MB的世界中,理论容量上限也约为16,000,000 / 12 / 5 = 266,667 TPS(每秒交易数)。
主要剩余的任务是将Plasma系统投入生产。如上所述,”plasma vs validium”并非二元对立:任何validium都可以通过在退出机制中添加Plasma功能来至少略微改善其安全属性。研究部分在于为EVM获得最佳属性(在信任要求、最坏情况下的L1 gas成本和对DoS的脆弱性方面),以及替代的应用特定构造。此外,Plasma相对于rollups的更大概念复杂性需要直接解决,既通过研究,也通过构建更好的通用框架。
使用Plasma设计的主要权衡是它们更依赖于运营商,并且更难做到”基于“,尽管混合plasma/rollup设计通常可以避免这个弱点。
Plasma 解决方案越有效,L1 拥有高性能数据可用性功能的压力就越小。将活动转移到 L2 还可以减少 L1 上的 MEV 压力。
如今,大多数汇总实际上还不是去信任的;有一个安全理事会有能力推翻(乐观或有效性)的行为 证明系统。在某些情况下,证明系统甚至根本不存在,或者即使存在也仅具有“咨询”功能。最领先的是 (i) 一些特定于应用程序的汇总,例如 Fuel,它们是去信任的,以及 (ii) 截至撰写本文时,Optimism 和 Arbitrum,这两个完整的 EVM 汇总已经实现了部分去信任里程碑称为“第一阶段”。 Rollups 没有进一步发展的原因是担心代码中的 bug。我们需要去信任的汇总,因此我们需要正面解决这个问题。
首先,让我们回顾一下”阶段”系统,这个概念最初是在这篇文章中提出的。虽然有更详细的要求,但概括如下:
目标是达到第2阶段。达到第2阶段的主要挑战是获得足够的信心,确保证明系统真的足够可信。有两种主要方法可以做到这一点:
多重证明者的示意图,结合了一个乐观证明系统、一个有效性证明系统和一个安全委员会。
对于形式验证,还有很多工作要做。我们需要创建一个完整的EVM SNARK证明器的形式验证版本。这是一个极其复杂的项目,尽管我们已经开始了。有一个技巧可以显著简化这个任务:我们可以为一个最小化的虚拟机(如RISC-V或Cairo)创建一个经过形式验证的SNARK证明器,然后在该最小化虚拟机中编写EVM的实现(并正式证明其与其他EVM规范的等价性)。
对于多重证明者,还有两个主要的待完成部分。首先,我们需要对至少两个不同的证明系统建立足够的信心,确保它们各自都是合理安全的,并且如果它们出现故障,会因不同且无关的原因而故障(因此不会同时失效)。其次,我们需要对合并证明系统的底层逻辑获得非常高水平的保证。这是一个更小的代码部分。有些方法可以使其变得非常小——只需将资金存储在一个Safe多重签名合约中,其签名者是代表各个证明系统的合约——但这会带来链上gas成本高的权衡。需要在效率和安全性之间找到平衡。
将活动转移到二层网络可以减少一层网络上的MEV(最大可提取价值)压力。
当前二层网络生态系统的一个主要挑战是用户难以导航。此外,最简单的使用方式往往会重新引入信任假设:中心化桥接、RPC客户端等。如果我们认真对待二层网络是以太坊一部分的想法,我们需要让使用二层网络生态系统感觉就像使用一个统一的以太坊生态系统。
这里有一个病态且危险的跨二层网络用户体验示例(我个人因链选择错误在这里损失了100美元)- 尽管这不是Polymarket的错,跨二层网络互操作性应该是钱包和以太坊标准(ERC)社区的责任。在一个运作良好的以太坊生态系统中,从一层网络发送代币到二层网络,或从一个二层网络发送到另一个,应该感觉就像在同一个一层网络内发送代币一样。
有许多类别的跨二层网络互操作性改进。通常,提出这些改进的方法是注意到理论上,以rollup为中心的以太坊与一层执行分片是一回事,然后问当前以太坊二层网络生态系统在实践中与这个理想有何不足。以下是一些例子:
轻客户端如何更新其对以太坊头链的视图。一旦你有了头链,你就可以使用默克尔证明来验证任何状态对象。一旦你有了正确的一层网络状态对象,你就可以使用默克尔证明(如果你想检查预确认,可能还需要签名)来验证二层网络上的任何状态对象。Helios已经实现了前者。将其扩展到后者是一个标准化挑战。
密钥库钱包如何工作的简化图示。
上述许多例子都面临着何时标准化以及在哪些层面上标准化的常见困境。如果过早标准化,你可能会固化一个劣质解决方案。如果标准化太晚,你可能会造成不必要的碎片化。在某些情况下,既有短期解决方案(属性较弱但易于实施),也有长期解决方案(”最终正确”但需要几年时间才能实现)。
这一部分的独特之处在于,这些任务不仅仅是技术问题:它们也是(甚至可能主要是!)社会问题。它们需要二层网络、钱包和一层网络的合作。我们能否成功处理这个问题,是对我们作为一个社区团结一致能力的考验。
这些提案大多是”高层”构造,因此不会对一层网络考虑产生重大影响。一个例外是共享排序,它对MEV(最大可提取价值)有重大影响。
如果 L2 变得非常可扩展且成功,但 L1 仍然只能处理非常少量的交易,那么以太坊可能会出现许多风险:
出于这些原因,继续扩展 L1 本身并确保它能够继续适应越来越多的用途是很有价值的。
扩展以太坊最简单的方法是直接提高gas限制。然而,这可能会导致L1层中心化,从而削弱以太坊L1最强大的特性之一:作为稳健基础层的可信度。关于多大程度的gas限制提升是可持续的,目前仍存在争议。这个问题还会随着其他使大区块更易验证的技术(如历史过期、无状态性、L1 EVM有效性证明等)的实施而变化。另一个需要持续改进的重要方面是以太坊客户端软件的效率,现在的效率已经比五年前高得多。一个有效的L1 gas限制提升策略应该包括加速这些验证技术的发展。
另一种扩展策略是识别特定功能和计算类型,在不损害网络去中心化或安全性的前提下降低其成本。例如:
这些改进将在以后关于 Splurge 的文章中更详细地讨论。
最后,第三个策略是 原生汇总 (或“enshrined rollups”):本质上,创建并行运行的 EVM 的许多副本,从而形成一个与 rollups 可以提供的模型等效的模型,但更原生地集成到协议中。
L1 扩展有三种策略,可以单独或并行执行:
值得理解的是,这些是不同的技术,有不同的权衡。例如,原生rollups在可组合性方面有许多与普通rollups相同的弱点:你不能发送一个单一的交易在多个rollups之间同步执行操作,就像你可以在同一个L1(或L2)上的合约那样。提高gas限制会减少通过使L1更容易验证而可能获得的其他好处,如增加运行验证节点的用户比例和增加单独质押者。降低EVM中特定操作的成本,取决于具体实施方式,可能会增加EVM的总体复杂性。
任何 L1 扩展路线图都需要回答的一个大问题是: L1 和 L2 的最终愿景是什么?显然,这是荒谬的 一切 继续 L1:潜在的用例每秒有数十万个事务,这将使 L1 完全无法验证(除非我们采用本机汇总路线)。但我们确实需要 一些 指导原则,这样我们就可以确保我们不会造成这样的情况:我们将 Gas 限制提高 10 倍,严重损害以太坊 L1 的去中心化,并发现我们只是进入了一个 99% 的活动都在在 L2 上,90% 的活动都在 L2 上,因此结果看起来几乎相同,除了以太坊 L1 特殊之处的大部分不可逆转的损失。
一种关于 L1 和 L2 之间“分工”的提议观点, 来源。
将更多用户带到L1意味着不仅要改善规模,还要改善L1的其他方面。这意味着更多的MEV(最大可提取价值)将留在L1上(而不是仅成为L2的问题),因此将更加迫切需要明确处理它。这大大增加了在L1上拥有快速时隙时间的价值。它也高度依赖于L1的验证(”the Verge”)进展顺利。
在最初,以太坊的路线图中有两种扩容策略。一种(例如,参见2015年的这篇早期论文)是”分片”:每个节点只需要验证和存储一小部分交易,而不是验证和存储链上的所有交易。这也是其他点对点网络(如BitTorrent)的工作方式,所以我们自然可以让区块链以同样的方式工作。另一种是二层协议:这些网络位于以太坊之上,能够充分受益于以太坊的安全性,同时将大部分数据和计算保持在主链之外。”二层协议”在2015年指的是状态通道,在2017年指的是Plasma,然后在2019年指的是rollups。Rollups比状态通道或Plasma更强大,但它们需要大量的链上数据带宽。幸运的是,到2019年,分片研究已经解决了大规模验证”数据可用性”的问题。因此,这两条路径汇合了,我们得到了以rollup为中心的路线图,这仍然是以太坊目前的扩容策略。
The Surge,2023 年路线图版。
以rollup为中心的路线图提出了一个简单的分工:以太坊L1专注于成为一个强大和去中心化的基础层,而L2则承担帮助生态系统扩展的任务。这是一种在社会各处都能看到的模式:法院系统(L1)并不是为了超快和高效而存在,它是为了保护合同和财产权,而企业家(L2)则在这个坚实的基础层之上建设,将人类带到(比喻和字面意义上的)火星。
今年,以rollup为中心的路线图已经取得了重要成果:以太坊L1的数据带宽通过EIP-4844 blobs大幅增加,多个EVM rollups现在已经处于第1阶段。一种非常异构和多元化的分片实现已经成为现实,每个L2都作为一个”分片”运作,有自己的内部规则和逻辑。但正如我们所见,走这条路也带来了一些独特的挑战。因此,我们现在的任务是完成以rollup为中心的路线图,解决这些问题,同时保持使以太坊L1特别的稳健性和去中心化。
可扩展性三难困境是2017年提出的一个概念,它指出区块链的三个属性之间存在矛盾:去中心化(具体来说:运行节点的低成本)、可扩展性(具体来说:高交易处理量)和安全性(具体来说:攻击者需要破坏网络中大部分节点才能使单个交易失败)。
值得注意的是,这个三难困境并非一个定理,介绍它的文章也没有提供数学证明。但文章给出了一个启发性的数学论证:如果一个支持去中心化的节点(如普通笔记本电脑)每秒可以验证N笔交易,而你有一个每秒处理k*N笔交易的链,那么要么(i)每笔交易只被1/k的节点看到,这意味着攻击者只需破坏少数节点就能推送一笔坏交易,要么(ii)你的节点需要很强大,导致你的链不再去中心化。这篇文章的目的不是证明打破三难困境是不可能的,而是表明打破三难困境很难——它需要某种方式跳出论证所暗示的框框。
多年来,一些高性能链常常声称他们在不做任何基础架构层面创新的情况下解决了三难困境,通常是通过使用软件工程技巧来优化节点。这总是具有误导性的,在这些链上运行节点最终总是比在以太坊上困难得多。这篇文章深入探讨了为什么会这样的诸多微妙之处(因此,为什么仅靠L1客户端软件工程无法扩展以太坊本身)。
然而,数据可用性采样和SNARKs的结合确实解决了三难困境:它允许客户端验证某些数据的可用性,并正确执行一定数量的计算步骤,同时只下载少量数据并运行少量计算。SNARKs是无需信任的。数据可用性采样有一个微妙的N中少数信任模型,但它保留了不可扩展链的基本属性,即即使51%攻击也无法强制网络接受坏区块。
解决三难困境的另一种方式是 Plasma 架构,它使用巧妙的技术,以激励兼容的方式将监视数据可用性的责任推给用户。在2017-2019年,当我们只有欺诈证明来扩展计算时,Plasma在安全操作方面非常有限,但SNARKs的主流化使Plasma架构对更广泛的用例变得更加可行。
自2024年3月13日Dencun升级上线以来,以太坊区块链每12秒的 slot (时隙)中包含三个约125 kB的”数据块”,即每个 slot 约375 kB的数据可用性带宽。假设交易数据直接在链上发布,一笔ERC20转账约需180字节,那么以太坊上rollups的最大每秒交易量(TPS)为:
375000 / 12 / 180 = 173.6 TPS (每秒处理量)
如果我们加上以太坊的calldata(理论最大值:每个 slot 30百万gas / 每字节16 gas = 每个slot 1,875,000字节),这个数字将达到607 TPS。通过PeerDAS,计划是将数据块数量目标增加到8-16个,这将使我们在calldata中达到463-926 TPS。
这相对于以太坊 L1 来说是一个重大的提升,但这还不够。我们想要更多的可扩展性。 我们的中期目标是每个slot 16 MB,如果与汇总数据压缩的改进相结合,将为我们提供 〜58,000 TPS。
PeerDAS是”一维采样”的一种相对简单的实现。以太坊中的每个数据块都是一个253位素数域上的4096度多项式。我们广播多项式的”份额”,每个份额由16个相邻坐标的16个评估组成,这些坐标从总共8192个坐标中选取。8192个评估中的任意4096个(根据当前提议的参数:128个可能样本中的任意64个)都可以恢复整个数据块。
PeerDAS的工作原理是让每个客户端监听少量子网,其中第i个子网广播任何数据块的第i个样本,并通过询问全局p2p网络中的对等节点(它们会监听不同的子网)来获取它需要的其他子网上的数据块。一个更保守的版本SubnetDAS只使用子网机制,没有额外的询问对等节点的层。目前的提议是让参与权益证明的节点使用SubnetDAS,而其他节点(即”客户端”)使用PeerDAS。
理论上,我们可以将一维采样扩展得相当远:如果我们将数据块数量上限增加到256(目标为128),那么我们将达到16 MB的目标,同时数据可用性采样对每个节点的成本仅为每个时隙16个样本 128个数据块 每个样本每个数据块512字节 = 1 MB的数据带宽。这刚好在我们的容忍范围内:可以做到,但这意味着带宽受限的客户端无法进行采样。我们可以通过减少数据块数量并增加数据块大小来优化这一点,但这会使重构更加昂贵。
因此,我们最终想要更进一步,实现二维采样,这种方法不仅在数据块内进行随机采样,还在数据块之间进行采样。KZG承诺的线性特性被用来”扩展”区块中的数据块集合,生成一系列新的”虚拟数据块”,这些虚拟数据块冗余地编码相同的信息。
二维采样。 来源:a16z 加密货币
至关重要的是,计算承诺的扩展不需要拥有数据块,因此该方案从根本上适合分布式区块构建。实际构建区块的节点只需要有数据块的KZG承诺,并且可以自己依靠DAS来验证数据块的可用性。一维DAS也天生适合分布式区块构建。
当前的首要任务是完成PeerDAS的实施和推广。之后,我们需要逐步增加PeerDAS上的数据块数量,同时密切关注网络状况并改进软件以确保安全性。与此同时,我们需要更多的学术工作来正式化PeerDAS和其他版本的DAS,并研究它们与分叉选择规则安全性等问题的相互作用。
展望未来,我们需要更多的工作来确定2D DAS的理想版本并证明其安全性。我们还希望最终从KZG迁移到一个抗量子、无需可信设置的替代方案。目前,我们还没有找到适合分布式区块构建的候选方案。即使是使用递归STARK生成行列重构有效性证明的昂贵”暴力”技术也不够,因为虽然理论上STARK的大小是O(log(n) * log(log(n))个哈希(使用STIR),但实际上STARK几乎和整个数据块一样大。
从长远来看,我认为现实的路径是:
我们可以将这些选择视为一个权衡谱系:
需要注意的是,即使我们决定直接在L1上扩展执行,这个选择仍然存在。这是因为如果L1要处理大量的TPS,L1区块会变得非常大,客户端将需要一种高效的方法来验证它们的正确性,所以我们将不得不在L1上使用与rollups相同的技术(ZK-EVM和DAS)。
如果实施了数据压缩(见下文),2D DAS的需求会有所减少,或至少会推迟。如果Plasma被广泛使用,这种需求会进一步减少。DAS还给分布式区块构建协议和机制带来了挑战:虽然DAS在理论上有利于分布式重构,但在实践中需要与包含列表提案及其周围的分叉选择机制相结合。
rollup中的每个交易都会在链上占用相当大的数据空间:一个ERC20转账大约需要180字节。即使采用理想的数据可用性采样,这也会限制二层协议的可扩展性。以每个 Slot 16 MB计算,我们得到:
16000000 / 12 / 180 = 7407 TPS
如果我们不仅处理分子,还能处理分母,使rollup中的每个交易在链上占用更少的字节,会怎样呢?
我认为最好的解释是两年前的 这个图:
最简单的收益就是零字节压缩:用两个字节表示有多少个连续的零字节来替代长序列的零字节。为了更进一步,我们利用交易的特定属性:
剩下要做的主要工作就是将上述方案落到实处。主要的权衡是:
采用ERC-4337,并最终将其部分内容纳入L2 EVM,可以大大加快聚合技术的部署。在L1上纳入ERC-4337的部分内容可以加快其在L2上的部署。
即使有16 MB的数据块和数据压缩,58,000 TPS(每秒交易数)不一定足以完全接管消费者支付、去中心化社交或其他高带宽领域。特别是当我们考虑隐私因素时,可扩展性可能会下降3-8倍。对于高交易量、低价值的应用,目前的一个选择是validium,它将数据保存在链下,并有一个有趣的安全模型:运营者无法窃取用户资金,但他们可能会消失并暂时或永久冻结所有用户的资金。但我们可以做得更好。
Plasma是一种扩展解决方案,运营者在链下发布区块,并将这些区块的Merkle根放在链上(与rollups不同,rollups将完整的区块放在链上)。对于每个区块,运营者向每个用户发送一个Merkle分支,证明该用户资产发生或未发生的情况。用户可以通过提供Merkle分支来提取他们的资产。重要的是,这个分支不必根植于最新状态 - 因此,即使数据可用性失败,用户仍然可以通过提取他们所拥有的最新可用状态来恢复他们的资产。如果用户提交无效分支(例如,退出已经发送给他人的资产,或运营者凭空创造资产),链上挑战机制可以裁定资产应该归属于谁。
Plasma Cash链的示意图。花费硬币i的交易被放在树的第i个位置。在这个例子中,假设所有先前的树都是有效的,我们知道Eve当前拥有硬币1,David拥有硬币4,George拥有硬币6。
Plasma的早期版本只能处理支付用例,无法有效地进一步推广。然而,如果我们要求每个根都通过SNARK验证,Plasma就变得更加强大。每个挑战游戏可以大大简化,因为我们消除了运营者作弊的大多数可能路径。新的路径也开放了,允许Plasma技术扩展到更广泛的资产类别。最后,如果运营者不作弊,用户可以立即提取他们的资金,而不需要等待一周的挑战期。
制作 EVM 等离子链的一种方法(不是唯一的方法)是:使用ZK-SNARK构建一个与EVM并行的UTXO树,反映EVM中的余额变化,并定义不同时间点上”相同硬币”的唯一映射。然后可以在此基础上构建等离子体系统。
一个关键的见解是,等离子体系统不需要完美无缺。即使你只能保护一部分资产(例如,仅保护过去一周内未移动的硬币),你也已经大大改善了超可扩展EVM的现状,即validium。
另一类构造是等离子体/rollup混合体,例如Intmax。这些构造在链上为每个用户存储很少量的数据(例如5字节),从而获得介于等离子体和rollup之间的特性:以Intmax为例,你可以获得非常高的可扩展性和隐私性,尽管即使在16 MB的世界中,理论容量上限也约为16,000,000 / 12 / 5 = 266,667 TPS(每秒交易数)。
主要剩余的任务是将Plasma系统投入生产。如上所述,”plasma vs validium”并非二元对立:任何validium都可以通过在退出机制中添加Plasma功能来至少略微改善其安全属性。研究部分在于为EVM获得最佳属性(在信任要求、最坏情况下的L1 gas成本和对DoS的脆弱性方面),以及替代的应用特定构造。此外,Plasma相对于rollups的更大概念复杂性需要直接解决,既通过研究,也通过构建更好的通用框架。
使用Plasma设计的主要权衡是它们更依赖于运营商,并且更难做到”基于“,尽管混合plasma/rollup设计通常可以避免这个弱点。
Plasma 解决方案越有效,L1 拥有高性能数据可用性功能的压力就越小。将活动转移到 L2 还可以减少 L1 上的 MEV 压力。
如今,大多数汇总实际上还不是去信任的;有一个安全理事会有能力推翻(乐观或有效性)的行为 证明系统。在某些情况下,证明系统甚至根本不存在,或者即使存在也仅具有“咨询”功能。最领先的是 (i) 一些特定于应用程序的汇总,例如 Fuel,它们是去信任的,以及 (ii) 截至撰写本文时,Optimism 和 Arbitrum,这两个完整的 EVM 汇总已经实现了部分去信任里程碑称为“第一阶段”。 Rollups 没有进一步发展的原因是担心代码中的 bug。我们需要去信任的汇总,因此我们需要正面解决这个问题。
首先,让我们回顾一下”阶段”系统,这个概念最初是在这篇文章中提出的。虽然有更详细的要求,但概括如下:
目标是达到第2阶段。达到第2阶段的主要挑战是获得足够的信心,确保证明系统真的足够可信。有两种主要方法可以做到这一点:
多重证明者的示意图,结合了一个乐观证明系统、一个有效性证明系统和一个安全委员会。
对于形式验证,还有很多工作要做。我们需要创建一个完整的EVM SNARK证明器的形式验证版本。这是一个极其复杂的项目,尽管我们已经开始了。有一个技巧可以显著简化这个任务:我们可以为一个最小化的虚拟机(如RISC-V或Cairo)创建一个经过形式验证的SNARK证明器,然后在该最小化虚拟机中编写EVM的实现(并正式证明其与其他EVM规范的等价性)。
对于多重证明者,还有两个主要的待完成部分。首先,我们需要对至少两个不同的证明系统建立足够的信心,确保它们各自都是合理安全的,并且如果它们出现故障,会因不同且无关的原因而故障(因此不会同时失效)。其次,我们需要对合并证明系统的底层逻辑获得非常高水平的保证。这是一个更小的代码部分。有些方法可以使其变得非常小——只需将资金存储在一个Safe多重签名合约中,其签名者是代表各个证明系统的合约——但这会带来链上gas成本高的权衡。需要在效率和安全性之间找到平衡。
将活动转移到二层网络可以减少一层网络上的MEV(最大可提取价值)压力。
当前二层网络生态系统的一个主要挑战是用户难以导航。此外,最简单的使用方式往往会重新引入信任假设:中心化桥接、RPC客户端等。如果我们认真对待二层网络是以太坊一部分的想法,我们需要让使用二层网络生态系统感觉就像使用一个统一的以太坊生态系统。
这里有一个病态且危险的跨二层网络用户体验示例(我个人因链选择错误在这里损失了100美元)- 尽管这不是Polymarket的错,跨二层网络互操作性应该是钱包和以太坊标准(ERC)社区的责任。在一个运作良好的以太坊生态系统中,从一层网络发送代币到二层网络,或从一个二层网络发送到另一个,应该感觉就像在同一个一层网络内发送代币一样。
有许多类别的跨二层网络互操作性改进。通常,提出这些改进的方法是注意到理论上,以rollup为中心的以太坊与一层执行分片是一回事,然后问当前以太坊二层网络生态系统在实践中与这个理想有何不足。以下是一些例子:
轻客户端如何更新其对以太坊头链的视图。一旦你有了头链,你就可以使用默克尔证明来验证任何状态对象。一旦你有了正确的一层网络状态对象,你就可以使用默克尔证明(如果你想检查预确认,可能还需要签名)来验证二层网络上的任何状态对象。Helios已经实现了前者。将其扩展到后者是一个标准化挑战。
密钥库钱包如何工作的简化图示。
上述许多例子都面临着何时标准化以及在哪些层面上标准化的常见困境。如果过早标准化,你可能会固化一个劣质解决方案。如果标准化太晚,你可能会造成不必要的碎片化。在某些情况下,既有短期解决方案(属性较弱但易于实施),也有长期解决方案(”最终正确”但需要几年时间才能实现)。
这一部分的独特之处在于,这些任务不仅仅是技术问题:它们也是(甚至可能主要是!)社会问题。它们需要二层网络、钱包和一层网络的合作。我们能否成功处理这个问题,是对我们作为一个社区团结一致能力的考验。
这些提案大多是”高层”构造,因此不会对一层网络考虑产生重大影响。一个例外是共享排序,它对MEV(最大可提取价值)有重大影响。
如果 L2 变得非常可扩展且成功,但 L1 仍然只能处理非常少量的交易,那么以太坊可能会出现许多风险:
出于这些原因,继续扩展 L1 本身并确保它能够继续适应越来越多的用途是很有价值的。
扩展以太坊最简单的方法是直接提高gas限制。然而,这可能会导致L1层中心化,从而削弱以太坊L1最强大的特性之一:作为稳健基础层的可信度。关于多大程度的gas限制提升是可持续的,目前仍存在争议。这个问题还会随着其他使大区块更易验证的技术(如历史过期、无状态性、L1 EVM有效性证明等)的实施而变化。另一个需要持续改进的重要方面是以太坊客户端软件的效率,现在的效率已经比五年前高得多。一个有效的L1 gas限制提升策略应该包括加速这些验证技术的发展。
另一种扩展策略是识别特定功能和计算类型,在不损害网络去中心化或安全性的前提下降低其成本。例如:
这些改进将在以后关于 Splurge 的文章中更详细地讨论。
最后,第三个策略是 原生汇总 (或“enshrined rollups”):本质上,创建并行运行的 EVM 的许多副本,从而形成一个与 rollups 可以提供的模型等效的模型,但更原生地集成到协议中。
L1 扩展有三种策略,可以单独或并行执行:
值得理解的是,这些是不同的技术,有不同的权衡。例如,原生rollups在可组合性方面有许多与普通rollups相同的弱点:你不能发送一个单一的交易在多个rollups之间同步执行操作,就像你可以在同一个L1(或L2)上的合约那样。提高gas限制会减少通过使L1更容易验证而可能获得的其他好处,如增加运行验证节点的用户比例和增加单独质押者。降低EVM中特定操作的成本,取决于具体实施方式,可能会增加EVM的总体复杂性。
任何 L1 扩展路线图都需要回答的一个大问题是: L1 和 L2 的最终愿景是什么?显然,这是荒谬的 一切 继续 L1:潜在的用例每秒有数十万个事务,这将使 L1 完全无法验证(除非我们采用本机汇总路线)。但我们确实需要 一些 指导原则,这样我们就可以确保我们不会造成这样的情况:我们将 Gas 限制提高 10 倍,严重损害以太坊 L1 的去中心化,并发现我们只是进入了一个 99% 的活动都在在 L2 上,90% 的活动都在 L2 上,因此结果看起来几乎相同,除了以太坊 L1 特殊之处的大部分不可逆转的损失。
一种关于 L1 和 L2 之间“分工”的提议观点, 来源。
将更多用户带到L1意味着不仅要改善规模,还要改善L1的其他方面。这意味着更多的MEV(最大可提取价值)将留在L1上(而不是仅成为L2的问题),因此将更加迫切需要明确处理它。这大大增加了在L1上拥有快速时隙时间的价值。它也高度依赖于L1的验证(”the Verge”)进展顺利。