3. plonk 零知识证明
视频来源:https://www.bilibili.com/video/BV1XZ4y1A7bU?p=3&share_source=copy_web
3.1 多项式承诺
多项式承诺:当我有一 m m m,我发给V,发送后就不可以改变。前面讲到了用指数函数完成:
对于 F P = { 0 , 1 , 2 , . . , p − 1 } F_P =\lbrace 0,1,2,..,p-1 \rbrace FP={ 0,1,2,..,p−1}, 存在映射到 G = { e , g , . . . , g p − 1 } G = \lbrace e,g,...,g^{p-1} \rbrace G={ e,g,...,gp−1} ,即 x − > g x x->g^x x−>gx.当 x ′ ≠ x , g x ′ ≠ g x' \ne x,g^{x'} \ne g x′=x,gx′=g.若之后P之后使用了假的承诺,就会被封发现。
对于多项式: f ( x ) = z 0 + , … , + z d x d f(x) = z_0 + ,…,+ z_d x^d f(x)=z0+,…,+zdxd,要求“部分打开承诺”。
假设 d = 10 w = 1 0 5 d=10w=10^5 d=10w=105,在打开的时候V只需要一个z,此时概率 1 / 1 0 5 + 1 1/{10^5+1} 1/105+1。
哈希函数的效果:压缩与保密。
但为了保证局部性,在部分打开的时候还能继续验证,以为着压缩的过程必须保证局部信息。这种思想和merkel tree(https://www.cnblogs.com/fengzhiwu/p/5524324.html 当有很多文件的时候依次打包,想取一条文件的时候,选择一条路径。) 和acucmulator类似。为了后续的打开,因此不能使用粗暴的方式压缩。
压缩方法:使用一个随机点 r r r 进行压缩(Schwartz-zippel lemma,见课程二)。 由于事先不知道r,r可以是任何一个数。使得一个点的效果相当于很多点。考虑P承诺给V,对于V给的随机的r,P还给 F ( r ) F(r) F(r),只要还给V,多项式就已经固定了。若P知道r(比如从黑盒子中偷出r),他就能作弊,若不知道r他就不能作弊。在下一次打开的时候,他可以找到另一个多项式满足 f ′ ( r ) = f ( r ) f'(r) = f(r)