一文读懂零知识证明在区块链中的应用
假设某天阿里巴巴被人劫持,正在宝藏门前和绑匪周旋。那么,他有没有什么办法,可以在不告诉绑匪开门口令的情况下,向绑匪证明自己真的知道口令,从而保全自己的性命呢方法是有的,他可以让绑匪拿着弓箭站在适当的距离,既不至于离他太近,从而能够听到开门口令,又不至于离他太远,从而让阿里巴巴轻易逃跑。接着,阿里巴巴只需要向绑匪展示开门关门,就可以在不告诉绑匪真正口令的情况下,证明自己真的知道口令了。在这个过程中,阿里巴巴没有向绑匪(验证者)提供任何有用的信息,就让绑匪(验证者)确认了某个结论的真实性。这同样也是零知识证明(Zero Knowledge Proof, ZKP)的基本观念。
什么是零知识证明
零知识证明始于1985年,最早由莎菲·戈德瓦塞尔、希尔维奥·米卡利、查尔斯·拉克福三位教授在一篇名为《交互式证明系统的知识复杂度》(The knowledge complexity of interactive proof systems)的论文中提出。这一技术旨在向验证者证明某一命题,但在证明过程中,不透露除了“该命题为真”之外的任何信息。因此,“零知识证明”也可以说是“零泄密命题”。
这一概念听起来有些拗口,但却内涵明确。零知识证明需要具有一下三大要素:
1.完备性(Complete)。证明者需要能真正向验证者证明命题为真,或者说能够说服验证者。
2.可靠性(Sound)。如果命题为假,证明者就无法向验证者证明命题为真,从而保证证明是可信的。
3.零知识(Zero-Knowledge)。在向验证者证明命题为真的过程中,完全不暴露其他有效信息。
零知识证明是现代密码学的基础之一,莎菲·戈德瓦塞尔、希尔维奥·米卡利也因他们在零知识证明上的成就荣获2012年图灵奖。在现代互联网中,零知识证明是隐私计算中最基本的技术之一。而在区块链领域,由于链上数据完全对外公开,除了无法将链上地址与人的线下真实身份对应外,实际上并没有某种隐私保护机制。因此,零知识也在区块链上获得了诸多应用,如身份系统、隐私保护、链下扩容等。尤其是zk-SNARKs技术(zero knowledge succinct arguments of knowledge),可以零泄密的证明某人拥有某种信息,这一技术在区块链领域广受欢迎。
图:Vitalik对于zk-SNARK技术的说明图
零知识证明的应用
Filecoin
Filecoin是基于一种互联网新协议——星际文件系统(IPFS协议)的分布式储存项目,也是目前基于IPFS的最知名项目。同时,由于使用了基于零知识证明的储存证明技术,Filecoin还是世界上最大的零知识证明网络。具体来说,Filecoin采用的复制证明和时空证明过程都是基于zk-SNARK技术,这是一种将原始数据储存在链下,将经过计算得到的哈希值上传到链上,并且周期性证明储存有效性的证明技术。
在进行文件储存时,需要对原始数据构建Merkle树,逐层进行VDE计算,最后将Merkle树的树根上传到链上。这一加密过程耗费大量算力,但最后上链的数据大小很有限,可以把数百kb的数据压缩到仅数百字节,因此是一种“时间换空间”的处理方式。在数据上链后,则需要每隔一段时间验证一个随机挑选的Merkle叶子上的数据,计算从根到该叶的全部路径,这一过程也被称作时空证明。如果被要求提供证明的节点并未储存对应数据,就无法在有限时间内提供所需的所有路径的哈希值,从而无法通过验证。这样,我们就通过零知识证明在不暴露储存数据本身的条件下,验证了数据储存的有效性。
zk-Rollup
Filecoin将zk-SNARKs技术用于分布式储存,验证一般数据储存的有效性。而ZK-rollup则是将交易原始数据上传至链上,并同时使用零知识证明自动验证交易的有效性。但所有交易数据都需要证明这一点导致了巨大的计算开销,也使得ZK-rollup的性能表现较差。
在区块链系统中,每个节点都需要对区块信息进行计算,以验证交易信息的可靠性。对于整个系统来说,这种计算是高度重复的,而比起计算区块信息,直接对区块信息进行验证显然更快。这就是Zk-rollup对区块链进行扩容的基本原理。在数据结构上,也是对系统中的交易状态维护一个全局Merkle树,每种状态都是树上的一个叶节点。假如说采用二进制Merkle树结构,为了支持100万用户和1000中资产,Merkle树的深度就需要达到30左右。如果每次交易将会改变5~10叶节点的信息,则需要进行约200次哈希计算。
结语
零知识证明是加密学的明珠,在隐私保护、减少重复计算等方面起到了重要作用。而这些优良的特性无疑将会帮助我们开启一个隐私、安全、迅速的区块链未来。
声明:本站所提供的资讯信息不代表任何投资暗示, 本站所发布文章仅代表个人观点,仅供参考。