采用零知识证明最知名的技术就是匿踪币Zcash的zk-SNARKs。
目前主流加密货币,不论是比特币或以太币都是匿名资讯公开,简单来说就是不会有人知道钱包的主人是谁,但是大家都知道这钱包有多少钱、做过哪些交易,这将大幅降低人们使用的意愿。
请想象一下,在加密货币支付的生活下,你想瞒着你老婆买SWITCH,虽然他不直接拥有钱包,但他却能看到你的钱包转帐金额,与转到哪个钱包,轻轻松松就能查出你做的好事。
零知识证明是一个相当有趣的验证方式,能够在不公开交易资讯的情况下,矿工还能够验证交易的有效性。
以太坊创办人Vitalik Buterin也多次公开赞赏zk-SNARK的零知识证明技术,并表示此技术有助于提升以太坊的交易速度。
零知识证明
究竟零知识证明是什麽意思呢?用一个有趣的方式跟大家解释。
小时候没有智能型手机也没有电脑玩,唯一的乐趣就是玩Whereis Wally,找出图片中Wally在哪里,大家可以玩玩看,回味一下没有3C的童年时光。
如果你找了十分钟还是找不到,开始怀疑我在你,Wally根本不在图片里的时候,零知识证明就能太上用场了!
零知识证明的概念就是“不透漏详细资讯的情况下,证明自己知道真相”。
如果我直接告诉你Wally在哪里,那你就没办法继续玩了,所以我给了你一张Wally的截图:
透过这张图,除了能够证明Wally真的存在,而且我知道在哪里之外,由于你不知道Wally的实际位置,你还能够继续寻找Wally,零知识证明就是这麽简单的概念。
交互式零知识证明
了解零知识证明之后,我们再来介绍什麽是交互式零知识证明,我们一样用童年游戏来跟大家解释。
有一天阿菜出了一道数独的题目给阿平,阿平回家玩了三天三夜,发现根本解不出来。
3iQ旗下比特币基金将提供以加元计价的交易:加拿大投资基金管理公司3iQ宣布,其比特币基金的A类份额将于2020年10月22日在多伦多证券交易所以加元交易,交易代码为QBTC。A类份额将使用其现有代码CUSIP进行交易。
此外,3iQ宣布Christopher Matta自10月19日起担任销售和贸易总经理。(Globe Newswire)[2020/10/20]
由于阿菜平常做人不老实,阿平怀疑阿菜的这道题目根本没有答案,只是随便填几个数字进去,于是隔天气冲冲地跑去找阿菜。
但是阿菜觉得自己秀才遇到兵,有理说不清,这道题目明明就是好不容易设计好的,于是阿菜就决定用一个方式证明给阿平看,让他知道这道题目是真的有解。
阿菜先让阿平转过身去,阿菜拿出81(9×9)张空白的卡片放在桌上,在每张纸上写上1-9中的一个数字,然后把这81张卡片按照解答顺序排列在桌上,代表谜底的卡片,数字面朝下放在桌上,公开数字的卡片,则数字面朝上放在桌上。
排好之后,阿菜叫阿平转过身,跟阿平说“现在我全部都按照顺序摆好了,但是我不会让你看答案,你可以随意选择按照行、列或按照3×3的九宫格来检验,你可以随便选一种。”
阿平不知道阿菜葫芦里卖甚麽药
“不给看答案,就能让我知道你没我,我看你搞甚麽花样,我在“行”与“列”当中选择检验“行”。”
于是阿菜按照顺序将每一行的牌收起来,装在麻布袋里,并将所有的牌摇散。
“好了,你随便选一袋吧,只要袋子里的数字是1~9就代表我的题目没有错。”
阿平把每一个袋子打开,仔细检查每一个袋子里的牌,结果数字确实都是1~9没有重复,但是阿平很不服气。
“那又怎样,虽然”行”的数字没有重复,那也不代表”列”跟”九宫格”里的数字没有重复阿。”
阿菜解释
“可是我事先也不知道你会按照”行”、”列”还是按照”九宫格”来检验啊。我是按照题解来放置卡片的,你选啥我都没在怕的”
阿平想了想,确实,一个数独只有真正正确的解才能保证每一行、每一列、每一个九宫格里的数字都是没有重复的1-9。
阿菜如果真的在他,阿平也至少有1/3的概率可以抓到他在人。
阿平又按照同样的方式轮流将”行”、”列”和”九宫格”检验了好几遍,结果袋子里的数字真的都没有重复。
藉由这个故事,我们发现,阿平选择”行”、”列”和”九宫格”,阿菜再将卡片收集起来交给阿平验证,像这样一来一往,不断提出证据给对放验证,就是所谓的“交互式零知识证明”。
“交互式零知识证明”需要验证方(阿平)在证明方(阿菜)放好答案后,不断的发送随机试验,是最简单的零知识证明与验证方式。
就象是我们打电话给银行客服,客服人员会询问你的出生年月日与身分证字号,来验证你是否为本人。
然而,这种方式只有建立在验证方与证明方对立的情况下才能成功,一旦牵涉到第三方,验证和证明双方事先串通好,那麽他们就可以在不知道真实答案的情况下作弊。
因此衍生出了另一种证明与验证方式“非交互式零知识证明”。
非交互式零知识证明
后来阿平跟阿菜找了阿佑一起玩数独,阿平跟阿菜向阿佑展示了这个验整方式,阿平将”行”、”列”和”九宫格”检验了一轮后,只见阿佑沉默不语,若有所思。
隔天阿佑找来阿菜跟阿平
“你们平常最爱胡搞瞎搞,我很难信任你们,昨天你们的验证方式,如果你们两个串通好,那检验出来的答案就不值得相信,所以我做了这台机器‘零知识数独非交互式证明机’。”
这台机器基本上就是把阿菜和阿平之前当面做的那套证明自动化,不再需要人为交互验证。
阿菜只要把卡片放在传送带上,机器会自动选择按行,或列,或九宫格来收取卡片,放到袋子里打乱顺序,然后把袋子通过传送带再送出来。然后阿菜就可以当着大家的面拆开袋子展示里面的卡片。
机器里有控制面板,可以设置检验”行”、”列”和”九宫格”的检验顺序,阿佑把验证顺序设定好之后就把外壳焊死,没有任何人会知道验证顺序,阿佑就能放心的和他们俩玩数读了。
但是现在换阿菜跟阿平两人不开心了,验证的顺序只有阿佑知道,这样他不就有机会搞鬼了。
于是,他们三个人集结起来,让阿佑再次把外壳打开,然后大家一起设置控制面板上的验证顺序。
这个过程称为“可信任的初始设置仪式(trusted setup ceremony)”。
阿菜提议把这台机器放在一个漆黑的屋子里,把旋钮上的指示贴纸都撕掉。
三人轮流进入屋子,阿平还提议大家进房间时蒙上眼来保证随机性。
这样,最后这些旋钮所代表的验证顺序他们三个人都没有办法知道,就能保证这验证结果的可信度了。
“交互式零知识证明”之所以存在风险,是因为过程中需要在证明方与验证方双方交互验证,但“非交互式零知识证明”则不需要这种互动,但是会额外需要一些机器或程序,并且需要一串试验序列。
这个试验序列不能被任何人知道,才能维持验证的公正性。
有了这麽一个程序和试验序列,证明机就能自动算出一个证明,并且能防止任何一方作假。
运用在区块链的零知识证明所采用的就是“非交互式零知识证明”,将交易资讯交给程序,程序会给出一份证明给矿工验证。
矿工虽然不知道交易的详细资讯,却能够透过这份证明,验证交易的有效性,最有名的例子就是Zcash的zk-SNARKs零知识证明技术。
链金研究员总结
透过这些故事,我们就能知道零知识证明的本质,就是在不透漏我所知道或拥有的某样东西的前提下,向别人证明我有很大机率(这点很重要,零知识证明只是一个概率上的证明)确实知道或拥有这个东西。
将零知识证明的概念运用在区块链上,除了解决加密货币的隐私问题外,零知识证明还能够提升网路的效率。
zk-SNARKs矿工可以不用再重新执行交易的运算,而是只要对方提得出证明即可,能够将大量信息量压缩,大幅提升网路的吞吐量。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。