以太坊执行客户端现在支持部分历史过期,允许用户通过移除合并前的区块数据来减少磁盘空间占用,大约可以减少300-500GB。文章还介绍了历史数据的使用场景、权益证明中区块验证的变化、历史数据的可用性保障以及各个客户端的具体命令。
截至今日,所有以太坊执行客户端均根据 支持部分历史过期。虽然关于完整、滚动历史过期仍在进行中,但用户可以通过移除 Merge 之前的区块数据来减少以太坊节点所需的磁盘空间 300-500 GB。这将允许节点舒适地容纳在 2 TB 的磁盘上。请参阅下文,了解有关每个特定客户端的信息。
根据定义,区块链是从特定创世点开始的区块链。对于以太坊,这种情况发生在 。每个块都包含有关协议本身的信息,即当前 gas 限制、用户交易列表以及由收据封装的这些交易的结果。此数据有很多用途:
这种历史数据不会被以太坊用户经常使用,而是为更高级的用户和开发者服务。访问当前余额、执行交易、借入资产等不会因历史过期而中断。自创世以来一直处于休眠状态的帐户也不会受到影响,因为每个帐户的状态都会继续维护。但是,只会维护当前状态。因此,仅从历史记录中无法轻易确定用户过去某个特定时间点的余额。此类查询需要带有专门索引的 ,能够确定过去的状态值。
当以太坊通过工作量证明启动时,从创世开始的完整验证是默认设置。后来,客户端实现了快照同步和其他类似的同步方式,客户端根据最重的链规则跳转到链的头部,然后继续下载所有合约和帐户状态。对于那些认为最重的链规则不足以验证链的完整性的人,保留了完整同步。
随着权益证明和 Merge 的出现,同步策略发生了变化。因为签名可以以基本无成本生成,所以客户端需要锚定到最近的可信检查点,也称为 。这允许新用户引导到链,而不会受到来自很久以前退出验证器集的验证器的假设性远程攻击的欺骗。
主观性的引入进一步消除了用户完全验证链中每个区块的需要,因此出于许多其他原因,客户端采用了一种新的反向同步策略,他们向后遍历链朝向创世以下载历史记录。现在大多数客户端不完全执行链,因此没有理由强迫每个以太坊节点从 p2p 网络下载超过 1 TB 的未使用数据。通过历史过期,我们维护一个类似于其他网络的 1-of-N 信任假设,即如果至少一个实体提供历史区块,节点将能够通过协议外方式检索历史记录。
历史过期的默认安全模型与当前现状没有改变。客户端已经超过 5 年没有从创世开始完全验证链。执行层将继续提供所有标头,这允许从创世开始对链进行加密验证。这有助于避免客户端接受无效的历史数据。
直到今天,以太坊网络上的每个节点都存储了从创世到头部的每个区块。这提供了极高的保证,即任何人都可以随时下载历史记录。我们相信,可以减少存储所有历史记录的节点数量,同时仍然确保高可用性。我们通过以下分发渠道实现这一目标:
有关镜像和 torrent 文件列表,请访问社区维护的文档 。
虽然此信息在发布时是最新的,但与特定客户端关联的命令和标志可能会发生变化。最新信息始终是每个客户端各自的文档。
每个以全节点为中心的客户端都支持在没有 pre-merge 数据的情况下运行,但是确切的过程取决于客户端。以下是在每个执行客户端上运行修剪节点的说明。请注意,只有 Mainnet 和 Sepolia 具有非 Merge 链前缀,因此只能在这些链上进行修剪。此外,Sepolia 中的非 Merge 链前缀很小,因此修剪可能对每个客户端所需的总磁盘大小影响很小。
Go-ethereum
从 版本开始可用。 完整文档可用 。
对于现有节点:
对于新节点:
Nethermind
默认情况下从版本 . 开始激活。
历史记录仅在新同步的节点上删除。自动修剪将在未来的版本中添加。 完整文档可用 。
为了禁用 history-expiry 特性:
Besu
从 版本开始可用。 完整文档可用 。
对于现有节点,可以:
离线修剪
在线修剪
对于新节点:
Erigon
从 版本开始可用
对于新节点和现有节点:
Reth
对于新节点和现有节点:
- 原文链接: blog.ethereum.org/2025/0...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!