Skip to content

test_access_list_gas_cost()

Documentation for tests/amsterdam/eip7981_increase_access_list_cost/test_eip_mainnet.py::test_access_list_gas_cost@9c2813ee.

Generate fixtures for these test cases for Amsterdam with:

fill -v tests/amsterdam/eip7981_increase_access_list_cost/test_eip_mainnet.py::test_access_list_gas_cost --fork Amsterdam

Test that transactions with access lists are charged correctly according to EIP-7981.

The test verifies that: 1. Access lists are charged for storage access (existing behavior) 2. Access lists are charged for their data footprint (new in EIP-7981) 3. Access list data contributes to the floor gas cost

Source code in tests/amsterdam/eip7981_increase_access_list_cost/test_eip_mainnet.py
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
@pytest.mark.with_all_tx_types(selector=lambda tx_type: tx_type >= 1)
@pytest.mark.parametrize(
    "access_list",
    [
        pytest.param(
            [AccessList(address=Address(1), storage_keys=[Hash(0)])],
            id="single_address_single_key",
        ),
        pytest.param(
            [
                AccessList(
                    address=Address(1),
                    storage_keys=[Hash(0), Hash(1), Hash(2)],
                )
            ],
            id="single_address_multiple_keys",
        ),
        pytest.param(
            [
                AccessList(address=Address(1), storage_keys=[Hash(0)]),
                AccessList(address=Address(2), storage_keys=[Hash(1)]),
            ],
            id="multiple_addresses",
        ),
        pytest.param(
            [
                AccessList(
                    address=Address(
                        0xDE0B295669A9FD93D5F28D9EC85E40F4CB697BAE
                    ),
                    storage_keys=[
                        Hash(
                            0x0000000000000000000000000000000000000000000000000000000000000003
                        ),
                        Hash(
                            0x0000000000000000000000000000000000000000000000000000000000000007
                        ),
                    ],
                )
            ],
            id="realistic_address_and_keys",
        ),
    ],
)
@pytest.mark.parametrize(
    "to",
    [
        pytest.param("eoa", id="to_eoa"),
    ],
    indirect=True,
)
def test_access_list_gas_cost(
    state_test: StateTestFiller,
    pre: Alloc,
    tx: Transaction,
) -> None:
    """
    Test that transactions with access lists are charged correctly
    according to EIP-7981.

    The test verifies that:
    1. Access lists are charged for storage access (existing behavior)
    2. Access lists are charged for their data footprint (new in EIP-7981)
    3. Access list data contributes to the floor gas cost
    """
    state_test(
        pre=pre,
        post={},
        tx=tx,
    )

Parametrized Test Cases

This test generates 16 parametrized test cases across 1 fork.