我们知道,比特币是通过挖矿这种机制来保证分布式环境下的节点一致性, 只有通过挖矿,交易才能在众多节点之间达成共识并最终打包到区块中上链。
在另一方面,挖矿也是比特币系统的造币机制,所有的比特币都是通过各个 节点的挖矿出块产生的,并且支付给矿工作为其付出的奖励 —— 这一奖励最初 是50个比特币,并且每出21万个区块之后减半,直至最终减少到0。目前阶段的挖矿 奖励是每区块12.5个比特币。
节点挖矿获得的奖励并不会立刻生效,而必须等待更多的区块生成之后才可用。 这是因为当比特币网络中出现分叉时,某些区块会变成孤儿,而这些区块包含的交易 将被重新打包入其他区块,同时这些孤儿区块的挖矿奖励将被回收:
因此按照约定,挖块奖励得到的比特币必须要等101个确认(Confirms)之后才能生效。
执行挖矿操作
在公链上我们没什么机会挖矿,不过在私链上,必须由自己挖矿,否则交易 没有办法确认。
使用generate 调用来执行挖矿操作,例如下面的命令连续挖出101个区块:
~$ bitcoin-cli generate 101
generate命令也是由钱包模块实现的,它会创建一个新的钱包地址,然后将挖矿奖励转入 这个新地址。显然在第N+100个块挖出后,第N个块的确认达到了101个,因此第N块 的奖励就生效了。现在看一下我们的钱包余额:
~$ bitcoin-cli getbalance
你应该看到余额有了变换。