Filecoin技术文档学习3-zk-SNARKs系列知识2多项式盲估

首先我们给出基本的数学定义:

Filecoin技术文档学习3-zk-SNARKs系列知识2多项式盲估_第1张图片

公式1:我们在上一节[同态隐藏]已经介绍过这个群的特性,这里简单解释一下,定义一个域:F^p,其中操作类型为加法运算与乘法运算。

公式2:定义一个以x为变量的d次多项式函数P(x),其中x的系数ai属于域F^p, 0=

公式3:对于任意一个s,并且s属于域F^p,则P(s)的值为1,s, s^2 …..s^d的线性运算和,其中线性参数为a0, a1,……ad。

公式4:其实P(x)是1,x, x^2……x^d的线性组合,对于此类线性组合在同态函数的映射,我们在上一节计算E(x+y)时已经给出证明,此处给出关于P(x)的同态函数的证明。

多项式盲估。

如果A知道多项式P(x)上具体的某一点S,但是不知道多项式的具体系数,即不了解P(x)的表达式。而对于B,他清楚P(x)的具体表达式,但是不知道具体的某一点S的值,在这样的情况下,A想知道E(P(s))的值。其中A,B都知道表达式E(x)=g^x。

此表达式已经在上一节讲过,并且根据判定性Diff-Hellman假设[1],在得知g和E(x)的情况下很难推测x的具体值。

此时在A不泄露s的值,B不泄露P(x)表达是的情况下,A评估E(P(s))的方法为:

1,A发送E(1), E(s), ……E(s^d)的值给B,

2,B将公式3代入公式4,计算E(P(s)),并将结果返回给A.

用途:

对于评估者V和证明者P,V认为自己有一个正确的多项式,因此他希望证明者P来提供盲估,以证明自己的多项式是否正确,P会随机选择一个数据点S,并给出相关的盲估值E(P(s)),然后发送给V,V得到E(P(S))后判断自己是否有正确的多项式表达。这种做法依赖于多项式符号检验中的规则,即"不同多项式在不同的点会不相同"[2]

[1]:https://en.wikipedia.org/wiki/Decisional_Diffie%E2%80%93Hellman_assumption

[2]: https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma

你可能感兴趣的:(Filecoin技术文档学习3-zk-SNARKs系列知识2多项式盲估)