理解历史增长
以太坊的历史数据包含了自创世区块以来所有执行过的区块和交易记录,这些数据构成了从初始区块同步到当前链顶端所需的基础信息。随着新区块和交易的不断产生,历史数据也在持续累积增长。
图1直观展示了历史增长与各类协议指标及节点硬件限制之间的关系。与状态增长不同,历史增长主要受网络I/O和存储空间的制约。一方面,新区块和交易需要在全网范围内传输,增加了网络负载;另一方面,每个节点都需要存储完整的历史数据副本,给存储系统带来压力。当历史增长速度超过硬件承载能力时,节点间将难以维持稳定的共识状态。关于状态增长和其他扩展瓶颈的详细讨论,可以参考本系列文章的第一部分。
图1:以太坊扩容瓶颈示意图
在Dencun硬分叉引入blob之前,节点的大部分网络吞吐量都用于传输历史数据。随着Dencun升级的实施,这一情况发生了显著变化。现在blob占据了节点网络活动的主要部分,但它们与传统历史数据存在本质区别:首先,blob仅由节点存储约两周后就会被丢弃;其次,它们不需要在创世区块重放过程中使用。由于这些特性,blob不会显著增加节点的存储负担。关于blob的更多细节将在后文详细讨论。
本文将重点探讨历史增长问题,同时也会涉及历史数据与状态数据之间的关联。由于二者共享部分硬件资源约束,它们实际上是相互关联的问题,解决其中一个往往有助于缓解另一个。
历史增长速度分析
图2展示了自以太坊创世以来的历史增长趋势。图中每个柱状条代表一个月的增长量,纵轴单位为GB。交易数据按照”目标地址”进行分类,并使用RLP编码字节数计算大小。难以识别的合约被归类为”未知”,而”其他”类别则包含了基础设施、游戏等小规模应用的长尾数据。
从数据中可以观察到几个重要现象:历史数据的增长速度约为状态的6-8倍,近期峰值达到每月36.0GiB,当前维持在19.3GiB/月;而状态增长的峰值约为6.0GiB/月,目前为2.5GiB/月。关于历史与状态的详细对比将在后文展开。
值得注意的是,在Dencun升级前,历史增长呈现加速态势。与状态多年来的线性增长不同(参见第一部分),历史增长呈现出超线性特征。这种加速趋势在Dencun升级后戛然而止,成为以太坊历史上首次出现的显著增速回落。
另一个关键发现是,近期大部分历史增长来自Layer2汇总。每个L2都会将其交易数据副本发布到主网,这产生了大量历史记录,使得汇总成为去年历史数据的主要贡献者。然而,Dencun升级使L2能够使用blob而非历史记录来发布交易数据,因此汇总不再是历史数据的主要来源。关于汇总的详细分析将在后文呈现。
历史数据的主要贡献者
通过分析不同合约类别生成的历史数据量,我们可以观察到以太坊使用模式的演变历程。图3展示了各类合约的相对贡献比例,数据与图2相同,但以百分比形式呈现。
这些数据揭示了以太坊发展的四个典型阶段:早期阶段(2015-2016)链上活动稀少,大多数合约难以识别;ERC-20时代(2017-2018)随着ERC20标准的普及,代币合约成为历史数据的主要来源;DEX/DeFi时代(2019-2022)去中心化交易所和金融应用崛起,在2020年DeFi Summer期间成为主导;Rollup时代(2023-2024)L2解决方案开始处理超过主网的交易量,在Dencun升级前贡献了约三分之二的历史数据。
每个发展阶段都代表着比前一阶段更复杂的以太坊使用模式。这种演进实质上是区块链的一种扩展形式,无法简单地通过TPS等基础指标来衡量。值得注意的是,在2024年4月的最新数据中,汇总已不再是历史数据的主要来源,未来主导地位是否会回归DEX和DeFi,或是出现新的使用模式,仍有待观察。
Blob的影响
Dencun升级引入的Blob机制显著改变了历史增长态势,使Rollups能够使用成本更低的blob而非历史记录来发布数据。图4聚焦Dencun升级前后历史增长率的变化,与图2不同的是,这里每个柱状条代表一天的数据量。
数据显示,自Dencun以来,汇总产生的历史数据量下降了约三分之二,多数汇总已从调用数据转向使用blob。不过截至2024年4月,仍有部分汇总尚未完成这一转换。总体而言,历史数据总量减少了约三分之一,因为Dencun主要影响汇总的历史增长,其他合约类别的数据量反而略有增加。即使在Dencun之后,历史增长速度仍是状态增长的8倍。
虽然blob有效缓解了历史增长压力,但它们仍是以太坊的新成员。在blob机制下,历史增长将稳定在何种水平,目前尚不明确。
可接受的历史增长阈值
提高gas上限将直接影响历史增长率。因此,类似Pump the Gas这样的提案必须审慎考虑历史增长与节点硬件限制的关系。
评估可接受的历史增长率,首先需要分析现有节点硬件在当前状况下的可持续时间。网络硬件可能无限期维持现状,因为在gas上限提高前,历史增长率不太可能回到Dencun前的峰值。然而,历史数据的存储负担会随时间持续增加,按照当前存储策略,节点的存储设备终将被历史数据填满。
图5展示了以太坊节点的存储负担变化及未来三年的预测,基于2024年4月的增长率。随着gas上限或使用模式的变化,这一增长率可能发生波动。
数据显示:历史数据占用的存储空间约为状态的3倍,且这一差距会随时间扩大;当达到1.8TiB左右时,许多节点将被迫升级存储设备;按照当前增速,这一临界点将在2-3年内到来。任何gas上限的提高都会加速这一进程,给节点运营商带来额外的硬件升级负担。
与状态数据不同,历史数据是仅追加且访问频率较低的,理论上可以存储在更经济的介质上。部分客户端如geth已经实现了这种存储方式。
除存储容量外,网络I/O是历史增长的另一个主要限制。虽然短期内不会造成问题,但对未来gas上限的提高将产生重要影响。要评估典型节点的网络容量支持多少历史增长,需要分析历史增长与各类网络健康指标的关系,包括重组率、时隙缺失等。这些指标的详细分析可参考先前对共识层健康状况的研究[1][2][3][4]。以太坊基金会的Xatu项目正在构建相关公共数据集以支持此类分析。
历史增长的解决方案
相比状态增长,历史增长是更容易解决的问题。EIP-4444提案几乎可以完全解决这一问题,它要求节点仅保留一年的历史数据而非完整历史。实施后,即使长期大幅提高gas上限,数据存储也不再会成为扩展瓶颈。这对于网络长期可持续性至关重要,否则历史增长将迫使节点定期升级硬件。
图6展示了EIP-4444对未来三年节点存储负担的影响,细线表示实施后的存储需求。
实施EIP-4444后,当前存储负担将减半(从1.2TiB降至633GiB),并使历史存储需求趋于稳定。假设增长率不变,历史数据将以生成速度被定期清理。此后,存储负担需要多年才会达到当前水平,因为状态增长将成为唯一影响因素,而其增速远低于历史数据。
虽然EIP-4444后节点仍需存储一年的历史数据,但这一负担在全球规模下也易于管理。待历史保存方法成熟后,一年的保存期可能进一步缩短至数月甚至数周。
历史数据的保存机制
EIP-4444引发了历史数据保存的问题。由于历史数据对验证、审计和分析至关重要,必须建立可靠的保存机制。幸运的是,历史保存只需保证1/n的数据提供者诚实即可,远低于状态共识所需的1/3到2/3门槛。节点可通过重放创世交易并验证状态根来确认任何历史数据集的真实性。
保存历史数据有多种可行方案,建议并行实施以提高可靠性:
1. Torrents/P2P网络:种子文件是最简单可靠的方案。节点可定期打包历史数据作为公共种子文件共享,例如每10万个区块创建一个新种子。类似erigon的客户端已非标准化地实施此过程。为建立统一标准,所有客户端需采用相同的数据格式、参数和P2P网络。种子方案的优势在于使用成熟开放标准,已有完善的工具生态支持。
2. 门户网络:专为以太坊数据设计的门户网络,在类似种子方案的基础上增加了验证层功能,便于轻客户端验证和查询共享数据。
3. 云存储:AWS的S3或Cloudflare的R2等云服务提供了经济高效的存储方案,但存在法律和运营风险,无法保证长期可用性。
实施挑战更多在于社区协调而非技术难度。需要就具体实现细节达成共识,以便集成到各客户端中。特别是从创世区块的完全同步将改为从历史提供者获取数据。这些变更无需硬分叉,可能比下一个硬分叉Pectra更早实施。
Layer2同样可以采用这些方法保存发布到主网的blob数据。虽然blob保存难度更大(数据量更庞大)且重要性较低(非主网历史重放必需),但对各L2自身历史重放仍很关键。如果L2建立了强大的blob存储基础设施,也可轻松扩展至存储L1历史数据。
图7对比了EIP-4444前后各类节点配置的存储负担。状态数据指账户和合约,历史数据指区块和交易,归档数据则是可选的数据索引。数据基于最近的reth快照,其他客户端应大致相当。
图7:各类以太坊节点的存储负担对比
具体而言:归档节点存储全部三类数据,便于查询历史状态;完整节点(当前主流)仅存储状态和历史数据,负担约为归档节点的一半;EIP-4444后的完整节点仅保留一年历史数据,将存储需求从1.2TiB降至633GiB;无状态节点(轻节点)不存储这些数据,依赖Verkle树等状态承诺方案实现即时验证。
除适应现有增长率外,还有多项提案可主动限制历史增长,这对保持网络I/O和存储限制都有助益。尽管EIP-4444对长期可持续性至关重要,这些补充提案将提升以太坊未来的扩展效率:
EIP-7623重新定价调用数据,促使部分应用转向blob;EIP-4488限制每个区块的调用数据总量,直接控制历史增速。这些提案比EIP-4444更易实施,可作为过渡方案。
总结
本文旨在通过数据驱动的方式,深入理解历史增长机制及其解决方案。由于相关数据传统上较难获取,我们希望这些分析能为该问题提供新的见解。
历史增长作为扩展瓶颈尚未得到足够重视。即使不提高gas上限,当前的历史保存惯例也将在几年内迫使多数节点升级硬件。幸运的是,EIP-4444已提出明确解决方案。我们建议加快实施该提案,为未来的gas上限提升创造条件。
对以太坊扩展研究感兴趣的读者,欢迎联系storm@paradigm.xyz和georgios@paradigm.xyz交流合作。本文使用的数据和代码可在Github获取。
致谢
感谢Thomas Thiery、Tim Beiko、Toni Wahrstaetter、Oliver Nordbjerg和Roman Krasiuk的审阅和建议。感谢Achal Srinivasan提供图1和图7的视觉设计。
声明:文章不代表CHAINTT观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险 自担!转载请注明出处:https://www.chaintt.cn/13699.html