paradigmxyz/reth

GitHub: paradigmxyz/reth

用 Rust 编写的高性能、模块化以太坊执行层客户端,适用于生产环境质押和高负载 RPC 服务。

Stars: 5458 | Forks: 2326

# reth [![bench status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3915a5207d231949.svg)](https://github.com/paradigmxyz/reth/actions/workflows/bench.yml) [![CI status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7efd53b3f8231950.svg)][gh-ci] [![cargo-lint status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/40b1e47b9e231950.svg)][gh-lint] [![Telegram Chat](https://img.shields.io/endpoint?color=neon&logo=telegram&label=chat&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fparadigm%5Freth)][tg-url] **模块化、对贡献者友好且极速的 Ethereum 协议实现** ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ea897bcb40231952.png) **[安装](https://paradigmxyz.github.io/reth/installation/installation.html)** | [用户文档](https://reth.rs) | [开发者文档](./docs) | [Crate 文档](https://reth.rs/docs) ## 什么是 Reth? Reth(Rust Ethereum 的缩写,[发音](https://x.com/kelvinfichter/status/1597653609411268608)) 是一个新的 Ethereum 全节点实现,专注于用户友好、高度模块化,以及快速和高效。Reth 是一个执行层 (Execution Layer, EL),兼容所有支持 [Engine API](https://github.com/ethereum/execution-apis/tree/a0d03086564ab1838b462befbc083f873dcf0c0f/src/engine) 的 Ethereum 共识层 (Consensus Layer, CL) 实现。它最初由 [Paradigm](https://paradigm.xyz/) 构建并推动,并根据 Apache 和 MIT 许可证授权。 ## 目标 作为一个完整的 Ethereum 节点,Reth 允许用户连接到 Ethereum 网络并与 Ethereum 区块链交互。这包括发送和接收交易/日志/ traces,以及访问智能合约并与之交互。构建一个成功的 Ethereum 节点需要创建一个既安全又高效的高质量实现,同时要在消费级硬件上易于使用。它还需要建立一个强大的贡献者社区,以帮助支持和改进软件。 更具体地说,我们的目标是: 1. **模块化**:Reth 的每个组件都设计为可作为库使用:经过充分测试、详尽文档记录和基准测试。我们设想开发人员会导入节点的 crate,混合搭配,并在其上进行创新。此类用例包括但不限于启动独立的 P2P 网络、直接与节点的数据库通信,或将节点“解绑”为您所需的组件。为了实现这一点,我们在 Apache/MIT 宽松许可证下授权 Reth。您可以在 [此处](./docs/repo/layout.md) 了解更多关于项目组件的信息。 2. **性能**:Reth 旨在实现快速,因此我们使用 Rust 和 [Erigon staged-sync](https://erigon.substack.com/p/erigon-stage-sync-and-control-flows) 节点架构。我们还使用了我们的 Ethereum 库(包括 [Alloy](https://github.com/alloy-rs/alloy/) 和 [revm](https://github.com/bluealloy/revm/)),这些库已通过 [Foundry](https://github.com/foundry-rs/foundry/) 进行了实战测试和优化。 3. **免费供任何人以任何方式使用**:Reth 是免费的开源软件,由社区构建,为社区服务。通过在 Apache/MIT 许可证下授权该软件,我们希望开发人员在使用它时不受商业许可证的约束,也不必考虑类似 GPL 许可证的影响。 4. **客户端多样性**:当没有节点实现占主导地位时,Ethereum 协议会变得更加反脆弱。这确保了如果出现软件错误,网络不会最终确认一个错误的区块。通过构建一个新的客户端,我们希望为 Ethereum 的反脆弱性做出贡献。 5. **支持尽可能多的 EVM 链**:我们渴望 Reth 不仅能全同步 Ethereum,还能全同步 Optimism、Polygon、BNB Smart Chain 等其他链。如果您正在从事这些项目中的任何一个,请联系我们。注意:OP-Reth 已移至 [ethereum-optimism/optimism](https://github.com/ethereum-optimism/optimism)。 6. **可配置性**:我们希望为关心快速历史查询的节点运营商解决问题,同时也为无法在大型硬件上运行的爱好者解决问题。我们还希望支持既想从创世块同步又想通过“快速同步”进行同步的团队和个人。我们设想 Reth 将具有足够的可配置性,并为每个团队面临的权衡提供可配置的“配置文件”。 ## 状态 Reth 已达到生产就绪状态,适合用于关键任务环境,如质押 (Staking) 或高可用性服务。我们还积极建议专业节点运营商在生产环境中切换到 Reth,以便在需要高性能和高利润率的用例(如 RPC、MEV、索引、模拟和 P2P 活动)中获得性能和成本优势。 更多历史背景如下: - 我们于 2024 年 6 月发布了 1.0 “生产就绪”稳定版 Reth。 - Reth 完成了与 [Sigma Prime](https://sigmaprime.io/)(Rust 共识层实现 [Lighthouse](https://github.com/sigp/lighthouse) 的开发者)的审计。可在 [此处](./audit/sigma_prime_audit_v2.pdf) 找到。 - Revm(Reth 中使用的 EVM)接受了 [Guido Vranken](https://x.com/guidovranken)(#1 [Ethereum 漏洞赏金](https://ethereum.org/en/bug-bounty)) 的审计。我们将很快公布结果。 - 我们发布了多个迭代的 beta 版本,直至 2024 年 6 月 3 日星期一的 [beta.9](https://github.com/paradigmxyz/reth/releases/tag/v0.2.0-beta.9),即最后一个 beta 版本。 - 我们于 2024 年 3 月 4 日星期一发布了 [beta](https://github.com/paradigmxyz/reth/releases/tag/v0.2.0-beta.1),这是我们对数据库模型的第一次破坏性更改,提供了更快的查询速度、更小的数据库占用空间,并允许将“历史记录”挂载到单独的驱动器上。 - 我们持续交付改进,直到 2024 年 2 月 28 日的最后一个 alpha 版本 [0.1.0-alpha.21](https://github.com/paradigmxyz/reth/releases/tag/v0.1.0-alpha.21)。 - 我们于 2023 年 6 月 20 日 [最初宣布](https://www.paradigm.xyz/2023/06/reth-alpha) 了 [0.1.0-alpha.1](https://github.com/paradigmxyz/reth/releases/tag/v0.1.0-alpha.1)。 ### 数据库兼容性 自 beta.1 起,我们没有任何破坏性的数据库更改,我们也不计划在不久的将来进行任何更改。 Reth [v0.2.0-beta.1](https://github.com/paradigmxyz/reth/releases/tag/v0.2.0-beta.1) 包含 [一组破坏性的数据库更改](https://github.com/paradigmxyz/reth/pull/5191),这使得无法使用早期版本生成的数据库文件。 如果您拥有由 Reth alpha 版本生成的数据库,您需要使用 `reth db drop` 删除它 (使用您传递给 `reth node` 的相同参数,如 `--config` 或 `--datadir`),并使用您之前使用的相同 `reth node` 命令重新同步。 ## 面向用户 请参阅 [Reth 文档](https://reth.rs/) 获取有关如何安装和运行 Reth 的说明。 ## 面向开发者 ### 将 reth 用作库 您可以在项目中使用 reth 的单个 crate。 Crate 文档可以在 [这里](https://reth.rs/docs/) 找到。 有关 crate 的一般概述,请参阅 [项目布局](./docs/repo/layout.md)。 ### 贡献 如果您想做出贡献,或关注贡献者的讨论,您可以使用我们的 [主要 Telegram](https://t.me/paradigm_reth) 与我们聊关于 Reth 的开发! - 我们的贡献者指南可以在 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 中找到。 - 请参阅我们的 [贡献者文档](./docs) 获取有关该项目的更多信息。一个好的起点是 [项目布局](./docs/repo/layout.md)。 ### 构建和测试