技术博文:快速了解零知识证明地址:bernsteinbear.com/blog/zkp/“注意:这篇文章不是在讲加密货币。我对加密货币并不感兴趣。
几周前,Chris 发消息问我想不想实现一下零知识证明。我一开始没有兴趣,但随后他说:
“如果我告诉你,有一种零知识证明与加密货币毫无关系呢?如果我告诉你,它涉及图论呢?如果我再告诉你,它只需要大约 30 行代码就能实现呢?”
这下就有意思了。
零知识证明的基本设定中有两方:证明者和验证者。证明者声称自己掌握了某个通常为 NP 完全问题的解,并且能够在不公开实际答案的情况下说服验证者。
经典例子是图的三着色。证明者声称,对于双方已知的某张图,自己拥有一个有效的三着色方案;它希望让验证者相信这一点,同时不泄露具体的颜色分配。
简单回顾一下:图着色是为图中的每个节点分配一种颜色,并确保任意两个相邻节点颜色不同。三着色则要求使用的颜色不超过三种。
那么,该怎么做到这一点?我们看过一些博客文章和外观精致的演示,虽然很有趣,却没能帮助我们真正理解其原理。
我和 Chris 绕了几圈之后,决定直接阅读 Goldreich、Micali 和 Wigderson 的一篇早期论文。实际上我们只认真看了第 23 页,但这已经足以让我们动手实现了。”