作者:Sebastian
來源:https://blog.bitbox.swiss/en/musig2-and-frost-explaining-multisignature-schemes-on-taproot/

2021 年 11 月,Taproot 升級在比特幣上通過軟分叉激活,給比特幣交易帶來了一些新的特性,以及相對更高效的 Schnorr 簽名。雖然採用率在一開始增加得比較緩慢,當前,Taproot 形式的交易輸出已經佔據了所有比特幣未花費交易輸出的 20%,而且更多應用開始使用 Taproot 的更高級的特性。當然。BitBoxApp 和 BitBox02 從 2022 年開始就支持 發送資金到 Tpaorot 地址以及用 Taproot 地址來收取資金。
在本文中,我們將在新的多簽名方案(比如 MuSig2 和 FROST)上展望未來;這些方案將讓多簽名錢包從 Taproot 錢包的增強的隱私性和經濟性中獲益。為了理解它們的工作原理,以及上述好處從何而來,我們要簡單瞭解比特幣的腳本和 Taproot,然後再申述瞭解這些簽名方案。
比特幣腳本編程
在你收取比特幣支付時,你要把一個地址交給支付方,這個地址代表的是一個腳本;而發送者需要在某筆交易中創建一個新的交易輸出,把資金髮送到你給出的地址 —— 實際上就是將一些比特幣鎖定到那個腳本中。這樣的腳本是一種小型的、簡單的程序,決定了什麼樣的花費資金的交易是有效的;比特幣網絡中的每一個節點,都會憑藉這樣的程序來 檢查/驗證 交易。比如,原生的 Segwit 腳本 P2WPKH,僅在你(的交易)所提供的公鑰與腳本中一個公鑰哈希值相匹配、同時你能提供該公鑰對交易的一個簽名時,你才能夠花費鎖定在這個腳本中的資金 —— 就這麼簡單。再簡單一些:這樣的腳本確保了只有持有正確密鑰的人才能花費被它鎖定的比特幣。

但是,使用這樣的編程能力,也可以實現更加複雜的使用比特幣的方式 —— 加入更多的花費條件。一個廣為人知的例子就是多簽名錢包,被其中的地址鎖定的資金需要多於一個簽名才能花費。從一個多簽名地址花費資金的時候,這個更加複雜的腳本需要公開,這一方面是為了驗證腳本與地址相對應,然後是為了(根據腳本中的公鑰)驗證你所提供的簽名是有效的。

這種多簽名錢包(也是當前主流的多簽名錢包)有兩個缺點:首先,它的隱私性並不理想,因為每個人都能看到你的多簽名裝置的細節(不管你使用的是 2-of-3 設置、3-of-5 設置乃至更加複雜的方法,都會在完整腳本中暴露);其次,你加入的花費條件越多,腳本的體積就越大,那麼交易手續費就相對越高。
密鑰路徑與腳本路徑
從一個 Taproot 地址花費資金的時候,可以選擇兩種不同的花費路徑:密鑰路徑和腳本路徑。兩種花費路徑各擅勝場,一起帶來了更加隱私、更加高效的交易。
密鑰路徑
默認的,或者說 “更推薦” 的使用 Taproot 地址的方式是密鑰路徑;就其自身而已,非常容易理解:Taproot 腳本包含了一個公鑰,只需一個簽名就可以從中花費。如果在花費一個 Tarpoot 輸出時,你什麼都沒提供,只提供了一個簽名,那就是密鑰路徑花費。比如說,從 BitBoxApp 所創建的 Taproot 地址中花費時,每一筆普遍交易都是密鑰路徑花費。

密鑰路徑花費很棒,是因為它省去了所有無關的信息,在區塊鏈上僅暴露一個公鑰和一個數字簽名。這讓每一筆使用密鑰路徑的 Taproot 交易看起來都完全一樣。你根本分辨不出創造簽名的必要條件 —— 根本就沒有線索。只要這個簽名是有效的,這筆交易就是有效的。雖然它是一個標準的單簽名,但你不知道後面藏著什麼 —— 可能是多重簽名錢包,甚至是一條閃電通道 —— 這個我們後面詳細說。
腳本路徑
腳本路徑與當前的複雜花費條件類似,需要在比特幣區塊鏈上公開這樣的複雜條件。它們被用作花費一個輸出的替代方法,比如說,通常的密鑰花費條件不能滿足。一個這樣的例子是,常規條件 可能是你的主力硬件簽名器,而替代條件則是一個放在異地的後備密鑰,當你的主力硬件簽名器不可用的時候,你可以使用後備密鑰。
但是,腳本路徑花費依然能提供一些好處,因為僅有部分的花費條件需要公開 —— 你可能有三種替代條件,但在花費時,只需要揭曉實際上用到的那種。這也可以提高隱私性,並獲得更小的交易體積,因為並非所有細節都需要記錄到比特幣區塊鏈上 —— 只有實際被用到、實際被公開的那部分,才會記錄到區塊鏈上。
Taproot 厲害的地方在於我們可以全都要!Taproot 腳本既允許通過一個簽名來花費(密鑰路徑),也允許公開一個腳本路徑並憑它來花費。你可能意識到了:Taproot 腳本中的公鑰必定有著極為有趣的構造,顯然 “不僅僅是一個簡單的公鑰”。沒錯!
你聽過 “MuSig” 嗎?
有了對比特幣腳本編程和 Taproot 兩種花費路徑的瞭解之後,我們就可以真正開始瞭解幾種多重簽名方案以及它們如何利用 Taproot 的特性了。在上一節中,我們已經暗示了,可以將多簽名錢包 “隱藏” 在單公鑰的密鑰花費路徑之後;這是怎麼做到的呢?一個簽名怎麼能夠代表多個簽名人?
簽名聚合
Taproot 腳本所使用的電子簽名方案是 “Schnorr 簽名”,它有一種有趣屬性叫做 “linerity”,因為著其簽名結果是易於相加的,可以把來自多個簽名者的電子簽名 “聚合” 為單個簽名。
基於這個原理,比特幣專家和密碼學們得出了一種優雅的多重簽名方案。MuSig2 使用密鑰聚合和簽名聚合來啟用 n-of-n 多簽名錢包(例如,下圖就展示了 4-of-4 多簽名錢包),而且不需要在比特幣網絡中揭曉關於聚合前公鑰和聚合前簽名的任何信息。

