密码学假设:抗碰撞哈希函数、椭圆曲线上的离散对数问题、指数知识
透明设置vs可信设置
生成证明的耗时:线性vs超线性
验证证明的耗时:常数时间、对数时间、次线性、线性
证明尺寸的大小
递归的简易性
算术化方案
单变量vs多变量多项式
起源:20世纪80~90年代
正如我们所提到的,零知识证明并不是新概念,其定义、基础、重要定理,甚至相关的重要协议,早在上世纪80年代中期就已经出现,首次出现是在是在Goldwasser、Micali(Algorand创始人)和Rackoff的论文《The Knowledge Complexity of Interactive Proof Systems》中。
而如今我们用来构建ZK-SNARK技术的关键思想和协议,在20世纪90年代就被出,比如Sumcheck协议,将对多元多项式求值总和的声明,简化为在椭圆曲线上随机选择的点进行单一求值,该协议为ZK技术奠定了重要基础。
所以,ZK思想的萌芽实际上远远早于比特币的出现,但在当时普遍缺乏ZK的合适用例,人们也无法提供满足ZK证明系统所需的强大算力,毕竟互联网和硬件设备在上世纪90年代并不发达。
GKR协议(2007)
GKR(Goldwasser-Kalai-Rothblum)是一种交互式协议,证明者的运行时间与电路中逻辑门的数量呈线性相关,而验证者的耗时则与电路大小呈次线性关系。在GKR协议中,证明者和验证者需要对一个有限域上的双输入算术电路运行结果达成一致,该电路的深度为d,第d层为输入层,第0层为输出层。协议从关于电路输出的声明开始,通过递归将其简化为对上一层的声明。最后,我们可以将对输出的声明转换为对电路输入参数的声明,这很容易被验证。可以说,GKR协议是在前面提及的Sumcheck协议基础上进行了高度简化的。
提供更高效的证明
减少预处理的次数
实现通用的而非电路特定的设置
避免可信设置
开发使用高级语言描述电路的方法,而不是手动编写多项式约束