ZKP9 SNARKs based on Linear PCP (Pinocchio & Groth16)
ZKP学习笔记
ZK-Learning MOOC课程笔记
Lecture 9: SNARKs based on Linear PCP (Yupeng Zhang)
9.1 Quadratic Arithmetic Program (QAP)
-
Recall: SNARKs for circuit-satisfiability

-
Transcript/trace of Circuit
- Interactive proof (lecture 4, slide 76): value of every gate
- Plonk (lecture 5, slide 42): left input, right input, output of every gate
- QAP: input + output of every multiplication gate
-
QAP
-
Circuit-SAT to QAP [GGPR13, PGHR13]


9.2 From QAP to SNARK
-
Probabilistically Checkable Proofs (PCP)

-
IPCP [Kalai-Raz’08] and IOP [Ben-Sasson-Chiesa-Spooner’16]

-
Polynomial IOP [Bünz-Fisch-Szepieniec’20]

-
Linear PCP [Ishai-Kushilevitz-Ostrovsky’07]

-
QAP and Linear PCP

- We don’t use random checks.
-
Key Generation
- The c i c_i ci and q ( x ) q(x) q(x) are private
- The selector polynomials and the vanishing polynomial are public.
- The circuit can be pre-processed. (The preprocessing phase is circuit-dependent)

-
Prove

-
Verify

-
Towards the real protocol
-
Q1: How to make sure π 1 \pi_1 π1 is computed from g l i ( τ ) g^{l_i(\tau)} gli(τ)
-
Q2: how to make sure the same c c c is used in π 1 \pi_1 π1, π 2 \pi_2 π2 and π 3 \pi_3 π3?
- Solution

-
Q3: What about public input and output?

- I m i d I_{mid} Imid: secret witness
- I i o I_{io} Iio: public input and public output
-
Putting everything together

-
Properties of SNARK [PGHR13]

9.3 Other variants