计算验证问题可以概括为:验证者在不知道秘密输入的情况下能否有效地验证计算结果。
zksnark是上述计算验证问题的解决方案。使用zksnark,验证程序可以为计算过程生成一个简短的验证字符串。验证器读取此字符串以确定给定的公共输入和输出是否合法。
Groth16是众多zksnark施工方案之一。接下来,让我们介绍groth16如何解决计算验证问题。
多项式插值
将向量转化为多项式的一种方法是使用多项式插值。
from R1CS to polynomial
指数知识假设(KoE假设)
双线性配对
Groth16
Setup
Prove
Verifier
Analysis
Summary
本文阐述了groth16-zksnark方案的施工原理。从算法电路出发,介绍了如何将计算验证问题转化为r1cs问题和QAP问题。然后我们解释了如何使用groth16方案来证明我们知道QAP问题的解。groth16方案采用kOe假设和双线性配对。它的缺点是需要由可信的第三方初始化,每个电路需要初始化一次。同时,groth16具有最有效的验证算法和最短的证明字符串,使groth16成为应用最广泛的zksnark方案。