我使用 bip32.org 生成了 xpub 并使用 xpub 派生了随机地址
var hdNode = bitcoinjs.HDNode.fromBase58(derivedPubKey);
hdNode.derive(index).pubKey.getAddress().toString();
通过 bip32.org 生成的私有 wif 导入比特币核心。在上述代码生成的地址上转移金额时,金额未显示在我的比特币核心中。
如果您已将主公钥导入 Core,但您发送到的地址是派生地址,那么您只是发送到与您预期接收资金不同的地址。
每个派生地址都有自己的私钥,因此您必须导入各个派生地址的密钥,而不仅仅是链的密钥:
var addr = hdNode.derive(i);
/* Derived address: */
addr.getAddress();
/* Corresponding privkey: */
addr.keyPair.toWIF();
事实上,每个派生地址也可能是一个新的链(derive()返回一个新的 HDNode)。此外,您的hdNode仅用于地址派生,但它也有自己的地址(您也发送了资金的那个),只是因为地址和链没有单独的数据类型。要访问该资金,只需生成私钥而无需派生:
hdNode.keyPair.toWIF();
另一方面,如果您使用 Electrum 而不是 Core,您可以只提取 Electrum 钱包地址链之一的主密钥(它的工作方式与 Electrum 使用校验和作为钱包种子的相反,您不能只导入非 Electrum链)。这样,您将能够独立生成新地址(出于安全原因,也只是没有 privKeys 的新地址),钱包可以识别这些地址,而无需显式导入它们。
顺便说一句,https ://bitcoin.stackexchange.com/ 是询问比特币相关问题的更好地方。
是的,您可以使用以下代码从私钥创建地址
常量比特币 = 要求('bitcoinjs-lib');让 testnet = bitcoin.networks.testnet; const keyPair = bitcoin.ECPair.fromWIF('cQnWufBcGz5fDtAPH8DVzrayXY1BJVCohCSHhgHXV8xnWfkGKQGL', testnet ) const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey }) console.log(address)