就在5月12日凌晨3:23,比特幣成功完成眾所矚目的第三次減半。
自2009年誕生,比特幣已經走過波瀾壯闊的十年。從交易所、礦機、投資者到媒體,比特幣已經帶動加密貨幣行業形成一個完整的生態系統。比特幣區塊獎勵減半從供給側直接減少一半的貨幣供給,顯然在邊際和投資者心理上都極大彰顯了比特幣的稀缺性。
因此,四年一次的比特幣減半成為整個加密貨幣行業關注的焦點。
但看了那么多比特幣減半的文章,你可能還不知道比特幣具體是怎么減半的,比如四年減半一次的四年是怎么來的,怎么計算當前區塊的獎勵等問題。
值此比特幣第三次減半之際,來跟隨金色財經記者看看Bitcoin Core的代碼是具體怎么執行比特幣區塊獎勵減半的。
比特幣減半代碼
金色午報 | 10月9日午間重要動態一覽:7:00-12:00關鍵詞:荷蘭央行、YFI、迅雷前CEO陳磊、Curve
1.荷蘭央行批準首個加密服務。
2.日本三井住友銀行高管:區塊鏈正在進行B2B轉變。
3.yearn.finance核心開發者:創始人將不再發布推特。
4.Curve發起新提案:增加支持RSV激勵型Metapool。
5.日本內閣官房長官:日本目前沒有發行央行數字貨幣的具體計劃。
6.工信部黨組書記:區塊鏈等新業態蓬勃興起對國民經濟增長貢獻率不斷提高。
7.迅雷前CEO陳磊涉嫌職務侵占被調查 案由包括挪用公司數千萬資金用于非法炒幣。
8.比特幣持續上漲,日內最低報10846.71美元,最高報10948.88美元[2020/10/9]
比特幣減半,是比特幣區塊獎勵減半的簡稱。而比特幣的區塊獎勵減半是比特幣共識的一部分,直接寫在比特幣軟件代碼里。
金色晨訊 | ICE主席Jeff Sprecher:預計Bakkt在今年晚些時候推出:1.?ICE主席Jeff Sprecher:預計Bakkt在今年晚些時候推出
2.Joseph Young:監管的不透明阻礙了加密技術的迅速發展
3.BlockTower Capital聯合創始人Ari Paul:比特幣不太可能被快速、功能豐富的加密資產取代
4.眼鏡蛇Cobra:社交媒體上經常發聲的人不會威脅到比特幣
5.以色列加密貨幣企業家辯護稱投資者對投資公司沒有所有權
6.石墨烯協議位列十大區塊鏈協議首位 Ethereum排第二
7.委內瑞拉2018年P2P比特幣交易超過加拿大和印度
8.Bakkt收購Rosenthal Collins集團
9. Google Play發現一款竊取用戶加密貨幣的惡意應用程序[2019/2/10]
具體減半代碼在這里,下面是截圖。
行情 | 金色盤面:BTC短線出現止跌行為:金色盤面分析師表示:BTC短線出現止跌行為,帶領市場小幅回暖,macd有金叉傾向,短期內關注幣價波動。[2018/8/3]
比特幣區塊獎勵減半代碼 來源:Bitcoin Core github
就這6行代碼定義的函數GetBlockSubsidy決定著不同區塊高度下的比特幣區塊獎勵。中本聰創造的比特幣共識設置區塊獎勵從50個比特幣開始每210000個區塊比特幣獎勵減半,減半64次后區塊獎勵為0。
210000個區塊的時間大約為四年,這也是幣圈人說的四年一次減半的由來。因為比特幣減半事件是寫進比特幣軟件代碼里并有分布在全世界的比特幣全節點驗證,其共識很難改變,這也是“In Code We Trust”的由來。
金色財經訊:以太坊(ETH)價格突破¥8,000,創歷史新高,數據來自韓國交易所Bithumb。[2018/1/4]
逐行解讀比特幣減半
上訴代碼主要有幾個函數和參數:GetBlockSubsidy、nHeight、Consensus.nSubsidyHalvingInterval、halving、nSubsidy。它們的涵義如下:
GetBlockSubsidy主要是活的當前區塊高度下的區塊獎勵(nSubsidy );
nHeight為當前區塊高度;
Consensus.nSubsidyHalvingInterval為比特幣共識決定的區塊獎勵減半間隔區塊,此值為一個常數,為210000。
halvings為減半次數,是一個整數變量,也就是對nHeight/210000取整;
COIN為常數,為100000000,也就是說,在比特幣代碼里,比特幣的單位是聰。
nSubsidy為區塊獎勵。
1239行代碼調用GetBlockSubsidy函數。
1240行代碼:halvings=nHeight/Consensus.nSubsidyHalvingInterval,計算當前區塊對應的減半次數。比如截止本文發稿,區塊高度為629929,629929/210000=2.99,取整halvings=2。當區塊高度達到630000時,halvings=3。
1242和1243行代碼:if (halvings >= 64) return 0;判斷減半次數是否大于64,如果減半次數大于等于64,則區塊獎勵為0。這也是來自比特幣共識,只有64次減半,64次減半后區塊獎勵為0。
1245行代碼nSubsidy=50*COIN,比特幣軟件每次執行代碼都把區塊獎勵設置成50* COIN,也就是5000000000。
1247行代碼nSubsidy>>=halvings,這一句是真正起作用的比特幣區塊獎勵減半代碼。>>= 是二進制右移操作,nSubsidy>>=halvings等價于nSubsidy=nSubsidy除以2的halvings次方。
1248行代碼返回比特幣當前高度的區塊獎勵值。
上述代碼最后的實質是下面的公式:
因此,1-209999區塊每個區塊獎勵為50/(2^0) =50枚比特幣;210000-419999區塊獎勵減半為50/(2^1)=25枚比特幣,420000-629999區塊獎勵減半至50/(2^2)=12.5個BTC。區塊高度630000后減至50/(2^3)=6.25枚比特幣。
大神也有BUG
不過,上述6行代碼不是中本聰的原始代碼,中本聰的原始代碼如下:
盡管中本聰是大神,但不代表其代碼就沒有bug。因為nSubsidy是個64位的有符號整數,而>>= 超過64在C++中屬于未定義行為,會導致數值環回,最終導致BTC數量不斷重復2100萬個比特幣的釋放過程,見下圖。
Pieter Wuille修復了這個bug,有一個專門的比特幣改進協議BIP042描述這個bug,文檔見這里。
參考資料:
Where in the Code Does the Halving Take Place
BIP042
以太坊開發者社區即將推出以太坊2.0版本,這是區塊鏈網絡多年發展的重要里程碑。以太坊2.0將標志著從礦工依賴的工作量證明(POW)共識算法到權益證明(POS)算法轉變的開始.
1900/1/1 0:00:00金色財經訊,根據一份Kin的改進方案,移動社交應用Kik準備將其加密貨幣Kin從Stellar區塊鏈轉移至高性能公鏈Solana上.
1900/1/1 0:00:00北京時間5月12日凌晨3點23分,高度為63萬的比特幣區塊被螞蟻礦池(AntPool)挖出,四年一度的減半盛事落下帷幕.
1900/1/1 0:00:00我們從加密貨幣市場總市值走勢能看出,從BTC前期探底3800美金一路帶動整體市場的反彈開始,加密總市值也從觸及下方支撐線起漲,直至漲至19年6月頂點開始回落的下降趨勢線附近遇阻回落.
1900/1/1 0:00:00加密貨幣正迅速成為主流投資話題的一部分,但這并不意味著新加密貨幣的發展正在放緩。即使伴隨著比特幣減半事件成為新聞,以及隨后對比特幣和其他加密貨幣價格的猜測,一種潛在趨勢仍在穩步前進.
1900/1/1 0:00:005月21日,以太坊ethresearch論壇上一位名為“Rbchi1”的開發者發起了一個提問:我們什么時候需要在區塊鏈空間使用密碼學?隨后以太坊創始人Vitalik對這個問題進行了回復.
1900/1/1 0:00:00