在《Btcd區(qū)塊鏈的構(gòu)建》系列文章中梧躺,我們展開介紹了ProcessBlock()中的各個步驟,它主要包含三個步驟:一是對區(qū)塊進(jìn)行完整性檢查鸵闪;二是檢查區(qū)塊是否滿足寫入?yún)^(qū)塊鏈的各種條件梯皿,如果滿足則將其寫入?yún)^(qū)塊鏈;三是處理“孤兒”區(qū)塊奖唯。其中第二步最為復(fù)雜惨缆,它進(jìn)行的各項檢查及寫入?yún)^(qū)塊鏈時對utxoset的操作保證了區(qū)塊鏈的一致性,我們將對這一過程進(jìn)行回顧與總結(jié),以幫助大家加深理解坯墨。
其中涉及到的各個步驟如下圖所示:
至此寂汇,我們就完整介紹了Btcd構(gòu)建區(qū)塊鏈的全部過程,其中涉及到的主鏈與Utxoset相關(guān)的操作是保證區(qū)塊鏈一致性的核心捣染,對區(qū)塊頭中的版本號骄瓣、時間戳及目標(biāo)難度是否滿足預(yù)期值的檢查防止了“不合格”區(qū)塊在網(wǎng)絡(luò)上的傳播。在區(qū)塊鏈的構(gòu)建過程中耍攘,我們經(jīng)抽爬福看到對CSV或者其他BIP部署狀態(tài)的檢查,這是由于有些BIP的部署會影響到共識規(guī)則少漆,從而使區(qū)塊鏈發(fā)生“軟分叉”臼膏,為了兼容“軟分叉”前后的共識,需要在代碼中進(jìn)行兼容性檢查示损∩酰“軟分叉”是Bitcoin網(wǎng)絡(luò)治理的重要方面,我們將在下一篇文章《Btcd區(qū)塊鏈的“軟分叉”》中詳細(xì)介紹检访。