Block

CDiskBlockIndex:未定義 NFile 和 NDataPos

  • June 28, 2019

是用於塊索引序列化的原始碼片段(在 leveldb 中找到)。

塊 478573 索引是(截至我節點的 leveldb)89af109c996d020000000020774f568005a00bf4ffed76b52e3a7e5e5140a5371834a00000000000000000009f5db27969fecc0ef71503279069b2df981ba545592a7b425f353b5060e77f3e7e13825935470118da70378e

在這種情況下,NFile 不是未定義(即 0)嗎?(以及 NDataPos 和 NUndoPos 也是)。

而對於塊 478574 它是:

89af109c996e1d801886399fbf8017828daf5502000020dcc139c241e6315463dd82c89fc288de35f004c87816430000000000000000000f7f9503fc2daab46c4103516c386b1c5b2390e082af76ba8c49fb522d5e5b148b96805935470118ae6ba061

產生 NFile = 953 並且是正確的。

為什麼沒有定義塊 478573?在這種情況下如何檢索 NFile 和 NDataPos?我知道每個節點的索引都不同,因為它取決於下載塊的順序。

很可能是這種情況,因為您沒有阻止。

塊被亂序下載,並且塊索引包含不在主鏈中的塊(“孤塊”)的條目。其中許多在下載之前顯然不在最佳鏈中,在這種情況下,比特幣核心根本不會下載它們。

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