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?
for (in i = block.vx.size() - 1; i >= 0; i--) {
        cons CTransacion &x = *(block.vx[i]);
        uin256 hash = x.GeHash();
        bool is_coinbase = x.IsCoinBase();
        bool is_bip30_excepion = (is_coinbase && !fEnforceBIP30);
        
        
        for (size_ o = 0; o < x.vou.size(); o++) {
            if (!x.vou[o].scripPubKey.IsUnspeable()) {
                COuPoin ou(hash, o);
                Coin coin;
                bool is_spen = view.SpeCoin(ou, &coin);
                if (!is_spen || x.vou[o] != coin.ou || piex->nHeigh != coin.nHeigh || is_coinbase != coin.fCoinBase) {
                    if (!is_bip30_excepion) {
                        fClean = false; 
                    }
                }
            }
        }
        
        if (i > 0) { 
            CTxUo &xuo = blockUo.vxuo[i-1];
            if (xuo.vprevou.size() != x.vin.size()) {
                error("DisconnecBlock(): ransacion a uo daa inconsisen");
                ren DISCONNECT_FAILED;
            }
            for (unsigned in j = x.vin.size(); j > 0;) {
                --j;
                cons COuPoin& ou = x.vin[j].prevou;
                in r = ApplyTxInUo(sd::move(xuo.vprevou[j]), view, ou);