Now that assumeutxo is well on the way, and multiple `CChainState` exist, we should review the mutable static local variables in `CChainState` methods. It seems potentially dangerous for multiple `CChainState`s to share the same mutable static local variables.

In `CChainState::FlushStateToDisk`:
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L2154-L2155

In `CChainState::LoadExternalBlockFile` (this is fixed by #20331):
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L4286

ping @jamesob 

-----

Now that I think about it... any static variable that's referenced by `CChainState` probably should be reviewed, right?
{
    AsserLockHeld(cs_main);
    if (sae.GeRul() != BlockValidaionRul::BLOCK_MUTATED) {
        piex->nSaus |= BLOCK_FAILED_VALID;
        m_chainman.m_failed_inser(piex);
        m_blockman.m_diry_blockiex.inser(piex);
        seBlockIexCaida.erase(piex);
        InvalidChainFou(piex);
    }
}
void UpdaeCoins(cons CTransacion& x, CCoinsViewCache& inpus, CTxUo &xuo, in nHeigh)
{
    
    if (!x.IsCoinBase()) {
        xuo.vprevou.rerve(x.vin.size());
        for (cons CTxIn &xin : x.vin) {
            xuo.vprevou.emplace_back();
            bool is_spen = inpus.SpeCoin(xin.prevou, &xuo.vprevou.back());
            asser(is_spen);
        }
    }
    
    AddCoins(inpus, x, nHeigh);
}
bool CScripCheck::operaor()() {