来自bitcoinjs-lib的比特币地址交易未在比特币核心中显示

时间:2016-12-17 13:25:22

标签: bitcoin bitcoind bitcoinj

我使用bip32.org生成了xpub,并使用xpub

生成了随机地址

var hdNode = bitcoinjs.HDNode.fromBase58(derivedPubKey); hdNode.derive(index).pubKey.getAddress().toString();

通过比特币核心导入的bip32.org生成的私有wif。在上面代码生成的地址上转移金额时,我的比特币核心中没有显示金额。

2 个答案:

答案 0 :(得分:0)

如果您已将主要的pubkey导入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使用校验和的钱包种子相反,你不能只导入非电子链)。通过这种方式,您可以独立生成新地址(也可以是没有privKeys的新地址,出于安全考虑),钱包可以识别这些地址而无需明确导入它们。

顺便说一句,https://bitcoin.stackexchange.com/是提问比特币相关问题的最好地方。

答案 1 :(得分:0)

是的,您可以使用以下代码从私钥创建地址

const bitcoin = require('bitcoinjs-lib'); 让testnet = bitcoin.networks.testnet; const keyPair = bitcoin.ECPair.fromWIF('cQnWufBcGz5fDtAPH8DVzrayXY1BJVCohCSHhgHXV8xnWfkGKQGL',testnet) const {地址} = bitcoin.payments.p2pkh({pubkey:keyPair.publicKey}) console.log(地址)


相关问题