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
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
    • 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 )
      • eval proof size: group elements
        • verify time: constant in KZG
      • eval verify time: ; prover:
        • verify time: constant in KZG
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