- 唠嗑
最近研究了下零知识证明算法-[PLONK](http://link.zhihu.com/?target=https://www.semanticscholar.org/paper/PLONK%253A-Permutations-over-Lagrange-bases-for-of-Gabizon-Williamson/d928b78ea85cae93d3ca0bfabe47bf954db55e7a)。肚子里的墨水又增加了,记一下学习成果与新的体会,和大家共同学习 --- 江小白。
- 现状
近些年,各种新的零知识证明算法层出不出,各有各的特点,各有各的优势。借用[V神系列文章](https://vitalik.ca/general/2019/09/22/plonk.html)里的一张图来简单呈现下当前的零知识证明算法现状。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210113133252328.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE3OTc2NA==,size_16,color_FFFFFF,t_70#pic_center)
从图中可以简单总结出以下几点:
1. 理论上安全性最高的是STARKs算法,不依赖数学难题假设,具有抗量子性;
2. Proof大小上最小的是SNARKs算法,如Groth16;
3. PLONK算法在安全性上和Proof大小上,位于上述两者之间;
其他的这里不做过多阐述,如想了解零知识证明更多信息,可参考链接;
对于SNARKs算法,绕不开的一个点就是中心化的Trust Setup,也称之为CRS(the Common Reference String)。而无论是PGHR13, Groth16,还是GM17算法,它们的CRS都是一次性的,不可更新的。即,不同的问题将对应着不同的CRS,这在某些场景下,会变得比较麻烦。这些存在的问题,变成了PLONK,SONIC这类算法的一个优势,它们算法虽然也需要中心化的可信设置,但是它的CRS具有一定的普适性。即,只要电路的大小