Multi-Signature

可以推斷出 P2TR 支出的多重簽名狀態嗎?

  • October 20, 2022

給定原始交易輸入/輸出數據,是否有可能知道 Taproot 輸出是否是多重簽名的?

我從比特幣節點獲取原始塊數據,並希望根據腳本(P2PKH、P2SH、P2WSH、P2WPKH、P2MS 和 P2TR)對每次支出進行分類。

我希望能夠判斷輸出是否代表多重支出,特別是對於 Taproot (P2TR)。

此外,如果是多重簽名,是否可以推斷出 M 和 N?

這對於除 P2TR 之外的所有輸出類型都是可能的。Taproot 引入了比特幣協議 Schnorr 簽名和 Merklized Alternative Script Trees,兩者都可以用來隱藏多重簽名中參與者的真實數量。

施諾爾簽名

Taproot 使用一種稱為 Schnorr 簽名的新簽名方案,它允許密鑰聚合。單個公鑰可以屬於一個使用者,也可以使用像 MuSig2 這樣的 n-of-n 方案或什至像 FROST/ROAST 這樣的門檻值 m-of-n 方案從多個使用者聚合。這使得多重簽名交易更小,因此更便宜,但這也意味著你無法判斷多重簽名是否發生,更不用說它的大小了。

Merklized 替代腳本樹

P2TR 輸出可以選擇送出到腳本樹 (MAST)。與以前的輸出類型的主要區別在於,您現在可以有許多替代支出條件,並且只顯示您最終使用的那個。

即使沒有密鑰聚合,這也允許您混淆多重簽名的實際大小。例如,如果您想要一個 2-of-3 多重簽名,您可以創建一個包含三個不同的 2-of-2 多重簽名的腳本樹:A&B、B&C 和 A&C。這些 2-of-2 中只有一個需要顯示,並且沒有人能夠判斷實際的多重簽名是 2-of-2、2-of-n 用於更高的 n,甚至是誘餌多重簽名,其中兩者鑰匙實際上屬於同一個人。

您可以將鍵聚合與腳本樹結合使用,例如,使用使用 2-of-2 MuSig2 聚合的三個不同鍵來實現 2-of-3。BIP342 中的一個腳註詳細介紹了腳本樹中的多重簽名。

引用自:https://bitcoin.stackexchange.com/questions/115652