1985 年,MIT 研究员 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在论文《The Knowledge Complexity of Interactive Proof Systems》首次提出零知识证明(Zero Knowledge Proof)的概念。
零知识证明:是指一方(证明者)可以在不揭示信息本身或任何额外信息的情况下,向另一方(验证者)证明一个给定的声明是真实的。
为了实现这一点,零知识证明协议依赖于将一些数据作为输入并返回「真」或「假」作为输出的算法。
零知识证明协议需满足 3 个条件:
- 完整:如果证明者输入有效,则零知识协议始终返回为「真」。因此诚实的证明者能说服同样诚实的验证者。
- 健全:如果证明者输入无效,则零知识协议无法返回为「真」。因此作弊的证明者无法欺骗诚实的验证者相信该声明为真。
- 零知识:除了了解给定的声明为真或假以外,验证者不知晓该声明相关的任何其他信息。
常见的零知识证明有两类:
- ZK-SNARKs,全称 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge
- ZK-STARKs,全称 Zero-Knowledge Scalable Transparent Argument of Knowledge
如需了解更多(如 ZK-SNARKs 和 ZK-STARKs 的区别等),请阅读下方参考资料。参考资料:https://ethereum.org/en/zero-knowledge-proofs/