Skip to content

test_worst_calldataload()

Documentation for tests/zkevm/test_worst_compute.py::test_worst_calldataload@64f949d0.

Generate fixtures for these test cases for Prague with:

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

Test running a block with as many CALLDATALOAD as possible.

Source code in tests/zkevm/test_worst_compute.py
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
@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