Skip to content

test_worst_calldataload()

Documentation for tests/benchmark/test_worst_compute.py::test_worst_calldataload@0f7c73a7.

Generate fixtures for these test cases for Prague with:

fill -v tests/benchmark/test_worst_compute.py::test_worst_calldataload --fork Prague

Test running a block with as many CALLDATALOAD as possible.

Source code in tests/benchmark/test_worst_compute.py
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
@pytest.mark.parametrize(
    "calldata",
    [
        pytest.param(b"", id="empty"),
        pytest.param(b"\x00", id="zero-loop"),
        pytest.param(b"\x00" * 31 + b"\x20", id="one-loop"),
    ],
)
def test_worst_calldataload(
    state_test: StateTestFiller,
    pre: Alloc,
    fork: Fork,
    calldata: bytes,
):
    """Test running a block with as many CALLDATALOAD as possible."""
    env = Environment()
    max_code_size = fork.max_code_size()

    code_prefix = Op.PUSH0 + Op.JUMPDEST
    code_suffix = Op.PUSH1(1) + Op.JUMP
    code_body_len = max_code_size - len(code_prefix) - len(code_suffix)
    code_loop_iter = Op.CALLDATALOAD
    code_body = code_loop_iter * (code_body_len // len(code_loop_iter))
    code = code_prefix + code_body + code_suffix
    assert len(code) <= max_code_size

    tx = Transaction(
        to=pre.deploy_contract(code=code),
        data=calldata,
        gas_limit=env.gas_limit,
        sender=pre.fund_eoa(),
    )

    state_test(
        env=env,
        pre=pre,
        post={},
        tx=tx,
    )

Parametrized Test Cases

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

Test ID (Abbreviated) calldata
...fork_Frontier-state_test-empty
...fork_Frontier-state_test-zero-loop 00
...fork_Frontier-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Frontier-blockchain_test_from_state_test-empty
...fork_Frontier-blockchain_test_from_state_test-zero-loop 00
...fork_Frontier-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Homestead-state_test-empty
...fork_Homestead-state_test-zero-loop 00
...fork_Homestead-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Homestead-blockchain_test_from_state_test-empty
...fork_Homestead-blockchain_test_from_state_test-zero-loop 00
...fork_Homestead-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Byzantium-state_test-empty
...fork_Byzantium-state_test-zero-loop 00
...fork_Byzantium-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Byzantium-blockchain_test_from_state_test-empty
...fork_Byzantium-blockchain_test_from_state_test-zero-loop 00
...fork_Byzantium-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Constantinople-state_test-empty
...fork_Constantinople-state_test-zero-loop 00
...fork_Constantinople-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Constantinople-blockchain_test_from_state_test-empty
...fork_Constantinople-blockchain_test_from_state_test-zero-loop 00
...fork_Constantinople-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_ConstantinopleFix-state_test-empty
...fork_ConstantinopleFix-state_test-zero-loop 00
...fork_ConstantinopleFix-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_ConstantinopleFix-blockchain_test_from_state_test-empty
...fork_ConstantinopleFix-blockchain_test_from_state_test-zero-loop 00
...fork_ConstantinopleFix-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Istanbul-state_test-empty
...fork_Istanbul-state_test-zero-loop 00
...fork_Istanbul-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Istanbul-blockchain_test_from_state_test-empty
...fork_Istanbul-blockchain_test_from_state_test-zero-loop 00
...fork_Istanbul-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Berlin-state_test-empty
...fork_Berlin-state_test-zero-loop 00
...fork_Berlin-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Berlin-blockchain_test_from_state_test-empty
...fork_Berlin-blockchain_test_from_state_test-zero-loop 00
...fork_Berlin-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_London-state_test-empty
...fork_London-state_test-zero-loop 00
...fork_London-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_London-blockchain_test_from_state_test-empty
...fork_London-blockchain_test_from_state_test-zero-loop 00
...fork_London-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Paris-state_test-empty
...fork_Paris-state_test-zero-loop 00
...fork_Paris-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Paris-blockchain_test_from_state_test-empty
...fork_Paris-blockchain_test_from_state_test-zero-loop 00
...fork_Paris-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Shanghai-state_test-empty
...fork_Shanghai-state_test-zero-loop 00
...fork_Shanghai-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Shanghai-blockchain_test_from_state_test-empty
...fork_Shanghai-blockchain_test_from_state_test-zero-loop 00
...fork_Shanghai-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Cancun-state_test-empty
...fork_Cancun-state_test-zero-loop 00
...fork_Cancun-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Cancun-blockchain_test_from_state_test-empty
...fork_Cancun-blockchain_test_from_state_test-zero-loop 00
...fork_Cancun-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Prague-state_test-empty
...fork_Prague-state_test-zero-loop 00
...fork_Prague-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Prague-blockchain_test_from_state_test-empty
...fork_Prague-blockchain_test_from_state_test-zero-loop 00
...fork_Prague-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Osaka-state_test-empty
...fork_Osaka-state_test-zero-loop 00
...fork_Osaka-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Osaka-blockchain_test_from_state_test-empty
...fork_Osaka-blockchain_test_from_state_test-zero-loop 00
...fork_Osaka-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020