Owner: @sputnik-meng

我们相信大部分的信息已经在互联网上存在,被悉心挑选和结构化地组织才可以更好地帮助大家系统、快速地学习。借助 DAO 的力量,我们试图创建一个持续更新的零知识证明(ZK)知识库目录,帮助更多人登陆这个领域。如果你喜欢现在的内容,欢迎分享给更多朋友!

我们已经创建了 ZK 知识的基础框架,欢迎你完成相关的赏金任务贡献更多内容,或者提交 PR 到这个代码仓库分享任何你的想法和意见,DAO 成员会尽快帮忙审核。

任务 赏金 状态
understanding Bulletproof 100 USDT + 1 HAC TBD
understanding MACI 100 USDT + 1 HAC TBD
understanding Zerocoin 100 USDT + 1 HAC TBD
understanding Zerocash 100 USDT + 1 HAC TBD

十分期待您的贡献 🌍💻💪 也欢迎你加入 Hackathon DAO Discord 参与更多讨论-)




零知识证明的意义

随着区块链以及区块链上隐私保护技术的发展,越来越多的人关注到零知识证明技术。而谈起零知识证明技术的意义,可以说,这项技术以理论的密码协议的形式诞生,根本的意义在于解决信任的问题。

  • 许多如今火热的匿名币项目(譬如Zerocoin、Zerocash),都是以零知识证明技术满足的相关隐私保护需求。
  • 各种场景下的数据隐私保护:例如需要向保险公司证明自己的健康情况但不想泄露自己体检的各方面具体指标,或是想向某个用人单位证明自己在校期间的课程成绩在某分数以上而不想透露具体的分数。
  • 身份认证:用户可以零知识地向服务器证明自己拥有私钥,或自己知道某个秘密的答案而无需透露私钥或答案。
  • 信用记录:信用记录是另一个可以充分发挥零知识证明优势的领域,用户可以有选择性的向另一方出示自己的信用记录,一方面可以有选择的出示满足对方要求的记录分数,同时证明信用记录的真实性。


简单的介绍

上世纪80年代初,Goldwasser等人提出了零知识证明这一概念。零知识证明是一种协议(非正式地讲,协议就是完成一项任务的一系列步骤,它包括两方或多方),这种协议的一方称为证明者(prover),它试图使被称为验证者(verifier)的另一方相信某个论断是正确的,却不向验证者提供任何有用的信息,此处的“有用的信息”不仅包括关于论断的知识,同样包括验证者本身无法获知或实现的内容,譬如验证者不能通过和证明者交互而计算出自己不能求解的问题等等。

已有大量事实表明零知识证明在密码学中是很有用的。

在本节中,我们引用1990年的《how to explain zero-knowledge protocols to your children》一文中使用的诸多有趣的例子来诠释零知识证明算法的原理以及重要的组件。

1. 零知识洞穴

在许多的关于零知识证明的科普文档中,往往会引用零知识洞穴作为例子来便于读者理解。这个例子最初在1990年被使用,生动地诠释了零知识证明算法的原理。

在这里我们引用这个例子便于读者初步理解零知识证明的概念。

这个洞穴如图所示

零知识洞穴

有一个秘密,知道咒语的人可以通过咒语打开C、D之间的秘密之门。而对于不知道咒语的人来说,这两条路都是死胡同。阿里巴巴通过追踪大盗听到了这个咒语,从而获得了打开秘密之门的能力,接下来我们称他为证明者P。

证明者P知道这个秘密,他想让验证者V相信这一事实,但他不想泄露咒语。下面是P怎样使V相信的过程:

1.V站在A点;

2.P走进洞穴,到达C点或D点;

3.在P消失在洞穴中之后,V走到B点;

4.V向P喊,叫P或者

a.从左通道出来,或者b.从右通道出来;

5.P答应并照做,如果有需要则使用咒语打开秘密之门

6.P和V重复步骤1-5

注意到如果P走进的通道和V要求他走出的通道恰好相同,则P不需要知道咒语同样可以完成V的要求;如果走进的通道和要求的不同则必须知道咒语才可以通过验证,也就是说P在不知道咒语的情况下通过验证的概率是1/2,知道咒语的情况下通过的概率为1。而通过不断地重复这个实验过程,若P不知道咒语,在n轮后P能通过的概率则为1/2^n,当n足够大时,P愚弄V的概率极小,此时若P每轮都通过验证,则V有理由相信P知道咒语(而V从未获得关于咒语的任何信息)。

2. 电视真人秀与冒牌货

这个例子用来向读者解释零知识证明算法的“零知识性”是如何刻画的,这也正是用来证明“零知识性”的工具——模拟(simulation)

时过境迁,来到现代。阿里巴巴的后人Mick Ali从他的笔记中获取了咒语,于是再次来到洞穴,这次他带来了一位记者,在记者的镜头下,他完成了和祖先一样的证明过程——连续成功地从记者指定的洞口走出40次。这段真人秀播出后大火,但是引来了另一位冒牌货,这个冒牌货试图复现Mick的操作,但是由于几乎不可能连续40次猜中外边的记者要求的方向,所以总失败,不过也会有运气好而成功一次的镜头。

于是他想到一个办法——剪辑录像带,把所有失败的镜头都剪掉,这样经过多次尝试,他终于成功获得了一份连续成功40次的录像带。他把录像发出,同样大火。

事情闹到法庭。而在法庭上,参与审判的法官和陪审团面对真正的Mick的录像带以及冒牌货的录像带,单从这两者之间并不可区分两人谁究竟真的掌握咒语,谁是模拟

由于模拟是确实没有任何关于咒语的知识的,所以模拟的过程不可能泄露任何关于咒语的知识,并且模拟和真实的录像带又是不可区分的,这就说明真实的录像带也是不泄露咒语知识的(否则可以利用是否泄露知识来区分二者)。

Mick确实实现了他的目标——零知识地使验证者相信他知道咒语。

3. How to explain zero-knowledge protocols to your children

我们推荐对零知识证明感兴趣的读者阅读这篇文章。


字典 - 常用名词和基础概念

to be updated by @sputnik-meng




基本性质和核心构架

to be updated by @sputnik-meng

1. 完备性(completeness)

2. 可靠性(soundness)

  • 严谨的定义
  • 外部资料
  • 证明的工具:知识提取器

3.零知识性(zero-knowledge)

  • 严谨的定义
  • 外部资料
  • 证明的工具:模拟




现有的算法实现

1.简洁schnorr协议(to be updated by @sputnik-meng)

to be updated by @sputnik-meng

2.哈密顿图的零知识证明

3.Zk-snark

4.Plonk

5.Bulletproof

to be updated by bounty hunters 💰赏金任务

6.Hardware zk

to be updated by bounty hunters




应用

1.MACI

to be updated by bounty hunters 💰赏金任务

2.Zerocoin

to be updated by bounty hunters 💰赏金任务

3.Zerocash

to be updated by bounty hunters 💰赏金任务




推荐阅读