有一種新的隱私工具即將到來:狀態鏈上的貨幣互換。最初的狀態鏈設計是由Ruben Somsen 在東京的Scaling Bitcoin 2018 上提出的。我會快速總結,但是Aaron van Wirdum 對原始概念有非常透徹的解釋 這裡. 總體思路是讓促進實體(狀態鏈運營商)與用戶創建2-of-2 多重簽名地址,以促進UTXO 的鏈下轉移。然後,用戶將其2-of-2 的私鑰傳輸給新用戶。狀態鏈實體將被告知何時發生這種情況,屆時將只允許新所有者將資金轉出。所以整個想法是通過字面上轉移私鑰本身來進行交易,並讓狀態鏈運營商強制執行當前的所有權。
就像閃電網絡渠道一樣,每個用戶都有一個預先簽署的交易,允許他們在時間鎖定到期後單方面控制UTXO。這樣,如果狀態鏈運營商消失,資金就不會永遠被困在2-of-2 中。但是這種備份選項必須與其中一方試圖濫用其預先簽署的交易來竊取資金的風險進行權衡。索姆森的提議取決於 埃爾圖 以便在前所有者試圖竊取資金的情況下,新所有者替換前所有者的預先簽署的關閉交易。狀態鏈設計的最後一個主要部分是從一個所有者到另一個所有者的簽名鏈,從原始所有者開始一直到當前所有者。這從一個所有者傳遞給另一個所有者,並與每筆交易並行附加,因此每個人都可以保留本地副本,證明合法轉移,並且在當前所有者的情況下,他們實際上是合法所有者。
由於對eltoo 的依賴以及軟分叉往往不會在一夜之間發生的事實,CommerceBlock 開始致力於在2020 年實施不依賴於eltoo 的狀態鏈變體。代替eltoo 允許最近的交易取代先前的交易,他們有 實施的 一種稱為Mercury 的遞減nLocktime 方案。這個想法是將原始所有者的關閉交易時間鎖定到未來的x 個區塊; 在區塊鏈達到此閾值之前,他們無法執行交易以收回資金。然後在下一次所有權轉移時,新所有者的交易時間鎖定為x-1。這允許當前所有者在原始所有者的提交有效之前將他們的關閉交易提交給鏈。隨著所有權的進一步轉移,時間鎖繼續遞減(x-2、x-3 等),確保當前所有者始終可以在任何先前所有者的交易解鎖之前採取行動。這消除了對eltoo 的要求,但在所有者之間轉移狀態鏈時引入了限制:您只能多次減少時間鎖,然後才能再降低時間鎖; 在某個時刻,未來減去一些時間(塊),變得等於現在(nLocktime 是當前的塊高度)。此時用戶必須關閉狀態鏈,否則年長的所有者將能夠竊取代幣,因為那些較早的nLocktime 交易達到其鎖定時間到期並變得有效。
Somsen 的原始設計與Mercury 之間的另一個主要區別是密鑰生成的處理方式。 Mercury 沒有使用明顯的2-of-2 多重簽名腳本,而是實施ECDSA-MPC(橢圓曲線數字簽名算法多方計算)。您可以認為這在功能上類似於使用Schnorr 的MuSig 地址,但在Schnorr 的情況下,用戶只需將兩個公鑰添加在一起即可創建一個地址,這兩個公鑰都需要簽名。使用ECDSA-MPC,密鑰生成是一個具有多個步驟的更具交互性的過程。最後,它們在功能上產生了相同的結果:一個顯然不是多重簽名的單一公鑰,並且參與的雙方都擁有簽署交易所需的匹配私鑰的份額。
使用ECDSA-MPC 的傳輸過程是一個交互過程,在這種過程中,狀態鏈運營商和發送者通過ECDSA-MPC 協作,通過密鑰共享生成私鑰,而不是像Somsen 的提案中描述的那樣,原始所有者明確傳輸現有私鑰。至關重要的是,有不止一組可能的密鑰共享可以生成相同的私鑰。因此,狀態鏈運營商然後與接收者重新創建私鑰,但通過製作不同的密鑰共享。狀態鏈運營商然後刪除他們持有的與前一個所有者相對應的密鑰共享。 CommerceBlock 使用HSM(硬件安全模塊)強制執行此操作,儘管這不會消除所有信任。這樣,如果狀態鏈誠實地運行,它實際上無法與過去的所有者簽署關閉交易,因為它當前持有的密鑰共享不能與過去所有者的密鑰共享一起創建有效簽名。同樣在這種勾結的情況下,公共證據將是可發布的,表明該州鏈實體的行為不誠實。這是聲譽上的阻礙。
公開證明如何運作? CommerceBlock 之前設計了一種稱為Mainstay 的Opentimestamps 變體。 Opentimestamps 只是一個協議,用於獲取任意數據並將其包含在一個非常大的默克爾樹中,其根提交給比特幣交易。 Opentimestamps 的問題在於樹是完全無序的。事情只是在它們進來時被添加到樹的末尾。這意味著它不能保證衝突信息不會被區塊鏈中的同一個錨定事務提交。 Mainstay 所做的是在默克爾樹中為特定數據有效地分配規範“槽”,例如證明體育比賽結果的預言機。每個人都可以知道要檢查哪個“槽”以查找特定的預言機,然後可以忽略不在該槽中的任何衝突時間戳。這允許人們用時間戳來證明某事,而不會留下時間戳衝突的可能性以選擇性地顯示(如果您可以在默克爾樹中的任何地方寫入,您可以在一個地方擁有真實的時間戳,同時指向其他地方的虛假時間戳) . Mercury statechain 的每次轉移都在特定的mainstay slot 中得到證明,以提供當前所有權的時間戳證明,如果statechain 實體不誠實,則可以發布該證明。
現在狀態鏈實現的細節已經不重要了,進入有趣的部分:coinswap。 coinjoins 和coinwaps 歷史上的一般區別是,coinjoin 是在單個交易中顯式和公開可見地使用隱私增強技術,而coinswap 通常被認為是隱蔽的,在合作成功的情況下,不是在多個單獨的交易中公開可見地使用隱私技術。整個世界都可以看到UTXO 何時進入coinjoin,但如果按照前面一般討論的方式實施,除了參與者之外,沒有人會知道UTXO 何時參與coinswap。
建立在Mercury 狀態鏈之上的coinswap 實現打破了coinjoins 和coinswap 之間在這種公開與隱蔽隱私屬性方面的明顯區別。狀態鏈的轉移記錄在Mainstay 承諾中,因此對抗性地,每次狀態鏈更改所有者時,您都必須假設它是公共知識。但是每次轉移也可以是與在同一塊間隔內轉移的任何其他狀態鏈的貨幣交換。因此,就匿名工具而言,這成為一種弗蘭肯斯坦怪物,結合了coinjoins的匿名特性,同時使用coinswap的機制進行鏈下UTXO的交換。它使用狀態鏈頂部的“coinswap”鏈外來模擬coinjoin 的類似匿名屬性,而不會為每次交換產生鏈上費用。
Mercury statechains 上的Coinswap 本質上只是常規的statechain 轉移 一些有趣的密碼魔法 讓他們匿名。當您為典型的coinjoin(如Whirlpool 或Wasabi)註冊一個UTXO 時,您將一個UTXO 註冊為輸入,然後收到一個盲加密憑證,您可以使用它在coinjoin 中創建一個輸出,以便通過新的網絡連接取回您的硬幣以保護您的隱私免受協調員的侵害。在Mercury 的方案中,通過註冊狀態鏈,接收盲令牌,然後查詢協調器以隨機分配一個新地址以將其狀態鏈轉移到該地址,來近似進行相同的協調。甚至有機會將自己的狀態鏈還給自己。這是隨機的。在那之後,基本上只是每個人都簽署了他們的狀態鏈轉移原子,就像coinjoin 一樣。
最後,我們在這裡看到的東西非常違反直覺,並且處於比特幣工具的“信任範圍”中的一個奇怪點,人們可能不習慣深入考慮。嚴格來說,在技術層面上,正在發生的是一種貨幣互換; 代幣被秘密交換,而沒有留下直接的鏈上指紋,表明正在發生UTXO 交換。但是由於Mainstay 對所有轉移的承諾以及在不同時間段內哪些狀態鏈轉移了所有者的啟發式分析潛力,您可以推斷發生了coinswap,從而將匿名集收益降低到相當於標準coinjoin。但是您不必為每個“coinjoin”支付鏈上費用。
為了真正理解“奇怪點”的意義,可以說是由單一實體作為國家鏈運營商,您可以將其視為近似於託管安排。但由於HSM 強制刪除密鑰、Mainstay 證明和預簽名關閉交易,只要運營商不與先前的狀態鏈所有者合作欺騙合法所有者,用戶總是有一條單方面退出系統的路徑.
我能想到的描述信任模型的最好方法是 轉述湯姆·特里維森(Tom Trevethan) 來自CommerceBlock:“這旨在在隱私工具方面佔據完全託管混合器和完全去信任的coinjoin 之間的中間地帶。” 不可否認,國家鏈運營商(在本例中為CommerceBlock)對誠實行事具有一定程度的信任。但也有一些機制可以公開提醒用戶注意他們的不誠實行為,並通過與純鏈上coinjoin 相比潛在的費用節省來獲得明顯的隱私好處。
它並非完全無需信任,但也並非完全基於信任。在隱私工具方面,這是一個新的領域。就我個人而言,鑑於集中式混合器仍然被廣泛使用這一事實未被充分認識,我很想知道它在何處適合該生態系統。鎮上來了一個新孩子。
這是Shinobi 的客座帖子。表達的意見完全是他們自己的,不一定反映BTC, Inc. 或 比特幣雜誌.