- 區塊鏈應用開發指南:業務場景剖析與實戰
- 熊麗兵 董一凡等
- 703字
- 2022-07-28 20:18:06
3.2 零知識證明使用場景案例
3.2.1 場景一:萬圣節糖果
故事是這樣的:一年一度的萬圣節到來,小麗和小明分別領取到了一定數量的糖果。他們想知道他們是否收到了相同數量的糖果,卻不想透露糖果的數量,因為他們不想彼此分享。
現在我們假設,他們袋子里可能裝有10、20、30個或40個糖果,如圖3-1所示。

圖3-1 萬圣節糖果
這時小明想了個辦法,為了比較他們擁有的糖果數量,小明拿到4把鑰匙和盒子,盒子上分別寫上10、20、30、40,分別對應糖果的數量。小明最后只保留了自己糖果數量跟盒子數字一樣的鑰匙,其他3把鑰匙就丟棄了(假設小明只保留了寫著20的盒子的鑰匙)。
然后,小麗在4張紙條上,其中一張寫上“+”,另外三張寫上“-”。然后,把寫有“+”的紙條放到跟自己糖果數量是相同數字的盒子里,其余紙條放到其他盒子(假設小麗把“+”放到寫著30的盒子)。
這時,小明回來后打開他有鑰匙的那個盒子(寫著20),然后看它是否包含“+”或“-”的紙條。
(1)如果紙條上寫著“+”,說明兩個人的糖果數量一致。
(2)如果紙條上寫著“-”,說明兩個人糖果數量不一致,但是并不知道對方糖果的具體數量。
(3)這里小明看到紙條上寫著“-”,意味著兩人的糖果數量不一樣,但是小明無法知道小麗的糖果數量。這時候,小麗看到小明手上拿著一張寫“-”的紙條,那她也知道兩人的糖果數量不一樣,但是也無法知道對方擁有糖果的確切數量。
上面這個過程,就是一個零知識證明。
ZKP(“零知識證明”的英文縮寫)允許我們證明自己在通信的另一“端”知道某個人的某個秘密(或許多秘密),而沒有實際透露出秘密。術語“零知識”源于以下事實:第一方沒有透露有關機密的信息(“零”),但是第二方(被稱為“驗證者”)確信第一方(被稱為“證明者”)知道有關機密。
推薦閱讀
- PyTorch深度學習實戰:從新手小白到數據科學家
- Hands-On Data Structures and Algorithms with Rust
- 數據產品經理高效學習手冊:產品設計、技術常識與機器學習
- Access 2016數據庫教程(微課版·第2版)
- 達夢數據庫編程指南
- 數據庫基礎與應用:Access 2010
- SQL Server入門經典
- SQL Server 2012數據庫技術與應用(微課版)
- Python數據分析入門:從數據獲取到可視化
- SQL Server 2008數據庫應用技術(第二版)
- Access 2007數據庫應用上機指導與練習
- 數據庫應用基礎教程(Visual FoxPro 9.0)
- 數據要素五論:信息、權屬、價值、安全、交易
- INSTANT Cytoscape Complex Network Analysis How-to
- The Game Jam Survival Guide