this verifier verifies several things:
a. there was a range of blocks was witnessed by celetia validators b. the block of tx contains the desired blob data in those blocks, aka. attestation proof c. the blob data exists in the merkle tree of the block, aka. shares proof
The verifier is implemented in solidity and can be found in Verifier.sol.
The host feature, provides utils to dump necessary data for constructing the guest input.
You can find the usage in openvm/script/src/main.rs.
- fetch the celestia tx which contains the blob data
- fetch the block at
tx.heightto obtain thedata_hash - find the
DataCommitmentStoredevent contains this block, emit by Blobstream contract - get the transaction from ethereum that fires this event, obtain its call data, which contains the proof and public values. (this proves a.)
- get the data root inclusion proof from celetia of the block at
tx.heightfor thedata_hash(this proves b.) - get the tx proof from celetia of this tx (this proves c.)
- construct the guest input struct using all the above data.