Skip to content

Storage V2

Reth uses the V2 hot/cold storage layout by default for new databases. This layout routes history indices and transaction hash lookups to RocksDB, writes account and storage changesets to static files, and avoids the legacy plain state tables.

For normal node operation, you do not need to pass --storage.v2; the default is already true.

Defaults

  • New databases initialize with storage V2 by default.
  • Existing databases keep the storage mode persisted in their metadata. The --storage.v2 flag does not rewrite an initialized data directory.
  • Legacy V1 storage can still be requested for a new database with --storage.v2=false.
  • Existing V1 databases can be migrated with reth db migrate-v2, restored from a V2 snapshot, or resynced from scratch.

Disk savings

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

Node TypeLegacy V1 storageV2 storageSavings
Full1.46 TB1.02 TB-30%
Minimal449 GB224 GB-50%
Archive2.99 TB2.31 TB-23%

Snapshot download sizes are compressed and change with each published snapshot. For current download sizes, use snapshots.reth.rs or reth download --list.

Quick start

Fresh sync

Start Reth normally. A new data directory uses storage V2 automatically:

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

Combine storage V2 with node modes and RPC flags as usual:

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

Use --minimal when disk usage matters more than retaining older historical RPC data:

reth node \
    --minimal \
    --authrpc.jwtsecret /path/to/secret

Using snapshots

To avoid syncing from genesis, download a pre-built snapshot from snapshots.reth.rs or the reth download command:

reth download -y
 
reth node \
    --authrpc.jwtsecret /path/to/secret

Operational notes

  • Storage mode is selected when a database is initialized. After that, Reth reads the mode from database metadata.
  • If you need to opt out for a new database, pass --storage.v2=false before the first run.
  • Storage V2 and pruning are separate controls: storage V2 changes where data is stored, while pruning decides how much historical data is retained.

Further reading