Ress:通过无状态 Reth 节点扩展以太坊

  • Paradigm
  • 发布于 2025-03-15 16:41
  • 阅读 66

本文介绍了Ress(Reth Stateless),一个完全验证的无状态以太坊执行层,旨在通过减少节点的磁盘需求来改进以太坊的去中心化和扩展性。本文深入探讨了无状态以太坊的概念及其对扩展Layer 1和Layer 2的影响,以及Ress的工作原理、实现细节和未来展望,提供了丰富的技术细节和实证数据。

大纲

引言

我们很高兴地宣布Ress(Reth Stateless的简写),这是一个完整验证的无状态以太坊执行层,具有14GB的磁盘要求。无状态节点不仅对提高以太坊的去中心化有重要作用,还能扩展L1的Gas限制,扩大乐观L2的规模,以及实现原生Rollup以改善L2生态系统的安全性和互操作性。

Ress展示了我们今天可以在不需要任何硬分叉的情况下,以70倍更低的磁盘要求运行以太坊节点。作为我们的概念验证,我们成功地在Holesky测试网运行了Ress支持的以太坊质押者,并正确证明了区块的有效性。我们对进一步的协议改进感到期待,这将使该工作更加高效。

Ress基于Reth构建,代码行数小于4K(包括测试),进一步展示了Reth作为前沿EVM核心基础设施SDK的灵活性。

什么是无状态以太坊?

Dankrad Feist 在2021年撰写了关于这个主题的权威解释,我们建议将其作为本文的补充阅读材料。

“无状态”意味着节点不需要持有整个状态(即账户余额和智能合约存储)来处理区块。节点不必检查其本地数据库,而是从其他节点接收访问的状态,使用默克尔证明(或其他类似方法)验证它与最后一个区块的状态承诺相匹配,然后继续执行该区块中的所有交易。

这略去了许多内部细节,但捕捉了本质。无状态性之所以有用,是因为它使得运行节点的成本更低,理论上应改善网络的去中心化/抗审查性。这个过程是有代价的,以存储换取带宽,因为传输存储值和每个区块的默克尔证明可能是昂贵的。

然而,2024年我们观察到,状态增长不太可能在短期内成为去中心化的瓶颈,这使得许多节点开发者在短期内对无状态性不那么兴奋。也许有一种新的方式来看待事物?

无状态节点可以帮助以太坊扩展。

传统上,无状态性被描述为一种“防御性”特性,但我们认为也可以有“进攻性”的利用方式,特别是:

  1. 扩大L1 Gas限制:以太坊节点性能的最大瓶颈是计算每个区块的状态根所带来的开销,这一过程需要随机的磁盘I/O,且状态越大成本越高。无状态节点可以完全在内存中完成这一过程。
  2. 扩大乐观L2:乐观L2需要一个验证者网络,以接近Sequencer的速度重新执行交易,以确保如果顺序者发生故障,可以发布错误证明。无状态L2节点可以通过仅验证Sequencer的一部分操作,实际上“分片”L2的验证,使得L2能够更快运行,缩短其提现周期,而不降低故障证明的安全性。
  3. 实现原生Rollup:实现原生Rollup(与以太坊紧密集成的更安全/互操作的Rollup)的最快路径涉及在L1节点上重新执行每个Rollup区块。这在存储空间和IO/内存方面都可能是过于昂贵的。无状态重执行解决了这个问题。

Ress是如何工作的?

Ress是无状态的Reth。它今天工作的前提是没有任何协议变更。我们演示了Ress能够跟随链的最新块并在Holesky中验证其有效性,P99验证时间小于每个区块1秒。

无状态节点在过去被认为是不切实际的,因为witness的最坏情况大小(验证访问的合约存储/账户有效性的默克尔证明),我们通过排除合约字节码的方式减少了witness的大小,并假设无状态节点可以将合约存储在其本地数据库中,对于以太坊主网而言,目前的存储大约是10GB,这是我们认为可以接受的值。

Ress是使用Reth SDK构建的,代码行数小于4K,通过重用Reth的P2P网络堆栈和“受见证”的EVM执行器(类似于zkEVM的工作方式)。我们实现了一个专门针对Ress的RLPx子协议,这是一个可选扩展,可以让Reth的状态化节点向无状态的以太坊对等体提供必要的状态数据(witness、区块、字节码)。

Ress由一个自定义的RLPx P2P子协议驱动,该协议使节点能够获取无状态验证区块所需的所有信息。

Ress下载并完全验证自上一个已最终化区块以来的所有区块。区块验证分为三步:获取状态witness,获取和持久化任何缺失的字节码,验证有效负载并在内存中计算新的状态根。实时同步的工作方式与任何其他状态化EL节点相同 - 通过Engine API的CL请求进行推进。

Ress 时序图

Ress向状态化的Reth对等体查询状态witness并执行区块,而无需在本地持有整个状态。

我们已经使用Hive测试了Ress,并且它在ethereum/engine测试套件中的大多数测试中都通过了。测试已使用ress hive适配器进行,该适配器设置了一个状态节点和一个无状态的ress节点,并将Engine API请求代理到两个节点。只有状态节点用于区块构建。

在Reth中的原生支持

Reth现在原生支持ress RLPx子协议,自v1.3.1版本起。你可以通过传递--ress.enable参数来启用它。如果你无法自己运行Reth节点,我们已托管几个公共节点,你可以手动将其添加为对等体。请在README中了解更多信息。

Ress的未来是什么?

今天我们发布Ress概念验证,以分享我们在减少L1节点要求及扩展L1和L2方面的研究进展。我们期待与社区合作,以推动执行客户端的可能性。确保在Github上为Ress仓库加星

如果你对无状态节点感兴趣,或者对Reth、或我们的其他Rust开源工具感兴趣,请联系georgios@paradigm.xyz

在问题跟踪器中见!

致谢

非常感谢piapark让项目得以启动,感谢joshie实现了hive适配器,以及感谢storm收集字节码数据。

  • 原文链接: paradigm.xyz/2025/03/sta...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Paradigm
Paradigm
Paradigm 是一家研究驱动型技术投资公司 https://www.paradigm.xyz/