Add proof that interlink vector corresponds to its header
#1384 aperta il 4 giu 2021
Metriche repository
- Star
- (519 stelle)
- Metriche merge PR
- (Merge medio 12g 5h) (13 PR mergiate in 30 g)
Descrizione
Implement batch Merkle proof for multiple keys (in scrypto), and use it to prove that interlink vector is indeed corresponding to its header (add it to json/binary representation of PoPoW header, add checks to the verifier).
Interlink vector (links to super-blocks of different levels in the past) is stored in extension section of a block in packed form,
So the proof generation and verification would be as following:
-
add batchProofFor(keys: Array[Byte])* to ExtensionCandidate to get batch proof for possibly many keys
-
in NipopowAlgos, instead of proofForInterlink (which can be removed), make proofForInterlinkVector(ext: ExtensionCandidate) to get batch Merkle proof for all the interlinks in the extension (so keys starting with InterlinksVectorPrefix)
-
add batch proof to PoPowHeader, and make there method to check it (note: pack the vector before the check), fix serialization accordingly
-
implement hasValidProofs which is checking proofs for all the PoPoWHeader instances
-
do tests on the way :)