ZCash 零知識證明

A要向B證明自己擁有某個房間的鑰匙,假設該房間只能用鑰匙打開鎖,而其他任何方法都打不開。 這時有2個方法: A […]

A要向B證明自己擁有某個房間的鑰匙,假設該房間只能用鑰匙打開鎖,而其他任何方法都打不開。
這時有2個方法:

A把鑰匙出示給B,B用這把鑰匙打開該房間的鎖,從而證明A擁有該房間的正確的鑰匙。

B確定該房間內有某一物體,A用自己擁有的鑰匙打開該房間的門,然後把物體拿出來出示給B,從而證明自己確實擁有該房間的鑰匙。
後面這個方法屬於零知識證明。
好處在於在整個證明的過程中,B始終不能看到鑰匙的樣子,從而避免了鑰匙的洩露。

那麼零知識證明怎麼運用到ZCash交易過程中呢?

我們再回顧比特幣和ZCash的例子。

Alice要向Bob轉一個單位的數字貨幣(BTC/ZEC),即Alice要向Bob轉移一個單位的資產所有權。這時有以下兩個方法:

比特幣中的做法:Alice擁有一張1BTC的支票,要轉賬給Bob時,先給Bob新建一張1BTC的支票,同時當著Bob的面將自己原先的支票撕毀。

ZCash中的做法:Alice擁有一張1ZEC的支票,要轉賬給Bob時,先給Bob新建一張1ZEC的支票,然後在一張約定有效的作廢列表中,記錄下Alice的發票的代號,證明Alice的支票已經失效。

ZCash的方法屬於零知識證明。
整個交易過程中,Bob並沒有見過Alice的支票,但是還是實現了資產所有權的轉移。
在ZCash的整個交易系統中,Alice和Bob的交易還有其他見證者,即負責記錄交易信息的礦工。
同樣道理,礦工也不必看到Alice的支票,只要能確定代號為r1的支票已經作廢了就行。