Some Recent SNARKs Saba Eskandarian Qualifying Exam Talk Come, - - PowerPoint PPT Presentation

some recent snarks
SMART_READER_LITE
LIVE PREVIEW

Some Recent SNARKs Saba Eskandarian Qualifying Exam Talk Come, - - PowerPoint PPT Presentation

Some Recent SNARKs Saba Eskandarian Qualifying Exam Talk Come, listen, my men, while I tell you again What is a zk-SNARK? The five unmistakable marks By which you may know, wheresoever you go, Z ero- K nowledge The warranted genuine Snarks.


slide-1
SLIDE 1

Some Recent SNARKs

Saba Eskandarian Qualifying Exam Talk

slide-2
SLIDE 2

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

“Come, listen, my men, while I tell you again The five unmistakable marks By which you may know, wheresoever you go, The warranted genuine Snarks.”

  • Lewis Carroll, The Hunting of the Snark
slide-3
SLIDE 3

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

slide-4
SLIDE 4

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

slide-5
SLIDE 5

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

Correctness: If C(x,w)=y, then the verifier will accept 𝜌

slide-6
SLIDE 6

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

Zero-Knowledge: 𝜌 reveals nothing about w

slide-7
SLIDE 7

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

Succinct: 1. 𝜌 is shorter than |C|

  • 2. Verifier has to do less than |C| work
slide-8
SLIDE 8

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

Non-interactive: 𝜌 is one message from Prover to Verifier

slide-9
SLIDE 9

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

ARgument: the proof system is only computationally sound -- an unbounded Prover can prove false statements

slide-10
SLIDE 10

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

Soundness: For any unsatisfiable C(x,⦁)=y, ∀ PPT P*, ∀w Pr[r∈R{0, 1}*:〈P*(w),V(r)〉(C,x,y) = reject] ≥ 1-εs

slide-11
SLIDE 11

What is a zk-SNARK?

Zero-Knowledge Succinct Non-interactive ARguments of Knowledge

Prover Verifier C, x, w, y s.t. C(x,w)=y C, x, y

𝜌

accept/reject

Knowledge: Prover really knows w, i.e., there is an extractor algorithm that interacts with Prover and outputs w

slide-12
SLIDE 12

Families of Approaches

PCP + Merkle Trees (e.g., CS Proofs) Linear PCPs, QAPs (e.g., IKO’07, Zaatar, GGPR13, Pinnochio, BCIOP13, BCGTV13, libSNARK) IOPs/PCIPs (e.g., STARK, Aurora, Ligero, RRR16) MPC-Based (e.g., ZKBoo, ZKB++, Ligero) Discrete-log Based (e.g., BCCGP16, Bulletproofs, Hyrax) Interactive Proofs (e.g., GKR, CMT, Thaler13, Giraffe, Hyrax, Clover, Spartan, vSQL, vRAM, zk-vSQL, Libra,

Sonic, AuroraLight)

slide-13
SLIDE 13

Families of Approaches

PCP + Merkle Trees (e.g., CS Proofs) Linear PCPs, QAPs (e.g., IKO’07, Zaatar, GGPR13, Pinnochio, BCIOP13, BCGTV13, libSNARK) IOPs/PCIPs (e.g., STARK, Aurora, Ligero, RRR16) MPC-Based (e.g., ZKBoo, ZKB++, Ligero) Discrete-log Based (e.g., BCCGP16, Bulletproofs, Hyrax) Interactive Proofs (e.g., GKR, CMT, Thaler13, Giraffe, Hyrax, Clover, Spartan, vSQL, vRAM, zk-vSQL, Libra,

Sonic, AuroraLight)

slide-14
SLIDE 14

The Scourge of Trusted Setup

Many zk-SNARKs require a trusted setup to provide a CRS/SRS (common/structured reference string) that must be generated honestly Cryptocurrency companies (and others) do elaborate “ceremonies” to inspire confidence in their CRSs

slide-15
SLIDE 15

The Scourge of Trusted Setup

