def METHOD_NAME(state_test, fork, opcode, code_gas_measure):
    """
    Test the gas usage of opcodes affected by assuming a warm coinbase:
    - EXTCODESIZE
    - EXTCODECOPY
    - EXTCODEHASH
    - BALANCE
    - CALL
    - CALLCODE
    - DELEGATECALL
    - STATICCALL
    """
    env = Environment(
        coinbase="0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
        difficulty=0x20000,
        gas_limit=10000000000,
        number=1,
        timestamp=1000,
    )
    measure_address = to_address(0x100)
    pre = {
        TestAddress: Account(balance=1000000000000000000000),
        measure_address: Account(code=code_gas_measure, balance=1000000000000000000000),
    }
    if is_fork(fork, Shanghai):
        expected_gas = GAS_REQUIRED_CALL_WARM_ACCOUNT  # Warm account access cost after EIP-3651
    else:
        expected_gas = 2600  # Cold account access cost before EIP-3651
    post = {
        measure_address: Account(
            storage={
                0x00: expected_gas,
            }
        )
    }
    tx = Transaction(
        ty=0x0,
        chain_id=0x01,
        nonce=0,
        to=measure_address,
        gas_limit=100000000,
        gas_price=10,
    )
    state_test(
        env=env,
        pre=pre,
        post=post,
        txs=[tx],
        tag="opcode_" + opcode.lower(),
    )