Pruning
我可以在修剪模式下使用 blockfilterindex 嗎?
我在修剪模式下執行一個節點。我想啟用
blockfilterindex
. 我期望節點做的是:
- 從一開始就開始下載塊;
- 在通過塊時創建塊過濾器;
- 只保留最後 N MB 的儲存塊。
真正發生的是:
$ bitcoind -blockfilterindex -prune=550 Error: Prune mode is incompatible with -txindex.
我知道不下載所有塊就無法啟用塊過濾,但為什麼需要儲存所有塊?
區塊過濾器索引是與區塊下載和驗證非同步建構的。處理塊儲存和修剪的執行緒可能在建構塊過濾器索引的執行緒之前足夠多,以至於它在索引執行緒處理它們之前開始刪除塊。這會很糟糕。因此,對於初始塊過濾器索引實現,決定在啟用塊過濾器索引時簡單地禁止修剪。您可以閱讀PR 中的一些推理和討論。
理論上,可以允許使用塊過濾器索引進行修剪。然而,這樣做需要做更多的工作,至少對於初始實現而言,額外的程式碼是不值得的。PR 作者經常這樣做是為了保持 PR 足夠小以供審查。將來可能會添加此功能,因為它是我們應該如何處理錢包和 txindex 修剪的更普遍問題的一部分。