- 區(qū)塊鏈應用開發(fā)指南:業(yè)務場景剖析與實戰(zhàn)
- 熊麗兵 董一凡等
- 1040字
- 2022-07-28 20:18:06
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é)我們也會進一步探討以太坊的運用。
- 數據挖掘原理與實踐
- Google Visualization API Essentials
- MongoDB管理與開發(fā)精要
- PySpark大數據分析與應用
- 數據挖掘原理與SPSS Clementine應用寶典
- Power BI商業(yè)數據分析完全自學教程
- Hands-On Mathematics for Deep Learning
- 科研統(tǒng)計思維與方法:SPSS實戰(zhàn)
- Hadoop大數據開發(fā)案例教程與項目實戰(zhàn)(在線實驗+在線自測)
- 計算機組裝與維護(微課版)
- 數據庫與數據處理:Access 2010實現
- 活用數據:驅動業(yè)務的數據分析實戰(zhàn)
- Expert Python Programming(Third Edition)
- Deep Learning with R for Beginners
- 數字化轉型實踐:構建云原生大數據平臺