ZK-SNARK
随着以太坊进入大都市阶段,它将引入各种变化,这些变化将使其变得更加抽象和更加友好。这些更改之一是引入了“零知识简洁非知识性争论”,也称为Zk-Snarks。
零知识是指一种构造证明,其中个人可以证明数据所有权,而不必透露该数据。
简洁表示可以快速检查零知识证明。这包括带有实质性陈述的证明。
与实际计算的长度相比,消息的大小很小。
非交互式意味着不需要验证者与证明者进行交互来批准零知识证明。相反,证明者可以提前发布其证明,验证者可以保证其正确性。
对于Zk-SNARK,通常有一个设置阶段,然后是从证明者到验证者的一条消息。
知识论证意味着对某些特征化计算的知识证明。
证明者不可能在不知道某个所谓的见证人的情况下开发证明/参数(例如,她需要从哈希函数的原像或到某个Merkle-tree节点的路径花费的地址) 。
Zk-Snarks基于零知识证明的思想。
涉及零知识的证明有两个方面,证明者和验证者。零知识表示证明者可以向验证者证明他们具有特定知识,而无需向他们透露该知识的真正含义。
零知识证明的性质
为了使ZKP起作用,需要满足某些参数:
- 完整性:如果陈述是正确的,那么诚实的证明者可以说服诚实的验证者。
- 稳健性:如果证明者不诚实,则验证者不能通过撒谎来使陈述人确信可信。
- 零知识:如果该语句为真,则验证者将不知道该语句的真正含义。
零知识证明的例子之一是:
阿里巴巴的洞穴
在此示例中,证明者(P)告诉验证者(V)他们知道洞穴后面的秘密门的密码,并且他们可以向验证者证明它,而无需真正向他们透露密码。
看起来有点像下面显示的那样:
证明者沿着A和B中的任何一条走下去。假设,首先,他们决定通过路径A到达后方的秘密门。当他们这样做时,验证者V进入入口,而对证明者实际采用的路径一无所知,并宣布他们需要看到证明者从路径B露面。
在该图中,可以看到证明者确实出现在路径B中。但是如果运气不好,该怎么办?如果证明者不知道密码,而是走了路径B,被困在门口,并且靠着巨大的运气,验证者指示他从路径B出现,无论如何,路径B最初是在路径B上出现的?
因此,为了测试有效性,实验在许多不同的时间进行。如果证明者可以每次都出现在正确的路径上,则它向验证者证明,证明者毫无疑问知道密码,尽管事实是验证者不知道密码是什么。
满足零知识的三个属性,如下所示:
- 完整性:由于陈述是有效的,诚实的证明者会说服诚实的验证者。
- 稳健性:如果证明者不诚实,他们就不会欺骗验证者,因为事实是测试进行了多次。最终,证明者的财富不得不耗尽。
- 零知识:验证者从未意识到密码是什么,但确信证明者拥有该密码。
零现金
Zk-SNARKs的第一个广为人知的应用是Zcash,一种零知识密码学形式。要了解有关Zcash的更多信息,请参阅本文。