Start from history, not from block zero

A backfill is the expensive part of running a nest: a million RPC credits for the larger Graph Protocol nests, every one of them buying history somebody has already indexed. The public mirror holds that history. nuthatch seed downloads it, checks every file against its content address, and leaves your nest following the chain from the block where the mirror ends.

1 · the nest

Clone the nest and check out the commit it was published from. The mirror is found by the nest's data identity, so any other version finds nothing.

2 · the history

Seed downloads the sealed segments, refuses any file that does not hash to its address, and resumes if interrupted.

3 · the tip

Dev follows the chain from the next block, over your own RPC. Catching up a day costs a few hundred calls.

  • graph-gns-nest

    published 2026-10-05
    chain
    Arbitrum One
    history
    42,008,725 to 511,898,013
    rows
    74,694
    files
    23 segments, 7 tables
    shell
    git clone https://github.com/nightswatchhq/graph-gns-nest
    git -C graph-gns-nest checkout 33d010ff69b5
    nuthatch seed --from https://pub-bc282d5016f242a783a6c28cbcd4401a.r2.dev --dir graph-gns-nest
    nuthatch dev --dir graph-gns-nest
    nightswatchhq/graph-gns-nest ↗
  • graph-allocations-nest

    published 2026-10-05
    chain
    Arbitrum One
    history
    42,449,227 to 511,913,482
    rows
    5,946,669
    files
    4,764 segments, 73 tables
    shell
    git clone https://github.com/nightswatchhq/graph-allocations-nest
    git -C graph-allocations-nest checkout 7795a335a910
    nuthatch seed --from https://pub-bc282d5016f242a783a6c28cbcd4401a.r2.dev --dir graph-allocations-nest
    nuthatch dev --dir graph-allocations-nest --state-rpc <archive RPC URL>
    nightswatchhq/graph-allocations-nest ↗

    This nest samples contract state, so dev needs an archive endpoint for eth_call.

  • dips-nest

    published 2026-10-05
    chain
    Arbitrum One
    history
    486,895,281 to 511,814,696
    rows
    66
    files
    26 segments, 22 tables
    shell
    git clone https://github.com/nightswatchhq/dips-nest
    git -C dips-nest checkout 0cf0ec2c7b1a
    nuthatch seed --from https://pub-bc282d5016f242a783a6c28cbcd4401a.r2.dev --dir dips-nest
    nuthatch dev --dir dips-nest
    nightswatchhq/dips-nest ↗
  • data-services-nest

    published 2026-10-05
    chain
    Arbitrum One
    history
    456,917,519 to 495,618,196
    rows
    7
    files
    4 segments, 4 tables
    shell
    git clone https://github.com/nightswatchhq/data-services-nest
    git -C data-services-nest checkout 9696cb4beb1d
    nuthatch seed --from https://pub-bc282d5016f242a783a6c28cbcd4401a.r2.dev --dir data-services-nest
    nuthatch dev --dir data-services-nest
    nightswatchhq/data-services-nest ↗

What the hashes prove

That every file is the one the mirror's catalogue names, so nothing changed on the way or at rest. They do not prove who wrote that catalogue, or that it is true to the chain. Seed from a mirror run by someone you would trust to run the nest for you, or re-index a sample of it yourself and compare.

Publish your own

Any nest can be a mirror. Run it with --publish-target s3://your-bucket/prefix, or run nuthatch publish sync on a stopped one, and point people at the bucket's public address. The mirror is append-only and costs nothing to read from a bucket that does not charge for downloads. The operator guide has the bucket policy.

Read it without Nuthatch

The mirror is plain Parquet, so DuckDB, Trino or anything else that reads Parquet over HTTPS can query it directly. A public bucket cannot be listed: each dataset's manifest.json names its tables and, for every segment, a hash, and the file is at <dataset>/<table>/<hash>.parquet. The manifest's file field is the name inside a nest directory, not the address here.

duckdb
SELECT count(*), min(block_number), max(block_number)
FROM read_parquet('https://pub-bc282d5016f242a783a6c28cbcd4401a.r2.dev/494ce630fa704ee504e6cdfb8f732c66d585843face32fbbc6b7bf115a9b15c7/gns__subgraph_published/e03958df317ac9e39634669f04c7fc1c6e6caed29e7b5f37630235acd8c9f7f2.parquet');