比特幣常被視為數位現金,但這種說法有待商榷。如果Alice以現金支付給Bob 10美元,後者無法了解這筆現金的來源。 Bob將這10美元轉給Carol時,Carol更是無法得知這10美元原本來自Alice。
然而,比特幣的固有公共屬性決定了情況有所不同。給定代幣(準確來說是未花費的交易輸出或UTXO)的歷史可供所有人查看。這很像在帳單中寫入交易金額與參與者姓名。
不過,公用位址可以匿名,使用者也因此可以輕易隱藏身分。然而,比特幣並不能完全隱藏蹤跡。針對區塊鏈的分析技術日趨成熟,已經可以有效地將地址與身分相符。除了其他監視技術,專用實體也可以對加密貨幣使用者去匿名化。為了解決這道難題,市場中相繼出現多種解綁交易的技術。
從廣義上講,代幣混合是指所有透過置換來混淆資金的操作。然而,在加密貨幣領域,代幣混合由第三方提供服務。服務供應商通常會收取用戶的代幣(以及少量手續費),之後返還一些與發送的代幣毫無關聯的代幣。此類服務也稱為不倒翁或混幣器。
當然,這種中心化服務的安全性與匿名性值得懷疑。用戶無法保證混幣器會歸還資金,或是返還的代幣未在某種程度受到污染。另外,使用混幣器時,IP和比特幣位址也可能被第三方記錄。代幣混合的結果是用戶放棄資金控制權,希望獲得毫無關聯的代幣。
目前有一個名為“CoinJoin交易”的新方案,給用戶很大程度的否認空間。也就是說,使用CoinJoin之後,用戶與以往交易之間的確切關聯證據就被抹去了。許多CoinJoin解決方案成為混幣器的去中心化替代方案。雖然協調員有可能介入,但使用者不需要放棄資金管理權。
CoinJion交易問世於2013年,由比特幣開發人員Gregory Maxwell首次提出。在帖子中,他簡單介紹了此類交易的結構,以及如何在不修改協議的情況下獲得高額私密收益。
從本質上講,CoinJoin交易融合了多位使用者的意見。 在解釋這項技術的原理前,我們先來了解基礎交易的結構。
比特幣交易由輸入和輸出組成。當使用者希望交易時,他們將UTXO作為輸入,指定輸出並對輸入簽署。請注意,每路輸入均獨立簽名,但使用者可設定多路輸出(目標為不同位址)。
我們以一筆由四路輸入(每路輸入0.2 BTC)和兩路輸出(0.7 BTC與0.09 BTC)組成的給定交易為例,可以對其進行一系列假設。首先觀察支付的發生——發送方將其中一路輸出發送給某人,隨後收到找零。這筆交易使用四路輸入,因此較大的輸出應該指向接收方。請注意,我們需要為礦工支付手續費,輸出會損失0.01 BTC。
發送者也可能想建立大額UTXO,因此合併小額輸入來獲得0.7 BTC的目標輸出。
我們也可以假設每路輸入均為獨立簽章。這筆交易最多有四方對輸入簽名。這正是CoinJoin生效的原理。
其核心思想是多方協作創建交易,各方提供輸入與預期輸出。所有輸入相融後,他人便無法辨識輸出與使用者的對應關係。我們來看以下圖解:
如圖所示,四位參與者希望打破交易之間的關聯。他們相互協調(或透過專屬協調員),宣布希望計入的輸入和輸出。
協調員將掌握所有這些資訊並繪製成交易,在向網路中廣播前,讓每位參與者簽名。用戶簽署後,交易在變為無效前無法變更。因此,協調員無法盜取資金。
這筆交易充當了代幣混合的黑盒子。別忘了,我們是將初始UTXO銷毀來新建UTXO。新舊UTXO的唯一連結正是交易本身,當然我們也無法區分參與者。最理想的情況也只是知道有參與者提供輸入,並且可能是輸出結果的所有者。
即便如此,我們也無法百分之百確定。看到上文所述的交易,誰能確定是有四位參與者?還是只有一個人在向他的四個地址發送資金?還是兩個人分別買進兩次,各自的地址分別收到0.2 BTC?也有可能是四個人向新參與者發送資金,或是資金回流至本人。我們無法確定具體情況。
CoinJoin實施方案的問世足以讓人們對交易分析方法產生懷疑。在許多情況下,您可能會推斷出發生了CoinJoin,但無法確定產出擁有者。隨著這種技術日漸普及,所有輸入由同一用戶所有的假設逐漸削弱。在廣泛全面的生態系統中,隱私性完成飛躍式提升。
在上文的範例中,我們假設交易的匿名集合擁有4位輸入者,而輸出所有者可以是這4位中的任一位。匿名集合越大,找到交易與原始擁有者對應的機率越低。幸運的是,最近的CoinJoin方案可以讓數十位使用者以去信任的方式融合輸入,“可否認性”顯著提升。最近,CoinJoin成功執行了百人交易。
對於非常注重隱私的用戶,混幣是一種非常有效的補充方法。與提議的隱私升級(如保密交易)不同,這項技術與現行協議相容。
對於信賴第三方誠信與有效方法的使用者來說,混幣服務簡單便捷。對於青睞可驗證或非託管方案的用戶,CoinJoin才是絕佳之選。精通科技的使用者可以手動,或是使用軟體工具將更複雜機制抽離出去。如今,隨著隱私性需求日益提升,市場中的此類工具也將愈加受到青睞。