在深入探讨以太坊,特别是其客户端软件时,你很可能会遇到一个术语:“Fast Sync”(快速同步),而与“Fast Sync”紧密相关的,Fast节点大小”这个概念,对于任何想要运行自己以太坊全节点的用户、开发者或爱好者来说,理解这个“大小”的含义、构成及其背后的权衡,是迈出的关键一步,本文将为你详细拆解以太坊“Fast”节点的大小,告诉你它为何重要,以及它如何影响你的节点运行体验。

什么是“Fast”节点?—— 从“全同步”到“快速同步”

我们需要明确“Fast”节点的含义,在以太坊的早期,同步一个全节点只有一种方式:全同步(Full Sync),这种方式会从创世区块开始,一笔一笔地重新执行以太坊上的每一笔交易和智能合约代码,直到追上最新的区块,这个过程极其耗时,通常需要数周甚至更长时间,并且对CPU和I/O(输入/输出)性能要求极高。

为了解决这个问题,以太坊社区引入了快速同步(Fast Sync)机制,Fast Sync的核心思想是:“先下载世界状态,再同步区块头”

它分为两个阶段:

  1. 下载最新世界状态:节点会从网络中直接下载当前最新的账户余额、合约代码、存储数据等“世界状态”的完整快照,这相当于跳过了从创世区块开始重新计算所有历史的繁琐过程,直接拿到了“的账本。
  2. 同步区块头:在获取了最新状态后,节点会开始从创世区块开始,逐个下载区块头,并验证其有效性,这个过程不执行交易,所以速度极快,当追上最新区块后,节点便完成了同步,可以开始处理新区块和交易。

这个被广泛采用的Fast Sync模式,就是我们通常所说的“Fast节点”,它的出现,使得个人用户在合理的时间内(通常在一天以内)完成节点同步成为可能。

“Fast”节点的大小有多大?—— 一笔“沉重的”账单

理解了Fast Sync的原理后,我们最关心的问题来了:一个Fast节点到底需要多大的存储空间?

这个问题的答案并非一成不变,因为它与以太坊主网的持续增长直接相关,但我们可以根据当前(截至2023年末至2024年初)的情况给出一个清晰的估算。

一个典型的Fast节点主要由三大部分构成,其大小相加便是总存储需求:

组件 大小估算 说明
区块数据 ~1.5 TB - 2.0 TB 这是最大的组成部分,虽然Fast Sync不执行历史交易,但它需要下载并存储从创世区块到最新区块的所有区块头和所有交易数据(body),以太坊主网每天都在产生大量新的区块和交易,这部分数据在持续增长。
世界状态 ~120 GB - 150 GB 这是Fast Sync的“捷径”所在,节点直接下载的当前世界状态快照,包含了所有账户和合约的当前状态,这部分数据相对稳定,但也会随着新合约的部署和状态的更新而缓慢增长。
历史状态 ~100 GB - 120 GB 这是Fast Sync的一个额外但重要的步骤,为了安全地处理“重组”(Reorg,即链的临时回滚),节点需要保留最近一段时间的历史世界状态,通常这个保留期是“最近8192个slot”,大约相当于2-3周的状态数据。
总计(估算值) ~1.7 TB - 2.3 TB 综合来看,一个现代化的、运行在以太坊主网上的Fast节点,预计需要准备至少2TB的可用存储空间,并且这个数字仍在持续增长。

重要提示:这仅仅是数据的大小,你的操作系统、以太坊客户端软件(如Geth、Nethermind、Lodestar等)以及数据库本身也需要额外的空间,建议为节点准备一块至少2.5TB到3TB的高性能SSD(固态硬盘),以确保有足够的缓冲空间和良好的I/O性能。

大小背后的权衡:为何要选择Fast节点?

看到近2TB的存储需求,你可能会问:有没有更节省空间的选择?答案是有的,Snap Sync”(快照同步)和“Archive Node”(归档节点),但它们各有优劣。

  • Fast Sync vs. Snap Sync随机配图