Synchronization
-blocknotify 是否在追趕期間觸發?
我的節點落後了,我注意到沒有觸發
-blocknoitfy
中指定的操作。bitcoin.conf
現在還可以,因為節點有很多事情要做,腳本無論如何也不會有任何好處。這是正確的行為嗎?什麼時候
blocknotify
開始再次觸發?我的經驗是,在幾個小時甚至一天的停機時間之後,它會在追趕期間為每個塊觸發(例如,它可能同時觸發十幾個觸發器)
是的,這是設計使然。
notify 動作在函式
BlockNotifyCallback
(init.cpp
) 中執行,您可以看到:static void BlockNotifyCallback(bool initialSync, const CBlockIndex *pBlockIndex) { if (initialSync || !pBlockIndex) return; // ... }
initialSync
參數來自IsInitialBlockDownload()
(invalidate.cpp
)的返回值。它會檢查幾件事以確定初始塊下載是否正在進行。這裡的操作可能是檢查最近的已知塊是否具有比目前系統時間早 24 小時以上的時間戳。因此,當您落後或少於 24 小時時,您似乎會開始收到通知。