Modular, contributor-friendly and blazing-fast implementation of the Ethereum protocol, in Rust
  • Rust 93.5%
  • HTML 4.7%
  • JSON-with-Comments 1.4%
Find a file
2026-05-12 21:51:42 +00:00
.cargo fix: bump stack size on Windows (#5301) 2023-11-05 17:58:29 +00:00
.config chore: check trie-debug in zepter (#23304) 2026-03-31 12:36:19 +00:00
.github bench: show per-phase status in PR comment during benchmark runs (#24158) 2026-05-12 14:52:45 +00:00
assets docs: update README for Reth 2.0 (#23424) 2026-04-10 09:25:31 +00:00
audit chore: update audit doc to v2 (#9177) 2024-06-29 05:20:27 +00:00
bin perf(reth-bench): buffer recent block hash requests (#24176) 2026-05-12 21:51:42 +00:00
crates refactor(rpc): simplify blob bundle validation (#24169) 2026-05-12 20:34:49 +00:00
docs feat(db): add balstore cache size arg (#24002) 2026-05-08 20:27:27 +00:00
etc chore: update Grafana dashboard overview.json (#24067) 2026-05-08 11:04:29 +02:00
examples feat(debug-client): support block access list payload conversion (#23989) 2026-05-12 11:56:08 +00:00
pkg/reth/debian feat: Reproducible builds and *.deb packages (#19678) 2025-11-27 11:35:22 +00:00
scripts refactor(reth-bench): make payload handling ethereum-only (#23324) 2026-04-01 12:02:42 +00:00
testing feat: add bal validation in post execution (#23496) 2026-05-04 11:38:30 +00:00
.dockerignore ci: remove PGO from CI workflows (#23405) 2026-04-10 19:17:42 +00:00
.editorconfig chore(editor): set indent size=2 for the yaml files (#8366) 2024-05-23 12:51:25 +00:00
.gitattributes fix: edit link and config (#17453) 2025-07-18 09:30:52 +00:00
.gitignore chore: use with capacity (#20670) 2025-12-29 20:35:46 +00:00
AGENTS.md chore(meta): rename CLAUDE.md to AGENTS.md, symlink CLAUDE.md to it (#23203) 2026-03-24 17:51:51 +00:00
book.toml chore: add and fix more lints, improve docs (#4765) 2023-09-25 15:46:46 +00:00
Cargo.lock feat(engine): support BAL in create_reorg_head (#24147) 2026-05-12 12:48:32 +00:00
Cargo.toml refactor(bal): use native BAL diff diagnostics (#24118) 2026-05-11 10:20:27 +00:00
CLAUDE.md chore(meta): rename CLAUDE.md to AGENTS.md, symlink CLAUDE.md to it (#23203) 2026-03-24 17:51:51 +00:00
clippy.toml chore: remove msrv from clippy.toml (#18034) 2025-08-25 15:21:23 +02:00
CONTRIBUTING.md docs: fix typos in documentation files (#20890) 2026-01-09 18:41:37 +01:00
Cross.toml chore: fix riscv build for rocksdb (#22153) 2026-02-13 00:09:14 +00:00
deny.toml chore(deps): bump hickory-resolver (#23914) 2026-05-01 16:47:26 +00:00
docker-bake.hcl ci(hive): tag Reth image correctly and update fixtures (#23765) 2026-04-28 09:59:55 +00:00
Dockerfile ci: harden supply chain across all workflows (#23785) 2026-04-28 15:44:05 +00:00
Dockerfile.depot ci: remove PGO from CI workflows (#23405) 2026-04-10 19:17:42 +00:00
Dockerfile.reproducible feat: Reproducible builds and *.deb packages (#19678) 2025-11-27 11:35:22 +00:00
dprint.json add format checker to .toml (#13968) 2025-01-28 12:20:58 +00:00
flake.lock chore(nix): update nixpkgs to 25.11 and refresh all flake inputs (#23342) 2026-04-02 09:33:01 +00:00
flake.nix chore(nix): update nixpkgs to 25.11 and refresh all flake inputs (#23342) 2026-04-02 09:33:01 +00:00
funding.json chore: add rpgf json 2024-09-06 17:43:51 -07:00
HARDFORK-CHECKLIST.md chore: remove op-reth from repository (#21532) 2026-02-06 11:18:12 +00:00
LICENSE-APACHE chore: bump license year to 2026 (#20704) 2026-01-03 10:45:34 +00:00
LICENSE-MIT chore: bump license year to 2026 (#20704) 2026-01-03 10:45:34 +00:00
Makefile chore: default to min-trace-logs (#23851) 2026-04-30 12:12:26 +00:00
README.md docs: update README for Reth 2.0 (#23424) 2026-04-10 09:25:31 +00:00
rustfmt.toml chore: bump rust to edition 2024 (#18692) 2025-09-25 12:18:51 +00:00
SECURITY.md docs: update security contact (#24165) 2026-05-12 20:09:03 +00:00
typos.toml chore: allow "writeable" in typos config (#23332) 2026-04-01 17:26:25 +02:00

reth

bench status CI status cargo-lint status Telegram Chat

Modular, contributor-friendly and blazing-fast implementation of the Ethereum protocol

Install | User Docs | Developer Docs | Crate Docs

What is Reth?

Reth (short for Rust Ethereum, pronunciation) is a production-ready Ethereum execution layer client focused on modularity, performance, and user-friendliness. Reth is compatible with all Ethereum Consensus Layer (CL) implementations that support the Engine API. It is built and driven forward by Paradigm, and is licensed under the Apache and MIT licenses.

Note: OP-Reth has moved to ethereum-optimism/optimism. Git history has been preserved.

Goals

  1. Modularity: Every component is built to be used as a library: well-tested, documented and benchmarked. Import crates, mix and match, and innovate on top of them. Learn more about the project's components here.
  2. Performance: Built with Rust, Alloy, revm, and Foundry — battle-tested and optimized for speed. Check the ethPandaOps Lab Dashboard for a third-party comparison against other Ethereum clients. Here's what that looks like in practice, measured with reth-bench on Ethereum Mainnet:

  1. Free for anyone to use any way they want: Apache/MIT licensed, no business license restrictions.
  2. Client Diversity: More client implementations make Ethereum more antifragile.
  3. Support as many EVM chains as possible: Reth can sync Ethereum and other EVM chains. If you're building one, reach out.
  4. Configurability: Profiles for different use cases — from high-performance RPC operators to hobbyists on consumer hardware.

Status

Reth is production ready, and suitable for usage in mission-critical environments such as staking or high-uptime services. We also actively recommend professional node operators to switch to Reth in production for performance and cost reasons in use cases where high performance with great margins is required such as RPC, MEV, Indexing, Simulations, and P2P activities.

  • We released Reth 2.0 in April 2026. See the release notes and blog post.
  • We released 1.0 "production-ready" stable Reth in June 2024.
  • We released multiple iterative beta versions, up to beta.9 on Monday June 3, 2024, the last beta release.
  • We released beta on Monday March 4, 2024, our first breaking change to the database model, providing faster query speed, smaller database footprint, and allowing "history" to be mounted on separate drives.
  • We shipped iterative improvements until the last alpha release on February 28, 2024, 0.1.0-alpha.21.
  • We initially announced 0.1.0-alpha.1 on June 20, 2023.

Storage compatibility

Storage V2 is the default for new nodes in Reth 2.0. Existing V1 nodes continue to work, but V1 support will be removed in a future release — all users are encouraged to migrate. V2 snapshots are available at snapshots.reth.rs.

For Users

See the Reth documentation for instructions on how to install and run Reth.

For Developers

Using reth as a library

You can use individual crates of reth in your project.

The crate docs can be found here.

For a general overview of the crates, see Project Layout.

Contributing

If you want to contribute, or follow along with contributor discussion, you can use our main telegram to chat with us about the development of Reth!

Building and testing

The Minimum Supported Rust Version (MSRV) of this project is 1.93.0.

See the docs for detailed instructions on how to build from source.

To fully test Reth, you will need to have Geth installed, but it is possible to run a subset of tests without Geth.

First, clone the repository:

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

Next, run the tests:

cargo nextest run --workspace

# Run the Ethereum Foundation tests
make ef-tests

We highly recommend using cargo nextest to speed up testing. Using cargo test to run tests may work fine, but this is not tested and does not support more advanced features like retries for spurious failures.

Note

Some tests use random number generators to generate test data. If you want to use a deterministic seed, you can set the SEED environment variable.

Getting Help

If you have any questions, first see if the answer to your question can be found in the docs.

If the answer is not there:

Security

See SECURITY.md.

Acknowledgements

Reth is a new implementation of the Ethereum protocol. In the process of developing the node we investigated the design decisions other nodes have made to understand what is done well, what is not, and where we can improve the status quo.

None of this would have been possible without them, so big shoutout to the teams below:

  • Geth: We would like to express our heartfelt gratitude to the go-ethereum team for their outstanding contributions to Ethereum over the years. Their tireless efforts and dedication have helped to shape the Ethereum ecosystem and make it the vibrant and innovative community it is today. Thank you for your hard work and commitment to the project.
  • Erigon (fka Turbo-Geth): Erigon pioneered the "Staged Sync" architecture that Reth is using, as well as introduced MDBX as the database of choice. We thank Erigon for pushing the state of the art research on the performance limits of Ethereum nodes.
  • Akula: Reth uses forks of the Apache versions of Akula's MDBX Bindings, FastRLP and ECIES. Given that these packages were already released under the Apache License, and they implement standardized solutions, we decided not to reimplement them to iterate faster. We thank the Akula team for their contributions to the Rust Ethereum ecosystem and for publishing these packages.

Warning

The NippyJar and Compact encoding formats and their implementations are designed for storing and retrieving data internally. They are not hardened to safely read potentially malicious data.