Bitcoin-Core

無法使用來自比特幣核心的 xprv 生成與比特幣核心相同的地址

  • August 28, 2018

首先,下面的所有地址都是為了測試目的,所以我不關心私鑰。

所以由 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 })
})

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