Many zk-SNARKs require a trusted setup to provide a CRS/SRS (common/structured reference string) that must be generated honestly Cryptocurrency companies (and others) do elaborate “ceremonies” to inspire confidence in their CRSs Fun listening: “The Ceremony”, RadioLab, July 2017. https://www.wnycstudios.org/story/ceremony

slide-16
SLIDE 16

The Scourge of Trusted Setup

Many zk-SNARKs require a trusted setup to provide a CRS/SRS (common/structured reference string) that must be generated honestly Cryptocurrency companies (and others) do elaborate “ceremonies” to inspire confidence in their CRSs Fun listening: “The Ceremony”, RadioLab, July 2017. https://www.wnycstudios.org/story/ceremony

Coindesk, Jan 2018

slide-17
SLIDE 17

This Talk: Minimizing Trusted Setup

Spartan: Efficient and general-purpose zkSNARKs without trusted setup

Srinath Setty (2019/550)

Almost completely eliminates trusted setup, but succinct means root, not log

slide-18
SLIDE 18

This Talk: Minimizing Trusted Setup

Spartan: Efficient and general-purpose zkSNARKs without trusted setup

Srinath Setty (2019/550)

Almost completely eliminates trusted setup, but succinct means root, not log Sonic: Zero-Knowledge SNARKs from Linear-Size Universal and Updatable Structured Reference Strings

Mary Maller, Sean Bowe, Markulf Kohlweiss, Sarah Meiklejohn (2019/099)

AuroraLight: Improved prover efficiency and SRS size in a Sonic-like system

Ariel Gabizon (2019/601)

Trusted setup can be updated later to increase confidence/security

slide-19
SLIDE 19

A Common Template

1. Convert program to arithmetic circuit 2. Convert arithmetic circuit to polynomial 3. Build an argument to prove something about the polynomial 4. Add on other features generically

zk-SNARK

slide-20
SLIDE 20

A Common Template

1. Convert program to arithmetic circuit 2. Convert arithmetic circuit to polynomial 3. Build an argument to prove something about the polynomial 4. Add on other features generically

zk-SNARK

slide-21
SLIDE 21

Tool: Polynomial Commitments

Commitments c ← Commit(m, r) b ← Verify(c, m, r) Security Properties: Binding: given commitment Commit(m, r), can’t decommit to m’ ≠ m Hiding: given commitment Commit(m, r), can’t find m

slide-22
SLIDE 22

Tool: Polynomial Commitments

Polynomial Commitments F ← Commit(pp, f(⦁)) (y, 𝜌) ← Eval(pp, f(⦁), x) b ← Verify(pp, F, x, y, 𝜌) Relevant Security Properties: Correctness: In honest execution, y = f(x) and Verify(pp, F, x, y, 𝜌) = 1 Evaluation Binding: Can’t verify two different values f(x)=y, f(x)=y’ for y≠y’ Hiding: Can’t learn anything about f(⦁) at unqueried points

slide-23
SLIDE 23

Tool: Polynomial Commitments

A (naive) polynomial commitment scheme: 1. Use any additively homomorphic (standard) commitment to commit to coefficients 5x2 + 3x + 7 5x2 + 3x + 7

Means we can add committed values to get commitment to their sum

slide-24
SLIDE 24

Tool: Polynomial Commitments

A (naive) polynomial commitment scheme: 1. Use any additively homomorphic (standard) commitment to commit to coefficients 2. Use additive homomorphism to evaluate at given point 5x2 + 3x + 7 5x2 + 3x + 7 552 + 35 +7

slide-25
SLIDE 25

Tool: Polynomial Commitments

A (naive) polynomial commitment scheme: 1. Use any additively homomorphic (standard) commitment to commit to coefficients 2. Use additive homomorphism to evaluate at given point 3. Decommit to evaluated value 5x2 + 3x + 7 5x2 + 3x + 7 552 + 35 +7

= 147

slide-26
SLIDE 26

Tool: Polynomial Commitments

A (naive) polynomial commitment scheme: 1. Use any additively homomorphic (standard) commitment to commit to coefficients 2. Use additive homomorphism to evaluate at given point 3. Decommit to evaluated value This scheme requires commitments linear in the size of the polynomial The constructions in this talk rely on more efficient polynomial commitments

