为什么比特币只有2100万个

rejames 2019-10-13

在比特币的创世纪块中,中本聪写下了这样一句话:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”。翻译出来就是:“(泰晤士报)2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘”。为什么中本聪要写下这句话呢?(不好直说,大家自己想吧!)

比特币创世纪块

比特币只有2100万个

1. 比特币的发行

在上一篇的文章中说过,每个区块的区块体中都是一笔一笔的交易吗?所有的交易都代表了资产从哪里转移到哪里,不会增加,也不会减少,可以说满足资产守恒。但是还有一笔交易比较特殊,这就是区块中的第一笔交易,是由矿工写上去的,资产没有从哪里来,只有到哪里去。这笔交易被称为币基交易(Coinbase transaction),他的金额是:奖励+手续费。其中奖励的金额,就是所有矿工承认对此矿工的奖励。奖励的金额如下图
为什么比特币只有2100万个
可以看出:

  1. 比特币每增加21万个区块奖励就会减半,那么他的总量是多少呢?
  2. 为什么每次减半的时间大概是四年,而不是固定的四年呢?

2. 计算比特币总量

先看下图:
为什么比特币只有2100万个
公式1: 就是把每个区块的奖励加起来,因为每增加21万个区块奖励减半,可以提取出21万

公式2: 可以看出这是一个等比数列,a1=50,q=1/2,然后再对等比数列求和

公式3: 就是对最后结果进行计算,可以发现最后求和出来就是2100万个比特币

比特币的最小单位是0.00000001BTC,等奖励小到这个值的时候,挖矿也就不再有奖励了(后面矿机只能考手续费存活)。这一年大概是2140年,总共挖了132年,经过33次减半。

3. 每四年进行一次减半

大家常说的是比特币奖励每四年减半,但是当你去较真的时候,得到的的却是大概四年减半,那这是为什么呢?

由图一可以看出,实际上比特币不是每四年减半,而是每增加21万个区块奖励减半。那么如果矿机多,挖得快的话,不就可以提前挖到着21万个块吗?

这么想确实没错。但是不要忘记,在区块的头部还有一个难度参数,这个难度就是来控制区块挖矿的时间的。它的目的是保证大概十分钟挖出一个区块。这个时候我们来计算一下:

为什么比特币只有2100万个

所以比特币大概就是四年左右进行一次减半。

那么,每个区块的挖矿难度是怎么计算的呢?他又是如何保证10分钟左右挖出一个区块的呢?

4. 控制挖矿难度

比特币的难度是动态调整的,每过2016个区块就会调整一次难度,我们称它为一个难度调整周期。

  1. 上一个周期挖矿的平均时间小于10分钟,那么下一个周期挖矿的难度就会增加。
  2. 上一个周期挖矿平均的时间大于10分钟,那么下一个周期挖矿的难度就会减小。

难度的增加或减小,简单说,就是要求计算出来的区块头的哈希前面要有多少个0。0多挖矿难度就大,0少挖矿难度就小。这样经过多次调整,就可以使得区块大概在十分钟左右被挖出。即便是矿机的突然增加和减少,最终也能通过难度的调整,将难度调整到大概10分钟出一个区块

接着我们再来计算一下:

2016块 X 10分 / 60分 / 24时 ≈ 14天

也就是一个区块难度调整的的周期,大概就是两周调整一次。

注: 由于比特币代码的一个bug。每个周期的总时间是基于之前的2015个块,这导致时间偏差0.05%。

5. 最后

由上可知,比特币的总量只有2100万个,大概四年进行一次减半,大概十分钟出一个区块。正因为挖矿的难度是动态调整的,让比特币在不论多少矿机的情况下,都能在十分钟左右出一个区块,也让比特币平稳的运行了十年。正是因比特币的可交易性、稀缺性、稳定性、可靠性,所以大家常把比特币比作黄金。

相关推荐