Reth是由Paradigm开发的Rust Ethereum执行层客户端,旨在提供用户友好、模块化且高效的全节点实现,支持多种用户需求。该项目关注于提高以太坊客户端的多样性和稳定性,并希望通过创新和贡献来推动以太坊生态系统的发展。
我们很高兴地宣布 Reth,这是由 Paradigm 构建的一个免费的开源以太坊执行层客户端。 在这篇文章中,我们将讨论为什么我们会创建 Reth,以及未来对我们的期望。
Reth(Rust Ethereum 的缩写, 发音)是一个新的以太坊全节点实现,专注于用户友好、模块化、快速和高效。Reth 是一个与所有支持 Engine API 的以太坊共识客户端实现兼容的执行客户端。作为一个完整的以太坊节点,Reth 将允许用户从创世时代同步完整的以太坊区块链,并在同步后与其互动(如果处于归档模式,也包括其历史状态)。
我们构建 Reth 是为了适应广泛的用户群体,包括权益证明用户、爱好者、RPC 节点操作员、跨链桥、MEV 搜索者,甚至是 L2(例如 Optimism/Arbitrum)或其他以太坊相关项目(例如 Polygon、BSC、Avalanche、Fantom 等)。这些用户的需求往往非常多样(例如,爱好者和权益证明用户更希望节点能够在廉价硬件上运行,而 RPC 节点操作员则可能拥有昂贵的磁盘和云快照)。Reth 并不试图一次性满足所有需求。相反,我们致力于创建一个可配置节点,从而让用户根据自己的需求探索权衡空间。
Reth 仍在不断发展中,可能会经常更新。代码尚未经过审计,不应在生产环境中使用。然而,为了透明和与以太坊的价值观一致,我们今天开放源代码并分享我们的愿景。
代码可在 GitHub 上以 Apache/MIT 许可证免费使用,任何人都可以在没有任何附加条件的情况下使用。我们鼓励社区进行分叉,贡献文档、问题、拉取请求、提问或甚至尝试破坏它。我们迫不及待地想看看你们的想法!
话虽如此,让我们深入探讨。
在 Paradigm,我们一直在寻找推动前沿的方法。通过 ethers-rs、Foundry 和 revm,我们构建了一套成熟的工具来操作 EVM。于是我们想:“接下来是什么?” 答案就是 Reth。
通过 Reth,我们希望:
我们是以太坊生态系统的实力用户,并且一直与实力用户合作。所以我们希望构建一个既有性能又能进行专家级调试的节点。
Reth 的目标是在各个维度(CPU/内存/带宽/磁盘空间)提供一流的性能,或提供可配置的配置文件,让用户能够探索每种模式之间的权衡(磁盘空间与 延迟/吞吐量)。
我们正在构建 Reth,使每个组件均可作为库在用户的技术栈中使用。例如,一个索引公司可以使用超快速的数据库绑定来提高其表的重新索引性能。或者一个 ERC4337 包装器可以利用 EVM 和数据库绑定为钱包用户提供模拟服务。
通过 Reth,我们希望节点栈的每个组件能够多次解耦和再捆绑,让实力用户探索所需功能的高效边界。我们也希望在设计和代码或 FFI 绑定方面(如果你想从任何语言构建与 Rust 的绑定,请联系我们)采用最优成分,并将其上游到其他实现中。
当没有任何客户端的市场份额超过 66% 时,以太坊协议从客户端多样性中获益。这有助于跨客户端测试实现的正确性和以太坊协议的去中心化开发。它还避免了在存在软件错误时最终确定区块等情形。
通过 Reth,我们希望增加生态系统中客户端的数量,以促进网络的健康,同时保持对共识关键采用的审慎。
多年来,以太坊协议和以太坊节点代码库经历了显著演变,仍在不断发展。EIP1559、合并和 EIP4844 等变更凸显了节点层的创新必须以迭代方式发生,所有测试、基准测试和文档都应该达到最高标准。
此外,社区期望核心开发者维护网络并保持其健康。他们还期待核心开发者在紧迫的时间框架内推出来自研究方向的创新,尽管有时范围或边缘案例不明确。我们希望以太坊协议能够持续创新,并希望以太坊节点保持稳健,同时我们也意识到这可能会产生一定的紧张关系。
通过 Reth,我们将和大家一起深入建设,并希望能够减轻核心开发者的一些压力。我们也希望通过新的研究、代码和架构推动前沿,并为以太坊路线图上即将到来的重要里程碑作出贡献。
作为开源开发者,我们审视了市场上每个客户端的实现,并全面考虑是对现有客户端进行贡献还是分叉。不幸的是,我们无法找到能够满足所有需求的现成解决方案,也无法合理地使其满足我们。
因此,我们决定从零开始构建 Reth,遵循以下标准:
trace_call
/ trace_callMany
等)以及在链顶和历史上的操作码追踪( debug_traceTransaction
)。如果未来出现新的架构或技术栈性能优于当前的最佳实践,我们持开放态度进行修改。我们希望鼓励社区向我们提出他们希望在 Reth 中看到的想法。毕竟,我们是热衷于试验者,这是一种为探索而构建的软件。
Reth 仍在发展中,始于 2022 年 9 月 20 日。
在短短三个月内,我们已经构建了以下内容:
我们尚未完全实现或测试以下内容:
trace_*
,因此不应是个大工程)我们预计将在 2023 年第一季度初实现从创世的完整同步。与此同时,我们正在努力确保每个代码库 crate 的良好文档、良好的抽象和测试 - 请参见此处获取项目布局。
在开发节点的过程中,我们对以太坊协议的工作方式和节点的构建有了很多了解。为了促进知识转移,并使其他人更容易了解节点,我们将发布 Reth Book,这是一份关于如何成为以太坊节点开发者的教育资源。
我们也很高兴开始实验,首先将研究在随机读写下的磁盘 I/O 问题。磁盘 I/O 实际上是有关性能的每次讨论中的最低共同分母,解决这个问题将为整个节点操作的性能提升和成本节约解锁潜力。
我们仍在探索中,但我们希望回答对研究感兴趣的人提出的一些问题:
如果这些问题是你能帮助我们的部分,请联系我们。
在开发节点的过程中,我们考察了其他节点的设计决策,以了解哪些做得好,哪些不足,以及我们可以如何改进现状。
特别感谢以下团队:
我们还感谢 Nethermind 和 Besu 团队对客户端多样性的贡献,并希望未来找到合作的机会。
总结
Paradigm 正在构建 Reth,一个 Rust Ethereum 执行层。Reth 是以太坊协议的全新全节点实现,具有 Apache/MIT 许可证,专注于对贡献者友好、模块化和性能。
我们还对我们的代码库感到兴奋,它可以作为新 Rust 开发者的孵化器。Rust 是一个在系统、数据库和网络工程领域的破冰工具。我们将以太坊视为一个高保障的操作系统,需要抵御最大的对手。没有比 Rust 更好的工具包来实现这一点。
如果你是现有或有抱负的 Rust 使用者、权益证明用户、爱好者、专业节点基础设施操作员、MEV 搜索者、以太坊 L1/L2 开发者、数据分析师,或仅仅对贡献感兴趣,请通过电子邮件联系 georgios [at] paradigm [dot] xyz 或加入位于 Reth repo 的 README 中的聊天室。
我们迫不及待地想听听你希望在 Reth 的基础设施和库上贡献和构建的事情。
感谢那些已经为 Reth 的设计、文档和代码作出贡献的人:Matt Seitz、Oliver Nordbjerg、Dan Cline、Dragan Rakita、Roman Krasiuk、joshieDo、Andrew Kirillov、Loren Siebert、0xKitsune、team LambdaClass 和 Brock Elmore。若没有他们对 Rust Ethereum 生态系统(包括 ethers-rs、revm、Foundry,以及现在的 Reth)的不懈贡献,这一切都不可能实现。感谢 Achal Srinivasan 设计 Reth 的视觉效果。
最后,最衷心的感谢所有以太坊核心开发者,让以太坊变得如此伟大;我们很兴奋能够在这条漫长的旅程中与你一起前行。
在 Github 上见。
向 东科、丹尼·瑞安、贾斯廷·德雷克、列夫·利夫涅夫、利亚姆·霍恩、保罗·哈乌纳、罗伯特·米勒、snoopy_mev 和蒂姆·贝伊科表示感谢,他们为本文早期草稿提供了反馈。
免责声明:文中提及的任何投资组合公司仅为示例目的提及,并不代表 Paradigm 所做的所有投资。
- 原文链接: paradigm.xyz/2022/12/ret...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!