slide-27
SLIDE 27

Spartan

slide-28
SLIDE 28

Spartan

Pros: Removes trusted setup almost entirely Verifier needs to read C once and never again Con: Proof size and verifier time ~√(|C|)

slide-29
SLIDE 29

Spartan

Pros: Removes trusted setup almost entirely Verifier needs to read C once and never again Con: Proof size and verifier time ~√(|C|) Succinctness and setup requirements come from choice of polynomial commitment scheme that works on multilinear polynomials (from Hyrax [WTsTW17])

slide-30
SLIDE 30

Spartan

Pros: Removes trusted setup almost entirely Verifier needs to read C once and never again Con: Proof size and verifier time ~√(|C|) Succinctness and setup requirements come from choice of polynomial commitment scheme that works on multilinear polynomials (from Hyrax [WTsTW17]) Based on prior work (Clover [BTVW14]) using MIPs for verifiable computation

slide-31
SLIDE 31

Spartan

Pros: Removes trusted setup almost entirely Verifier needs to read C once and never again Con: Proof size and verifier time ~√(|C|) Succinctness and setup requirements come from choice of polynomial commitment scheme that works on multilinear polynomials (from Hyrax [WTsTW17]) Based on prior work (Clover [BTVW14]) using MIPs for verifiable computation Main additional tool: Sumcheck protocol [LFKN90]

slide-32
SLIDE 32

Tool: Sumcheck Protocol

Goal: Prover wants to convince Verifier that an m-variate polynomial G:Fm→F, where the maximum degree of any variable is l, sums to a value H over the m-dimensional binary hypercube, i.e., Approach: verifier checks sum one variable at a time

slide-33
SLIDE 33

Spartan: Circuit to Polynomial (“front-end”)

Goal: Convert arithmetic circuit into a low-degree polynomial in variables x1,...,xm such that the sum over the m-dimensional boolean hypercube is 0 if and only if the

  • riginal circuit C(x,w)=y is satisfied by the prover’s value of w.

Then we can use sumcheck to prove this fact.

slide-34
SLIDE 34

Spartan: Circuit to Polynomial (“front-end”)

Steps 1. Write the arithmetic circuit as a function 2. Convert the function to a low-degree polynomial 3. Give the polynomial the property that its sum over the boolean hypercube is 0 4. Put polynomial into format suitable for sumcheck

slide-35
SLIDE 35

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Label each gate in C with an s-bit identifier, s=log|C|

slide-36
SLIDE 36

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Label each gate in C with an s-bit identifier, s=log|C| Define the following functions that capture the structure of the circuit

slide-37
SLIDE 37

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Label each gate in C with an s-bit identifier, s=log|C| Define the following functions that capture the structure of the circuit

slide-38
SLIDE 38

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Next, define Z as a function that, given a gate label g, outputs the value of the

  • utput of that gate in the computation of C(x,w).
slide-39
SLIDE 39

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Next, define Z as a function that, given a gate label g, outputs the value of the

  • utput of that gate in the computation of C(x,w).

Key property: Fx,y(a,b,c) = 0 for all (a,b,c)∈{0,1}3s iff Z is a satisfying assignment, i.e., it represents a correct evaluation of C as described by F.

slide-40
SLIDE 40

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Next, define Z as a function that, given a gate label g, outputs the value of the

  • utput of that gate in the computation of C(x,w).

Key property: Fx,y(a,b,c) = 0 for all (a,b,c)∈{0,1}3s iff Z is a satisfying assignment, i.e., it represents a correct evaluation of C as described by F.

slide-41
SLIDE 41

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Next, define Z as a function that, given a gate label g, outputs the value of the

  • utput of that gate in the computation of C(x,w).

Key property: Fx,y(a,b,c) = 0 for all (a,b,c)∈{0,1}3s iff Z is a satisfying assignment, i.e., it represents a correct evaluation of C as described by F.

slide-42
SLIDE 42

Spartan: Circuit to Polynomial (“front-end”)

