ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

reth

bench status CI status cargo-lint status Telegram Chat

模块化、对贡献者友好且极速的以太坊协议实现

安装 | 用户文档 | 开发者文档 | Crate 文档

什么是 Reth?

Reth(Rust Ethereum 的缩写,发音)是一个生产就绪的以太坊执行层客户端,专注于模块化、性能和用户友好性。Reth 兼容所有支持 Engine API 的以太坊共识层(CL)实现。它由 Paradigm 构建并推动发展,并采用 Apache 和 MIT 许可证授权。

注意: OP-Reth 已迁移至 ethereum-optimism/optimism。Git 历史记录已保留。

目标

  1. 模块化:每个组件都旨在作为库使用:经过充分测试、文档完善且经过基准测试。导入 crate,混合搭配,并在此基础上进行创新。了解更多关于项目组件的信息,请参见此处
  2. 性能:使用 Rust、AlloyrevmFoundry 构建——久经考验且针对速度进行了优化。查看 ethPandaOps Lab Dashboard 以获取与其他以太坊客户端的第三方对比。 以下是其在以太坊主网上的实际表现:

  1. 任何人可以任意方式使用:采用 Apache/MIT 许可证,无商业许可限制。
  2. 客户端多样性:更多的客户端实现使以太坊更具反脆弱性。
  3. 尽可能支持多条 EVM 链:Reth 可以同步以太坊和其他 EVM 链。如果您正在构建一条,请联系我们。
  4. 可配置性:针对不同使用场景的配置档案——从高性能 RPC 运营者到使用消费级硬件的爱好者。

状态

Reth 已具备生产环境就绪能力,适用于质押或高可用性服务等关键任务环境。我们还积极建议专业节点运营者在需要高性能且拥有较大余量的使用场景中(如 RPC、MEV、索引、模拟和 P2P 活动),出于性能和成本原因在生产环境中切换到 Reth。

  • 我们于 2026 年 4 月发布了 Reth 2.0。请参阅发布说明博客文章
  • 我们于 2024 年 6 月发布了 1.0“生产就绪”稳定版 Reth。
  • 我们发布了多个迭代 beta 版本,直至 2024 年 6 月 3 日(周一)的 beta.9,这是最后一个 beta 版本。
  • 我们于 2024 年 3 月 4 日(周一)发布了 beta,这是对数据库模型的首次破坏性变更,提供了更快的查询速度、更小的数据库占用空间,并允许将“历史”挂载到单独的驱动器上。
  • 我们持续进行迭代改进,直至 2024 年 2 月 28 日的最后一个 alpha 版本 0.1.0-alpha.21
  • 我们于 2023 年 6 月 20 日最初宣布0.1.0-alpha.1

存储兼容性

Storage V2 是 Reth 2.0 中新节点的默认设置。现有的 V1 节点继续可用,但 V1 支持将在未来版本中移除——鼓励所有用户进行迁移。V2 快照可在 snapshots.reth.rs 获取。

面向用户

请参阅 Reth 文档] 了解如何安装和运行 Reth 的说明。

面向开发者

将 reth 作为库使用

您可以在项目中使用 reth 的各个 crate。

crate 文档可在 此处] 找到。

有关 crate 的总体概览,请参阅 项目布局]。

贡献

如果您想做出贡献,或参与贡献者讨论,您可以使用我们的 主 Telegram 频道] 与我们讨论 Reth 的开发!

构建和测试

本项目的最低支持 Rust 版本 (MSRV) 为 1.95。

请参阅文档以获取有关如何 从源码构建] 的详细说明。

要全面测试 Reth,您需要 安装 Geth],但也可以在不使用 Geth 的情况下运行部分测试。

首先,克隆该仓库:

git clone https://github.com/paradigmxyz/reth
cd reth

接下来,运行测试:

cargo nextest run --workspace

# Run the Ethereum Foundation tests
make ef-tests

我们强烈建议使用 cargo nextest 来加速测试。 使用 cargo test 运行测试可能运行正常,但此方法未经测试,且不支持诸如针对虚假失败的重试等高级功能。

注意

某些测试使用随机数生成器来生成测试数据。如果您想使用确定性种子,可以设置 SEED 环境变量。

获取帮助

如果您有任何问题,请先查看 docs 中是否包含您问题的答案。

如果未找到答案:

安全

参见 SECURITY.md

致谢

Reth 是以太坊协议的新实现。在开发节点的过程中,我们研究了其他节点所做的设计决策,以了解哪些做得好,哪些做得不好,以及我们可以在哪些方面改进现状。

如果没有他们,这一切都不可能实现,因此特别感谢以下团队:

  • Geth: 我们衷心感谢 go-ethereum 团队多年来对 Ethereum 的杰出贡献。他们的不懈努力和奉献精神帮助塑造了 Ethereum 生态系统,使其成为如今充满活力的创新社区。感谢你们为该项目付出的辛勤工作和承诺。
  • Erigon (fka Turbo-Geth): Erigon 开创了 Reth 正在使用的 "Staged Sync" 架构,并 引入了 MDBX 作为首选数据库。我们感谢 Erigon 在推进 Ethereum 节点性能极限的最前沿研究方面所做的贡献。
  • Akula: Reth 使用了 Akula 的 MDBX BindingsFastRLPECIES 的 Apache 版本分支。鉴于这些包已经以 Apache 许可证发布,并且实现了标准化解决方案,我们决定不重新实现它们,以便更快地迭代。我们感谢 Akula 团队对 Rust Ethereum 生态系统的贡献以及发布这些包。
  • GMP: 当使用 gmp 功能构建时,Reth 通过 gmp-mpfr-sys crate 使用 GNU 多精度算术库。GMP 以 LGPL-3.0-or-later 或 GPL-2.0-or-later 许可证分发,相应的许可证文本包含在 LICENSES 目录中。

Warning

NippyJarCompact 编码格式及其实现旨在内部存储和检索数据。它们并未针对安全读取潜在恶意数据进行加固。