最新消息:本站技术交流 QQ 群:28124927

在本地网络(regtest)挖矿和记账

区块链/比特币 exchen 371浏览 0评论

在本地网络(regtest)挖矿和记账

少壮不囤币,老大徒伤悲。在前面一篇文章我们学习到在测试网络(testnet)发送和接受比特币,不过测试网络需要下载整个区块链数据,不太方便,目前我们了解到比特币主网络(mainnet)是比特币正式使用的,测试网络(testnet)是开发者用来测试的,测试网络的币可以免费领。还有一种是本地网络(regtest),这个更厉害,可以重头开始挖一个区块,进行回归测试,下面我们开始操作使用本地网络(regtest)测试挖矿和记账,启动比特币客户端时添加 -regtest 参数。

打开成功之后看到本地网络(regtest)显示的是蓝色的,如下图所示。在前面的文章我们看到主网络(mainnet)显示的是黄色,测试网络(testnet)显示的是绿色。

获取当前的区块信息,可以看到当前的区块个数是 0,信息如下:

我们需要挖出一个区块,在控制台上输入命令 generate 1 代表挖一个区块,有可能会提示下面的错误。

尝试切换到命令行,调用 bitcoin-cli 创建第一个区块,这时可以成功。

getblock 命令可以查询这个区块的信息

这时我们看客户端上显示余额有 50 BTC,如下图所示。

不过在交易记录里可以看到需要 101 个区块确认才可以使用这 50 个 BTC,如下图所示。

gettransaction 命令可以查看该笔交易的详情

接下来可以使用 generatetoaddress 再挖 100 个区块并且指定奖励的 BTC 发送到 bcrt1q7qunn5l9h8mkty7vcz9huavjqv8j6u3fvn5236 地址。

目前我们的本地网络有 101 个区块,第一个挖出的区块奖励 50个BTC已经可以使用,新挖的 100 个区块的奖励 5000 个BTC还不能使用,如下图所示。

通过 getbalance 可以获取当前钱包的余额,但是一个钱包有可能会有多个地址,我们可以使用 listaddressgroupings 显示所有地址对应的余额。

接着我们尝试转账 25 个 BTC,最小的手续费是每 KB 使用 0.00001000,大概一个字节一聪,比特币最小的单元是聪,可以看到该笔交易的体积大于是 0.141 KB,手续费对应的就是 0.00000141 个 BTC,如下图所示。

发送完成之后,查询 txid,可以看到 confirmations 是 0,说明确认数是 0,这笔交易未被确认。

我们需要挖一个区块才能确认这一笔交易。

此时可以看到 bcrt1qcj6ar25j7hmrr3dh2yplusq9g623ltyymdeudx 地址的余额变成 0,bcrt1q7qunn5l9h8mkty7vcz9huavjqv8j6u3fvn5236 变成 75,因为还有 50 是挖矿得到的奖励,为什么这里又多了一个 bcrt1q7m6p0s8aq6fn7q4eujuv8wjh0mk2w5c9n6w9y8 呢?里面有 24.99999859 金额是怎么回事?我觉得应该是找零地址,bcrt1qcj6ar25j7hmrr3dh2yplusq9g623ltyymdeudx 把扣除手续费后还剩的 24.99999859 转给了找零地址。

可以看到新挖出的这个区块有两个 tx,说明是有两笔交易。一笔交易是转账 25 BTC,还有一笔是挖矿奖励 50 BTC。

区块里的第一笔交易称为 coinbase,是用于挖矿奖励的。可以看到 0.00000141 手续费和 50 BTC 挖矿奖励一起发送到了 bcrt1q7qunn5l9h8mkty7vcz9huavjqv8j6u3fvn5236,说明矿工除了能得到挖矿奖励还能获取打包该区块的所有手续费。

转载请注明:exchen's blog » 在本地网络(regtest)挖矿和记账

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址