1. Write the arithmetic circuit as a function Next, define Z as a function that, given a gate label g, outputs the value of the

  • utput of that gate in the computation of C(x,w).

Key property: Fx,y(a,b,c) = 0 for all (a,b,c)∈{0,1}3s iff Z is a satisfying assignment, i.e., it represents a correct evaluation of C as described by F.

slide-43
SLIDE 43

Spartan: Circuit to Polynomial (“front-end”)

2. Convert the function to a low-degree polynomial Idea: replace each function in Fx,y with its multilinear extension

slide-44
SLIDE 44

Spartan: Circuit to Polynomial (“front-end”)

2. Convert the function to a low-degree polynomial Idea: replace each function in Fx,y with its multilinear extension, e.g., Where Z:{0,1}m→F, the multilinear extension is a polynomial in m variables (Fm→F) that agrees with Z on {0,1}m.

slide-45
SLIDE 45

Spartan: Circuit to Polynomial (“front-end”)

2. Convert the function to a low-degree polynomial Idea: replace each function in Fx,y with its multilinear extension, e.g., Where Z:{0,1}m→F, the multilinear extension is a polynomial in m variables (Fm→F) that agrees with Z on {0,1}m.

Linear in each xi Evaluates to Z(e) when each value xi matches the corresponding bit of e

slide-46
SLIDE 46

Spartan: Circuit to Polynomial (“front-end”)

2. Convert the function to a low-degree polynomial Idea: replace each function in Fx,y with its multilinear extension, e.g., Where Z:{0,1}m→F, the multilinear extension is a polynomial in m variables (Fm→F) that agrees with Z on {0,1}m.

In our setting m=3s because each

  • f a,b,c is s bits long

Values of x1...xm select entries of Z because 𝜓e is 1 iff ei = xi for i∈[m]

slide-47
SLIDE 47

Spartan: Circuit to Polynomial (“front-end”)

2. Convert the function to a low-degree polynomial Idea: replace each function in Fx,y with its multilinear extension

slide-48
SLIDE 48

Spartan: Circuit to Polynomial (“front-end”)

2. Convert the function to a low-degree polynomial Idea: replace each function in Fx,y with its multilinear extension Each ui is a vector of s field elements.

slide-49
SLIDE 49

Spartan: Circuit to Polynomial (“front-end”)

3. Give the polynomial the property that its sum over the boolean hypercube is 0 Problem with running sumcheck directly on what we have: nonzero terms could cancel out and result in sumcheck accepting unsatisfying assignment.

slide-50
SLIDE 50

Spartan: Circuit to Polynomial (“front-end”)

3. Give the polynomial the property that its sum over the boolean hypercube is 0 Problem with running sumcheck directly on what we have: nonzero terms could cancel out and result in sumcheck accepting unsatisfying assignment. Solution: Multiply each item summed by a different power of an input t t∈F, ui is ith bit of u

slide-51
SLIDE 51

Spartan: Circuit to Polynomial (“front-end”)

3. Give the polynomial the property that its sum over the boolean hypercube is 0 Problem with running sumcheck directly on what we have: nonzero terms could cancel out and result in sumcheck accepting unsatisfying assignment. Solution: Multiply each item summed by a different power of an input t t∈F, ui is ith bit of u

Now Q is a zero polynomial iff F evaluates to 0 at every point in the boolean hypercube u∈{0,1}3s.

slide-52
SLIDE 52

Spartan: Circuit to Polynomial (“front-end”)

4. Put polynomial into format suitable for sumcheck Our argument system will run sumcheck over low degree polynomials, but our function is not low degree in u as written.

ui is in the exponent

slide-53
SLIDE 53

Spartan: Circuit to Polynomial (“front-end”)

4. Put polynomial into format suitable for sumcheck Our argument system will run sumcheck over low degree polynomials, but our function is not low degree in u as written. Observation:

slide-54
SLIDE 54

Spartan: Circuit to Polynomial (“front-end”)

4. Put polynomial into format suitable for sumcheck Our argument system will run sumcheck over low degree polynomials, but our function is not low degree in u as written. Observation:

