本文介绍了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年我们观察到,状态增长不太可能在短期内成为去中心化的瓶颈,这使得许多节点开发者在短期内对无状态性不那么兴奋。也许有一种新的方式来看待事物?
传统上,无状态性被描述为一种“防御性”特性,但我们认为也可以有“进攻性”的利用方式,特别是:
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向状态化的Reth对等体查询状态witness并执行区块,而无需在本地持有整个状态。
我们已经使用Hive测试了Ress,并且它在ethereum/engine
测试套件中的大多数测试中都通过了。测试已使用ress hive适配器进行,该适配器设置了一个状态节点和一个无状态的ress节点,并将Engine API请求代理到两个节点。只有状态节点用于区块构建。
Reth现在原生支持ress
RLPx子协议,自v1.3.1
版本起。你可以通过传递--ress.enable
参数来启用它。如果你无法自己运行Reth节点,我们已托管几个公共节点,你可以手动将其添加为对等体。请在README中了解更多信息。
今天我们发布Ress概念验证,以分享我们在减少L1节点要求及扩展L1和L2方面的研究进展。我们期待与社区合作,以推动执行客户端的可能性。确保在Github上为Ress仓库加星!
如果你对无状态节点感兴趣,或者对Reth、或我们的其他Rust开源工具感兴趣,请联系georgios@paradigm.xyz。
在问题跟踪器中见!
非常感谢piapark让项目得以启动,感谢joshie实现了hive适配器,以及感谢storm收集字节码数据。
- 原文链接: paradigm.xyz/2025/03/sta...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!