主页 > imtoken靓号地址软件 > 查比特币账户 新博客中的大脑

查比特币账户 新博客中的大脑

imtoken靓号地址软件 2023-05-25 07:26:11

在本教程中,我们将学习如何使用 Bitconjs-lib 开发库来开发一个简单的 JavaScript 版本的比特币应用程序。我们要实现的功能包括:离线创建比特币私钥和地址、账户充值、离线构建转账裸交易并广播到比特币网络等。

Node.js区块链开发相关推荐教程:

1、安装BitcoinJS-lib

BitcoinJS-lib 是一个 npm 包,可以在 node.js 或浏览器 javascript 环境中使用。您可以使用 npm 或 yarn 安装 BitcoinJS-lib 开发包:

npm install bitcoinjs-lib

2、介绍BitcoinJS-lib

首先介绍bitcoinjs-lib开发库:

const Btc = require('bitcoinjs-lib')

比特币的主链和测试链有不同的网络参数。为了简单和安全起见,我们使用测试链来开发本教程中的应用,所以介绍测试链网络参数:

查比特币账户

const TestNet = Btc.networks.testnet

3、用 BitcoinJS 创建一个比特币地址

每个比特币地址对应一对密钥(私钥和公钥),所以我们首先用BitcoinJS创建一个密钥对,并从密钥对中推导出地址:

let keyPair = Btc.ECPair.makeRandom({ network: TestNet })
let address = keyPair.getAddress()
let wifKey = keyPair.toWIF()
console.log(`Address: ${address} \n WifKey: ${wifKey}`)
@ >

在上面的代码中,我们首先使用BitcoinJS的ECPair类的静态方法makeRandom()生成随机密钥对,然后使用密钥对的getAddress()方法推导出对应的比特币地址,使用toWif()获取WIF格式的私钥,最后以WIF格式显示获取到的地址和私钥。

代码运行结果如下(你的结果应该不一样):

Address: mqVKYrNJcMkdK2QHFNEd1P6Qfc1Sqs3hu1
WifKey: cTEAh2DsC7KE4mzY5YFTYommzr7czbdiBfLPsXZrF6o3zSQLLw9Q

4、使用 BitcoinJS 密钥导入私有 WIF

查比特币账户

如果你有其他钱包的WIF格式的私钥,也可以导入BitcoinJS并导出对应的地址,例如:

let wifKey = 'cTEAh2DsC7KE4mzY5YFTYommzr7czbdiBfLPsXZrF6o3zSQLLw9Q'
let keyPair = new Btc.ECPair.fromWIF(privKey, TestNet)
console.log("Address:", keyPair.getAddress())

结果类似如下:

Address: mqVKYrNJcMkdK2QHFNEd1P6Qfc1Sqs3hu1

5、为私钥使用密码辅助记忆

有点麻烦,我们可以用密码来辅助推导出私钥,这样就可以进一步推导出公钥和地址了。以下代码使用BitcoinJS和nodejs大数计算库bigi实现:

const BigInteger = require('bigi')
let passphrase = 'J@vaScr1pt'
let keyPair = generateAddressFromSHA256Hash(passphrase);
console.log('Address: ', keyPair.getAddress())
function generateAddressFromSHA256Hash(passphrase) {
  let hash = Btc.crypto.sha256(passphrase);
  let d = BigInteger.fromBuffer(hash);
  let keyPair = new Btc.ECPair(d, null, { network: TestNet });
  return keyPair;
}

结果如下:

查比特币账户

Address: mqVKYrNJcMkdK2QHFNEd1P6Qfc1Sqs3hu1

p>

现在使用 generateAddressFromSHA256Hash() 函数,我们可以随时使用密码 J@VaSc1pt 发送地址 mqVKYrNJcMkdK2QHFNEd1P6Qfc1Sqs3hu1 及其对应的密钥对。

6、使用测试链Faucet给账户充值

在继续之前,我们需要为我们创建的比特币地址充值。网上有一些比特币测试链的水龙头,可以用来为任意指定的比特币地址存一些比特币查比特币账户,用于开发和测试。我用这个查比特币账户,当然你可以搜索更多这个水龙头。

让Faucet为我们的测试地址充值如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WYyOfrXU-1575940806098)(bitcoinjs-tutorial/faucet-fund.jpeg)]

酷,现在我们有1.3个比特币可以继续测试了!

查比特币账户

7、查询比特币地址详情

查询一个比特币地址的余额、UTXO等信息有两种方式:使用自己的节点,或者使用第三方API。为简单起见,本教程我们使用第三方API查询指定比特币地址的余额和UTXO:

onst request = require('request');
let addr = 'mqVKYrNJcMkdK2QHFNEd1P6Qfc1Sqs3hu1'
let apiUrl = 'https://testnet.blockexplorer.com/api/addr/'
// log unspent transactions
request.get(apiUrl + addr + '/utxo', (err, req, body) => {
  console.log('utxo => ', JSON.parse(body))
 }
);
// log balance
request.get(apiUrl + addr + '/balance', (err, req, body) => {
  console.log('balance => ', JSON.parse(body))
 }
);

结果如下:

utxo => [{
    address: 'mqVKYrNJcMkdK2QHFNEd1P6Qfc1Sqs3hu1',
    txid: '2d742aa8409ee4cd8afcb2f59aac6ede47b478fafbca2335c9c04c6aedf94c9b',
    vout: 0,
    scriptPubKey: '76a9146d622b371423d2e450c19d98059867d71e6aa87c88ac',
    amount: 1.3,
    satoshis: 130000000,
    height: 1180957,
    confirmations: 14
}]
balance =>  130000000   // 1.3 BTC = 130000000 satoshis

8、用BitcoinJS构造一个比特币转账裸交易

构建比特币裸交易有点复杂,我们需要自己组织交易的输入和输出。

首先用BitcoinJS交易构造器TransactionBuider创建一个交易对象:

let tx = new Btc.TransactionBuilder(TestNet)