slide-55
SLIDE 55

Spartan: Circuit to Polynomial (“front-end”)

4. Put polynomial into format suitable for sumcheck Can now plug in to sumcheck protocol! Number of variables: 3s = 3log|C| Degree: 3

slide-56
SLIDE 56

Tool: Sumcheck Protocol

slide-57
SLIDE 57

Tool: Sumcheck Protocol

slide-58
SLIDE 58

Tool: Sumcheck Protocol

In first iteration, Verifier checks that sum is correct

  • ver the first variable, prover does the rest

Then Verifier fixes the first variable at a random point

slide-59
SLIDE 59

Tool: Sumcheck Protocol

Subsequent iterations fix each variable one by one, with the prover taking the sum over later variables

slide-60
SLIDE 60

Tool: Sumcheck Protocol

Eventually, Verifier only evaluates polynomial at the one point it has built up with its random choices

slide-61
SLIDE 61

Tool: Sumcheck Protocol

V evaluates G from scratch only once

slide-62
SLIDE 62

Spartan: Argument System (“back-end”)

Now verifier just needs to run sumcheck with m=3s, l=3

How to do this?

slide-63
SLIDE 63

Spartan: Argument System (“back-end”)

Problematic part of G: Naive solution: Prover sends Z to verifier, verifier computes F on its own.

slide-64
SLIDE 64

Spartan: Argument System (“back-end”)

Problematic part of G: Naive solution: Prover sends Z to verifier, verifier computes F on its own. Problem: this is not succinct! 1. Communication cost linear in |C| 2. Verifier computation linear in |C|

slide-65
SLIDE 65

Spartan: Argument System (“back-end”)

Problem 1: reduce communication cost to sublinear in |C| Solution: polynomial commitment to multilinear polynomial Z Prover commits to Z and sends openings of Z at the desired points u1, u2, u3 Verifier can compute other parts of G on its own (they only depend on public C)

slide-66
SLIDE 66

Spartan: Argument System (“back-end”)

Problem 2: reduce Verifier computation cost to sublinear in |C| All these functions require work linear in |C| to compute

slide-67
SLIDE 67

Spartan: Argument System (“back-end”)

Problem 2: reduce Verifier computation cost to sublinear in |C| All these functions require work linear in |C| to compute Solution: Verifier produces polynomial commitments to all circled functions itself! Prover only needs to supply decommitments at evaluation points Verifier can verify that they are valid evaluations for the polynomial it committed to

slide-68
SLIDE 68

Spartan: Summary

Front-end: Convert arithmetic circuit into multilinear polynomial such that sum over m-dimensional boolean hypercube is 0. Back-end: Run sumcheck protocol using polynomial commitments to save on communication and computation costs.

slide-69
SLIDE 69

Sonic & AuroraLight

slide-70
SLIDE 70

Sonic & AuroraLight

Sonic Pros: Updatable trusted setup, constant size proofs Cons: Still has setup AuroraLight Pros: Prover 2x faster, SRS 6x smaller than Sonic Cons: Still has setup, only works for batched or parallelized proofs Both protocols convert arithmetic circuit to polynomial such that the constant coefficient is zero if and only if the Prover has a satisfying assignment.

slide-71
SLIDE 71

AuroraLight

Start with standard r1cs format:

slide-72
SLIDE 72

AuroraLight

Start with standard r1cs format:

Vectors ai, bi, and ci represent structure of circuit

slide-73
SLIDE 73

AuroraLight

Start with standard r1cs format: Modify to “flattened” format:

slide-74
SLIDE 74

AuroraLight

Start with standard r1cs format: Modify to “flattened” format: Goal: build a polynomial that has a zero constant term if and only if there is a satisfying assignment to the constraints, so we can use the following math fact.

slide-75
SLIDE 75

AuroraLight

Define functions W,Y,Z∈F[X] of degree <n (circuit size) s.t. for each hi∈H, W(i)=xi, Y(i)=yi, and Z(i)=zi. Prover starts by committing to these three polynomials. The following sum is zero iff the values of x satisfy the constraints, where r,r’,r’’ are random values chosen by the Verifier.

