官术网_书友最值得收藏!

3.1.2 簡述零知識證明在區(qū)塊鏈中的應用

在區(qū)塊鏈上,假設存在一個中轉地址,記為AddrExchange,所有人都把Token轉到這個地址(AddrExchange),然后,再從AddrExchange轉出Token。中轉地址被使用之后,有心人就可以通過交易金額等信息,慢慢核對并反推對應關系來找到交易對象。通過技術手段使得轉入的交易記錄和轉出的交易記錄無法一一對應,也就真正實現了交易的匿名。零知識證明首先在隱藏對應關系的環(huán)節(jié)就可以起作用。

現在,讓我們把整個區(qū)塊鏈系統(tǒng)想象成一個大的中轉地址,所有人都往這個地址里轉Token,所有人都從這個地址里把Token轉走。所有參與交易的人之間不需要合作,轉賬隨時可以進行,不需要等待其他交易。如果在整個系統(tǒng)中,歷史上所有的交易都被混合在一起,交易越頻繁,交易數量越多,其匿名性也就越高(逆向復雜度高,時間長)。

那么,零知識證明是怎樣實現Token轉入和轉出的分離,并且同時保持可以被驗證呢?

假設:每個人在轉入Token的時候,都會生成一個數字(不告訴別人),轉賬的時候在Token上附帶一個用這個數字生成的哈希值Alpha,寫入區(qū)塊鏈賬本系統(tǒng)。在轉出Token的時候,只需要向系統(tǒng)證明:

交易者知道一個數字,這個數字生成的哈希值是Alpha。

大家經過區(qū)塊鏈上的共識,確認這個證明有效之后,就允許交易者把Token轉走。因為哈希值Alpha在區(qū)塊鏈上,說明轉入的Token是確實存在的,而一旦有人知道哈希值Alpha背后的數字,說明其真的是轉入Token的交易者。

而零知識證明保證了在交易者整個操作過程中,沒有人知道交易者的數字是什么,也就無法偽裝成交易者把Token轉走。

問題來了,上面的這個證明其實并沒有實現轉入交易和轉出交易的隔離。因為交易者在轉出的時候暴露了哈希值Alpha,其他人通過哈希值Alpha就可以找到轉入的那筆交易,從而存在把兩筆交易關聯起來的可能性。

所以,我們有必要把證明過程再升級一下。因為系統(tǒng)中所有的轉入交易都會附帶一個哈希值,成了一個哈希值的列表。交易者的哈希值Alpha也在這個列表中。如果可以證明:

交易者知道一個數字,這個數字生成的哈希值在系統(tǒng)的哈希值列表中。

那么交易者的哈希值Alpha沒有暴露,也就沒人能把交易者的轉入交易和轉出交易關聯起來。

上面加粗的兩句話,就是零知識證明可以做到的事情。當然零知識證明不僅僅可以用作匿名交易,為了更好地幫助讀者理解和掌握,我們用具體的實例,通過一些適用的場景來進一步探討零知識證明。

如果對工程實現有興趣,現有匿名交易的實現主要有三類,使用環(huán)簽名的比如門羅(Monero),使用零知識證明的Zcash,還有使用Mimblewimble協(xié)議的Grin等。讀者也可以思考一下,相對于環(huán)簽名,零知識證明帶來了哪些收益。后續(xù)章節(jié)我們也會進一步探討以太坊的運用。

主站蜘蛛池模板: 温州市| 巴中市| 湘西| 尤溪县| 杨浦区| 新竹市| 成武县| 陈巴尔虎旗| 扎兰屯市| 定襄县| 柞水县| 垦利县| 台江县| 乌兰浩特市| 疏附县| 临沂市| 左贡县| 成安县| 望奎县| 普定县| 康保县| 岳阳市| 乌兰察布市| 临高县| 夏邑县| 三台县| 广南县| 丹阳市| 肃宁县| 凉城县| 桦川县| 岳西县| 清丰县| 湘潭市| 津市市| 井冈山市| 蓬莱市| 镇沅| 凤凰县| 容城县| 新野县|