[挖矿综合] 零知识证明 - Groth16算法介绍

[复制链接]
16788 |0
发表于 2019-6-17 12:00:41 | 显示全部楼层 |阅读模式
看zk-SNARK的文章或者资料的时候,经常会碰到一些算法名称,比如Groth16,GGPR13等等。这些名称是由算法提出的作者名称或者名称首字母以及相应的年份组成。Groth16,是由JensGroth在2016年提出的算法。GGPR13,是由RosarioGennaro,CraigGentry,BryanParno,MarianaRaykova在2013年提出的算法。

零知识证明(zk-SNARK ),从QSP/QAP到Groth16,期间也有很多学者专家,提出各种优化(优化计算时间,优化证明的大小,优化电路的尺寸等等)。Groth16提出的算法,具有非常少的证明数据(2/3个证明数据)以及一个表达式验证。

Groth16论文(On the Size of Pairing-based Non-interactive Arguments)的下载地址:

https://eprint.iacr.org/2016/260.pdf

本文主要从工程应用理解的角度介绍Groth16算法的证明和验证过程。文章中所用的中文字眼可能和行业中不一样,欢迎批评指出。

1、术语介绍


Proofs- 在零知识证明的场景下,Proofs指具有完美的完备性(Completeness)以及完美的可靠性(Soundness)。也就是,具有无限计算资源也无法攻破。

Arguments- 在零知识证明的场景下,Arguments是指具有完美的完备性以及多项式计算的可靠性。也就是,在多项式计算能力下,是可靠的。

2、Jens Groth是谁?


Groth是英国伦敦UCL大学的计算机系的教授。伦敦大学学院 (University College London),简称UCL,建校于1826年,位于英国伦敦,是一所世界著名的顶尖高等学府,为享有顶级声誉的综合研究型大学,伦敦大学联盟创始院校,英国金三角名校,与剑桥大学、牛津大学、帝国理工、伦敦政经学院并称G5超级精英大学。

http://www0.cs.ucl.ac.uk/staff/j.groth/

Groth从2009年开始,每年发表一篇或者多篇密码学或者零知识证明的文章,所以你经常会听到Groth09,Groth10等等算法。

简言之,牛人~。

3、NILP



4、QAP的NILP













5、QAP的NIZK Arguments


从QAP的NILP可以演化为QAP的NIZK Arguments。也就是说Groth16算法并不是完美的可靠,而是多项式计算情况下可靠。QAP的定义为"Relation"




6、证明元素的最小个数


论文指出zk-SNARK的最少的证明元素是2个。上述的证明方式是需要提供3个证明元素(A/B/C)。论文进一步说明,如果将电路进行一定方式的改造,使用同样的理论,可以降低证明元素为2个,但是,电路的大小会变的很大。


总结:Groth16算法是Jens Groth在2016年发表的算法。该算法的优点是提供的证明元素个数少(只需要3个),验证等式简单,保证完整性和多项式计算能力下的可靠性。Groth16算法论文同时指出,zk-SNARK算法需要的最少的证明元素为2个。目前Groth16算法已经被ZCash,Filecoin等项目使用。

ibnuk50mup5.png

ibnuk50mup5.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表