slide-76
SLIDE 76

AuroraLight

Define functions W,Y,Z∈F[X] of degree <n (circuit size) s.t. for each hi∈H, W(i)=xi, Y(i)=yi, and Z(i)=zi. Prover starts by committing to these three polynomials. The following sum is zero iff the values of x satisfy the constraints, where r,r’,r’’ are random values chosen by the Verifier.

slide-77
SLIDE 77

AuroraLight

Define functions W,Y,Z∈F[X] of degree <n (circuit size) s.t. for each hi∈H, W(i)=xi, Y(i)=yi, and Z(i)=zi. Prover starts by committing to these three polynomials. The following sum is zero iff the values of x satisfy the constraints, where r,r’,r’’ are random values chosen by the Verifier.

⍺i are some expression of the other variables

slide-78
SLIDE 78

AuroraLight

Define functions W,Y,Z∈F[X] of degree <n (circuit size) s.t. for each hi∈H, W(i)=xi, Y(i)=yi, and Z(i)=zi. Prover starts by committing to these three polynomials. The following sum is zero iff the values of x satisfy the constraints, where r,r’,r’’ are random values chosen by the Verifier.

R, R’, R’’, and Q are polynomials that give the corresponding values of r, r’, r’’, and ⍺

slide-79
SLIDE 79

AuroraLight

Define functions W,Y,Z∈F[X] of degree <n (circuit size) s.t. for each hi∈H, W(i)=xi, Y(i)=yi, and Z(i)=zi. Prover starts by committing to these three polynomials. The following sum is zero iff the values of x satisfy the constraints, where r,r’,r’’ are random values chosen by the Verifier.

Now we can check that the sum of this polynomial over H is 0.

slide-80
SLIDE 80

AuroraLight

Now, instead of taking the actual sum, we will try to verify that D sums to zero over H another way. For a∈H, define

slide-81
SLIDE 81

AuroraLight

Now, instead of taking the actual sum, we will try to verify that D sums to zero over H another way. For a∈H, define Then, use polynomial long division to get

slide-82
SLIDE 82

AuroraLight

Now, instead of taking the actual sum, we will try to verify that D sums to zero over H another way. For a∈H, define Then, use polynomial long division to get D can only be written in this form if there is no constant term

slide-83
SLIDE 83

AuroraLight

Now, instead of taking the actual sum, we will try to verify that D sums to zero over H another way. For a∈H, define Then, use polynomial long division to get D can only be written in this form if there is no constant term is 0 at every point in H because every a∈H is a root. is 0 at every point in H because it has no constant term. Thus if D can be represented this way, we know that it has no constant term

slide-84
SLIDE 84

AuroraLight

Final Protocol V chooses randomness r,r’,r’’ to determine polynomials R,R’,R”

slide-85
SLIDE 85

AuroraLight

Final Protocol V chooses randomness r,r’,r’’ to determine polynomials R,R’,R” P commits to polynomials W,Y,Z,g,f used to compute D

slide-86
SLIDE 86

AuroraLight

Final Protocol V chooses randomness r,r’,r’’ to determine polynomials R,R’,R” P commits to polynomials W,Y,Z,g,f used to compute D V chooses random evaluation point z

slide-87
SLIDE 87

AuroraLight

Final Protocol V chooses randomness r,r’,r’’ to determine polynomials R,R’,R” P commits to polynomials W,Y,Z,g,f used to compute D V chooses random evaluation point z P opens commitments to W(z), Y(z), Z(z), g(z), f(z)

slide-88
SLIDE 88

AuroraLight

Final Protocol V chooses randomness r,r’,r’’ to determine polynomials R,R’,R” P commits to polynomials W,Y,Z,g,f used to compute D V chooses random evaluation point z P opens commitments to W(z), Y(z), Z(z), g(z), f(z) V computes D and accepts iff

slide-89
SLIDE 89

AuroraLight

