Skip to content

test_sstore_nonzero_to_zero()

Documentation for tests/amsterdam/eip8037_state_creation_gas_cost_increase/test_state_gas_sstore.py::test_sstore_nonzero_to_zero@c74f1a67.

Generate fixtures for these test cases for Amsterdam with:

fill -v tests/amsterdam/eip8037_state_creation_gas_cost_increase/test_state_gas_sstore.py::test_sstore_nonzero_to_zero --fork Amsterdam

Test SSTORE nonzero-to-zero charges no state gas.

Clearing a storage slot (setting to zero) does not grow state and earns a regular gas refund (GAS_STORAGE_CLEAR_REFUND).

Source code in tests/amsterdam/eip8037_state_creation_gas_cost_increase/test_state_gas_sstore.py
 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
@pytest.mark.valid_from("EIP8037")
def test_sstore_nonzero_to_zero(
    state_test: StateTestFiller,
    pre: Alloc,
) -> None:
    """
    Test SSTORE nonzero-to-zero charges no state gas.

    Clearing a storage slot (setting to zero) does not grow state and
    earns a regular gas refund (GAS_STORAGE_CLEAR_REFUND).
    """
    storage = Storage()
    contract = pre.deploy_contract(
        code=Op.SSTORE(storage.store_next(0), 0),
        storage={0: 1},
    )

    tx = Transaction(
        to=contract,
        state_gas_reservoir=0,
        sender=pre.fund_eoa(),
    )

    post = {contract: Account(storage=storage)}
    state_test(pre=pre, post=post, tx=tx)

Parametrized Test Cases

This test generates 1 parametrized test case across 1 fork.