Bitcoin-Core

如何創建需要花費 210 個密鑰中的 21 個的主根多重簽名地址?

  • October 27, 2022

我了解在啟動主根之前,m-of-n 多重簽名地址的“n”個最大限制為 20 個密鑰。我還看到了最近導致 LND 問題的 998/999 Tapscript 多重簽名交易,所以這告訴我 20 個最大密鑰限制可能不再起作用。

如果這是正確的,我如何使用 210 個密鑰創建一個多重簽名地址,並且需要其中的 21 個來花費?

我只想使用 Bitcoin Core 0.22 QT 控制台和文本編輯器(我使用記事本++)來做到這一點。

現在我使用這個命令在 QT 控制台中創建一個多重簽名地址

createmultisig mKeysRequired "[\"pubKey1\",\"pubKey2\",\"pubKey3\",...]"

允許我創建 tapscript 21/210 多重簽名地址的正確格式是什麼?

謝謝!

這將在即將發布的 Bitcoin Core 24.0 版本中成為可能,使用 RPCderiveaddressesimportdescriptors,它們在輸出描述符語言中作為輸入規範。

createmultisig諸如,等RPCaddmultisigaddress僅適用於較舊的遺留錢包。從 0.21.0 版本開始,Bitcoin Core 支持一種稱為描述符錢包的新型錢包。這些新錢包圍繞描述符語言執行,該語言精確描述了哪些地址/輸出屬於錢包。

例如,在描述符語言中,可以這樣寫:

  • pkh(PUBKEY)對於傳統的 P2PKH 單鍵輸出
  • sh(multi(2,PUBKEY1,PUBKEY2,PUBKEY3))用於在提供的密鑰上嵌入 P2SH 的 2-of-3 多重簽名。
  • sh(wsh(multi(1,PUBKEY1,PUBKEY2))對於 P2SH 嵌入式 P2WSH,其中包含 1-of-2 多重簽名。

在比特幣核心 22.0 中添加了tr()對描述符語言的支持,儘管沒有多重簽名支持(因為描述符語言特徵映射到的OP_CHECKMULTISIG操作碼multi()在主根腳本中不存在)。在即將發布的 Bitcoin Core 24.0 版本中,multi_a添加了類似multi()的功能,但使用的是與主根兼容的腳本。它支持多達 999 個鍵。使用它的方法是:

  • tr(KI,multi_a(21,K1,K2,K3,K4,...,K210))

您要使用的內部公鑰在哪裡KI(除非您希望它實施 (1-of-1)-or-(21-of-210) 策略,否則它必須是不可使用的。BIP341 給出了不可使用的範例key,即50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0. K1throughK210將是您要使用的公鑰。它們可以是 66 字元的十六進製表示法(以 02 或 03 開頭)、64 字元的十六進製表示法(僅用於 x 的 pubkey)或 xpubs 或 xprvs。有關詳細資訊,請參閱上面的連結文件。

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