WARNING: This project is currently experimental and not recommended for any production use cases yet
Blobstream Zero is an implementation of Blobstream using the RISC Zero zkVM to verify Celestia blocks.
The blocks are verified using a zk Tendermint light client with the light-client-guest program, which will verify the light client block transition as well as generating a merkle root of all intermediate blocks. This proof is then verified on Ethereum using the Blobstream solidity contracts.
The ABI for the Blobstream Zero solidity contract as well as the merkle tree format for the batch proof is currently matching previous implementations to maintain as much compatibility with previous solutions as well as the existing APIs to request Blobstream inclusion proofs.
Clone this repository, then pull submodules:
git submodule update --init --recursive
Ensure Rust, Foundry, and the RISC Zero toolchain are installed.
Build guest programs and update autogenerated files:
# Could also run `cargo build`
cargo check
Optionally run tests, which includes an end to end test:
cargo test
Run the CLI to generate proofs or post those proofs on an Eth based network:
cargo run -p blobstream0 -- --help
For docs on running the Blobstream service, see usage-guide.md.
Note: This CLI as well as other APIs will change in the short term. If you need anything specific from this, open an issue!