Verification
什麼是“在級別 3 驗證最後 288 個塊”?
每次啟動時
bitcoind
,我都會在調試日誌中看到以下內容:Verifying last 288 blocks at level 3
上來。在這一點上,沒有新的區塊被下載,區塊鏈在我上次關閉比特幣時是 100% 最新的。在“驗證”這 288 個區塊之前,Bitcoind 不會做任何事情(直到這個階段過去,伺服器才會回答)。
- 如果關閉後沒有添加任何新內容,為什麼需要驗證最後一個塊?
- 此驗證是否會對任何文件進行任何更改?它是否將任何內容保存到塊/鏈狀態/數據庫目錄?
是為了驗證塊數據庫沒有被破壞或篡改。它不會以任何方式修改數據庫。
bitcoind -help-debug
顯示這些選項,未顯示在man bitcoind
or中bitcoind --help
:
-checkblocks=<n>
: 檢查最後的n
塊。預設為6
, 並0
表示檢查所有需要很長時間的內容。
-checklevel=<n>
:對每個要檢查的塊進行以下驗證,包括較低級別的驗證:(預設為3
)
0
: 從磁碟讀取沒有錯誤1
: 塊是有效的2
: 塊有有效的撤銷數據3
:尋找斷開的尖端塊4
: 嘗試重新連接塊由於這是一個 5 年前的問題,當時我猜它可能預設為更多塊,因為您提到了 288 個塊。
您可以降低這些值以使其完成啟動並更快地響應,但是如果上次關閉時出現問題、發生磁碟損壞或有人惡意更改文件,則您可能會面臨嚴重錯誤的風險。
我不確定是什麼原因造成的,但不久前,我遇到了一個錯誤,說“損壞:塊校驗和不匹配”,所以這個驗證確實提醒我有問題,讓我可以立即從備份中恢復。