可信设置

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

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

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

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

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

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

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

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

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

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

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

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

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

$$ [\Omega_3, \Omega_2, \Omega_1, G_1]=[\tau^3G_1,\tau^2G_1,\tau G_1,G_1] $$

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

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

$$ \langle[0,4,7,8],[\Omega_3, \Omega_2, \Omega_1, G_1]\rangle = 4\Omega_2 + 7\Omega_1 + 8G_1 $$

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

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

Python 示例


from py_ecc.bn128 im...

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

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

0 条评论

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