如何創建需要花費 210 個密鑰中的 21 個的主根多重簽名地址?
我了解在啟動主根之前,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 版本中成為可能,使用 RPC
deriveaddresses
和importdescriptors
,它們在輸出描述符語言中作為輸入規範。
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
.K1
throughK210
將是您要使用的公鑰。它們可以是 66 字元的十六進製表示法(以 02 或 03 開頭)、64 字元的十六進製表示法(僅用於 x 的 pubkey)或 xpubs 或 xprvs。有關詳細資訊,請參閱上面的連結文件。