由於比特幣經常被獎勵給礦工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”是否要求它,曆史再次是我們的指南。
比特幣增長趨勢,圖二:
參考資料