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

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

Holesky

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

Sepolia

Network Client Snapshot Block Client Version Args
Sepolia Besu 📦 Download ℹ️ Block ℹ️ Client --data-storage-format=BONSAI
Sepolia Erigon 📦 Download ℹ️ Block ℹ️ Client --prune=hrtc
Sepolia Geth 📦 Download ℹ️ Block ℹ️ Client --state.scheme=path --cache.preimages
Sepolia Nethermind 📦 Download ℹ️ Block ℹ️ Client
Sepolia 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