Final Protocol V chooses randomness r,r’,r’’ to determine polynomials R,R’,R” P commits to polynomials W,Y,Z,g,f used to compute D V chooses random evaluation point z P opens commitments to W(z), Y(z), Z(z), g(z), f(z) V computes D and accepts iff

Verifier computation is only succinct if many proofs are generated in parallel because computing R, R’, R’’, and Q takes time linear in circuit size

slide-90
SLIDE 90

AuroraLight with Sonic Helpers

How to make Verifier computation succinct for batches of proofs not generated together in parallel?

slide-91
SLIDE 91

AuroraLight with Sonic Helpers

How to make Verifier computation succinct for batches of proofs not generated together in parallel? Idea (Sonic): Have untrusted “helpers” (e.g. cryptocurrency miners) compute expensive parts (R, R’, R’’, and Q), and prove to the Verifier that they have done this honestly.

slide-92
SLIDE 92

AuroraLight with Sonic Helpers

How to make Verifier computation succinct for batches of proofs not generated together in parallel? Idea (Sonic): Have untrusted “helpers” (e.g. cryptocurrency miners) compute expensive parts (R, R’, R’’, and Q), and prove to the Verifier that they have done this honestly. Sonic helper applies to 2-variable polynomials, so we rewrite our polynomials to fit this form, e.g. R=R(X,Y) where X represents the choice of r and Y represents the choice of z.

slide-93
SLIDE 93

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

slide-94
SLIDE 94

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

For i∈[m], Commit to c1i= R(⦁, yi) Open c1i(zi)

slide-95
SLIDE 95

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

For i∈[m], Commit to c1i= R(⦁, yi) Open c1i(zi) Random challenge u

slide-96
SLIDE 96

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

For i∈[m], Commit to c1i= R(⦁, yi) Open c1i(zi) Commit to c2 = R(u, ⦁) For i∈[m], Open c1i(u) Open c2(yi) Random challenge u

slide-97
SLIDE 97

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

For i∈[m], Commit to c1i= R(⦁, yi) Open c1i(zi) Commit to c2 = R(u, ⦁) For i∈[m], Open c1i(u) Open c2(yi) Random challenge u Random challenge v

slide-98
SLIDE 98

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

For i∈[m], Commit to c1i= R(⦁, yi) Open c1i(zi) Commit to c2 = R(u, ⦁) For i∈[m], Open c1i(u) Open c2(yi) Open c2(v) Random challenge u Random challenge v

slide-99
SLIDE 99

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

For i∈[m], Commit to c1i= R(⦁, yi) Open c1i(zi) Commit to c2 = R(u, ⦁) For i∈[m], Open c1i(u) Open c2(yi) Open c2(v) Random challenge u Random challenge v 1. Check that all commitments verify 2. Check that c1i(u)=c2(yi) 3. Compute R(u,v) and check that c2(v)=R(u,v)

slide-100
SLIDE 100

The Sonic Helper

Helper assists verifying that R(⦁,⦁) is evaluated correctly at points (y1,z1),...,(ym,zm) Helper Verifier

For i∈[m], Commit to c1i= R(⦁, yi) Open c1i(zi) Commit to c2 = R(u, ⦁) For i∈[m], Open c1i(u) Open c2(yi) Open c2(v) Random challenge u Random challenge v 1. Check that all commitments verify 2. Check that c1i(u)=c2(yi) 3. Compute R(u,v) and check that c2(v)=R(u,v) Verifier only evaluates R

  • nce, no matter how many

proofs are batched!

slide-101
SLIDE 101

Sonic

Also relies on polynomials with no constant coefficient Guarantees this by using polynomial commitment scheme that does not allow committing to a constant term Has 2 modes: 1. Helped verification: uses untrusted helpers to speed up verification (implemented) 2. Fully succinct mode (AuroraLight does not have such a mode)

slide-102
SLIDE 102

Sonic Performance

slide-103
SLIDE 103

Takeaways

High level approach for this kind of SNARK construction: 1. Convert program to arithmetic circuit 2. Convert arithmetic circuit to polynomial with special property 3. Build an argument to prove something about the polynomial 4. Add on other features generically Improved polynomial commitments → Improved zk-SNARKs