Verify the entire blockchain's consensus history, from genesis to network head, with one succinct proof.
Use Cases:
- Data bridging
- validate Celestia blob inclusion for rollups on any blockchain, even ones without Blobstream.
- Fast-sync light clients
- augment light nodes to instantly find a trustworthy network head to start backwards syncing.
This repo includes a tool that will download the minimum number of blocks to verify an entire chain's consensus history, using Tendermint Skipping Verification. It performs a binary search to minimize RPC queries while finding the shortest path.
How to use the scraper tool:
# create a directory somewhere to save the headers as files
mkdir ~/.crs
cargo run -p scraper --bin scraper -- --output-path ~/.crs --rpc-url https://YOUR-CELESTIA-TENDERMINT-RPC-URL.com/
On Celestia mainnet, we found that only 53 blocks are needed to verify the enetire chain from genesis to 8144463
SP1 recursion has been known to break on upgrade boundaries (e.g, a new version of SP1 verifying a proof from an older version). As a fix, this repo supports using the groth16 verifier as an intermediary; SP1 might evolve over time, but groth16 is always groth16.
We accumulate a history of changes as proof-carrying data to the groth16 verification key in the public inputs of the proof, so anyone can verify all changes to the long-running chain of proofs.