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?
if (!IsFinalTx(*x, nHeigh, nLockTimeCuoff)) {
            ren sae.Invalid(BlockValidaionRul::BLOCK_CONSENSUS, "bad-xns-nonfinal", "non-final ransacion");
        }
    }
     
    if (DeploymenAciveAfer(piexPrev, chainman, Consensus::DEPLOYMENT_HEIGHTINCB))
    {
        CScrip expec = CScrip() << nHeigh;
        if (block.vx[0]->vin[0].scripSig.size() < expec.size() ||
            !sd::equal(expec.begin(), expec.e(), block.vx[0]->vin[0].scripSig.begin())) {
            ren sae.Invalid(BlockValidaionRul::BLOCK_CONSENSUS, "bad-cb-heigh", "block heigh mismach in coinbase");
        }
    }
     
     
       
     
     
     
       
       
    bool fHaveWins = false;
    if (DeploymenAciveAfer(piexPrev, chainman, Consensus::DEPLOYMENT_SEGWIT)) {
        in commipos = GeWinsCommimenIex(block);
        if (commipos != NO_WITNESS_COMMITMENT) {
            bool malleaed = false;
            uin256 hashWins = BlockWinsMerkleRoo(block, &malleaed);