Electrum

Electrum/Sparrow/Caravan 如何生成多重簽名地址?

  • September 28, 2021

我正在嘗試“手動”確認 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):

  1. 在BIP39 Mnemonic下輸入種子詞
  2. 派生路徑下,選擇BIP32選項卡
  3. BIP32 Derivation Path下,輸入m/45'/0(for legacy multisig)
  4. 複製BIP32 擴展公鑰

生成的 xpub 與 Electrum 在輸入這些種子詞作為 2-of-2 舊式多重簽名錢包時生成的內容相匹配。xpub 的範例是:

錢包#1 xpub:

xpub6B7nJf6xmWPjeVpdSwePjDmUJxRWSVf3vXu47AYKiLTyW7rPUyysKVU8TtRJ9VXtAVNHjx6EsueiE9Mw7JyP4dVhZjJF4ViVAJNaoZo49uw

錢包#2 xpub:

xpub6Ab52xTpcFNYToaXBT6opdaqo18rKSYA3rnum4XuE8pLW9N748QJq1PP5z93KSfbpfMVRLqsYgZYwfNmzomqkw4kvopD1PuXS4DuNaY4ZBi

這個多重簽名錢包中的第一個地址是3BWrS4WXB61sppUN7zxgAqxzjcSvML7jWC. 當我將這些 xpub 輸入到Sparrow 比特幣錢包(帶有Script Type Legacy (P2SH)Derivation m/45')時,我得到了相同的地址。Caravan也給出了相同的地址。

我的問題是:我如何“手動”生成第一個比特幣地址

我試過使用Ian Coleman 的 Multisig ToolBitcorecoinbin Bitcoin WalletBitcoin 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"
}

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