Skip to content

test_ext_calls_gas()

Documentation for tests/prague/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas@verkle@v0.0.6.

Generate fixtures for these test cases for Pragueeip7692 with:

Pragueeip7692 only:

fill -v tests/prague/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas --fork=PragueEIP7692 --evm-bin=/path/to/evm-tool-dev-version

For all forks up to and including Pragueeip7692:

fill -v tests/prague/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas --until=PragueEIP7692

Tests variations of EXT*CALL gas, both warm and cold, without and with mem expansions

Source code in tests/prague/eip7692_eof_v1/eip7069_extcall/test_gas.py
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
@pytest.mark.parametrize(
    ["opcode", "pre_setup", "cold_gas", "warm_gas", "new_account"],
    [
        pytest.param(
            Op.EXTCALL,
            Op.PUSH0,
            COLD_ACCOUNT_ACCESS_GAS,
            WARM_ACCOUNT_ACCESS_GAS,
            False,
            id="EXTCALL",
        ),
        pytest.param(
            Op.EXTCALL,
            Op.PUSH1(1),
            COLD_ACCOUNT_ACCESS_GAS + CALL_WITH_VALUE_GAS,
            WARM_ACCOUNT_ACCESS_GAS + CALL_WITH_VALUE_GAS,
            False,
            id="EXTCALL_with_value",
        ),
        pytest.param(
            Op.EXTDELEGATECALL,
            Op.NOOP,
            COLD_ACCOUNT_ACCESS_GAS,
            WARM_ACCOUNT_ACCESS_GAS,
            False,
            id="EXTDELEGATECALL",
        ),
        pytest.param(
            Op.EXTSTATICCALL,
            Op.NOOP,
            COLD_ACCOUNT_ACCESS_GAS,
            WARM_ACCOUNT_ACCESS_GAS,
            False,
            id="EXTSTATICCALL",
        ),
        pytest.param(
            Op.EXTCALL,
            Op.PUSH0,
            COLD_ACCOUNT_ACCESS_GAS,
            WARM_ACCOUNT_ACCESS_GAS,
            True,
            id="EXTCALL_new_acc",
        ),
        pytest.param(
            Op.EXTCALL,
            Op.PUSH1(1),
            COLD_ACCOUNT_ACCESS_GAS + ACCOUNT_CREATION_GAS + CALL_WITH_VALUE_GAS,
            WARM_ACCOUNT_ACCESS_GAS + ACCOUNT_CREATION_GAS + CALL_WITH_VALUE_GAS,
            True,
            id="EXTCALL_with_value_new_acc",
        ),
        pytest.param(
            Op.EXTDELEGATECALL,
            Op.NOOP,
            COLD_ACCOUNT_ACCESS_GAS,
            WARM_ACCOUNT_ACCESS_GAS,
            True,
            id="EXTDELEGATECALL_new_acc",
        ),
        pytest.param(
            Op.EXTSTATICCALL,
            Op.NOOP,
            COLD_ACCOUNT_ACCESS_GAS,
            WARM_ACCOUNT_ACCESS_GAS,
            True,
            id="EXTSTATICCALL_new_acc",
        ),
    ],
)
@pytest.mark.parametrize(
    "mem_expansion_bytes",
    [0, 1, 32, 33],
)
def test_ext_calls_gas(
    state_test: StateTestFiller,
    pre: Alloc,
    state_env: Environment,
    opcode: Op,
    pre_setup: Op,
    cold_gas: int,
    warm_gas: int,
    new_account: bool,
    mem_expansion_bytes: int,
):
    """Tests variations of EXT*CALL gas, both warm and cold, without and with mem expansions"""
    address_target = (
        pre.fund_eoa(0) if new_account else pre.deploy_contract(Container.Code(Op.STOP))
    )

    gas_test(
        state_test,
        state_env,
        pre,
        setup_code=pre_setup
        + Op.PUSH1(mem_expansion_bytes)
        + Op.PUSH0
        + Op.PUSH20(address_target),
        subject_code=opcode,
        tear_down_code=Op.STOP,
        cold_gas=cold_gas + cost_memory_bytes(mem_expansion_bytes, 0),
        warm_gas=warm_gas + cost_memory_bytes(mem_expansion_bytes, 0),
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Skipped Parameters

For more concise readability, the table below does not list the following parameter values: fork, blockchain_test, state_test, state_test_only, eof_test, eof_state_test.

Test ID mem_expansion_bytes opcode pre_setup cold_gas warm_gas new_account
mem_expansion_bytes_0-EXTCALL 0 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_0-EXTCALL_with_value 0 EXTCALL 11600 9100 False
mem_expansion_bytes_0-EXTDELEGATECALL 0 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_0-EXTSTATICCALL 0 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_0-EXTCALL_new_acc 0 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_0-EXTCALL_with_value_new_acc 0 EXTCALL 36600 34100 True
mem_expansion_bytes_0-EXTDELEGATECALL_new_acc 0 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_0-EXTSTATICCALL_new_acc 0 EXTSTATICCALL JUMPDEST 2600 100 True
mem_expansion_bytes_1-EXTCALL 1 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_1-EXTCALL_with_value 1 EXTCALL 11600 9100 False
mem_expansion_bytes_1-EXTDELEGATECALL 1 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_1-EXTSTATICCALL 1 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_1-EXTCALL_new_acc 1 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_1-EXTCALL_with_value_new_acc 1 EXTCALL 36600 34100 True
mem_expansion_bytes_1-EXTDELEGATECALL_new_acc 1 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_1-EXTSTATICCALL_new_acc 1 EXTSTATICCALL JUMPDEST 2600 100 True
mem_expansion_bytes_32-EXTCALL 32 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_32-EXTCALL_with_value 32 EXTCALL 11600 9100 False
mem_expansion_bytes_32-EXTDELEGATECALL 32 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_32-EXTSTATICCALL 32 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_32-EXTCALL_new_acc 32 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_32-EXTCALL_with_value_new_acc 32 EXTCALL 36600 34100 True
mem_expansion_bytes_32-EXTDELEGATECALL_new_acc 32 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_32-EXTSTATICCALL_new_acc 32 EXTSTATICCALL JUMPDEST 2600 100 True
mem_expansion_bytes_33-EXTCALL 33 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_33-EXTCALL_with_value 33 EXTCALL 11600 9100 False
mem_expansion_bytes_33-EXTDELEGATECALL 33 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_33-EXTSTATICCALL 33 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_33-EXTCALL_new_acc 33 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_33-EXTCALL_with_value_new_acc 33 EXTCALL 36600 34100 True
mem_expansion_bytes_33-EXTDELEGATECALL_new_acc 33 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_33-EXTSTATICCALL_new_acc 33 EXTSTATICCALL JUMPDEST 2600 100 True
mem_expansion_bytes_0-EXTCALL 0 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_0-EXTCALL_with_value 0 EXTCALL 11600 9100 False
mem_expansion_bytes_0-EXTDELEGATECALL 0 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_0-EXTSTATICCALL 0 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_0-EXTCALL_new_acc 0 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_0-EXTCALL_with_value_new_acc 0 EXTCALL 36600 34100 True
mem_expansion_bytes_0-EXTDELEGATECALL_new_acc 0 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_0-EXTSTATICCALL_new_acc 0 EXTSTATICCALL JUMPDEST 2600 100 True
mem_expansion_bytes_1-EXTCALL 1 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_1-EXTCALL_with_value 1 EXTCALL 11600 9100 False
mem_expansion_bytes_1-EXTDELEGATECALL 1 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_1-EXTSTATICCALL 1 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_1-EXTCALL_new_acc 1 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_1-EXTCALL_with_value_new_acc 1 EXTCALL 36600 34100 True
mem_expansion_bytes_1-EXTDELEGATECALL_new_acc 1 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_1-EXTSTATICCALL_new_acc 1 EXTSTATICCALL JUMPDEST 2600 100 True
mem_expansion_bytes_32-EXTCALL 32 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_32-EXTCALL_with_value 32 EXTCALL 11600 9100 False
mem_expansion_bytes_32-EXTDELEGATECALL 32 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_32-EXTSTATICCALL 32 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_32-EXTCALL_new_acc 32 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_32-EXTCALL_with_value_new_acc 32 EXTCALL 36600 34100 True
mem_expansion_bytes_32-EXTDELEGATECALL_new_acc 32 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_32-EXTSTATICCALL_new_acc 32 EXTSTATICCALL JUMPDEST 2600 100 True
mem_expansion_bytes_33-EXTCALL 33 EXTCALL PUSH0 2600 100 False
mem_expansion_bytes_33-EXTCALL_with_value 33 EXTCALL 11600 9100 False
mem_expansion_bytes_33-EXTDELEGATECALL 33 EXTDELEGATECALL JUMPDEST 2600 100 False
mem_expansion_bytes_33-EXTSTATICCALL 33 EXTSTATICCALL JUMPDEST 2600 100 False
mem_expansion_bytes_33-EXTCALL_new_acc 33 EXTCALL PUSH0 2600 100 True
mem_expansion_bytes_33-EXTCALL_with_value_new_acc 33 EXTCALL 36600 34100 True
mem_expansion_bytes_33-EXTDELEGATECALL_new_acc 33 EXTDELEGATECALL JUMPDEST 2600 100 True
mem_expansion_bytes_33-EXTSTATICCALL_new_acc 33 EXTSTATICCALL JUMPDEST 2600 100 True