文章介绍了ZK-SNARKs中使用的可信设置机制,详细解释了如何在保密值上计算多项式,并提供了Python代码示例。
A trusted setup 是 ZK-SNARKs 用于在一个秘密值上评估多项式的机制。
观察到多项式 f(x) 可以通过计算系数与 x 的连续幂的内积来评估:
例如,如果 f(x)=3x3+2x2+5x+10,则系数为 [3,2,5,10],我们可以按如下方式计算多项式:
f(x)=⟨[3,2,5,10],[x3,x2,x,1]⟩
换句话说,我们通常认为评估上述多项式的 f(2) 为:
f(2)=3(2)3+2(2)2+5(2)+10
但我们也可以将其评估为:
f(2)=⟨[3,2,5,10],[8,4,2,1]⟩=3⋅8+2⋅4+5⋅2+10⋅1
现在假设某人选择了一个秘密标量 τ 并计算:
[τ3,τ2,τ,1]
然后将这些点与一个加密椭圆曲线群的生成点相乘。结果如下:
[Ω3,Ω2,Ω1,G1]=[τ3G1,τ2G1,τG1,G1]
现在任何人都可以使用 结构参考字符串 (SRS) [Ω3,Ω2,Ω1,G1] 在 τ 上评估一个三次(或更低)多项式。
例如,如果我们有一个二次多项式 g(x)=4x2+7x+8,我们可以通过将结构参考字符串与多项式的内积来评估 g(τ):
⟨[0,4,7,8],[Ω3,Ω2,Ω1,G1]⟩=4Ω2+7Ω1+8G1
我们现在已经计算了 g(τ) 而不需要知道 τ 是什么!
这也被称为 trusted setup ,因为虽然 我们 不知道 g(τ) 的离散对数是什么,但创建结构参考字符串的人知道。这可能会导致信息泄露,因此我们 相信 创建 trusted setup 的实体删除了 τ,并且以任何方式都不记得它。

from py_ecc.bn128 im...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!