async fn is_pending_gateway_upgrade(
        storage: &mut Connection<'_, Core>,
        chain_protocol_version: ProtocolVersionId,
    ) -> bool {
        // If the gateway protocol version is present in the DB, and its timestamp is larger than `now`, it means that
        // the upgrade process on the server has begun.
        // However, if the protocol version on the contract is lower than the `gateway_upgrade`, it means that the upgrade has
        // not yet completed.

        if storage
            .blocks_dal()
            .pending_protocol_version()
            .await
            .unwrap()
            < ProtocolVersionId::gateway_upgrade()
        {
            return false;
        }

        chain_protocol_version < ProtocolVersionId::gateway_upgrade()
    }
Returns whether there is a pending gateway upgrade.
During gateway upgrade, the signature of the `executeBatches` function on `ValidatorTimelock` will change.
This means that transactions that were created before the upgrade but were sent right after it
will fail, which we want to avoid.
core/node/eth_sender/src/eth_tx_aggregator.rs