零幣如何運作?
零幣如何運作?我知道它是用來在比特幣中添加匿名性的。它將比特幣轉換為 Zerocoin,然後再轉換回比特幣。但是這個過程是如何工作的呢?我嘗試閱讀有關 Zerocoin 的研究論文,但提供的範例很難理解(對我而言)。
想像一下,所有使用者共享對物理公告板的訪問權限。為了鑄造一個固定面額 1 美元的零幣,使用者 Alice 首先生成一個隨機硬幣序列號 S,然後使用安全的數字承諾方案承諾 S。最終的承諾是一枚硬幣,記為 C,只能通過隨機數 r 打開以顯示序列號 S。Alice 將 C 與 1 美元實物貨幣一起釘在公共公告板上。只要 C 結構正確並帶有正確的貨幣總和,所有使用者都將接受 C。為了贖回她的硬幣 C,Alice 首先掃描公告板以獲取系統中所有使用者迄今已發布的一組有效承諾(C 1 ,…,CN )。接下來,她為以下兩個陳述生成了一個非互動式零知識證明 π: (1) 她知道一個 C ∈ (C 1 , . . . . , CN ) 和 (2) 她知道一個隱藏值 r,使得承諾 C 對 S 開放。在其他人的全貌下,Alice 偽裝隱藏了她的身份,1 發布了一個包含 (S, π)。其餘使用者驗證證明 π 並檢查 S 之前沒有出現在任何其他支出交易中。如果滿足這些條件,使用者允許 Alice 從公告板上的任何位置收取 1 美元;否則他們會拒絕她的交易並阻止她收取貨幣。如果滿足這些條件,使用者允許 Alice 從公告板上的任何位置收取 1 美元;否則他們會拒絕她的交易並阻止她收取貨幣。如果滿足這些條件,使用者允許 Alice 從公告板上的任何位置收取 1 美元;否則他們會拒絕她的交易並阻止她收取貨幣。
比特幣的問題(或優勢)之一是資金可以追踪。即使每個地址只使用一次,也可以將單個交易相互關聯起來,就像通過鈔票的序列號追踪鈔票一樣(此外,每個人都記錄他們處理的所有鈔票的序列號)。
Zerocoin 通過提供一種新的交易輸出來解決這個問題,這種輸出與花費它們的輸入無關。實際上,輸對外連結接到輸入,但是連結被加密模糊,因此觀察者無法找到輸對外連結接到哪個輸入。但是,仍然可以檢查是否最多只有一個輸入連結到任何特定輸出,因此雙花是不可能的。
為了掩蓋連結,使用了一種稱為零知識證明的加密結構。零知識證明是一種在不洩露任何有用資訊的情況下證明某事是真實的方法。例如,數字簽名是一種零知識證明,表明簽名者知道私鑰。但是,沒有辦法從簽名中學習私鑰。
Zerocoin 中使用的證明更為複雜。基本上,在生成 Zerocoin 時,使用者會選擇一個隨機序列號,並在輸出中包含該數字的特殊不可逆函式。在消費時,他會透露數字並提供證明該數字對應於其中一個輸出的證據。每個輸出只有一個序列號,因此通過檢查每個序列號是否只使用一次來防止雙重花費。
流程基本如下。
- 你生成一個隨機序列號S和一個秘密r。S將用於表示零幣。然後,您在不知道S和r的情況下創建承諾C = f( S , r ) st ,很難從C中收回這些承諾。然後你將C披露到公共渠道。 2.要贖回硬幣S,你披露S並證明S
對應於大量承諾(由您提供)中的某個有效承諾,例如 {C1, C2, …, C, …, Cn}。由於您沒有明確提及S對應於哪個承諾,因此您保持匿名。
- 當其他使用者驗證你的證明有效且 zerocoin S尚未使用時,則只有你可以使用該硬幣。你大概明白,花錢的時候要顯露S ,防止**雙花。