由于比特币经常被奖励给矿工miners,比特币的数量是否会无限增长,或者是否有一个最大的比特币数量(总数)?如果有某种限制,它是什么,它是如何执行的?
最佳解决方法
每个比特币区块在系统中引入50个新硬币。这个数量(50)每210,000块减半。所以,获得硬币的极限是很容易的:它是几何系列的总和。
另外请注意,这是一个上限;由于四舍五入问题,实际数量可能会稍低(BTC的小数位数有限,设置为8)。
次佳解决方法
预先定义的协议会限制比特币的总数,使其逐渐接近总计2,100万比特币(忽略通过删除或放错钱包文件而丢失的比特币)。根据该协议,2100万比特币的限额为硬性规定(”hard-wired”),并且不会更多。比特币增长趋势如下图所示:
第三种解决方法
正如上面所提到的,比特币使用fixed-point数学来计算区块补贴。因此,忽略不可靠的创世纪块,各种丢失的硬币和无人认领的奖励,最大比特币数量为20999999.9769 BTC。
我通过下面的python程序找到了这个数字:
COIN = 100 * 1000 * 1000
nSubsidy = 50 * COIN
nHeight = 0
total = 0
while nSubsidy != 0:
nSubsidy = 50 * COIN
nSubsidy >>= nHeight / 210000
nHeight += 1
total += nSubsidy
print total / float(COIN)
它旨在反映比特币客户端的这些代码:
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
nSubsidy >>= (nHeight / 210000);
return nSubsidy + nFees;
}
当然,它只有2100万比特币,只有3bitcents,所以差别不大。
第四种方法
根据BIP(比特币改进建议),我发现,这个代码:
nSubsidy >>= (nHeight / 210000);
实际上将在2200左右的某个时间将报酬生成回报到50。使硬币供应无限。上面的python代码没有这个属性。 C++代码的确如此。见BIP https://github.com/bitcoin/bips/blob/master/bip-0042.mediawiki
第五种方法
根据目前的规则,最多只有2100万个硬币(在这里的其他答案中解释)。不过,我想补充一点,这是通过普遍的协议,这意味着它可以改变。
看到这个问题:Could there be hyperinflation in Bitcoin?
纵观金钱的历史,我怀疑只有2100万美元的硬币是否靠谱。是否有超过2100万个硬币取决于”the people”是否要求它,历史再次是我们的指南。
比特币增长趋势,图二:
参考资料