Spark checkers create a proof that the entire CID content was retrieved.
In this step, the Spark checker creates a proof that they have retrieved the file from the Storage Provider. If they have failed to retrieve the file, they can also report this error case to the measurement service.
In this step, the protocol makes sure that the checker did indeed retrieve the file and did indeed retrieve the whole file, not just the first few bytes or the headers.
It does so by firstly hashing and signing over some of the artefacts of this protocol so far, including the Drand randomness value, the request details and the retrieval metadata. It then maps the result to a particular block of the CAR stream, and then proves inclusion of this CAR block in the root CID. This step is based on the Fiat-Shamir heuristic for those who study Cryptography.
This whole process is deterministic and, importantly, the block on which inclusion is proved cannot be guessed before the round starts.
The checker then sends the proof of data possession, which is implicitly a proof of retrieval, along with the retrieval metadata & retrieval details to the Spark measurement service.
← Previous
Next →
On this page