Skip to content

第 1 课 练习

今天的练习大部分取自这个ZK Topic Sampler

ZKP 三色演示

访问并试用交互式演示。 这是我们在课堂上学习的三色示例的程序化版本。

  • 回答页面底部的练习 1。

可选 - DLOG 的 ZKP

用离散对数实现非交互零知识证明! 为此,您需要阅读并理解 本讲义 的第一部分,因为 以及 Fiat-Shamir 启发式

具体来说,您应该实施:

  • 函数 dlogProof(x, g, p) 返回 (1) 残差 y,计算方法为 g^x (mod p) 和 (2) 可以证明您知道 x 是 y 的离散对数的证据 pf。
  • 函数 verify(y, g, p, pf) 如果 pf 是有效的证据,则计算结果为真,否则为假。如果证明者确实知道有效 x,则证明者应该只能以不可忽略的概率计算有效证明。

如果您需要帮助,可以在此处找到带有注释的 Javascript 参考实现。 这个练习可能需要你几个小时。

对于额外的挑战,也可以尝试实施非交互式 ZKP 来证明 3 色!

zkmessage.xyz

zkmessage 上创建一个帐户并发布消息,这是一个由 zkSNARK 支持的匿名留言板。

  • 解释为什么你需要生成并保存一个“秘密值” 。
  • 用白话写出 ZK 中正在证明的陈述。
  • 从不同的浏览器或计算机登录到相同的 zkmessage 帐户。 解释为什么 zkmessage 不能像大多数社交应用程序一样,只使用简单的“用户名/密码” 。

如果您好奇,我们在此处更深入地探讨了 zkmessage 的构建。