Bitcoin-Core
無法使用來自比特幣核心的 xprv 生成與比特幣核心相同的地址
首先,下面的所有地址都是為了測試目的,所以我不關心私鑰。
所以由 Bitcoin-qt v0.16.2 創建的轉儲錢包:
extended private masterkey: xprv9s21ZrQH143K3mYiBBH7MwWV9VTkeB5q5sxEFGgvLbLqRZ3xPVAKvwyxSLVtTcL2tz665vdZnHLrMQPr6MWGKdDHYoncZmUNiUgtShGCmZE
據我從轉儲的其餘部分可以理解,第一個接收地址是:
addr=3DhmoRSx2bjxyJm7A1Crs3bCPnVcEx51fE hdkeypath=m/0'/0'/0'
現在我正在嘗試使用它生成相同的地址,
bitcoinjs-lib
但到目前為止還沒有取得任何成功。import { HDNode } from "bitcoinjs-lib"; const key = HDNode.fromBase58( "xprv9s21ZrQH143K3mYiBBH7MwWV9VTkeB5q5sxEFGgvLbLqRZ3xPVAKvwyxSLVtTcL2tz665vdZnHLrMQPr6MWGKdDHYoncZmUNiUgtShGCmZE" ); console.log(key.derivePath("m/0'/0'/0'").getAddress()); // prints 1NoQERVA18v5WcFUbgvz22tDGigmAkqy4U
現在我很困惑,因為我使用相同的派生路徑,但我得到了 2 個不同的地址,最重要的是,來自轉儲的地址看起來是多重簽名的?是因為多重簽名嗎?
如果是這樣,我應該如何生成不是 multisig 並且是 HD 的 wallet.dat。
看起來轉儲中的地址是多重簽名?
它不是多重簽名。比特幣核心不會生成多重簽名地址。
該地址是一個 P2SH 包裝的 Segwit 地址。由於地址類型不同,同一個私鑰可以與多個地址相關聯。您生成的地址類型
bitcoinjs-lib
是 P2PKH 地址。然而,比特幣核心正在製作 P2SH-P2WPKH 地址。如果您執行類似的操作,您應該能夠獲得相同的地址
bitcoin.payments.p2sh({ redeem: bitcoin.payments.p2wpkh({ pubkey: key.derivePath("m/0'/0'/0'").publicKey }) })