Skip to content

Reth

Reth (Rust Ethereum) is a next-generation Ethereum client developed by Paradigm, written in Rust. It aims to provide exceptional performance, memory efficiency, and modularity while maintaining safety and correctness through Rust’s ownership system.


┌─────────────────────────────────────────────────────────────────────────────┐
│ RETH OVERVIEW │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ RETH │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Speed │ │ Safety │ │ Modularity │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ - Rust │ │ - Memory │ │ - Modular │ │ │
│ │ │ (LLVM) │ │ safety │ │ design │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ - Zero-Copy│ │ - No GC │ │ - Pluggable│ │ │
│ │ │ design │ │ - Thread │ │ engines │ │ │
│ │ │ │ │ safety │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ Key Goals: │
│ ━━━━━━━━━━ │
│ • Maximize throughput and reduce latency │
│ • Modular architecture for flexibility │
│ • Memory safety without garbage collection │
│ • Developer-friendly and well-documented │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
FeatureBenefit
Zero-CopyProcess data without copying
Memory SafetyNo buffer overflows or null pointers
No GCConsistent, predictable performance
ConcurrencySafe multi-threading
LLVM BackendExcellent compiler optimizations

Terminal window
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install system dependencies (Ubuntu)
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libssl-dev libclang-dev clang
# Verify installation
rustc --version
cargo --version
Terminal window
# Download pre-built binary
wget https://github.com/paradigmxyz/reth/releases/latest/download/reth-x86_64-unknown-linux-gnu.tar.gz
# Extract
tar -xzf reth-x86_64-unknown-linux-gnu.tar.gz
# Install
sudo cp reth /usr/local/bin/
# Verify
reth --version
Terminal window
# Clone repository
git clone https://github.com/paradigmxyz/reth.git
cd reth
# Build with optimizations
cargo build --release
# Install
cargo install --path . --locked
Terminal window
# Pull image
docker pull ghcr.io/paradigmxyz/reth
# Run
docker run -d \
--name reth-node \
-p 30303:30303 \
-p 8545:8545 \
-v reth-data:/data \
ghcr.io/paradigmxyz/reth \
node --chain mainnet --http --http.addr 0.0.0.0 --http.port 8545

Terminal window
# Initialize data directory
reth init
# Start on mainnet
reth node --chain mainnet
# Start on testnet
reth node --chain goerli
Terminal window
# Full-featured RPC node
reth node \
--chain mainnet \
--datadir /data/reth \
--http \
--http.addr 0.0.0.0 \
--http.port 8545 \
--http.api eth,net,web3,debug,trace \
--http.corsdomain "*" \
--ws \
--ws.addr 0.0.0.0 \
--ws.port 8546 \
--ws.api eth,net,web3 \
--ws.origins "*" \
--discovery \
--discovery.port 30303 \
--metrics 0.0.0.0:9000 \
--gpo.blocks 10000 \
--gpo.ignore Pivot 2

###.toml Configuration

reth.toml
[chain]
name = "mainnet"
genesis = "mainnet"
[node]
datadir = "/data/reth"
http = true
http.addr = "0.0.0.0"
http.port = 8545
http.api = ["eth", "net", "web3", "debug", "trace"]
ws = true
ws.addr = "0.0.0.0"
ws.port = 8546
[metrics]
addr = "0.0.0.0"
port = 9000
[p2p]
discovery = true
port = 30303

┌─────────────────────────────────────────────────────────────────┐
│ RETH PERFORMANCE ARCHITECTURE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ STORAGE LAYER │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ MDBX Database (Memory-Mapped) │ │ │
│ │ │ - Excellent read performance │ │ │
│ │ │ - Memory-mapped I/O │ │ │
│ │ │ - Optimized for SSD │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ EXECUTION LAYER │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ Rust EVM (revm) │ │ │
│ │ │ - Written in pure Rust │ │ │
│ │ │ - High performance execution │ │ │
│ │ │ - Detailed tracing support │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ NETWORKING │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ RLPx Protocol │ │ │
│ │ │ - Efficient encoding │ │ │
│ │ │ - Discv5 discovery │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ RETH MODULES │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Core Components (can be used independently): │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ • reth-db: Database abstraction and MDBX implementation │
│ • reth-evm: Ethereum Virtual Machine implementation │
│ • reth-network: P2P networking │
│ • reth-rpc: RPC server implementation │
│ • reth-tasks: Async task runtime │
│ • reth-consensus: Consensus mechanism implementations │
│ • reth-stages: Sync pipeline stages │
│ │
│ Use Cases: │
│ ━━━━━━━━━ │
│ • Full Ethereum node │
│ • Light node │
│ • Archive node │
│ • Custom EVM tooling │
│ │
└─────────────────────────────────────────────────────────────────┘

Terminal window
# Full sync (most thorough)
reth node --chain mainnet --sync-mode full
# Snap sync (default - fastest)
reth node --chain mainnet --sync-mode snap
# Initial state sync
reth node --chain mainnet --sync-mode initial
# Watch sync
reth node --chain mainnet --sync-mode watch
Terminal window
# Import blocks
reth import --path /path/to/blocks.rlp --chain mainnet
# Export blocks
reth export --chain mainnet --block 15000000-16000000
# Export state
reth export-state --block 16000000 --output /path/to/state.json

QuestionAnswer
What is Reth?Ethereum client written in Rust by Paradigm
Why is Reth fast?Rust’s performance, zero-copy design, no garbage collection
Is Reth production-ready?It’s in beta, actively developed
What database does Reth use?MDBX (Memory-Mapped Database)
Does Reth support snap sync?Yes, it’s the default sync mode

  • Reth is a next-gen Ethereum client in Rust
  • Focus on performance and modularity
  • Still in development but shows promising results
  • Excellent for performance-critical applications
  • Good alternative to Geth/Erigon for certain use cases

In Chapter 12: Node Synchronization Modes, we’ll explore different ways to sync your node with the network.


Last Updated: 2026-02-20