Bitcoin-Core
在什麼情況下,塊會出現在 Leveldb .ldb 索引中但在 .dat 文件中沒有數據?
在解析
.bitcoin/blocks/index
. 這也是比特幣核心原始碼中明顯說明的一種情況(參見BLOCK_HAVE_DATA
和BLOCK_HAVE_UNDO
)。我只是想了解什麼會導致這種情況發生?對等點能否在接收到塊本身之前接收到塊頭?我發現只有鏈中的前幾個塊似乎缺少數據;它們出現在索引中,但不在.dat
文件中。
比特幣核心可能只有某些區塊的區塊頭,而不是完整的區塊數據。這樣的塊頭將作為節點知道的塊進入鏈狀態和塊索引。但是,該節點沒有與該標頭對應的完整塊數據,因此
blk*.dat
文件中沒有相應的塊數據。這種情況發生在同步期間(因為比特幣核心將首先獲取塊頭,然後是塊),當有孤塊時,當有鏈分叉時。