可信设置

  • RareSkills
  • 发布于 2024-08-28 11:41
  • 阅读 172

文章介绍了ZK-SNARKs中使用的可信设置机制,详细解释了如何在保密值上计算多项式,并提供了Python代码示例。

A trusted setup 是 ZK-SNARKs 用于在一个秘密值上评估多项式的机制。

观察到多项式 f(x)f(x) 可以通过计算系数与 xx 的连续幂的内积来评估:

例如,如果 f(x)=3x3+2x2+5x+10f(x)=3x^3+2x^2+5x+10,则系数为 [3,2,5,10][3,2,5,10],我们可以按如下方式计算多项式:

f(x)=[3,2,5,10],[x3,x2,x,1]f(x)=\langle[3,2,5,10],[x^3,x^2,x, 1]\rangle

换句话说,我们通常认为评估上述多项式的 f(2)f(2) 为:

f(2)=3(2)3+2(2)2+5(2)+10f(2)=3(2)^3+2(2)^2+5(2)+10

但我们也可以将其评估为:

f(2)=[3,2,5,10],[8,4,2,1]=38+24+52+101f(2)=\langle[3,2,5,10],[8,4,2,1]\rangle = 3\cdot8+2\cdot4+5\cdot2+10\cdot1

现在假设某人选择了一个秘密标量 τ\tau 并计算:

[τ3,τ2,τ,1][\tau^3,\tau^2,\tau,1]

然后将这些点与一个加密椭圆曲线群的生成点相乘。结果如下:

[Ω3,Ω2,Ω1,G1]=[τ3G1,τ2G1,τG1,G1][\Omega_3, \Omega_2, \Omega_1, G_1]=[\tau^3G_1,\tau^2G_1,\tau G_1,G_1]

现在任何人都可以使用 结构参考字符串 (SRS) [Ω3,Ω2,Ω1,G1][\Omega_3, \Omega_2, \Omega_1, G_1]τ\tau 上评估一个三次(或更低)多项式。

例如,如果我们有一个二次多项式 g(x)=4x2+7x+8g(x)=4x^2+7x+8,我们可以通过将结构参考字符串与多项式的内积来评估 g(τ)g(\tau)

[0,4,7,8],[Ω3,Ω2,Ω1,G1]=4Ω2+7Ω1+8G1\langle[0,4,7,8],[\Omega_3, \Omega_2, \Omega_1, G_1]\rangle = 4\Omega_2 + 7\Omega_1 + 8G_1

我们现在已经计算了 g(τ)g(\tau) 而不需要知道 τ\tau 是什么!

这也被称为 trusted setup ,因为虽然 我们 不知道 g(τ)g(\tau) 的离散对数是什么,但创建结构参考字符串的人知道。这可能会导致信息泄露,因此我们 相信 创建 trusted setup 的实体删除了 τ\tau,并且以任何方式都不记得它。

Python 示例

from py_ecc.bn128 im...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
RareSkills
RareSkills
https://www.rareskills.io/