前言
了解零知识证明的读者,可能都拜读过V神的文章,整个系列由浅入深,很有条理,相对其他文章更容易理解一下。其实V神讲解的算法是PGHR13算法的整体步骤,此算法也被应用于知名项目Zcash中,现在,就让我们去一起探究,在实际项目中,PGHR13算法是具体的什么步骤呢?
PGHR13
在Zcash的Sapling版本升级之前,其采用的零知识证明算法的主体就是PGHR13,并因为效率和安全问题,做了一些改动。算法的具体内容如下图所示:
- Public paraments : 素数r,阶为r椭圆曲线群G1,G2,用于非对称双线性配对;非对称双线性配对效率最高
- Key generator:主要生成CRS(pk,vk)
a. 输入算术环路C,其中n为pub_input size,h为witness size,l为output size
b. 向量A,B,C,元素为多项式,个数为m + 3个,m为算术环路wire的数量
c. Z为目标多项式
d. 向量A,B,C扩展到m+3的目的是为了保护多项式变量的取值τ
e. τ,ρ等随机数都是私有数据,生成完CRS后,要销毁
f. τ是多项式的取值
g. α等主要用来