下圖是歷次獎勵減半的時間表:
注意:很多人說比特幣每隔四年減半一次,不準確的,實際是每經過210000區塊減半一次, 只是安裝當前的出塊速度,大約每4年獎勵減半一次。直到經過 64 次減半後(屆時將發行完所有的 2100 萬枚比特幣),將不再有新區塊獎勵,挖礦只能獲得交易的手續費。
BTC獎勵為什麼要減半?
為什麼不保持一個相同的獎勵?大家知道穩定價值的最好的限制產量(或流通量),石油和黃金是最好的例子,貨幣也是一樣,很多的貨幣就是在貪婪的政府一次次惡性發行中貶值。
如果比特幣的發行不受控制,建立的比特幣無止境,就無法承載價值,比特幣的發行模擬了黃金開採的過程,金礦隨著開採時間越來越長,能開採的黃金將越來越少。這也是為啥數千年來黃金一個是一個重要的價值交換媒介。
比特幣也是使用類似的方式控制通脹率以保持穩定的價值,因此有些人也稱比特幣為“數字黃金”。
誰控制了比特幣減半?
在傳統開發人員思維裡,程式碼是人寫的,我為什麼就不能更改獎勵了?這是中心化思維與去中心化思維產生的差異。
比特幣是一個由成千上萬客戶端組成的一個網路, 每個客戶端是各自獨立的個體,執行的自己的邏輯,但只有自己執行的邏輯經過別人驗證透過後,才可以在網路上傳播生效。
如果沒有辦法更改讓其他千上萬客戶端更改驗證方式,那麼你的修改就沒法再網路上生效,就是這麼簡單。
唯有按照大家都認可的方式記賬,這就是共識,共識的力量, 共識控制了比特幣減半的邏輯。
比特幣減半是如何實現的?
比特幣獎勵減半的程式碼[2]其實非常簡單,就是下面這個函式:
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
// Force block reward to zero when right shift is undefined.
if (halvings >= 64)
return 0;
CAmount nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
nSubsidy >>= halvings;
return nSubsidy;
}
這個函式是根據區塊的高度獲取區塊的獎勵數量。
•nHeight 是當前區塊高度
•consensusParams.nSubsidyHalvingInterval 是減半間隔區塊數,為常量 210000
•halvings,為減半次數,它是一個整型,只儲存整除的整數。
•if (halvings >= 64) return 0; 當減半 64 次之後,獎勵為 0
•CAmount nSubsidy = 50 * COIN; 初始獎勵是 50 個幣,COIN 是以聰為單位的比特幣數量
•nSubsidy >>= halvings; 使用右移位計算最終獎勵,每右移一位相當於除以2。
比特幣減半後幣價就會漲麼?
也許是大家最關心的話題,理論上比特幣減半後,發行量變少了, 如果需求不變的話,價格會上漲,但是實際上真的如此麼?上面列出歷次獎勵減半的時間, 我們看看比特幣的價格,以 2016 年 7 月減半來看:
上面的圖是 2016 年 7 月發生的減半時當時的價格幾乎沒有什麼波動, 直到17 年下半年才開始快速上漲的。
17 年下半年的上漲是因為減半嗎,當然不是,而是因為 ICO 興起了。
同樣可以斷定需要需求沒有大的變化(例如 DEFI 應用導致對幣的使用需求增加)價格依舊不會有大的波動。
結論:減半隻是一個炒作的藉口而已。
References
[1] 挖礦: https://learnblockchain.cn/2019/10/31/7mining
[2] 比特幣獎勵減半的程式碼: https://github.com/bitcoin/bitcoin/blob/master/src/validation.cpp#L1238