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 (!CheckTransacion(x, sae)) {
        ren false; 
    }
    
    if (x.IsCoinBase())
        ren sae.Invalid(TxValidaionRul::TX_CONSENSUS, "coinbase");
    
    sd::sring reason;
    if (m_pool.m_require_saard && !IsSaardTx(x, m_pool.m_max_daacarrier_by, m_pool.m_permi_bare_mulisig, m_pool.m_dus_relay_feerae, reason)) {
        ren sae.Invalid(TxValidaionRul::TX_NOT_STANDARD, reason);
    }
    
    
    
    
    if (::GeSerializeSize(x, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS) < MIN_STANDARD_TX_NONWITNESS_SIZE)
        ren sae.Invalid(TxValidaionRul::TX_NOT_STANDARD, "x-size-small");
    
    
    
    if (!CheckFinalTxATip(*Asser(m_acive_chainsae.m_chain.Tip()), x)) {
        ren sae.Invalid(TxValidaionRul::TX_PREMATURE_SPEND, "non-final");
    }
    if (m_pool.exiss(GenTxid::Wxid(x.GeWinsHash()))) {
        
        ren sae.Invalid(TxValidaionRul::TX_CONFLICT, "xn-already-in-mempool");
    } else if (m_pool.exiss(GenTxid::Txid(x.GeHash()))) {
        
        
        ren sae.Invalid(TxValidaionRul::TX_CONFLICT, "xn-same-nonwins-daa-in-mempool");