Skip to content

Storage V2 (Experimental)

Reth v1.11 introduces an experimental hot/cold storage architecture behind the --storage.v2 flag. It routes history indices and transaction hash lookups to RocksDB, writes changesets to static files, and drops the legacy plain state tables — resulting in significantly lower disk usage.

Disk savings

Measured at block 24,396,823 on Ethereum mainnet:

Node TypeWithout --storage.v2With --storage.v2Savings
Full1.46 TB1.02 TB-30%
Minimal449 GB224 GB-50%
Archive2.99 TB2.31 TB-23%

Quick start

Fresh sync

--storage.v2 is a genesis-initialization-only setting. You must start a fresh sync — it cannot be enabled on an existing database.

reth node \
    --storage.v2 \
    --authrpc.jwtsecret /path/to/secret

Combine with other flags as usual (--full, --minimal, --http, etc.):

reth node \
    --storage.v2 \
    --full \
    --http --http.api eth,trace \
    --authrpc.jwtsecret /path/to/secret

Using snapshots

To avoid syncing from genesis, download a pre-built snapshot from snapshots.reth.rs and start from there:

# Download and extract a v2 snapshot (see snapshots.reth.rs for available options)
reth download --chain mainnet
 
# Then start the node
reth node \
    --authrpc.jwtsecret /path/to/secret

Important caveats

  • Fresh sync required — you cannot enable --storage.v2 on an existing v1 database. If you have an existing node, you need to either resync from scratch or restore from a v2 snapshot.
  • Cannot switch back — once a database is initialized with --storage.v2, it stays that way. Switching back to v1 storage requires a full resync without the flag.
  • Experimental — the storage format may change between releases. Future upgrades could require a resync.

Further reading