diff --git a/.github/workflows/verify-mainnet.yaml b/.github/workflows/verify-mainnet.yaml new file mode 100644 index 0000000..ce979fe --- /dev/null +++ b/.github/workflows/verify-mainnet.yaml @@ -0,0 +1,16 @@ +name: Verify Mainnet + +on: + schedule: + - cron: '*/30 * * * *' + workflow_dispatch: + +jobs: + run: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Run script + run: ./.hack/verify.sh mainnet diff --git a/.hack/verify.sh b/.hack/verify.sh index a121730..e242ddf 100755 --- a/.hack/verify.sh +++ b/.hack/verify.sh @@ -8,7 +8,7 @@ baseURL=${2:-https://snapshots.ethpandaops.io} block_numbers=() # List of clients -clients=("geth" "besu" "nethermind" "reth") +clients=("geth" "besu" "nethermind" "reth" "erigon") echo "Verifying snapshot block numbers for network: $network" @@ -31,7 +31,11 @@ for i in "${!clients[@]}"; do done if [ "$all_same" = true ]; then - echo "✅ All block numbers are the same: https://${network}.etherscan.io/block/${first_block_number}" + EXPLORER_URL="https://${network}.etherscan.io/block/${first_block_number}" + if [ "$network" = "mainnet" ]; then + EXPLORER_URL="https://etherscan.io/block/${first_block_number}" + fi + echo "✅ All block numbers are the same: $EXPLORER_URL" else echo "❌ Some block numbers are different." exit 1 diff --git a/README.md b/README.md index c1016dd..6801ae3 100644 --- a/README.md +++ b/README.md @@ -18,30 +18,43 @@ Block info | `https://snapshots.ethpandaops.io/{{ network_name }}/{{ client_name Client info | `https://snapshots.ethpandaops.io/{{ network_name }}/{{ client_name }}/latest/_snapshot_web3_clientVersion.json` Possible values: -- `network_name` -> `holesky` or `sepolia`. -- `client_name` -> `geth`, `nethermind`, `besu` or `reth`, +- `network_name` -> `holesky`, `sepolia`, `mainnet`. +- `client_name` -> `geth`, `nethermind`, `besu`, `erigon`, `reth` Check the tables below for all the possible combinations. ### Available snapshots +#### [![Mainnet](https://github.com/ethpandaops/snapshotter/actions/workflows/verify-mainnet.yaml/badge.svg)](https://github.com/ethpandaops/snapshotter/actions/workflows/verify-mainnet.yaml) + +Network | Client | Snapshot | Block | Client Version | Args +--------| ------ | ----- | --- | --- | --- +Mainnet | Besu | [📦 Download](https://snapshots.ethpandaops.io/mainnet/besu/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/mainnet/besu/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/mainnet/besu/latest/_snapshot_web3_clientVersion.json) | `--data-storage-format=BONSAI` +Mainnet | Erigon | [📦 Download](https://snapshots.ethpandaops.io/mainnet/erigon/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/mainnet/erigon/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/mainnet/erigon/latest/_snapshot_web3_clientVersion.json) | `--prune=hrtc ` +Mainnet | Geth | [📦 Download](https://snapshots.ethpandaops.io/mainnet/geth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/mainnet/geth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/mainnet/geth/latest/_snapshot_web3_clientVersion.json) | `--state.scheme=path --cache.preimages` +Mainnet | Nethermind | [📦 Download](https://snapshots.ethpandaops.io/mainnet/nethermind/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/mainnet/nethermind/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/mainnet/nethermind/latest/_snapshot_web3_clientVersion.json) | +Mainnet | Reth | [📦 Download](https://snapshots.ethpandaops.io/mainnet/reth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/mainnet/reth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/mainnet/reth/latest/_snapshot_web3_clientVersion.json) | + + #### [![Holesky](https://github.com/ethpandaops/snapshotter/actions/workflows/verify-holesky.yaml/badge.svg)](https://github.com/ethpandaops/snapshotter/actions/workflows/verify-holesky.yaml) -Network | Client | Snapshot | Block | Client Version ---------| ------ | ----- | --- | --- -Holesky | Besu | [📦 Download](https://snapshots.ethpandaops.io/holesky/besu/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/besu/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/besu/latest/_snapshot_web3_clientVersion.json) -Holesky | Geth | [📦 Download](https://snapshots.ethpandaops.io/holesky/geth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/geth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/geth/latest/_snapshot_web3_clientVersion.json) -Holesky | Nethermind | [📦 Download](https://snapshots.ethpandaops.io/holesky/nethermind/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/nethermind/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/nethermind/latest/_snapshot_web3_clientVersion.json) -Holesky | Reth | [📦 Download](https://snapshots.ethpandaops.io/holesky/reth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/reth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/reth/latest/_snapshot_web3_clientVersion.json) +Network | Client | Snapshot | Block | Client Version | Args +--------| ------ | ----- | --- | --- | --- +Holesky | Besu | [📦 Download](https://snapshots.ethpandaops.io/holesky/besu/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/besu/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/besu/latest/_snapshot_web3_clientVersion.json) | `--data-storage-format=BONSAI` +Holesky | Erigon | [📦 Download](https://snapshots.ethpandaops.io/holesky/erigon/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/erigon/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/erigon/latest/_snapshot_web3_clientVersion.json) | `--prune=hrtc ` +Holesky | Geth | [📦 Download](https://snapshots.ethpandaops.io/holesky/geth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/geth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/geth/latest/_snapshot_web3_clientVersion.json) | `--state.scheme=path --cache.preimages` +Holesky | Nethermind | [📦 Download](https://snapshots.ethpandaops.io/holesky/nethermind/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/nethermind/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/nethermind/latest/_snapshot_web3_clientVersion.json) | +Holesky | Reth | [📦 Download](https://snapshots.ethpandaops.io/holesky/reth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/holesky/reth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/holesky/reth/latest/_snapshot_web3_clientVersion.json) | #### [![Sepolia](https://github.com/ethpandaops/snapshotter/actions/workflows/verify-sepolia.yaml/badge.svg)](https://github.com/ethpandaops/snapshotter/actions/workflows/verify-sepolia.yaml) -Network | Client | Snapshot | Block | Client Version ---------| ------ | ----- | --- | --- -Sepolia | Besu | [📦 Download](https://snapshots.ethpandaops.io/sepolia/besu/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/besu/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/besu/latest/_snapshot_web3_clientVersion.json) -Sepolia | Geth | [📦 Download](https://snapshots.ethpandaops.io/sepolia/geth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_web3_clientVersion.json) -Sepolia | Nethermind | [📦 Download](https://snapshots.ethpandaops.io/sepolia/nethermind/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/nethermind/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/nethermind/latest/_snapshot_web3_clientVersion.json) -Sepolia | Reth | [📦 Download](https://snapshots.ethpandaops.io/sepolia/reth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/reth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/reth/latest/_snapshot_web3_clientVersion.json) +Network | Client | Snapshot | Block | Client Version | Args +--------| ------ | ----- | --- | --- | --- +Sepolia | Besu | [📦 Download](https://snapshots.ethpandaops.io/sepolia/besu/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/besu/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/besu/latest/_snapshot_web3_clientVersion.json) | `--data-storage-format=BONSAI` +Sepolia | Erigon | [📦 Download](https://snapshots.ethpandaops.io/sepolia/erigon/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/erigon/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/erigon/latest/_snapshot_web3_clientVersion.json) | `--prune=hrtc ` +Sepolia | Geth | [📦 Download](https://snapshots.ethpandaops.io/sepolia/geth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/geth/latest/_snapshot_web3_clientVersion.json) | `--state.scheme=path --cache.preimages` +Sepolia | Nethermind | [📦 Download](https://snapshots.ethpandaops.io/sepolia/nethermind/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/nethermind/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/nethermind/latest/_snapshot_web3_clientVersion.json) | +Sepolia | Reth | [📦 Download](https://snapshots.ethpandaops.io/sepolia/reth/latest/snapshot.tar.zst) | [ℹ️ Block](https://snapshots.ethpandaops.io/sepolia/reth/latest/_snapshot_eth_getBlockByNumber.json) | [ℹ️ Client](https://snapshots.ethpandaops.io/sepolia/reth/latest/_snapshot_web3_clientVersion.json) | ### Example: Getting a Sepolia Geth data dir snapshot