Reth

Installing Reth for extreme performance and sync speed.

Reth

Reth (Rust Ethereum) is a new, modular execution client written in Rust. It is developed by Paradigm and is famous for its incredible sync speed and low storage requirements.

🛡️ Role: Reth is the Performance Choice. It can fully sync a mainnet archive node in days (not weeks) and uses significantly less storage than Geth or Erigon.

Note: By default, Reth runs as an Archive Node. If you want a standard Full Node (to save space), you must add the --full flag.


1. Install Dependencies

Reth requires a few system libraries to run efficient database operations.

Bash

# Update repositories
sudo apt update

# Install required libraries
sudo apt install -y libclang-dev pkg-config build-essential libssl-dev

2. Download & Install

We will download the latest pre-built binary from the official Paradigm repository.

A. Create the Application Directory

Bash

# Create a folder for the binary
sudo mkdir -p /usr/local/lib/reth

# Download the latest Linux release (Check https://github.com/paradigmxyz/reth/releases)
# Example for v1.1.0
sudo wget https://github.com/paradigmxyz/reth/releases/download/v1.1.0/reth-v1.1.0-x86_64-unknown-linux-gnu.tar.gz -O reth.tar.gz

# Extract the archive
sudo tar -xvzf reth.tar.gz -C /usr/local/lib/reth

# Cleanup
rm reth.tar.gz

B. Set Permissions Ensure the ethereum user owns the directory and the binary is executable.

Bash

sudo chown -R ethereum:ethereum /usr/local/lib/reth
sudo chmod +x /usr/local/lib/reth/reth

3. Configure Systemd Service

We will configure Reth to run as a background service.

💾 Storage Mode:

  • Archive Node (Default): Stores everything. ~2.5TB. (No flag needed).

  • Full Node: Prunes historical data. ~1.2TB. (Add --full flag).

Create the service file:

Bash

sudo nano /etc/systemd/system/reth.service

Paste the following configuration:

Ini, TOML

[Unit]
Description=Reth Execution Client
After=network.target

[Service]
User=ethereum
Group=ethereum
Type=simple
Restart=always
RestartSec=5

# Execution Command
ExecStart=/usr/local/lib/reth/reth node \
  --chain mainnet \
  --datadir /home/ethereum/execution \
  --full \
  --authrpc.jwtsecret /home/ethereum/jwt/jwt.hex \
  --authrpc.addr 127.0.0.1 \
  --authrpc.port 8551 \
  --http \
  --http.addr 0.0.0.0 \
  --http.port 8545 \
  --http.api eth,net,web3,debug,trace

# Resource Limits
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

🔍 Flag Explanation:

  • --full: Runs as a Full Node (Pruned). Remove this line if you want an Archive Node.

  • --http.api: Reth supports advanced debug and trace APIs out of the box with very low overhead.


4. Start the Service

Reload the systemd daemon and start the node.

Bash

# Reload systemd configuration
sudo systemctl daemon-reload

# Enable Reth to start on boot
sudo systemctl enable reth

# Start the service
sudo systemctl start reth

5. Verify Status

Check the logs. Reth has a very clean log output.

Bash

sudo journalctl -fu reth

Expected Output:

  1. Pipeline: You will see "Stages" similar to Erigon (Headers, Bodies, Sender Recovery, Execution).

  2. Speed: Reth prints its sync speed (e.g., 12.5 Mgas/s).

  3. Waiting: It will eventually wait for the Consensus Client.

Last updated