这节详细讨论一下比特币的发行总量,首先给出一个粗略的描述,也就是一个大众关心的版本,后面联系挖矿过程聊聊2100万是如何计算出来的。这是一个程序员会喜欢的版本。

粗略描述

对于发行总量的粗略描述是这样的:每10分钟产生一定量的比特币,每四年减半,发行总量上限是2100万枚。

说说减半的规律,2009年1月比特币的创世区块诞生,所谓创世区块就是比特币区块链上的第0个区块,这个区块中生成的比特币数量是50个,10分钟之后系统上会出现下一个区块,生成的比特币数量依然是50个。比特币系统规定每四年比特币的产量会减半,也就是说从2009年开始,每分钟产生50个;四年之后,每10分钟产生25个;再过四年,每10分钟产生12.5个,到2140年所有的比特币将会被全部生产出来,总量是2100万。

上面就是对于比特币发行过程的粗略描述,所谓粗略,就是有些数据是不精确的,例如通过计算器就可以算出到2140年,实际发出的比特币总量是要略小于2100万的,所以作为程序员,我们肯定会去思考精确的计算过程是怎样的?

真实的挖矿过程

其实,比特币的出块过程就是挖矿过程,所以要精确计算总量就要对挖矿的实际过程有一个基本的了解。

首先说,10分钟出块一次是不准确的。比特币的挖矿难度是随时调整的,所以每次出块的时间,一般不会是精确的10分钟,但是系统会不断调整挖矿难度,保证长期来看,每次产生区块的时间的平均值趋近10分钟。

每四年减半的四年也是不精确的,比特币代码中其实给定的减半周期参数是210000,那么210000怎么就变成四年了呢?其实,210000是将要减半的区块高度,如果到 https://www.blockchain.com 上浏览区块历史,可以看到第209999这个区块中的比特币是50个,而210000区块中比特币就减半为25个 https://www.blockchain.com/btc/block-height/209999 ,所以真实的减半周期就是210000区块,这样,210000乘以10分钟得到的是总时间,就约等于四年。

总之,挖矿过程是一个去中心化的过程,很多时间是不能精确控制的。

总量的精确计算公式

但是,比特币的发行总量是可以进行精确计算的。Bitcoin Wiki 上还给出了精确的计算公式 https://en.bitcoin.it/wiki/Controlled_supply

其中,可以看到32这个数字,意思是说比特币会经历32次减半,到第33次减半的时候,比特币区块中包含的比特币数量就等于零,也就是不会再有新的比特币产生了。那么为什么第33次减半的时候,奖励比特币的数量就等于零了呢?很明显从数学上来讲,从50开始无论减半多少次得到的数量也不可能是零,但是到第33次减半的时候,已经是一个非常小的数字了,而比特币系统由于存储精度的限制,这个数字就会变成零。所以,完成32次递减过程之后,所有生产出来的比特币可以根据上面的公式计算出一个略小于2100万的值。

这就是2100万这个总量的精确计算过程。

总结

关于比特币发行总量的计算,我们要聊的就是这些,通过讨论可以看到,每10分钟出块一次,四年减半,这些时间数据其实都是表面现象,底层的参数是每隔210000个区块,比特币产量减半。比特币最终发行总量不可能超过2100万个。

参考: