skip to content
Side-7

Notes on Zero Knowledge Proofs

/ 2 min read

Updated:
Table of Contents

算术电路: C:FnFC: \mathbb{F}^n → \mathbb{F}.

举例: 验证hash函数的算术电路: CSHA(h,m)C_{SHA}(h, m): 当SHA(m)=hSHA(m) = h输出00, 否则输出不为00. 可以表示为: CSHA(h,m)=hSHA(m)C_{SHA}(h, m) = h - SHA(m), 其中hhmm是算术电路的输入. 对于一个SHA256的验证, 算术电路大概需要20K20K个门.

NARK: Non-interactive ARgument of Knowledge

组成:

  • (public) 验证电路: C(x,w)FC(x, w) → \mathbb{F};
  • (public) 公共声明 (public statement): xx;
  • (private) 证据/见证 (witness): ww;
  • (public) 公共参数 (public parameters): (pp,vp)S(C)(pp, vp) \gets S(C);
  • (public) prover’s parameters: pppp;
  • (public) verifier’s parameters: vpvp.

性质:

  • 完备性(Completeness): 对于使得算术电路C(x,w)C(x, w)输出00的输入, 生成的证明一定可以通过验证.
  • 可靠性(Soundness): 如果V接受了证明, 则生成证明的Prover一定有ww的知识.

SNARK: Succinct NARK, 一个符合完备性, 可靠性的NARK, 同时是简短的.

zk-SNARK: 一个 SNARK, 同时需要满足 zero knowledge.