當(dāng)區(qū)塊鏈遇到零知識(shí)證明

2021-02-07    分類: 網(wǎng)站建設(shè)

什么是零知識(shí)證明

零知識(shí)證明的官方定義是能夠在不向驗(yàn)證者任何有用的信息的情況下,使驗(yàn)證者相信某個(gè)論斷是正確的。這個(gè)定義有點(diǎn)抽象,下面筆者舉幾個(gè)例子,來幫助讀者理解這個(gè)概念

例子一:小明有鑰匙

地主有一個(gè)漂亮的女兒,一直沒有嫁出去,有一天地主撿到一把鎖,他靈光閃現(xiàn),何不讓老天爺來決定我閨女嫁給誰,于是乎他就發(fā)布告示,如果有誰擁有這把鎖的鑰匙,他就把女兒嫁給他。

小明看到那把鎖,心想這不是我前兩天扔的那把鎖嗎?我有鑰匙啊,但是他又不想把鑰匙拿出來讓大家看到,因?yàn)殍€匙上有不可告人的秘密。于是他找到地主,說出了自己的苦衷,地主略微思考了一下,想到了一個(gè)好辦法。

他讓人搬了一個(gè)密封的大木箱,把自己的貼身玉佩放到了箱子里,然后用鎖鎖起來,說如果小明第二天把玉佩交給他,那小明就可以娶到他的女兒。

小明晚上偷偷用鑰匙打開了箱子,然后把玉佩取出來,第二天交到了地主手中。然后和美女幸福的生活在了一起。

這個(gè)故事中小明并沒有把鑰匙給地主看,也沒有當(dāng)著地主把鎖打開,但是卻證明了自己確實(shí)有鑰匙。

例子二:哥德巴赫猜想的證明

眾所周知,哥德巴赫猜想是一個(gè)世界級(jí)別的數(shù)學(xué)難題,有一天一個(gè)中國大學(xué)生小明找到了證明哥德巴赫猜想的方法。但是他說我能證明出來,沒人相信他,甚至沒人愿意看他的證明過程,因?yàn)槊麣馓×恕_@時(shí)候他就想到可以讓導(dǎo)師出面證明他已經(jīng)找出了證明方法,但是他遇到了一個(gè)兩難的問題:

如果他把證明方法給導(dǎo)師看,導(dǎo)師可能直接說這個(gè)證明方法是他發(fā)現(xiàn)的。

如果他不把證明方法給導(dǎo)師看,導(dǎo)師也不相信他能找到哥德巴赫猜想的證明方法。

實(shí)在是難壞了小明!!!!!!!!

零知識(shí)證明可以幫助小明解決他的難題,零知識(shí)證明的世界里,小明可以不把實(shí)際的證明過程給導(dǎo)師看,只需要提供給導(dǎo)師另外一段數(shù)據(jù),導(dǎo)師拿到這段數(shù)據(jù)經(jīng)過驗(yàn)證可以知道小明真的有哥德巴赫猜想的證明方法,但是導(dǎo)師并沒有看到真正的證明過程。

比特幣的困境

假如你對(duì)比特幣有了解的話應(yīng)該知道,比特幣就是一個(gè)共有的賬本,A轉(zhuǎn)給B一筆錢就是在區(qū)塊鏈上寫一條記錄“A轉(zhuǎn)給B 10塊錢”,A的10塊錢從哪兒來呢?要求必須是以前某人C在區(qū)塊鏈上寫一條記錄“C轉(zhuǎn)給A 10塊錢”。于是比特幣的區(qū)塊鏈上就是存放了一條一條的賬本條目:

C轉(zhuǎn)給A 10塊錢

A轉(zhuǎn)給B 10塊錢

B轉(zhuǎn)給D 5塊錢

B轉(zhuǎn)給E 5塊錢

E轉(zhuǎn)給D 5塊錢

D轉(zhuǎn)給A 10塊錢

……

但是這樣會(huì)帶來一個(gè)問題,號(hào)稱匿名的比特幣系統(tǒng)卻做不到真的匿名,因?yàn)橘~本是公開的,所以大家都能看到A,B,C,D,E都有多少錢,并且是在什么時(shí)間得到的這筆錢的。而所謂的匿名性其實(shí)是不存在的。

PS:比特幣的匿名性其實(shí)是指一般無法把A對(duì)應(yīng)到真正的交易人實(shí)體,A只是一個(gè)賬戶標(biāo)號(hào),而不是類似“小明”這樣的實(shí)際個(gè)人。但是假如小明是A賬戶的擁有者,而小明最終有可能因?yàn)椴僮髻~戶A兌換了人民幣或者購買什么東西,而被發(fā)現(xiàn)其實(shí)A就是小明。所以這個(gè)匿名性并不是真正的匿名性。

ZCASH怎么結(jié)合零知識(shí)證明到區(qū)塊鏈

為了解決比特幣的非匿名問題,零知識(shí)證明被ZCASH引入到比特幣系統(tǒng)中。那么它是怎么實(shí)現(xiàn)匿名性的呢?且看娓娓道來。

