Electrum/Sparrow/Caravan 如何生成多重簽名地址?
我正在嘗試“手動”確認 Electrum、Sparrow 和 Caravan 從確定性多重簽名地址生成的比特幣地址。
例如,我有以下 2-of-2 錢包:
種子詞#1:
legal thumb play interest flash will lucky jar outdoor guard vendor found crucial develop spring valley example supply fortune pole right acid alert page
種子詞#2:
begin siege speak boat before mad solve dance lawsuit point machine cake tragic fiber waste equip loan syrup cloud credit shock choose chest finish
使用Ian Coleman 的 BIP39 工具,我可以通過以下步驟確認主公鑰 (xpub):
- 在BIP39 Mnemonic下輸入種子詞
- 在派生路徑下,選擇BIP32選項卡
- 在BIP32 Derivation Path下,輸入
m/45'/0
(for legacy multisig)- 複製BIP32 擴展公鑰
生成的 xpub 與 Electrum 在輸入這些種子詞作為 2-of-2 舊式多重簽名錢包時生成的內容相匹配。xpub 的範例是:
錢包#1 xpub:
xpub6B7nJf6xmWPjeVpdSwePjDmUJxRWSVf3vXu47AYKiLTyW7rPUyysKVU8TtRJ9VXtAVNHjx6EsueiE9Mw7JyP4dVhZjJF4ViVAJNaoZo49uw
錢包#2 xpub:
xpub6Ab52xTpcFNYToaXBT6opdaqo18rKSYA3rnum4XuE8pLW9N748QJq1PP5z93KSfbpfMVRLqsYgZYwfNmzomqkw4kvopD1PuXS4DuNaY4ZBi
這個多重簽名錢包中的第一個地址是
3BWrS4WXB61sppUN7zxgAqxzjcSvML7jWC
. 當我將這些 xpub 輸入到Sparrow 比特幣錢包(帶有Script TypeLegacy (P2SH)
和Derivationm/45'
)時,我得到了相同的地址。Caravan也給出了相同的地址。我的問題是:我如何“手動”生成第一個比特幣地址?
我試過使用Ian Coleman 的 Multisig Tool、Bitcore、coinbin Bitcoin Wallet和Bitcoin core 的 addmultisigaddress 命令。它們都需要來自兩個錢包的地址的“公鑰”。我在哪裡可以找到/生成這些公鑰(最好使用某種瀏覽器 html 或命令行工具)?我已經嘗試使用從上面的BIP39 工具底部生成的公鑰,但是任何工具中的這些密鑰的組合都不會產生相同的生成地址。
完整的推導路徑似乎遵循BIP 45,但並不完全準確。實際的公鑰是從路徑的 xpub 生成的
m/45'/0/0
。對於第一個地址,公鑰的派生路徑將是m/45'/0/0/0
. 您可以使用 Ian Coleman 的 BIP 39 工具獲取這些公鑰,方法是轉到 BIP 32 選項卡並輸入m/45'/0/0
派生路徑。然後向下滾動到派生地址並選擇第一個。你應該看到第一個助記符
03ae50de983900d2898d975cd71c8520c88da868acc434e259775ee58b5e4ce311
的第一個公鑰是,第二個助記符的第一個公鑰是03c2367af137659943c11ee02aa88ec9b2ca5b424183b8d3a6990db1907bc475ae
。如果您將這些輸入到任何多重簽名生成工具中,您應該會得到您期望的地址。例如,比特幣核心的
createmultisig
:$ bitcoin-cli createmultisig 2 '["03ae50de983900d2898d975cd71c8520c88da868acc434e259775ee58b5e4ce311","03c2367af137659943c11ee02aa88ec9b2ca5b424183b8d3a6990db1907bc475ae"]' { "address": "3BWrS4WXB61sppUN7zxgAqxzjcSvML7jWC", "redeemScript": "522103ae50de983900d2898d975cd71c8520c88da868acc434e259775ee58b5e4ce3112103c2367af137659943c11ee02aa88ec9b2ca5b424183b8d3a6990db1907bc475ae52ae", "descriptor": "sh(multi(2,03ae50de983900d2898d975cd71c8520c88da868acc434e259775ee58b5e4ce311,03c2367af137659943c11ee02aa88ec9b2ca5b424183b8d3a6990db1907bc475ae))#eq5t5j72" }