零知识证明(简称 ZK)是密码学的分支,是区块链社区近年来追逐的热点之一。通过零知识证明,一方(证明者)可以向另一方(验证者)证明他拥有一些知识,但是无需透露知识本身及其它可以用来破解这些知识的信息。证明者只需向验证者传达并证明的信息是,他确实拥有这些知识。 听不懂也没关系。我们来举个简单的零知识证明的例子。 现实生活中的例子关于零知识证明是如何运作的,Konstantinos Chalkias 举过一个绝妙的例子。假设有两个好朋友 Victor 和 Peggy,他们都喜欢在双休日去公园玩杂耍球。Victor 是红绿色盲症患者。对他来说,这些球的颜色都一样。 两人决定像往常一样去中央公园(Central Park)玩杂耍球。Peggy 自己带了一个红球和一个绿球。红绿色盲症患者 Victor 无法看出这两个球的区别。 为了向 Victor 证明两个球的区别,Peggy 让 Victor 一手抓着一个球藏在背后,然后反复交换手中的球。每次交换过后,Victor 都会向 Peggy 展示任意一个球,问她这个球是否与上个球不同。 每当 Victor 交换过手中的球,Peggy 都能辨别出他展示的球是否与上一次不同,因为她分得清红色和绿色。这样一来,Victor 就可以确定 Peggy 知道这两个球的不同,同时他又无法知道这两个球的颜色。这就是零知识证明。 尽管 Peggy 有高达 50% 的概率可以猜中一两次,但是随着他们重复的次数越多,猜中的概率就会无限趋近于零。因此,Victor 完全可以确定这两个球的颜色是不同的。 Vitcor (验证者)眼中的世界 Peggy (证明者)眼中的世界 零知识证明和区块链零知识证明可以用来生成关于某个计算已经按照预定规则执行的密码学证明。这类证明可以用编好的计算机程序来生成,并可以自动验证。 零知识证明之所以有助于解决可扩展性问题,是因为零知识证明本身比其所代表的数据小得多,零知识证明可以用来实现交易的匿名化。 (安比按:不是所有的零知识证明技术生成的 proof 都比 statement 小得多。零知识证明技术仅必须满足三种要求:完备性(completeness)、可靠性(soundness)、零知识性(zero-knowledgeness),并不要求一定要具备这种小体积性。) (责任编辑:admin) |