Block結(jié)構(gòu)
幾點(diǎn)注意:
nBits的上限是0x1D00FFFF,無(wú)下限,但顯而易見蹋岩,負(fù)值無(wú)意義,所以代碼實(shí)現(xiàn)時(shí)有對(duì)負(fù)值的特殊處理学少。
nNonce是4字節(jié)剪个,顯然無(wú)法覆蓋256位的hash target,因此還要?jiǎng)e的手段來(lái)擴(kuò)大hash范圍版确,詳見挖礦扣囊。
區(qū)塊頭舉例
說(shuō)下版本號(hào)
最初是版本1
2012年9月乎折,BIP34提出coin base中加入塊高度等規(guī)則,這引入了一個(gè)軟分叉侵歇,Bitcoin Core 0.7.0版本引進(jìn)這個(gè)提議骂澄。
Bitcoin Core 0.7.0及以上版本約定在塊高度224,412開始,拒絕接受版本號(hào)為2卻不遵守BIP34的新塊惕虑。
并約定從227,930開始拒絕版本號(hào)為1的新塊坟冲。
什么是軟分叉
當(dāng)軟件升級(jí)后,老的節(jié)點(diǎn)不感知新軟件的變動(dòng)溃蔫,新的交易和塊在老節(jié)點(diǎn)上依然可以校驗(yàn)通過(guò)健提,這叫軟分叉
拿上面的BIP34來(lái)講,塊高度字段是添加在coinbase的scriptPub中的伟叛,而這個(gè)字段老版本不做校驗(yàn)私痹,因此在224,412到227,930的這三周內(nèi),老節(jié)點(diǎn)和新節(jié)點(diǎn)在同一條鏈上统刮,給老節(jié)點(diǎn)最后的升級(jí)機(jī)會(huì)紊遵,否責(zé)227,930后將會(huì)出現(xiàn)分叉,老節(jié)點(diǎn)新生成的塊將會(huì)無(wú)效网沾。
為什么是老的鏈無(wú)效而不是新的鏈無(wú)效癞蚕?
算力投票的結(jié)果蕊爵,如果大部分礦工都支持version2辉哥,那么BIP32得以通過(guò),新鏈?zhǔn)呛戏ㄦ湣?/p>