首页 > 解决方案 > 如何使用 bitcoinjs-lib 发送和接收比特币?

问题描述

首先,我使用BIP32使用助记符创建 HD 钱包。

现在我想为每次接收使用xpubxpriv生成带有私钥的新子地址。

然后,例如,我在 2 个子地址中收到了 BTC,即 3 BTC 和 2 BTC。

现在,我必须将 4 BTC 发送给某人,然后我如何发送它,因为我有 3 BTC 但在一个单独的帐户中使用utxo

我如何管理这些账户和交易,以及如何向用户显示总余额?

所以,我不知道如何使用bitcoinjs-lib,BIP32 来实现它。

标签: javascriptnode.jsblockchainbitcoinbitcoinjs-lib

解决方案


创建 2 个地址,例如:

const path = "m/0'/0/0"
const mnemonic = 'praise you muffin lion enable neck grocery crumble super myself license ghost'
const seed = bip39.mnemonicToSeed(mnemonic)
const root = bip32.fromSeed(seed)

const child1 = root.derivePath("m/0'/0")
const child2 = root.derivePath("m/0'/1")

const child1Address = bitcoin.payments.p2pkh({ pubkey: child1.publicKey }).address
const child2Address = bitcoin.payments.p2pkh({ pubkey: child2.publicKey }).address

接下来,为了管理这些账户并向用户显示余额,您必须创建一个使用其地址发生的每笔交易的数据库。这意味着您必须扫描每个区块以查找使用其地址的任何交易并跟踪该交易是否已花费,就像构建区块浏览器一样。Bitcoinjs-lib 不会为您执行此操作,它为您提供创建自己的钱包应用程序的原始构建块。

为了花费两个地址的输出,您必须从数据库中获取未花费的输出,并使用您创建的密钥创建交易和签名。有关更多示例,请参阅自述文件。


推荐阅读