比特幣挖礦難度精講.doc

比特幣挖礦難度精講.doc

ID:55778203

大?。?.94 MB

頁數(shù):21頁

時間:2020-06-07

比特幣挖礦難度精講.doc_第1頁
比特幣挖礦難度精講.doc_第2頁
比特幣挖礦難度精講.doc_第3頁
比特幣挖礦難度精講.doc_第4頁
比特幣挖礦難度精講.doc_第5頁
資源描述:

《比特幣挖礦難度精講.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。

1、比特幣主鏈上,平均每十分鐘會出一個塊。隨著數(shù)字貨幣的發(fā)展,參與的miner數(shù)量與日俱增,挖礦技術日新月異,全網(wǎng)的算力也是以驚人的速度增長。BTC中為了保證主鏈平均的高度增加速度依然維持最初設定,進而設置了挖礦難度調整的功能。深入理解挖礦難度的概念,以及挖礦難度調整的方案,對開發(fā)人員以及miner都很重要,因為挖礦難度設置不合理可能會導致全網(wǎng)出塊速度極不穩(wěn)定。本文將詳細介紹BTC&BCH挖礦難度及調整方案,我們先從PoW算法講起。?1、PoW算法PoW(Proof-of-Work)工作量證明算法是一種對應服務與資源濫用、或是

2、阻斷服務攻擊的經(jīng)濟對策。一般是要求用戶進行一些耗時適當?shù)膹碗s運算,并且答案能被服務方快速驗算,以此耗用的時間、設備與能源做為擔保成本,以確保服務與資源是被真正的需求所使用。PoW算法具有:去中心化,單向,隨機性,目標難度易調整等特點,所以現(xiàn)在包括BTC,BCH在內(nèi)的很多幣種都采用了PoW共識機制。從實現(xiàn)上來說,PoW算法的輸入為任意長度,輸出為固定長度,比如通常使用SHA256算法對應輸出256-bit。在挖礦過程中miner用PoW算法計算整個塊頭的hash值,由于SHA256的特性:塊頭任意一位發(fā)生變化,得到的hash

3、值會變得完全不一樣,而且大小變化方向不確定。于是,我們比較hash值是否小于某個值(實際上這個值是保存在塊頭中的nBit「解壓后」的current_target值)來判斷是否滿足要求;如果小于,則廣播這個區(qū)塊;如果不小于,則按照當前挖礦節(jié)點的規(guī)則改變塊頭中可以改變的值,然后再次計算塊頭hash值,以此往復,直到結果小于目標值。由此可知,current_target值越小,滿足挖礦要求的概率就越小,挖礦難度就越大。?2、塊頭&Coinbase交易塊頭的生成:當miner開始新一輪打包之后,首先會創(chuàng)建一個空的塊,塊結構分為塊頭

4、以及塊信息兩部分。先打包塊信息,再根據(jù)塊信息填充塊頭。首先看一下已經(jīng)成功打包的塊。下圖是寫本文稿時截取最新的BTCblock詳情。塊信息存放的是從mempool里取出來的一系列交易信息,miner并以此創(chuàng)建了一個MerkleTree,交易信息的hash值作為leaf,最終生成的MerkleRoot將填到塊頭里。值得注意的是,交易列表中的第一個是一個非常獨特的交易:CoinbaseTransaction。CoinbaseTransaction與普通交易主要的區(qū)別有:1)CoinbaseTransaction不消耗UTXO2)

5、input只有一個,叫做Coinbase3)output的addresss為miner的btc/bch地址4)value由挖礦獎勵和交易費組成5)更值得注意的是input中沒有Unlocking-script,取而代之的是CoinbaseData(這部分數(shù)據(jù)包含ExtraNonce,在挖礦難度非常高時,將起非常重要的作用)Coinbase交易input的結構如下:Coinbasedata,該字段數(shù)據(jù)長度范圍為2-byte~100-byte:blockheight起初Coinbase是不包含塊高度信息,由于重復交易的問題出現(xiàn)

6、,誕?了BIP30,隨后第二套解決方案BIP34)。BIP34規(guī)定Coinbasedata最高字節(jié)表示用于表示塊高度的數(shù)據(jù)段的字節(jié)數(shù),接下來的字節(jié)以?端法表示具體的塊高度,創(chuàng)世塊的高度為0。例如:2013-12-28BTC的一個塊的Coinbase解析中coinbasedata為0x03443b04...,則塊高度用16進制表示為0x043b44,十進制為;extranonce作為中間字段,將會在后續(xù)提及的ExtraNonceSolution詳細說明作用;上圖Coinbasedata中用以結尾的「/P2SH/」是12年mi

7、ner進行投票支持BTC是采用BIP16還是BIP17的產(chǎn)物,現(xiàn)已棄用。(眾所周知,BIP16P2SH獲得了更多票數(shù),被BTC采用)在交易信息聚合完畢得到了MerkleRoot之后,接下來填充區(qū)塊頭。塊頭結構如下(其中nBit就是PoW小節(jié)提到的current-target的壓縮版):區(qū)塊頭80-byte,一共6個字段:1.版本號,允許改變但不推薦2.前一個塊的hash值,不允許改變3.MerkleRoot的hash值,用于存塊信息里的交易的MerkleTree的root節(jié)點的值,允許改變(改變coinbase中input

8、中的值)1.時間戳,允許基于MTP11進行調整改變2.nonce,用于PoW算法的隨機值,允許改變3.nBit,PoW算法結果必須小于這個數(shù)對應的current_target才能算塊打包成功。這個值是在每一個塊開始打包之前就確定了,不允許改變塊頭中80bytes任意一個值發(fā)生改變,PoW的Hash結果就

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。