在《Btcd區(qū)塊鏈的構(gòu)建》系列文章中,我們展開介紹了ProcessBlock()中的各個(gè)步驟,它主要包含三個(gè)步驟:一是對(duì)區(qū)塊進(jìn)行完整性檢查;二是檢查區(qū)塊是否滿足寫入?yún)^(qū)塊鏈的各種條件,如果滿足則將其寫入?yún)^(qū)塊鏈;三是處理“孤兒”區(qū)塊。其中第二步最為復(fù)雜,它進(jìn)行的各項(xiàng)檢查及寫入?yún)^(qū)塊鏈時(shí)對(duì)utxoset的操作保證了區(qū)塊鏈的一致性,我們將對(duì)這一過程進(jìn)行回顧與總結(jié),以幫助大家加深理解。
其中涉及到的各個(gè)步驟如下圖所示:

至此,我們就完整介紹了Btcd構(gòu)建區(qū)塊鏈的全部過程,其中涉及到的主鏈與Utxoset相關(guān)的操作是保證區(qū)塊鏈一致性的核心,對(duì)區(qū)塊頭中的版本號(hào)、時(shí)間戳及目標(biāo)難度是否滿足預(yù)期值的檢查防止了“不合格”區(qū)塊在網(wǎng)絡(luò)上的傳播。在區(qū)塊鏈的構(gòu)建過程中,我們經(jīng)常看到對(duì)CSV或者其他BIP部署狀態(tài)的檢查,這是由于有些BIP的部署會(huì)影響到共識(shí)規(guī)則,從而使區(qū)塊鏈發(fā)生“軟分叉”,為了兼容“軟分叉”前后的共識(shí),需要在代碼中進(jìn)行兼容性檢查?!败浄植妗笔荁itcoin網(wǎng)絡(luò)治理的重要方面,我們將在下一篇文章《Btcd區(qū)塊鏈的“軟分叉”》中詳細(xì)介紹。