第 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 的构建。