最近接触学习零知识证明,很是头疼,没有一些背景知识,只能硬看了,而且也没有别的好方法。
为什么要学习零知识证明
因为区块链的去中心化,导致信息都是公开透明的,比特币、以太坊、EOS等目前绝大部分项目区块链上的交易都是公开的:发送者的地址、金额、接收者的地址等,虽然这个还是匿名的,但是除了匿名之外,其他的信息都是可以被跟踪的,无法达到隐私的目的,如果有人知道了你的地址,那么你的交易记录和资产就完全透明了。
毕竟人都是需要隐私的,在这种情况下,零知识证明就应运而生(其实零知识证明很早就出现了,只是因为区块链的发展而火了起来)。
ZCash项目就用到了零知识证明,可以隐藏交易的发送者、金额和接收者,实现完全隐私的目的。
什么是零知识证明
所谓零知识证明,就是比如你知道一个问题的答案,不暴露任何线索的前提下,向别人证明你知道这个答案。
阿里巴巴的例子就是个很好的案例:
阿里巴巴被强盗抓住,为了保命,他需要向强盗证明自己拥有打开石门的密码,同时又不能把密码告诉强盗。他想出一个解决办法,先让强盗离开自己一箭之地,距离足够远让强盗无法听到口令,足够近让阿里巴巴无法在强盗的弓箭下逃生。阿里巴巴就在这个距离下向强盗展示了石门的打开和关闭。
提到零知识证明,就不得不提到zkSNARK,它是零知识证明的一个典型实现。
什么是zkSNARK
zk-SNARKs 是 zero knowledge Succinct Non-interactive Argument of Knowledge 的缩写。其中的词语分别解释如下