Introduction
Reth is a next-generation Ethereum execution client written in Rust, developed by Paradigm. It aims to be the most performant and modular client for running Ethereum nodes. Reth leverages Rust's safety guarantees and concurrency model to deliver fast sync speeds, low resource usage, and a codebase that is easy for contributors to extend.
What Reth Does
- Syncs Ethereum mainnet and testnets as a full or archive execution client
- Pairs with any consensus client (Lighthouse, Prysm, Teku) via the Engine API
- Exposes standard JSON-RPC, WebSocket, and IPC endpoints for DApp backends
- Provides modular crate architecture so EVM, p2p, and storage layers can be reused independently
- Supports custom ExEx (Execution Extensions) for building indexers and analytics on top of the node
Architecture Overview
Reth is composed of dozens of Rust crates organized by responsibility: reth-primitives for types, reth-provider for database access, reth-network for devp2p networking, reth-evm for EVM execution via revm, and reth-rpc for the API layer. The database backend uses MDBX for fast state reads. The pipeline architecture processes stages (headers, bodies, execution, hashing) in sequence during sync, then switches to live mode. ExEx hooks let developers react to every block without forking the client.
Self-Hosting & Configuration
- Build from source with
cargo install --path bin/rethor pull the official Docker image - Configure via CLI flags or a TOML config file for network, database path, and RPC settings
- Enable
--fullfor full node or--debug.tipfor archive access - Set up an ExEx to stream new blocks, transactions, or state changes to external systems
- Pair with a consensus client and configure JWT authentication for the Engine API
Key Features
- Parallel pipeline stages reduce initial sync time compared to older clients
- ExEx (Execution Extensions) enable custom on-chain data processing without forking
- Modular crate design lets developers embed EVM or networking into their own Rust projects
- Memory-mapped storage via MDBX keeps disk I/O efficient for large state
- Active development with frequent releases and a contributor-friendly codebase
Comparison with Similar Tools
- Geth — The reference Go implementation with the largest operator base; Reth offers better modularity and Rust performance
- Erigon — Go client optimized for disk efficiency; Reth provides a more modular crate architecture
- Nethermind — .NET client with built-in analytics; Reth targets the Rust ecosystem
- Besu — Java client for enterprise use; Reth focuses on public network performance and developer extensibility
FAQ
Q: Is Reth ready for production mainnet use? A: Reth reached stable release status and is used in production by multiple infrastructure operators. Always verify compatibility with your consensus client.
Q: How does Reth compare to Geth on sync speed? A: Reth's parallel pipeline and Rust performance generally result in faster initial sync times, especially on modern hardware with NVMe storage.
Q: What is an ExEx? A: Execution Extensions are hooks that receive every block's execution output in real-time, allowing developers to build indexers, bridges, or analytics without modifying the client.
Q: Can I use Reth as a library?
A: Yes. Individual crates like reth-evm and reth-provider can be imported into your own Rust project.