Blockchain

“標題優先”如何影響 BLKxxxx.dat 結構?

  • August 29, 2018

假設一個全節點執行Bitcoincore v0.10(帶有txindex=1),新的“headers first”功能究竟如何影響區塊鏈數據的結構?(具體來說,blkxxxx.dat數據,雖然我可能不知道其他輔助資料結構的文件)。

版本的 README.mdblk指定 v0.10 區塊鏈數據沒有 v0.9.x 向後兼容性。

因為 0.10.0 版使用了標頭優先同步和並行塊下載(見下文),所以塊文件和數據庫不向後兼容舊版本的比特幣核心或其他軟體:

塊將無序儲存在磁碟上(實際上是按照接收順序),這使得它與某些工具或其他程序不兼容。因此,使用早期版本重新索引也將不再起作用。

那麼,0.10 版本的 blk 數據是如何被客戶端解析的呢?並且通過擴展,為什麼“標題優先”會改變結構,因為它似乎在邏輯上為 Tx 數據設置了“模板”?

NBitcoin 的 BlockStore測試,格式是一樣的。BLK 文件幾乎是原始塊(它有一個小的附加標題)

此文件中的任何儲存塊都有其所屬的網路及其大小,然後是塊數據。這些塊由 leveldb 數據庫通過它們的 (fileId, offset) 指向。

但是順序發生了變化,我自己利用這些塊在過去訂購的事實從比特幣文件夾建構頭鏈。這樣的程式碼現在會崩潰。(現在我直接連接到對等節點而不是依賴塊文件夾)

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