作者:向程@HUST
1. 零知识证明初探
零知识证明是近几年密码学技术中最引人注目的几种技术之一,在区块链领域更是高频词,但是由于其设计较多的数学知识,对一般的开发人员来说理解难度较大,而且资料多为英文。所以就写写博客说说四处摘抄,外加点自己的理解,但因为我本身并非密码学专业,描述如有不当,请指正。
本文偏数学推导,非科普也不讲应用,感兴趣的话,可准备纸笔一路推导下去。
本文撰写前参考了Zcash博客,安比实验室博客,Vitalik等等许多博客以及多篇相关论文,但本文只做科普,所以就不一一列出引用了。
首先说说零知识证明,其实这个概念的出现已经很久了,零知识证明协议有很多种,zkSNARKs是目前应用最广泛的一种(包括各种改进方案),其他还有zk-STARKs、bulletproofs等等。
其基本概念就是一个证明者Prover向验证者Verifier证明某个陈述(Statement)是真是假,但在证明过程中不揭露任何其他信息。比如身份证明,某一个组织让组织内成员提供身份证明,但不想泄露任何信息,就可以使用零知识证明来完成。但是注意,这里的说的证明并非数学意义上命题证明意义上的证明,而是Prover去让Verifier相信某个陈述为真,和数学推导证明不一样。
目前,zcash,ethereum,filecoin等很多项目都使用了零知识证明来完成某些任务,比如隐私交易,链下交易验证,存储证明等等。
由于Segmentfault不支持公式显示了,本文全文转往深入浅出零知识证明之zk-SNARKs
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。