Archive· Restore signed history

Signed history. Check your copy for free.

Genesis to tip as signed, digest-addressed partitions. Check a running database against them read-only, repair only the ranges that break, or stand up a fresh box in hours.

9,266,610blocks, zero gaps
blocks/3.15%8940000-8949999-e4ea….parquettransactions/10.31%8940000-8949999-9b1c….parquetevents/86.53%8940000-8949999-03d7….parquetsigneded25519blocks8,948,507span 0 → 8,948,5068,948,507difference 0 · no room for a gap

Nothing leaves your machine

Verify reads your database and the public manifest. No upload, no account, no charge.

Repair touches only what broke

Each fix is one transaction per partition, so an interrupted repair leaves no half-corrected range.

A fresh box in hours

Bootstrap restores from signed partitions instead of replaying the chain, then follows your node forward.

Four jobs

One signed set, four ways to use it

Verify is free. The three that fetch partitions are quoted against your balance before anything is charged.

free

Verify an instance

Digest-check every range of your data against the manifest, read-only.

secondlayer verify all
metered

Bootstrap a fresh box

Genesis to tip arrives as verified partitions instead of a replay.

secondlayer bootstrap
metered

Backfill history

Fill the range behind your node's reach, then follow it forward for free.

secondlayer bootstrap \ --to-block <n>
metered

Repair gaps

Plans the fix as a dry run, then heals exactly those partitions with --apply.

secondlayer repair --apply
Verify, then repair

Checking us is free, forever

Run verify as often as you like. When it finds a broken range, repair fetches only those partitions, checks each against its signed digest before reading a row, and writes it back.

~/instanceexit 0
$secondlayer verify all \
--against https://archive.secondlayer.tools/latest.json
manifest secondlayer-canonical v1 · mainnet
coverage 0 → 9,266,609 (9,266,610 blocks)
⚠ 1 broken range · events 8,930,000 → 8,939,999
$secondlayer repair --apply \
--against https://archive.secondlayer.tools/latest.json
planned 1 partition · events
allowance 17 of 18 free partitions left this month
✓ repaired · re-verified · charged $0.00
Bootstrap

Skip the replay

Bootstrap prints both timings before it starts, then restores and verifies itself. Pass --from-block to restore forward only; everything below is declared out of scope, so verify doesn't read it as missing.

sample timings

signedsecondlayer-canonical · v1 · mainnet
DatasetRowsShare of the setCoverageFetch
events299,680,847
88.37%
0 → 9,266,609$0.15 / partition
transactions30,154,578
8.89%
0 → 9,266,609$0.05 / partition
blocks9,266,610
2.73%
0 → 9,266,609$0.05 / partition
What's published

Everything you need to check us, in the open

Append-only on R2. Each partition carries a SHA-256 over its bytes and a semantic digest over its canonical encoding.

snapshots/<digest>.json

The signed manifest: coverage, counts, per-object digests, finality rule and audit.

blocks/ · transactions/ · events/

Range-partitioned Parquet, digest in the filename.

digests/<range>-<sha16>.parquet

One row per height with the block digest and rolled-up transaction and event digests.

attestations/<digest>/node.json

A signed independent node audit: the attested window, exact stats, a sample of any mismatches.

status.json

Operational state: fresh, lagging, stale, gap, failed-audit or source-unavailable.

reports/incidents/

Signed incident reports, newest first. When we get something wrong, it is written down here.

Assurance

The strength of the claim, next to the claim

Every range in the manifest states which of three levels it reaches. Most of the set is at the first level today.

most ranges todaydb-reconstructive

Rebuilds the database exactly as the indexer wrote it. You trust our indexer, and you can check every byte it produced.

where attestednode-attested

An independent node re-read the range and signed what it found. A smaller thing to trust.

where attestedobserver-attested

Checked against what a node observed live, as it happened. The level each range reaches is in the manifest.

Credits

Prepay for the runs that fetch

Bootstrap, backfill and repair draw from your account balance. Every run is quoted first, and a short balance stops it before anything is charged.

Always free$0

Verify, deep verify and reading the manifest. No account needed.

Free every month18 partitions

Of repair, on any account. Bootstrap and backfill are metered from the first partition.

Add credits
Pack
Buys about
block or transaction partitions500
event partitions166

Credits attach to this email. The CLI picks them up on the next metered run.

How a new box starts

The archive is how a self-hosted instance skips weeks of replay. secondlayer bootstrap fills an empty instance; after that your node feeds it and verify keeps checking it against each new signed publish.

Archive questions

Do I need an account to verify?
No. secondlayer verify reads your database and the public manifest. Nothing is uploaded and nothing is charged. An account key is only needed for runs that fetch partitions.
How do I know the history is complete?
The manifest publishes coverage (0 → 9,266,609) and a block count (9,266,610). Count equals span, so there is no room for a gap. The per-height digest sidecar lets verify find exactly which range differs.
What does db-reconstructive mean for me?
It means the archive rebuilds the database as our indexer wrote it. You still trust that indexer's reading of the chain. Ranges with a node attestation say so in the manifest, and block-level proofs live on the Verify page.
What does a repair cost?
The first 18 partitions each month are free. After that, $0.05 per block or transaction partition and $0.15 per event partition. secondlayer archive quote --flow repair prices it before anything runs.
What if a run is interrupted?
Each partition is hashed against its signed digest before any row is read, and written in one transaction. Run it again and it picks up the partitions that didn't land.

Check your node against the signed set today