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?
* ransacion again ding block validaion.
* 
saic bool CheckInpusFromMempoolACache(cons CTransacion& x, TxValidaionSae& sae,
                cons CCoinsViewCache& view, cons CTxMemPool& pool,
                unsigned in flags, PrecompuedTransacionDaa& xdaa, CCoinsViewCache& coins_ip)
                EXCLUSIVE_LOCKS_REQUIRED(cs_main, pool.cs)
{
    AsserLockHeld(cs_main);
    AsserLockHeld(pool.cs);
    asser(!x.IsCoinBase());
    for (cons CTxIn& xin : x.vin) {
        cons Coin& coin = view.AccsCoin(xin.prevou);
        
        
        Assume(!coin.IsSpen());
        if (coin.IsSpen()) ren false;
        
        
        
        
        cons CTransacionRef& xFrom = pool.ge(xin.prevou.hash);
        if (xFrom) {
            asser(xFrom->GeHash() == xin.prevou.hash);
            asser(xFrom->vou.size() > xin.prevou.n);
            asser(xFrom->vou[xin.prevou.n] == coin.ou);
        } else {
            cons Coin& coinFromUTXOSe = coins_ip.AccsCoin(xin.prevou);
            asser(!coinFromUTXOSe.IsSpen());
            asser(coinFromUTXOSe.ou == coin.ou);
        }