假設(shè)有一個(gè)大池子,里面有一大堆的箱子,每一個(gè)箱子都被鎖住并且只有一把鑰匙可以打開,而且箱子中都有一張紙條,內(nèi)容格式如下:

“這個(gè)箱子值x塊錢”

我們暫且叫這個(gè)大池子為“大池子賬本”。

ZCASH整個(gè)交易系統(tǒng)就是這樣一個(gè)大池子,當(dāng)A要轉(zhuǎn)給B 10塊錢的時(shí)候,A會(huì)填寫一張字條:“這個(gè)箱子值10塊錢”,然后把這個(gè)字條放到一個(gè)箱子里,鎖上,把箱子和箱子對(duì)應(yīng)的鑰匙一起給了B,B拿到箱子和鑰匙,用鑰匙打開了箱子一看字條的內(nèi)容是,“這個(gè)箱子值10塊錢”B就知道他確實(shí)得到了10塊錢,然后把箱子扔到大池子里,而鑰匙他保留了下來,這樣B就相當(dāng)于在“大池子賬本”里記錄了他擁有了10塊錢這個(gè)事實(shí)。

因?yàn)锽有鑰匙,所以他能知道自己有多少錢,并且在適當(dāng)?shù)臅r(shí)候花掉這筆錢,但是別人(除了A)只能看到箱子,看不到紙條的內(nèi)容,并不知道箱子值多少錢,并且也不知道箱子到底屬于誰(B有鑰匙這件事兒他們不知道)。也就是ZCASH這個(gè)“大池子賬本”系統(tǒng),做到了隱藏兩個(gè)比特幣系統(tǒng)不能隱藏的事實(shí):

1、 交易的參與者是誰

2、 交易的金額是多少

如果你想從系統(tǒng)中找出B有多少錢的信息,因?yàn)槟愦虿婚_箱子,甚至都不知道哪些箱子是B的,所以你會(huì)一無所獲。

聰明的讀者可能會(huì)發(fā)現(xiàn)這個(gè)系統(tǒng)有一個(gè)關(guān)鍵的問題沒有解決,A憑啥就可以做一個(gè)箱子并且說這個(gè)箱子值10塊錢?B和別的參與者憑啥相信B這個(gè)箱子真的值10塊錢,這里就要靠零知識(shí)證明的強(qiáng)大力量了。

其實(shí)大池子中有一個(gè)箱子a是屬于A的,A擁有這個(gè)箱子的鑰匙akey,并且箱子里面的紙條上寫著:“這個(gè)箱子值10塊錢”。當(dāng)A創(chuàng)建箱子b和對(duì)應(yīng)的鑰匙bkey的時(shí)候也會(huì)創(chuàng)建一個(gè)零知識(shí)證明的憑條akill,這個(gè)憑條的作用就是作廢掉箱子a。

這個(gè)零知識(shí)憑條akill的神器功能就是:

1、所有參與者看到這個(gè)akill憑條就知道它對(duì)應(yīng)到大池子里的一個(gè)箱子

2、所有參與者看到akill就知道它又生成了一個(gè)箱子b,并且箱子的紙條是合法的

3、除了A之外的所有參與者并不知道akill對(duì)應(yīng)的就是a這個(gè)箱子

4、akey和akill是一一對(duì)應(yīng)的關(guān)系

有點(diǎn)繞,簡單來說,就是A在不提供鑰匙akey只提供零知識(shí)證明憑條akill的情況下證明兩件事

1、 自己擁有一把可以打開大池子中某個(gè)箱子的鑰匙

2、 證明箱子b是合法的

這樣就簡單了,A把箱子b給B的時(shí)候,先把a(bǔ)kill扔到了大池子里,讓大家看,B看到了akill被放到了大池子里,他就相信b箱子是合法的,他確實(shí)值10塊錢。

余下最后一個(gè)問題?如果A每次都說自己擁有打開某個(gè)箱子的鑰匙,一筆錢被花了很多次怎么辦?

akill和akey是一一對(duì)應(yīng)的,并且akill被放到大池子里了,所有參與者都能看見,如果下次他又想給C一個(gè)箱子c并且用akill來證明,因?yàn)镃看到akill已經(jīng)在大池子里了,所以C就不相信A了。

PS:這里可能部分人會(huì)疑惑另外一個(gè)問題,當(dāng)A扔akill到大池子里,或者B扔箱子到大池子里的時(shí)候他們的身份不就暴漏了嗎?

這里可以認(rèn)為他們是偷偷扔的,具體對(duì)應(yīng)到網(wǎng)絡(luò)上的實(shí)現(xiàn)就是B隨便找了一臺(tái)網(wǎng)絡(luò)設(shè)備把箱子b對(duì)應(yīng)的數(shù)據(jù)上傳到區(qū)塊鏈上。而想通過這臺(tái)設(shè)備找到B很難,并且B也可以托C上傳箱子b的數(shù)據(jù)

當(dāng)前文章:當(dāng)區(qū)塊鏈遇到零知識(shí)證明
文章出自:http://www.bm7419.com/news11/99561.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷搜索引擎優(yōu)化、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管