Skip to content

Snapshots

Restoring from a snapshot drastically reduces initial Base node sync time. Snapshots are refreshed regularly.

These steps assume you are inside the cloned node directory (the one containing docker-compose.yml).

  1. Install aria2c. Snapshot downloads rely on aria2c — a resumable downloader that gracefully recovers from the periodic connection drops Cloudflare imposes on long transfers. If it isn’t already on your machine:

    Terminal window
    # macOS
    brew install aria2
    # Ubuntu / Debian
    sudo apt-get install aria2
  2. Prepare the data directory.

    • Before launching Docker for the first time, create the host directory that will be mapped into the container. The path must match the volumes entry in docker-compose.yml:

      Terminal window
      mkdir ./reth-data
    • If a previous run left an existing data directory, stop the node first (docker compose down), wipe the contents (for example, rm -rf ./reth-data/*), then continue.

  3. Download the snapshot. Pick the row that matches your network and client, and run the command from inside the node directory.

    NetworkSnapshot typeDownload command
    TestnetArchive (recommended)aria2c -c -x 16 -s 16 "https://sepolia-reth-archive-snapshots.base.org/$(curl -s https://sepolia-reth-archive-snapshots.base.org/latest)"
    TestnetPrunedaria2c -c -x 16 -s 16 "https://sepolia-reth-pruned-snapshots.base.org/$(curl -s https://sepolia-reth-pruned-snapshots.base.org/latest)"
    MainnetArchive (recommended)aria2c -c -x 16 -s 16 "https://mainnet-reth-archive-snapshots.base.org/$(curl -s https://mainnet-reth-archive-snapshots.base.org/latest)"
    MainnetPrunedaria2c -c -x 16 -s 16 "https://mainnet-reth-pruned-snapshots.base.org/$(curl -s https://mainnet-reth-pruned-snapshots.base.org/latest)"
  4. Extract the snapshot. Replace snapshot-filename with the actual download:

    Terminal window
    tar -xzvf <snapshot-filename.tar.gz>
    # For .tar.zst
    tar -I zstd -xvf <snapshot-filename.tar.zst>
  5. Move the data into place. Extraction typically produces a reth/ directory.

    • Move its contents into the data directory created in step 2:

      Terminal window
      mv ./reth/* ./reth-data/
      rm -rf ./reth # remove the now-empty extracted folder
    • The chain data subdirectories (chaindata, nodes, segments, etc.) must sit directly under ./reth-data — not in a nested folder.

  6. Start the node. Return to the root of your Base node folder and bring it up:

    Terminal window
    cd ..
    docker compose up --build

    The node should pick up syncing from the last block recorded in the snapshot.

  7. Verify and clean up. Tail the logs (docker compose logs -f <service_name>) or use the sync monitoring command to confirm the node starts at the snapshot’s block height. Once verified, delete the downloaded archive (.tar.gz) to reclaim disk space.

If you run the historical proofs ExEx, proof database snapshots are available so you can skip the 24-48 hour backfill.

NetworkDownload command
Testnetaria2c -c -x 16 -s 16 "https://sepolia-reth-proofs-snapshots.base.org/$(curl -s https://sepolia-reth-proofs-snapshots.base.org/latest)"
Mainnetaria2c -c -x 16 -s 16 "https://mainnet-reth-proofs-snapshots.base.org/$(curl -s https://mainnet-reth-proofs-snapshots.base.org/latest)"

The restore process matches the steps above — follow Restoring from a snapshot using this archive.

Why does Base ship a Pruned snapshot instead of a Full node snapshot?

In Reth, “full” is not a separate node type — it is just a pruned node configured with a specific preset. Reth’s --full preset keeps the most recent 10,064 blocks, which is roughly 1.4 days on Ethereum but only about 5-6 hours on Base because of the faster block cadence.

Base’s pruned snapshot instead uses a 31-day rolling retention window. If you want a smaller on-disk footprint, you can override reth.toml to match the 10,064-block preset.