Building Eff. SNARK
Date: 2024-08-28 21:09:49
Reviewed:
Topic / Chapter: Building Eff. SNARK
summary
❓Questions
Notes
Overview
- General idea
- poly-commit + poly-IOP ⇒ SNARK for general circuits
- Polynomial commitment review
- commits to
eval: for public , prover can convince, for committed ,- ⭐ and
- : with
- proof size & verif time:
KZG poly-commit scheme (2010)
- ⭐group:
- or order , and is cyclic
- setup()→
- delete (trusted setup)
- ⭐commit()→ where
- use to compute
- 👨🏫is binds, but not hides!
-
- ⇒
Evaluation
- commit(
- and
- ↔ being root of
- ↔ divides
- ↔ s.t.
- i.e. divisible
- ⭐: compute , and
- ⭐⭐
- proof size:
- 👨🏫computationally expensive!
- accepts if
- i.e.
- if agrees: true w.h.p.
- : computed using “pairing” from from
- i.e.
KZG poly-commit scheme
- generalization
- can commit to -variate polynomials
- batch proofs
- assume has
- proving for ,
- batch proof : only one group element!
- linear time commitment
- two ways to commit
- coefficient representation:
- ⇒computing
- takes time
- ⇒computing
- point-value representation:
- computing naively: construct coeffs.
- ⇒ time w/ Num. Th. Transform
- point-value representation: better
- Lagrange interpolation:
-
- =1 if , 0 otherwise
- idea: transform into Lagrange (linear map)
- now:
- ⇒ in time, not
- multi-point proof generation
- w/
- and
- if needs
- naive: takes , proofs each taking
- Feist-Khovratovich (2020):
- if a multiplicative subgroup: time
- else:
Dory polynomial commitment
- difficulties w/ KZG: trusted setup for ,
- Dory:
- transparent setup: no secret randomness in setup
- : single group element (independent of )
evalproof size: group elements- verify time: constant in KZG
evalverify time: ; prover:- verify time: constant in KZG
- Dory:
PCS applications
- e.g. vector commitment (replacing Merkle trees)
- : vector
- interpolate poly
- sends to
- : asks to prove ,
- : generate eval proof that
- w/ KZG: a single group element
- shorter than Merkle proof
- sends
- : accept / reject