Multi-Signature

m-of-n 多重簽名地址中 m 和 n 的限制是什麼?

  • April 23, 2018

此方法描述瞭如何創建 2-of-3 多重簽名。

我聽說多重簽名部分的數量存在固有限制,將它們限制為 3 個。

上述生成花費多重簽名地址的標準方法是否適用於 3 個以上的部分?極限是多少?如何解決這個問題並使用 bitcoind 創建/花費更大的多重簽名(實用的“如何做”將不勝感激)

我們需要區分有效性標準性的局限性。第一個是由共識規則決定的(沒有硬分叉就無法改變)。第二個由參考客戶端中實施的本地中繼和挖礦策略確定,並且可以在版本之間更改。

此外,我們需要區分原始多重簽名(一個簡單的基於 OP_CHECKMULTISIG 的腳本)和P2SH多重簽名(其中 OP_CHECKMULTISIG 腳本僅在支出時顯示)。

最後,由於腳本包含公鑰,它們的大小取決於它們的長度。壓縮(33 字節)和未壓縮(65 字節)密鑰都存在,具體取決於用於生成它們的錢包版本。

原始多重簽名

每個 m-of-n 組合都是有效的(最多 n=20),但標準規則只允許最多 n=3。

發送時會強制執行此限制(即,發送到 2-of-4 的多重簽名將不被視為標準)。

P2SH 多重簽名

有效性規則要求 P2SH 贖回腳本最多 520 字節。由於兌換腳本為 [m pubkey1 pubkey2 … n OP_CHECKMULTISIG],因此所有公鑰的長度加上公鑰的數量不得超過 517。

  • 對於壓縮公鑰,這意味著最多 n=15
  • 對於未壓縮的,最多 n=7。

對於標準,它取決於版本。在 v0.9.* 之前,參考客戶端要求總支出腳本最多為 500 字節。

  • 對於壓縮密鑰,這意味著 m73 + n34 <= 496(最多 1-of-12、2-of-10、3-of-8 或 4-of-6)。
  • 對於未壓縮的密鑰,這意味著 m73 + n66 <= 496(最多 1-of-6、2-of-5、3-of-4)。

在 0.10 中,這些標準規則可能會放寬,允許達到有效性限制(壓縮密鑰為 15-of-15,未壓縮密鑰為 7-of-7)。

此外,對於 P2SH,標準性和有效性限制僅在支出時應用(因為支出腳本僅在那時顯示)。這可能意味著將您的硬幣發送到 P2SH 腳本可能會使它們無法恢復地失去(尤其是在違反有效性規則時)。

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