Source: Proofs, Arguments, and Zero-Knowledge, section 15.4
Cost summary:
- pre-processing time for a transparent setup (i.e., no toxic waste)
- proof size (although concretely larger than Bulletproofs)
- verification time
Uses Inner-pairing-product commitments, denoting both and as even though they must not equal each other for DDH to hold and the scheme to be binding.
Why is the verier time in Bulletproofs? Because the following update takes time:
Pre-processing procedure:
- In round 1, commit to and using public, randomly chosen commitment key : and
- In round , write as and and commit to both using a new commitment key
A knowledge of opening protocol ( proof size & verifier time): Like Bulletproofs, except instead of updating , the verifier computes a commitment to it in constant time, using homomorphism of the commitment:
So, in addition to proving that the prover knows such that , the prover also shows that (s)he knows such that . This can be done via recursion by executing the protocol in parallel, using the same randomness. → Because the number of vectors involved in each round increases by one every round, the total proof size & verifier time is
Extending to a polynomial commitment: Analogous to Bulletproofs
Reducing pre-processing time to via matrix commitments: One can apply the same trick as in Hyrax, except the size of the commitment stays the same. The trick is that the prover can compute Generalized Pedersen Commitment “in its own head” and then compute an Inner-pairing-product commitment of the vector of commitments.
Reducing to proof size and verification time: The key idea is to double the rounds of interaction to in order to keep the messages per round constant. For details refer to the book.
The final protocol: