SP1 Blobstream
Overview
SP1 Blobstream is an implementation of Blobstream X in Rust for the SP1 zkVM.
/program
: The SP1 Blobstream program./primitives
: Libraries for types and helper functions used in the program./script
: Scripts for getting the contract's genesis parameters and deploying the operator to update the light client./contracts
: The contract's source code and deployment scripts. Backwards-compatible with the original BlobstreamX implementation in case we need to upgrade.
Components
An SP1 Blobstream implementation has a few key components:
- An
SP1Blobstream
contract. Contains the logic for verifying SP1 Blobstream proofs, storing the latest data from the Celestia chain, including the headers and data commitments. Matches the interface of the existing BlobstreamX contract so it can be upgraded in-place. - An
SP1Verifier
contract. Verifies arbitrary SP1 programs. Most chains will have canonical deployments upon SP1's mainnet launch. Until then, users can deploy their ownSP1Verifier
contracts to verify SP1 programs on their chain. The SP1 Blobstream implementation will use theSP1Verifier
contract to verify the proofs of the SP1 Blobstream programs. - The SP1 Blobstream program. An SP1 program that verifies the transition between two Tendermint headers and computes the data commitment of the intermediate blocks.
- The operator. A Rust script that fetches the latest data from a deployed
SP1Blobstream
contract and a Tendermint chain, determines the block to request, requests for/generates a proof, and relays the proof to theSP1Blobstream
contract.