Verification

什麼是“在級別 3 驗證最後 288 個塊”?

  • September 17, 2019

每次啟動時bitcoind,我都會在調試日誌中看到以下內容:

Verifying last 288 blocks at level 3

上來。在這一點上,沒有新的區塊被下載,區塊鏈在我上次關閉比特幣時是 100% 最新的。在“驗證”這 288 個區塊之前,Bitcoind 不會做任何事情(直到這個階段過去,伺服器才會回答)。

  • 如果關閉後沒有添加任何新內容,為什麼需要驗證最後一個塊?
  • 此驗證是否會對任何文件進行任何更改?它是否將任何內容保存到塊/鏈狀態/數據庫目錄?

是為了驗證塊數據庫沒有被破壞或篡改。它不會以任何方式修改數據庫。

bitcoind -help-debug顯示這些選項,未顯示在man bitcoindor中bitcoind --help

  • -checkblocks=<n>: 檢查最後的n塊。預設為6, 並0表示檢查所有需要很長時間的內容。

  • -checklevel=<n>:對每個要檢查的塊進行以下驗證,包括較低級別的驗證:(預設為3

    • 0: 從磁碟讀取沒有錯誤
    • 1: 塊是有效的
    • 2: 塊有有效的撤銷數據
    • 3:尋找斷開的尖端塊
    • 4: 嘗試重新連接塊

由於這是一個 5 年前的問題,當時我猜它可能預設為更多塊,因為您提到了 288 個塊。

您可以降低這些值以使其完成啟動並更快地響應,但是如果上次關閉時出現問題、發生磁碟損壞或有人惡意更改文件,則您可能會面臨嚴重錯誤的風險。

我不確定是什麼原因造成的,但不久前,我遇到了一個錯誤,說“損壞:塊校驗和不匹配”,所以這個驗證確實提醒我有問題,讓我可以立即從備份中恢復。

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