Blockchain
“標題優先”如何影響 BLKxxxx.dat 結構?
假設一個全節點執行Bitcoincore v0.10(帶有
txindex=1
),新的“headers first”功能究竟如何影響區塊鏈數據的結構?(具體來說,blkxxxx.dat
數據,雖然我可能不知道其他輔助資料結構的文件)。該版本的 README.md
blk
指定 v0.10 區塊鏈數據沒有 v0.9.x 向後兼容性。因為 0.10.0 版使用了標頭優先同步和並行塊下載(見下文),所以塊文件和數據庫不向後兼容舊版本的比特幣核心或其他軟體:
塊將無序儲存在磁碟上(實際上是按照接收順序),這使得它與某些工具或其他程序不兼容。因此,使用早期版本重新索引也將不再起作用。
那麼,0.10 版本的 blk 數據是如何被客戶端解析的呢?並且通過擴展,為什麼“標題優先”會改變結構,因為它似乎在邏輯上為 Tx 數據設置了“模板”?
用NBitcoin 的 BlockStore測試,格式是一樣的。BLK 文件幾乎是原始塊(它有一個小的附加標題)
此文件中的任何儲存塊都有其所屬的網路及其大小,然後是塊數據。這些塊由 leveldb 數據庫通過它們的 (fileId, offset) 指向。
但是順序發生了變化,我自己利用這些塊在過去訂購的事實從比特幣文件夾建構頭鏈。這樣的程式碼現在會崩潰。(現在我直接連接到對等節點而不是依賴塊文件夾)