Source: Proofs, Arguments, and Zero-Knowledge, Section 17.4
A linear PCP, for satisfiability of an R1CS instance (in this presentation), i.e., there is a witness such that
where are fixed matrices.
Let be a set of elements in (for example, a multiplicative subgroup). Then, we can interpolate univariate polynomials that map to entry of the respective matrix. In other words, interpolates column of matrix .
Then, the following polynomial is zero on all iff. is a valid witness:
This can be validated using the Univariate Zero-Check Protocol, which requires the prover to commit to a univariate polynomial such that . The verifier than asks for an evaluation of both at a random point .
The prover commits to linear functions :
- : the vector of coefficients of
- : The vector
Then, the verifier can:
- Evaluate by querying at the vectors
- Evaluate by querying at
Linear Interactive Proof (LIP) vs. linear PCP:
- When querying the same polynomial using queries , a LIP ensures that all queries are answered using the same linear function
- We can add query for randomly chosen
- Given answers , the verifier accepts iff.
⇒ We add
SRS: For a randomly chosen and each and , the SRS contains the pair . (Only depends on the circuit!)
Verification key:
Proof: Using the SRS and additive homomorphism, the prover computes:
Verification:
-
- Verifies that vanishes on !
-
- The verification from the LIP above
- For :
- Under the Knowledge of Exponent Assumption (KEA), this ensures that the prover actually knows the exponents of the sent values
Question: How is it possible that there is nothing circuit-specific in the verification algorithm & verification key?!
- is used in the verification, so it’s specific to the setup
- The prover could not have used different values for , , , and (corresponding to a different circuit), because that would require knowing
Public inputs: This is a subset of . The prover can simply commit to the other parts of , while the verifier computes the contribution of the public input on its own. For this, needs to be part of the verification key (but not ; this was the bug Ariel Gabizon found in the BCTV14 paper and ZCash!)
Achieving Zero Knowledge (sketch): The prover can pick random values and apply the protocol to:
The rest of the protocol can be modified accordingly.
Groth16: Very influential variant of this SNARK which reduces the size of the proof from 10 to 3 group elements by:
- Introducing a LIP that makes 3 queries instead of 5
- Relying on the Algebraic Group Model instead of KEA, so all the elements aren’t needed anymore