Skip to content

ethpandaops/snapshotter

Repository files navigation

snapshotter

Used to create data snapshots from ethereum nodes managed by EthPandaOps.

How to use the snapshots

We currently provide data directory snapshots for Ethereum execution clients on the Sepolia and Holesky test networks. These snapshots are updated automatically every 2-3 days.

The data snapshots are packaged into a tar, compressed using zstandard.

URL naming conventions

What URL
Snapshot https://snapshots.ethpandaops.io/{{ network_name }}/{{ client_name }}/latest/snapshot.tar.zst
Block info https://snapshots.ethpandaops.io/{{ network_name }}/{{ client_name }}/latest/_snapshot_eth_getBlockByNumber.json
Client info https://snapshots.ethpandaops.io/{{ network_name }}/{{ client_name }}/latest/_snapshot_web3_clientVersion.json

Possible values:

  • network_name -> holesky, sepolia, mainnet.
  • client_name -> geth, nethermind, besu, erigon, reth

Check the tables below for all the possible combinations.

Available snapshots

Mainnet

Mainnet

Client Snapshot Block Client Version Args
Besu 📦 Download ℹ️ Block ℹ️ Client --data-storage-format=BONSAI
Erigon 📦 Download ℹ️ Block ℹ️ Client --prune=hrtc
Geth 📦 Download ℹ️ Block ℹ️ Client --state.scheme=path --cache.preimages
Nethermind 📦 Download ℹ️ Block ℹ️ Client
Reth 📦 Download ℹ️ Block ℹ️ Client

Holesky

Holesky

Client Snapshot Block Client Version Args
Besu 📦 Download ℹ️ Block ℹ️ Client --data-storage-format=BONSAI
Erigon 📦 Download ℹ️ Block ℹ️ Client --prune=hrtc
Geth 📦 Download ℹ️ Block ℹ️ Client --state.scheme=path --cache.preimages
Nethermind 📦 Download ℹ️ Block ℹ️ Client
Reth 📦 Download ℹ️ Block ℹ️ Client

Sepolia

Sepolia

Client Snapshot Block Client Version Args
Besu 📦 Download ℹ️ Block ℹ️ Client --data-storage-format=BONSAI
Erigon 📦 Download ℹ️ Block ℹ️ Client --prune=hrtc
Geth 📦 Download ℹ️ Block ℹ️ Client --state.scheme=path --cache.preimages
Nethermind 📦 Download ℹ️ Block ℹ️ Client
Reth 📦 Download ℹ️ Block ℹ️ Client

Example: Getting a Sepolia Geth data dir snapshot

Verify when the latest snapshot was taken:

# Check the latest block:
curl -s https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_eth_getBlockByNumber.json

# Or just get the block number:
printf '%d\n' $(curl -s https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_eth_getBlockByNumber.json | jq -r '.result.number')

# Or just the time when it was taken
printf '%d\n' $(curl -s https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_eth_getBlockByNumber.json | jq -r '.result.timestamp') | date

Then, also check which client version was used during the snapshot:

# Get client version. Can be important, depending on the version that you want to run.
curl -s https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_web3_clientVersion.json | jq -r '.result'

If you're happy with the version and the timestamp of the most recent snapshot, you can download it like:

# Download the whole snapshot
curl -O https://snapshots.ethpandaops.io/sepolia/geth/latest/snapshot.tar.zst

# Or... download and untar at the same time. Safes you disk space, so you don't have to store the full compressed file.
curl -s -L https://snapshots.ethpandaops.io/sepolia/geth/latest/snapshot.tar.zst | tar -I zstd -xvf - -C $PATH_TO_YOUR_GETH_DATA_DIR

# Or.. use a docker container with all the tools you need (curl, zstd, tar) and untar it on the fly
docker run --rm -it -v $PATH_TO_YOUR_GETH_DATA_DIR:/data --entrypoint "/bin/sh" alpine -c "apk add --no-cache curl tar zstd && curl -s -L https://snapshots.ethpandaops.io/sepolia/geth/latest/snapshot.tar.zst | tar -I zstd -xvf - -C /data"

About

Performing ethereum node data snapshots

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published