除了參與了簽名過程的人,沒有人能看出 Alice、Bob、Satoshi 和 Carol 都參與創建了簽名。甚至壓根沒有人能看出這筆交易來自一個多簽名錢包 —— 因為混同在其它 Taproot 交易中,所以提高了安全性。這樣的聚合簽名交易的體積跟常規的單簽名交易是一樣大的,因為也不需要暴露任何一個聚合前的公鑰;交易體積縮減給用戶帶來的好處是需要支付的手續費會降低,而比特幣區塊鏈也會變得更加高效。
交互性
但也像生活中的別的事情一樣,MuSig2 也有它的犧牲,那就是簽名器之間需要交互。在傳統的多簽名錢包中,簽名器只需要傳出簽名就行,這些簽名會變成最終交易的一部分,而在 MuSig2 方案中,這些簽名器必須來回溝通,不止一次,以安全地計算聚合公鑰和聚合簽名。
MuSig 的第一個版本要求三輪交互,而且出於安全理由,必須稍微調整,這也是為什麼現在較為著名的是其後繼者 “MuSig2”,該算法只要求兩輪交互。當然,這很是給用戶帶來了複雜性,雖然隱私性和交易體積好處可能足以說服許多用戶克服這些不便之處。
n-of-n 設施的另一個侷限性在於,它無法直接形成閾值機制(例如,2-of-3),而這是大多數多簽名錢包用戶想要的東西 —— 這能幫他們對抗私鑰丟失事件。為了加入這種安全冗餘,就需要額外的腳本路徑、形成不同密鑰的 “後備組合”。這可以在實質上產生與之機制,但也需要更加複雜的腳本和設置。但你可能猜到了,我們還未窮盡所有可能性。
FROST
“靈活且最優輪次的 Schnorr 門限簽名” 協議,縮寫為 “FROST”,是另一個類似於 MuSig2 的多簽名協議,至少從創建和聚合簽名的角度看。不妥,它使用了不同的密鑰生成方式,從而支持閾值機制。
為了安全地使用閾值機制,讓(比如說) 4 個預定公鑰中的任何 2 個的簽名都可以聚合成有效的簽名,有兩種創建公鑰碎片的選擇:(1)由一個受信任的參與者來生成和發放公鑰,這是一種較為簡單的方案,但顯然需要簽名器之間相互信任;(2)讓簽名參與者通過一個交互流程來生成密鑰,這通常叫做 “分佈式密鑰生成(DKG)”,需要在簽名器之間有安全的通信通道。
換句話說,加入設定閾值的能力也會帶來複雜性,但也帶來了更加通用、更強韌的設置。使用 FROST 協議的密鑰路徑花費,也跟其它使用密鑰路徑的 Taproot 交易沒有區別,因此有更好的隱私性 —— 沒緣分知道是哪些簽名器參與花費了資金。

結論
如果你不是單獨地思考這些概念,而是想象它們的組合方式(以及跟其它機制的組合),你會發現可能性幾乎是無窮無盡。用戶能夠微調子集的設置,例如加入時間鎖和復原路徑,就像 BitBox02 搭配 Liana Wallet 已經能做到的那樣,從而能夠組合它們、並從我們已經學到的高級方案中受益。閃電網絡這樣的擴容方案,也可以利用 MuSig 這樣的方案,讓通道管理更加高效、更加隱私。
MuSig2 和 FROST 的好處基本上會隨著錢包設置的複雜度以及簽名器的數量而上升,這讓它們對財務管理有複雜要求的大企業非常有吸引力。但即便是對個人用戶,也可以節約手續費、獲得更好的隱私性。兩者都還處在非常早的階段,但 Taproot 以及它的好處是長期存在的,所以像 MuSig2 和 FROST 這樣的簽名方案的採用以及用戶體驗最終也會提上來。我們將繼續關注這些開發工作,看看是否能讓 BitBpx 用戶從中受益!
(完)



