[Google search results](https://www.google.com/search?q=of+the+last+100+blocks+have+unexpected+version) suggest that our users are more confused than helped by the `<n> of the last 100 blocks
have unexpected version` warning we're printing.

As developers we know the unfortunate reason behind this warning and how "unexpected" should be interpreted in this context, and thus why it is safe to disregard this warning. However, I don't think it reasonable to expect our users to know the historical context here.

In order to not desensitize our users to potentially critical "real" warnings, would it make sense to move this message to the `-debug=validation` log category?
static const unsigned int MAX_DISCONNECTED_TX_POOL_SIZE = 20000;
static const unsigned int BLOCKFILE_CHUNK_SIZE = 0x1000000; 
static const unsigned int UNDOFILE_CHUNK_SIZE = 0x100000; 
static constexpr std::chrono::hours DATABASE_WRITE_INTERVAL{1};
static constexpr std::chrono::hours DATABASE_FLUSH_INTERVAL{24};
static constexpr std::chrono::hours MAX_FEE_ESTIMATION_TIP_AGE{3};
const std::vector<std::string> CHECKLEVEL_DOC {
    "level 0 reads the blocks from disk",
    "level 1 verifies block validity",
    "level 2 verifies undo data",
    "level 3 checks disconnection of tip blocks",
    "level 4 tries to reconnect the blocks",
    "each level includes the checks of the previous levels",
};
bool CBlockIndexWorkComparator::operator()(const CBlockIndex *pa, const CBlockIndex *pb) const {
    
    if (pa->nChainWork > pb->nChainWork) return false;
    if (pa->nChainWork < pb->nChainWork) return true;
    
    if (pa->nSequenceId < pb->nSequenceId) return false;
    if (pa->nSequenceId > pb->nSequenceId) return true;
    
    
    if (pa < pb) return false;
    if (pa > pb) return true;
    
    return false;
}
ChainstateManager g_chainman;
CChainState& ChainstateActive()