本文探讨了以太坊的状态增长及其对网络可扩展性的影响。通过数据驱动的方法,指出现代消费者硬件可以支持当前的状态增长率长达十年,并提出了解决状态增长问题的多种技术方案,包括Rollups、Verkle Tries和状态过期等。文章深入分析了状态增长的来源、速度及合理的接受范围,强调以科学方法推进以太坊的可扩展性是必要的。
状态增长及其与以太坊气体限制的关系普遍被误解。人们普遍认为状态增长是以太坊主要的扩展瓶颈。然而,关于状态增长的讨论往往因用词不准确和缺乏详细的定量证据而受到限制。
采用数据驱动的方法为状态增长问题带来了显著的清晰度。在本文中,我们利用高分辨率数据集来理解状态增长的大小和形状。在此过程中,我们得出意外的结论:现代消费级硬件能够以当前的状态增长率持续至少十年。此外,随着软件和硬件即将发生的改进,这一时间线可能会无限延长。
我们相信,以太坊有一条明确的路线图,旨在1)完全消除状态增长这一扩展瓶颈,以及2)将气体限制提高到支持全球规模的去中心化金融系统的水平。本文系列的目标是为理解和实施这一扩展路线图制定出科学的方法。
本文是关于以太坊扩展的系列博客的第一部分。第一部分讨论状态增长,第二部分讨论历史增长,第三部分讨论状态访问,第四部分讨论气体限制。
“状态增长”这一术语通常用作一个涵盖所有以太坊扩展瓶颈的术语,其中数据大小超过以太坊节点硬件的容量。然而,状态增长不应这样单一化理解。以太坊数据有多种类型,每种类型与节点的基础硬件组件都有其独特的关系。因此,使用精确的术语以理清每种独特的扩展瓶颈至关重要。
状态是构建和验证新的以太坊区块所需的数据集。状态由合约字节码、合约存储、账户余额和账户的随机数组成。历史是从创世块到最新区块,同步节点所需的数据集。历史由区块和交易组成。状态和历史是互不重叠的数据集。根据这些定义,至少有3种不同现象对节点硬件造成显著压力:
每一个瓶颈与节点的硬件约束之间都有独特的关系。四个最相关的1硬件约束为:
这些瓶颈与硬件约束之间的关系在图1中进行了说明。
图1:以太坊扩展瓶颈
从图表顶部开始,每次以太坊执行交易时,该交易所使用的所有资源都以gas为单位进行定价。以太坊的气体限制因此是一个单维量,限制了所有形式的链上活动2。气体限制下游是区块大小和每个区块的操作次数。每个区块的字节数越多,历史的增长速度越快。每个区块的IO操作越多,状态访问的速率越高(通常状态增长速率也越高)。
因此,扩展瓶颈与节点的硬件约束之间的关系如下3:
对于状态增长而言,主要挑战是确保状态大小的增长速度不超过消费者硬件的持续改进所能维持的速度。节点内存和存储是有限资源,因此它们最终会达到容量,除非状态停止增长或硬件定期升级。幸运的是,内存和存储硬件多年来一直在不断改进。尽管如此,这些改进的具体前景并不确定,也不应理所当然地认为其快速增长会无限期持续。
请注意,未来即将推出的EIP-4844引入的数据文件将对这些扩展关系产生一些变化。在EIP-4844之后,预计在磁盘上会积累更少的历史,网络IO可能会因传输大量数据文件而显著增加。
在本文中,我们将主要关注状态大小和状态增长率,而不是内存大小和状态访问模式。我们将在未来的工作中研究这些或其他主题。
理解状态增长的下一个步骤是检查状态的总大小及每个状态贡献的相对大小。目前,以太坊状态在磁盘上约占245.5 GiB。这些数字是通过使用reth节点测量的,但每个节点客户端的数字大致相当,如此比较电子表格所示。账户、合约字节码和合约存储分别占状态的14.1%、4.3%和81.7%。
图2显示了各类智能合约协议占用的状态数量。在此可视化中,每个合约类别的大小表示其存储槽和字节码所占的字节数。合约类别是分层的,可以通过鼠标点击进行导航。还包括一个类别,以表示账户余额和随机数所占的状态总量。
图2中的数字代表节点客户端必须在磁盘上存储的总字节数。这包括用于索引和其他类型存储开销的数据。数字取自reth节点,但在客户端之间大致可比。每个账户和每个存储槽的平均存储大小分别为133.6字节和191.3字节。
在图2中有许多有趣的模式,以下是一些最重要的结论:
状态增长最重要的方面是状态增长率随时间的演变。这些增长率揭示了问题的严重性,以及严重性是趋势向上还是向下。
图3展示了自2015年以太坊成立以来的状态增长率。这些增长率通过将每个合约类别中的合约字节码和合约存储相加来计算。可以通过点击和双击图表图例中的项目来可视化这些类别的子集。
在图3中有许多有趣的模式,以下是一些最重要的结论:
我们现在知道以太坊状态的1)大小,2)组成和3)增长率。我们如何确定可接受的状态增长值范围?这个问题很复杂,因为它依赖于无法预测的市场力量以及关于以太坊应该做出哪些权衡的哲学选择。
让我们从一个关于当前状态增长水平在普通消费级硬件上可持续多长时间的最简单模型开始,假设没有未来的硬件改进。如图3所示,在最近几年,状态以每年约31GiB到72GiB的速度增长。普通消费级硬件的存储通常约为4TiB和64GiB的内存。由此,我们可以创建一个简单的存储和内存需求的预测:
这是一个简化模型,包含许多假设。该模型的可能扩展包括1)历史增长,2)内存需求的非线性缩放,3)硬件成本的降低,4)气体限制的提高,5)操作码气体定价的重新定价,以及6)未来以太坊架构的改进。每一个因素都可能非线性地相互影响并随着时间发展。我们将在未来的工作中探讨这些模型扩展。
必须强调的是,长期可持续性是件好事。即使现代硬件可以支持许多年的发展,缩短这一发展空间绝不可掉以轻心。任何加速状态增长的计划都应包括显著的缓冲,以应对硬件或软件环境的意外变化。
已经提出了许多不同的解决方案来应对状态增长。针对以太坊架构的三项改进尤其突出:rollups、Verkle tries和状态过期。综合来看,这为解决短期、中期和长期的状态增长问题提供了一条全面的路线图。
短期:Rollups并不能解决状态增长问题,但确实减轻了负担。正如图2和图3所示,rollups能够比主网更有效地使用状态。将活动卸载到L2需要在主网上存储一定数量的状态以支持用户退出。然而,L2交易的状态占用远低于主网交易的占用。因此,rollups使得增加生态系统中的总活动更具可持续性。预计随着即将到来的EIP-4844的推行,rollups的采用将逐步增长,这将通过采用数据块的方式使rollups变得更为便宜。
中期:Verkle tries为验证节点解决状态增长,但不适用于需要构建新交易的节点:Verkle tries是一种新的以太坊状态数据结构。它们可以实现更高效的轻客户端和“无状态”节点。这些节点将能够在不知晓现有状态值的情况下验证新区块。这消除了验证节点的状态增长问题。新交易的构建仍将需要存储和访问状态,但这仍然比我们目前的情况更可持续,因为交易构建任务可以轻松分配到多个机器上。在范围上,Verkle tries代表了一项重要的工程努力,可能需要数年才能实施。
长期:状态过期为所有节点解决了状态增长的问题,但需要额外的基础设施。状态过期允许节点丢弃状态的非活跃部分,就如图2所示的休眠状态。请注意,“状态休眠”这个术语可能是更合适的名称,因为大多数现有提案允许通过证明来恢复“过期”的状态。关于过期状态随时间丢失的担忧,只要历史(区块和交易数据)可用,就可以重建状态。因此,针对EIP-4444的历史保存问题所开发的任何解决方案也将解决状态保存问题。如果Verkle Tries在其目标中取得成功,状态过期可能并不必要。
这些并不是唯一被提出来解决状态增长的方案。其他方案包括状态租金和分片,但历史上,这些方案在用户体验或合理性方面存在一些关注。在更遥远的未来,可能需要这些解决方案及其他方案的结合,以达到最终的解决方案。
尽管状态增长是以太坊扩展的关键挑战,我们相信这是一个可以通过已知技术解决的问题。根据我们的数据分析,以太坊可以在许多年内维持当前的状态增长水平,并且可以安心地进行架构升级实验。
我们相信,实证方法将对设计以太坊的气体限制和引领以太坊实现最终扩展解决方案至关重要。本文仅是实现这一目标的一个步骤。还有其他类型的数据超越状态,每一个都会给以太坊节点和以太坊气体限制带来各自的扩展负担。我们希望在未来的工作中探索这些其他瓶颈。
如果你对以太坊扩展的研究感到兴奋,请联系storm@paradigm.xyz和georgios@paradigm.xyz。我们希望了解你对该问题的思考,并进行潜在的合作。用于本文的数据和代码可以在Github此处找到。
感谢Tim Beiko、Péter Szilágyi、Guillaume Ballet、Banteg、Alex Stokes、Jesse Pollak、Toni Wahrstaetter、Patrick O’Grady、lightclient、Ansgar Dietrichs、Frankie、Dan Robinson、Matt Huang、Doug Feagin和Arjun Balaji的审阅和反馈。
谢谢Achal Srinivasan提供图1的图形。
1. ↩ 还有其他硬件瓶颈,如CPU。在这里,我们专注于与以太坊主网最相关的四个瓶颈,但其他硬件瓶颈可能在其他背景中变得相关。
2 EIP-4844将引入一个独立的数据文件气体限制维度,用于控制以太坊数据文件活动的速度。 3↩ 请注意,图1仅显示这些瓶颈之间的主要关系。还有一些次要瓶颈在有时相关。例如,在执行快照同步而不是完全同步时,快照同步时间、状态增长和网络I/O之间存在强烈关系。
图2:以太坊状态分布
图3:以太坊状态随时间的增长
- 原文链接: paradigm.xyz/2024/03/how...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!