举例说明什么是零知识证明(zero-knowledge proofs)

区块链一般人所知具备三大特性:

1.去中心化

2.不可篡改

3.交易纪录公开透明可回溯

前两项很显然地解决了目前许多产业面临的第三方信任的问题,然而目前有待解决的痛点在于,企业运用区块链时,并不希望所有业务、合约上链以后,就被公开透明的记录在链上供所有人浏览,反而希望能够保留前两项特性并兼具保护隐私的功能,因此导入「零知识证明」(zero-knowledge proofs)就变得非常重要。

什么是零知识证明?

理论上来说就是在不清楚实际情况的状态下,用一些程序来证明自己是符合资格,并让对方信服,用一句话来说明就是「我不需要泄漏任何有效信息就能证明事情本身」,因此可以做到不需要公布自己的资产明细,就能让对方相信你有足够的资产来完成这次交易…许多相似的应用场景。

零知识证明需要什么特性?

  1. 完整性:如果陈述是真的,诚实的验证者正确地遵循协议完成验证,将使一个诚实的证人信服这个陈述。
  2. 可靠性:如果陈述是假的,不能有任何不合法的证明可以使诚实的证人信服这个陈述。
  3. 零知识性:如果陈述是真的,除了这个陈述之外,验证者不会得知任何有效讯息。

零知识证明之中的证明程序是如何完成的?

举几个简单的例子来说明:

1.今天X有一个保险箱,里面有价值一亿元的金块,我要如何向Y证明我真的拥有保险箱的钥匙?

A)在Y面前用钥匙打开保险箱

B)在Y不在的情况下,X用钥匙取出金块,再展示金块给Y看

AB都能证明X是真的拥有能够打开保险箱的钥匙,但B能在Y没看过钥匙的情况之下证明X真正拥有钥匙,B方案

就被称为「零知识证明」

2.今天有一颗红球、一颗绿球,X是红绿色盲,Y能够证明这两颗球真的是一红一绿吗?

答案是可以,只需要让X左手拿着红球,右手拿着绿球,并在背后交换不让Y看到,若Y能够精准的选对原本在

右手的球现在在哪一手,多做几次,即能在X是色盲的情况下,仍然能证明这两颗球是一红一绿。

3.今天有一题困难的数独问题,X说他已经找到解答了,他如何在不让Y知道答案的情况之下证明他真的已经

解出这题?

X只需要将空格用小方格纸填上相对应的数字盖着放在格子上方,再请Y任意选择一行或一列,并把小方格纸

都收在一个袋子里,再将方格纸取出,明白数独规则的人都知道,每一行、每一列的解答都会有1~9不重复的

数字各一个,XY只要重复几次这项程序,就能证明X是否真的知道此题的解答。

以上三个例子就是「零知识证明」的简单说明实例,若想要将零知识证明的概念导入区块链,就必须将验证的过程写成可执行的程式码,因此以上三个例子的方法会被转换成数学的计算,让电脑能透过多次的运算完成在不清楚实际情况的状态下证明某件事。早在1985年「零知识证明」的概念就已经被提出,但是由于证明过程所需要的验证时间与运算资源,若不能升级到只需要少量运算资源就能达到秒级别验证,所能应用的范围将很有限,以目前最大的智能合约平台以太坊来说,若要在以太坊的智能合约中导入零知识证明,将会大幅提升所需的运算资源,会消耗非常多的gas手续费,但若能找到可行的解决方案,「零知识证明」将会大幅提升以太坊企业级别的应用机会,可以说是未来发展非常有潜力的方向。

Zcash(ZEC)

Zcash是最早采用零知识证明的区块链项目,他们使用zk-SNARK(Zero-Knowledge Succinct Non-Interactive argument of Knowledge)来证明交易是合法成立的,同时不必让验证者知道实际的交易发送者、接收者…的交易细节资讯,因此矿工能在不知道交易细节的状态之下,维持交易的正确性、防止双花的发生,来达成匿名交易的特性。

以太坊V神曾经说过:「我们实际上可以透过使用zk-SNARKs来大规模验证,借以扩展以太坊上的交易量,而不使用第二层扩展解决方案。」

尽管目前以太坊已经能部署运用zk-SNARKs算法的智能合约,但由于技术瓶颈仍未突破,目前所需的运算时间与运算量太大,不符成本。

目前零知识证明的技术仍在早期发展阶段,Zcash采用匿名交易的数量也只占总交易量的5%,若未来能突破技术上的瓶颈,零知识证明能解决的痛点,将使区块链朝大量应用的目标往前迈进一大步。

本文链接地址:https://www.wwsww.cn/jishu/6162.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。