Bitcoin-Core

在什麼情況下,塊會出現在 Leveldb .ldb 索引中但在 .dat 文件中沒有數據?

  • February 27, 2018

在解析.bitcoin/blocks/index. 這也是比特幣核心原始碼中明顯說明的一種情況參見BLOCK_HAVE_DATABLOCK_HAVE_UNDO)。我只是想了解什麼會導致這種情況發生?對等點能否在接收到塊本身之前接收到塊頭?我發現只有鏈中的前幾個塊似乎缺少數據;它們出現在索引中,但不在.dat文件中。

比特幣核心可能只有某些區塊的區塊頭,而不是完整的區塊數據。這樣的塊頭將作為節點知道的塊進入鏈狀態和塊索引。但是,該節點沒有與該標頭對應的完整塊數據,因此blk*.dat文件中沒有相應的塊數據。

這種情況發生在同步期間(因為比特幣核心將首先獲取塊頭,然後是塊),當有孤塊時,當有鏈分叉時。

引用自:https://bitcoin.stackexchange.com/questions/71517