Blobstream X: the previous zk implementation of Blobstream
What is Blobstream X?
Blobstream X is the previous implementation of Blobstream. It uses plonky2x to create circuits that verify the Celestia consensus and generate the corresponding proofs.
Blobstream X is built and deployed with Succinct's protocol.
NOTE
The Blobstream deployments below don't use the BlobstreamX circuits.
You can find the repository for Blobstream X along with code for:
- The Blobstream X smart contract -
BlobstreamX.sol
- The Blobstream X circuits
- The Blobstream X contract Golang bindings
NOTE
Custom ranges can be requested using the BlobstreamX
contract to create proofs for specific Celestia block batches. These ranges can be constructed as [latestBlock, customTargetBlock)
, with latestBlock
as the latest block height that was committed to by the BlobstreamX
contract, and latestBlock > customTargetBlock
, and customTargetBlock - latestBlock <= DATA_COMMITMENT_MAX
.
Block ranges that are before the contract's latestBlock
can't be proven a second time in different batches.
More information can be found in the requestHeaderRange(...)
method.
How Blobstream X works
As shown in the diagram below, the entrypoint for updates to the Blobstream X contract is through the SuccinctGateway
smart contract, which is a simple entrypoint contract that verifies proofs (against a deployed onchain verifier for the Blobstream X circuit) and then calls the BlobstreamX.sol
contract to update it. Find more information about the SuccinctGateway
.
NOTE
If the Blobstream X contract is not deployed on a desired chain, it needs to be deployed before it can be used by your rollup. See the deployment documentation for more details.
Deploy Blobstream X
It is possible to deploy and maintain a Blobstream x instance and have the same security guarantees.
First, you will need to create a multisig that governs the Blobstream X contract and also the function identifiers. The function identifiers can be registered in the Succinct gateway.
Then, check the deployment documentation for how to deploy the contract.
Then, you will need to run a relayer, which will generate the proofs and relay them to your deployed Blobstream X contract. Check the local proving documentation for more information.