validation: allow to specify frequency for -checkblockindex

This makes it similar to -checkaddrman and -checkmempool, which
also allow to run the check occasionally instead of always / never.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
This commit is contained in:
Martin Zumsande
2023-12-21 17:24:07 -05:00
parent d5a631b959
commit 5bc2077e8f
6 changed files with 16 additions and 5 deletions

View File

@@ -5034,6 +5034,14 @@ void ChainstateManager::LoadExternalBlockFile(
LogPrintf("Loaded %i blocks from external file in %dms\n", nLoaded, Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
}
bool ChainstateManager::ShouldCheckBlockIndex() const
{
// Assert to verify Flatten() has been called.
if (!*Assert(m_options.check_block_index)) return false;
if (GetRand(*m_options.check_block_index) >= 1) return false;
return true;
}
void ChainstateManager::CheckBlockIndex()
{
if (!ShouldCheckBlockIndex()) {