隱私與機密交易

UTXO 隱私

比特幣等以「未花費交易輸出」(UTXO)為基礎的鏈,給人匿名的錯覺,因為你從不需要輸入真實姓名。但帳本其實是一張永久、完全公開的試算表,記錄了誰付了多少給哪個地址;而你花用的每一枚幣,都明確指回你當初收到的那些幣。UTXO 隱私研究的,正是這張公開的交易圖洩漏了多少關於你的資訊,以及哪些技術能把它模糊化。誠實的結論是:底層比特幣是「化名」而非「隱私」——地址只是一個固定的綽號,一旦有人把你的任一地址連結到真實身分,往往就能順藤摸瓜揭開你一大片財務歷史。

洩漏來自幾條威力強大的啟發式規則。「共同輸入歸屬」啟發式假設:若數個 UTXO 被一起當作某筆交易的輸入花掉,它們就屬於同一個錢包,因為要花它們必須同時握有全部私鑰。「找零輸出」啟發式則辨認哪個輸出是退還給你的找零(通常是非整數金額、剛產生的新地址,或與你錢包的腳本型別相符),哪個才是付給商家的款項。地址重用會立刻把原本分離的交易併入同一身分。把這些線索串起來,分群演算法就能把上千個地址塌縮成單一錢包實體,再透過交易所的 KYC 紀錄,或在交易廣播時捕捉到的 IP,貼上真實姓名。

防禦則逐一瓦解這些啟發式。絕不重用地址,讓錢包每次收款都產生新地址。使用 CoinJoin,讓「共同輸入」假設失效(輸入屬於許多陌生人)。使用 PayJoin,讓商家也貢獻一個輸入,打破「所有輸入都屬於付款人」的前提。以機密交易隱藏金額,使金額圖不再帶有指紋。更徹底的做法,是改用從根本重新設計模型的協定——Monero 的環簽章與隱形地址,或 Zcash 的屏蔽票據——讓鏈上根本不存在可供分析的明文交易圖。

把 UTXO 模型與以太坊採用的帳戶模型對照很有意義。就預設隱私而言,帳戶模型其實更糟,因為單一固定的帳戶地址會像銀行對帳單一樣累積你的全部歷史,且 nonce 嚴格排序你的每一個動作。UTXO 模型至少鼓勵每筆付款用新地址,也讓貨幣混合變得自然——這正是最具隱私的加密貨幣多為 UTXO 架構的原因之一。

你在兩個不同地址分別收到 1 BTC 和 0.4 BTC。之後你付給商家 1.2 BTC。你的錢包必須把兩個 UTXO 合併為輸入(暴露它們同屬一人),並產生兩個輸出:1.2 BTC 給商家、約 0.2 BTC 找零。分析者推斷整數 1.2 是付款、零頭找零退回給你,於是兩個原始地址都被連結到你這一個錢包。

共同輸入與找零啟發式把兩個地址塌縮成同一身分。

隱私是行為的性質,而不只是協定的性質:單一個粗心動作,例如把 CoinJoin 輸出與一筆有 KYC 的交易所提領合併到同一筆交易裡,就能回溯地把先前所有混合通通解開。

又稱
transaction-graph privacy交易圖隱私