Bitcoin-Core
rev*.dat 文件中的塊順序是否與 blk*.dat 文件相同?
我了解 blk*.dat 文件按照從對等方獲取塊的順序保存塊。rev*.dat 文件的順序是否與 blk*.dat 文件的順序相同?
例如,blk00000.dat 文件中的第 400 個magicbyte 是否代表與 rev00000.dat 文件中的第 400 個 magicbyte 相同的塊?
不。
每當從網路接收到塊時,塊數據就會寫入(附加到)blk*.dat 文件(假設 PoW 和其他一些健全性檢查通過)。由於從多個對等點並行接收塊,它們在磁碟上的順序最終會變得混亂。
當一個塊得到完全驗證時,會寫入撤消數據。由於完全驗證需要首先驗證所有父塊,因此撤消記錄的順序往往更加單調。但是,也不能保證完全連續,因為重組可能會導致差異。如果接收到的塊永遠不會成為活動鏈的一部分,那麼即使存在塊數據,它也永遠不會有撤消記錄。
唯一的保證是塊數據和撤消數據儲存在匹配的文件中(例如,儲存在 blk00473.dat 中的塊將在 rev00473.dat 中具有其撤消數據)。