From d7dce664845d5c98913af0f82869cbca39d04714 Mon Sep 17 00:00:00 2001 From: Leo Lara Date: Tue, 12 May 2026 21:01:52 +0700 Subject: [PATCH 1/4] feat(forks): add Fork.oog_budget_lift helper for EIP-8037 OoG tests OoG-by-design ported_static tests are calibrated to land just below a cost boundary; on Amsterdam each fresh SSTORE-set and CREATE spills its state-gas portion back into regular gas when the per-tx reservoir is empty. Tests that expect "N SSTOREs and M CREATEs complete before OoG" need their gas budget lifted by N * sstore_state_gas + M * create_state_gas to land at the same intermediate state. `Fork.oog_budget_lift(sstores_before_oog=N, creates_before_oog=M)` composes the two existing state-gas helpers and returns 0 on pre-EIP-8037 forks (where both helpers are 0), so callers can apply it unconditionally without a fork guard. Unit-tested on Cancun (zero) and Amsterdam (cumulative spill). --- .../src/execution_testing/forks/base_fork.py | 28 +++++++++++++++ .../forks/tests/test_forks.py | 35 +++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/packages/testing/src/execution_testing/forks/base_fork.py b/packages/testing/src/execution_testing/forks/base_fork.py index 85924da54de..0ae8f5c2a3f 100644 --- a/packages/testing/src/execution_testing/forks/base_fork.py +++ b/packages/testing/src/execution_testing/forks/base_fork.py @@ -886,6 +886,34 @@ def create_state_gas(cls, *, code_size: int = 0) -> int: """Return total state gas for CREATE.""" pass + @classmethod + def oog_budget_lift( + cls, + *, + sstores_before_oog: int = 0, + creates_before_oog: int = 0, + deploy_code_size: int = 0, + ) -> int: + """ + Return how much an OoG-tuned regular-gas budget must lift on this + fork to preserve the same intermediate state. + + EIP-8037 splits each fresh SSTORE-set, CREATE, and deployed code + byte into a regular portion plus a state-gas portion; when the + per-tx state-gas reservoir is empty, the state-gas portion spills + back into regular gas. For tests calibrated to OoG mid-execution + after N SSTOREs, M CREATEs, and a deploy of K bytes complete, + Amsterdam needs the original budget plus the cumulative spill to + land at the same point. Pre-EIP-8037 forks return 0 (state-gas + helpers are 0), so callers can apply this unconditionally without + a fork guard. + """ + return ( + sstores_before_oog * cls.sstore_state_gas() + + creates_before_oog * cls.create_state_gas() + + cls.code_deposit_state_gas(code_size=deploy_code_size) + ) + @classmethod @abstractmethod def block_rlp_size_limit(cls) -> int | None: diff --git a/packages/testing/src/execution_testing/forks/tests/test_forks.py b/packages/testing/src/execution_testing/forks/tests/test_forks.py index a1a2d3d8e28..73b69267edb 100644 --- a/packages/testing/src/execution_testing/forks/tests/test_forks.py +++ b/packages/testing/src/execution_testing/forks/tests/test_forks.py @@ -734,6 +734,41 @@ def test_eips() -> None: # noqa: D103 assert Shanghai.is_eip_enabled(3855) +def test_oog_budget_lift() -> None: + """ + `Fork.oog_budget_lift` returns zero pre-EIP-8037 and the cumulative + SSTORE-set + CREATE + code-deposit state-gas spill on Amsterdam. + """ + # Pre-EIP-8037: state_gas helpers are 0, so any lift is 0. + assert Cancun.oog_budget_lift(sstores_before_oog=1) == 0 + assert Cancun.oog_budget_lift(creates_before_oog=1) == 0 + assert ( + Cancun.oog_budget_lift( + sstores_before_oog=3, creates_before_oog=2, deploy_code_size=64 + ) + == 0 + ) + # Amsterdam: lift composes the three state-gas helpers. + sstore = Amsterdam.sstore_state_gas() + create = Amsterdam.create_state_gas() + code_64 = Amsterdam.code_deposit_state_gas(code_size=64) + assert Amsterdam.oog_budget_lift() == 0 + assert ( + Amsterdam.oog_budget_lift(sstores_before_oog=1) == sstore + ) + assert ( + Amsterdam.oog_budget_lift(creates_before_oog=1) == create + ) + assert ( + Amsterdam.oog_budget_lift(deploy_code_size=64) == code_64 + ) + assert Amsterdam.oog_budget_lift( + sstores_before_oog=3, + creates_before_oog=2, + deploy_code_size=64, + ) == 3 * sstore + 2 * create + code_64 + + def test_fork_variant_ordering() -> None: """ Variants from `with_env_gas_limit` must compare consistently with From 9c68e08a52862eda04bd85e359a0b17b295ff8ad Mon Sep 17 00:00:00 2001 From: Leo Lara Date: Tue, 12 May 2026 21:10:55 +0700 Subject: [PATCH 2/4] fix(ported_static): Approach-1 fork-conditional OoG lift for stCreate*/stRevert*/stWallet* tests Eight tests share the OoG-by-design shape `tx_gas = [oog_path, success_path]` where the success_path budget is tuned to barely complete a single CREATE, a CREATE plus a few SSTOREs, or a deploy chain. On Amsterdam EIP-8037 splits NEW_ACCOUNT, fresh SSTORE-set, and code-deposit cost into a regular portion plus a state-gas portion; with an empty reservoir, the state-gas spills back into regular gas and breaks the success_path budget. Apply `Fork.oog_budget_lift` with the right (creates, sstores, deploy_code_size) counts to lift the budget on Amsterdam only. Pre- EIP-8037 forks return 0 from the helper, so the original budget is preserved. Files (skip-list entries cleared): - stCreate2/test_create2_oo_gafter_init_code.py (-g1) - stCreate2/test_create2_oo_gafter_init_code_returndata2.py (-g1) - stCreateTest/test_create_oo_gafter_init_code.py (-g1) - stCreateTest/test_create_oo_gafter_init_code_returndata2.py (-g1) - stRevertTest/test_revert_sub_call_storage_oog.py (-g1-v0) - stRevertTest/test_revert_sub_call_storage_oog2.py (-g1-v0) - stWalletTest/test_wallet_construction_oog.py (-g1) - stWalletTest/test_multi_owned_construction_not_enough_gas_partial.py (-g1) Removes 8 entries from amsterdam_skip_list.txt. --- tests/ported_static/amsterdam_skip_list.txt | 64 ++++++++----------- .../test_create2_oo_gafter_init_code.py | 5 +- ...create2_oo_gafter_init_code_returndata2.py | 10 ++- .../test_create_oo_gafter_init_code.py | 5 +- ..._create_oo_gafter_init_code_returndata2.py | 10 ++- .../test_revert_sub_call_storage_oog.py | 5 +- .../test_revert_sub_call_storage_oog2.py | 5 +- ...ned_construction_not_enough_gas_partial.py | 14 +++- .../test_wallet_construction_oog.py | 16 ++++- 9 files changed, 90 insertions(+), 44 deletions(-) diff --git a/tests/ported_static/amsterdam_skip_list.txt b/tests/ported_static/amsterdam_skip_list.txt index 230134e5f18..4f2cdcbe3c4 100644 --- a/tests/ported_static/amsterdam_skip_list.txt +++ b/tests/ported_static/amsterdam_skip_list.txt @@ -8,7 +8,7 @@ # Entries are substring-matched against each pytest nodeid (after # stripping the fixture-format suffix in conftest.py). # -# Total entries: 897 +# Total entries: 889 # stAttackTest (1) stAttackTest/test_crashing_transaction.py::test_crashing_transaction[fork_Amsterdam] @@ -19,7 +19,7 @@ stBadOpcode/test_measure_gas.py::test_measure_gas[fork_Amsterdam-CREATE] stBadOpcode/test_operation_diff_gas.py::test_operation_diff_gas[fork_Amsterdam-CREATE2] stBadOpcode/test_operation_diff_gas.py::test_operation_diff_gas[fork_Amsterdam-CREATE] -# stCallCodes (17) +# stCallCodes (0) # stCallCreateCallCodeTest (12) stCallCreateCallCodeTest/test_call1024_oog.py::test_call1024_oog[fork_Amsterdam--g0] @@ -35,18 +35,16 @@ stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py: stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py::test_create_name_registrator_per_txs_not_enough_gas[fork_Amsterdam--g1] stCallCreateCallCodeTest/test_create_name_registrator_pre_store1_not_enough_gas.py::test_create_name_registrator_pre_store1_not_enough_gas[fork_Amsterdam] -# stCallDelegateCodesCallCodeHomestead (11) +# stCallDelegateCodesCallCodeHomestead (0) -# stCallDelegateCodesHomestead (10) +# stCallDelegateCodesHomestead (0) # stCodeSizeLimit (2) stCodeSizeLimit/test_create2_code_size_limit.py::test_create2_code_size_limit[fork_Amsterdam-valid] stCodeSizeLimit/test_create_code_size_limit.py::test_create_code_size_limit[fork_Amsterdam-valid] -# stCreate2 (23) +# stCreate2 (13) stCreate2/test_create2_first_byte_loop.py::test_create2_first_byte_loop[fork_Amsterdam-firstHalf] -stCreate2/test_create2_oo_gafter_init_code.py::test_create2_oo_gafter_init_code[fork_Amsterdam--g1] -stCreate2/test_create2_oo_gafter_init_code_returndata2.py::test_create2_oo_gafter_init_code_returndata2[fork_Amsterdam--g1] stCreate2/test_create2_oo_gafter_init_code_revert2.py::test_create2_oo_gafter_init_code_revert2[fork_Amsterdam] stCreate2/test_create_message_reverted.py::test_create_message_reverted[fork_Amsterdam--g1] stCreate2/test_create_message_reverted_oog_in_init2.py::test_create_message_reverted_oog_in_init2[fork_Amsterdam--g0] @@ -60,7 +58,7 @@ stCreate2/test_revert_depth_create_address_collision.py::test_revert_depth_creat stCreate2/test_revert_depth_create_address_collision_berlin.py::test_revert_depth_create_address_collision_berlin[fork_Amsterdam-d1-g1-v0] stCreate2/test_revert_depth_create_address_collision_berlin.py::test_revert_depth_create_address_collision_berlin[fork_Amsterdam-d1-g1-v1] -# stCreateTest (47) +# stCreateTest (40) stCreateTest/test_create_address_warm_after_fail.py::test_create_address_warm_after_fail[fork_Amsterdam-create-0xef-v1] stCreateTest/test_create_address_warm_after_fail.py::test_create_address_warm_after_fail[fork_Amsterdam-create-code-too-big-v1] stCreateTest/test_create_address_warm_after_fail.py::test_create_address_warm_after_fail[fork_Amsterdam-create-contructor-revert-v1] @@ -93,8 +91,6 @@ stCreateTest/test_create_empty_contract_with_balance.py::test_create_empty_contr stCreateTest/test_create_empty_contract_with_storage.py::test_create_empty_contract_with_storage[fork_Amsterdam] stCreateTest/test_create_empty_contract_with_storage_and_call_it_0wei.py::test_create_empty_contract_with_storage_and_call_it_0wei[fork_Amsterdam] stCreateTest/test_create_empty_contract_with_storage_and_call_it_1wei.py::test_create_empty_contract_with_storage_and_call_it_1wei[fork_Amsterdam] -stCreateTest/test_create_oo_gafter_init_code.py::test_create_oo_gafter_init_code[fork_Amsterdam--g1] -stCreateTest/test_create_oo_gafter_init_code_returndata2.py::test_create_oo_gafter_init_code_returndata2[fork_Amsterdam--g1] stCreateTest/test_create_oo_gafter_init_code_returndata_size.py::test_create_oo_gafter_init_code_returndata_size[fork_Amsterdam] stCreateTest/test_create_oo_gafter_init_code_revert2.py::test_create_oo_gafter_init_code_revert2[fork_Amsterdam-d0] stCreateTest/test_transaction_collision_to_empty2.py::test_transaction_collision_to_empty2[fork_Amsterdam--g1-v0] @@ -154,7 +150,7 @@ stEIP1559/test_sender_balance.py::test_sender_balance[fork_Amsterdam] # stEIP158Specific (1) stEIP158Specific/test_exp_empty.py::test_exp_empty[fork_Amsterdam] -# stEIP2930 (41) +# stEIP2930 (0) # stEIP3855_push0 (2) stEIP3855_push0/test_push0.py::test_push0[fork_Amsterdam-push0_upd_storage_sc] @@ -235,7 +231,7 @@ stNonZeroCallsTest/test_non_zero_value_delegatecall_to_one_storage_key_paris.py: # stPreCompiledContracts (0) -# stPreCompiledContracts2 (7) +# stPreCompiledContracts2 (4) stPreCompiledContracts2/test_ecrecover_short_buff.py::test_ecrecover_short_buff[fork_Amsterdam] stPreCompiledContracts2/test_modexp_0_0_0_22000.py::test_modexp_0_0_0_22000[fork_Amsterdam--g0] stPreCompiledContracts2/test_modexp_0_0_0_25000.py::test_modexp_0_0_0_25000[fork_Amsterdam--g0] @@ -253,7 +249,7 @@ stRefundTest/test_refund_suicide50procent_cap.py::test_refund_suicide50procent_c stRefundTest/test_refund_suicide50procent_cap.py::test_refund_suicide50procent_cap[fork_Amsterdam-d1] stRefundTest/test_refund_tx_to_suicide.py::test_refund_tx_to_suicide[fork_Amsterdam] -# stRevertTest (7) +# stRevertTest (5) stRevertTest/test_revert_depth2.py::test_revert_depth2[fork_Amsterdam--g1] stRevertTest/test_revert_depth_create_address_collision.py::test_revert_depth_create_address_collision[fork_Amsterdam-d1-g1-v0] stRevertTest/test_revert_depth_create_address_collision.py::test_revert_depth_create_address_collision[fork_Amsterdam-d1-g1-v1] @@ -353,10 +349,8 @@ stTransactionTest/test_internal_call_hitting_gas_limit_success.py::test_internal stTransactionTest/test_store_gas_on_create.py::test_store_gas_on_create[fork_Amsterdam] stTransactionTest/test_suicides_and_internal_call_suicides_success.py::test_suicides_and_internal_call_suicides_success[fork_Amsterdam-d1] -# stWalletTest (4) +# stWalletTest (2) stWalletTest/test_day_limit_construction_partial.py::test_day_limit_construction_partial[fork_Amsterdam] -stWalletTest/test_multi_owned_construction_not_enough_gas_partial.py::test_multi_owned_construction_not_enough_gas_partial[fork_Amsterdam--g1] -stWalletTest/test_wallet_construction_oog.py::test_wallet_construction_oog[fork_Amsterdam--g1] stWalletTest/test_wallet_construction_partial.py::test_wallet_construction_partial[fork_Amsterdam] # stZeroKnowledge (19) @@ -393,7 +387,7 @@ stCallCodes/test_callcodecall_10_suicide_end.py::test_callcodecall_10_suicide_en stCallCodes/test_callcodecallcall_100_suicide_end.py::test_callcodecallcall_100_suicide_end[fork_Amsterdam] stCallCodes/test_callcodecallcodecall_110_suicide_end.py::test_callcodecallcodecall_110_suicide_end[fork_Amsterdam] -# stCallCreateCallCodeTest (14) +# stCallCreateCallCodeTest (2) stCallCreateCallCodeTest/test_create_fail_balance_too_low.py::test_create_fail_balance_too_low[fork_Amsterdam--v1] stCallCreateCallCodeTest/test_create_init_fail_undefined_instruction.py::test_create_init_fail_undefined_instruction[fork_Amsterdam] @@ -459,7 +453,7 @@ stDelegatecallTestHomestead/test_deleagate_call_after_value_transfer.py::test_de stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_existing_contract.py::test_delegatecall_in_initcode_to_existing_contract[fork_Amsterdam] stDelegatecallTestHomestead/test_delegatecode_dynamic_code.py::test_delegatecode_dynamic_code[fork_Amsterdam] -# stEIP2930 (4) +# stEIP2930 (0) # stEIP3651_warmcoinbase (12) stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas.py::test_coinbase_warm_account_call_gas[fork_Amsterdam-d0] @@ -475,7 +469,7 @@ stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas_fail.py::test_coinbas stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas_fail.py::test_coinbase_warm_account_call_gas_fail[fork_Amsterdam-d2] stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas_fail.py::test_coinbase_warm_account_call_gas_fail[fork_Amsterdam-d3] -# stEIP5656_MCOPY (55) +# stEIP5656_MCOPY (32) stEIP5656_MCOPY/test_mcopy_copy_cost.py::test_mcopy_copy_cost[fork_Amsterdam-src0_size0-g0] stEIP5656_MCOPY/test_mcopy_copy_cost.py::test_mcopy_copy_cost[fork_Amsterdam-src0_size1-g0] stEIP5656_MCOPY/test_mcopy_copy_cost.py::test_mcopy_copy_cost[fork_Amsterdam-src0_size31-g0] @@ -509,7 +503,7 @@ stEIP5656_MCOPY/test_mcopy_copy_cost.py::test_mcopy_copy_cost[fork_Amsterdam-src stEIP5656_MCOPY/test_mcopy_copy_cost.py::test_mcopy_copy_cost[fork_Amsterdam-src32_size44768-g0] stEIP5656_MCOPY/test_mcopy_copy_cost.py::test_mcopy_copy_cost[fork_Amsterdam-src32_size44769-g0] -# stMemoryTest (27) +# stMemoryTest (25) stMemoryTest/test_call_data_copy_offset.py::test_call_data_copy_offset[fork_Amsterdam] stMemoryTest/test_calldatacopy_dejavu2.py::test_calldatacopy_dejavu2[fork_Amsterdam] stMemoryTest/test_code_copy_offset.py::test_code_copy_offset[fork_Amsterdam] @@ -536,7 +530,7 @@ stMemoryTest/test_mem64kb_single_byte_plus_31.py::test_mem64kb_single_byte_plus_ stMemoryTest/test_mem64kb_single_byte_plus_32.py::test_mem64kb_single_byte_plus_32[fork_Amsterdam] stMemoryTest/test_mem64kb_single_byte_plus_33.py::test_mem64kb_single_byte_plus_33[fork_Amsterdam] -# stPreCompiledContracts2 (9) +# stPreCompiledContracts2 (4) stPreCompiledContracts2/test_modexp_0_0_0_20500.py::test_modexp_0_0_0_20500[fork_Amsterdam--g1] stPreCompiledContracts2/test_modexp_0_0_0_22000.py::test_modexp_0_0_0_22000[fork_Amsterdam--g1] stPreCompiledContracts2/test_modexp_0_0_0_25000.py::test_modexp_0_0_0_25000[fork_Amsterdam--g1] @@ -819,7 +813,7 @@ stRandom2/test_random_statetest641.py::test_random_statetest641[fork_Amsterdam] stReturnDataTest/test_returndatasize_after_successful_callcode.py::test_returndatasize_after_successful_callcode[fork_Amsterdam] stReturnDataTest/test_subcall_return_more_then_expected.py::test_subcall_return_more_then_expected[fork_Amsterdam] -# stRevertTest (27) +# stRevertTest (25) stRevertTest/test_loop_calls_depth_then_revert.py::test_loop_calls_depth_then_revert[fork_Amsterdam] stRevertTest/test_loop_calls_then_revert.py::test_loop_calls_then_revert[fork_Amsterdam] stRevertTest/test_loop_delegate_calls_depth_then_revert.py::test_loop_delegate_calls_depth_then_revert[fork_Amsterdam] @@ -845,15 +839,13 @@ stRevertTest/test_revert_opcode_multiple_sub_calls.py::test_revert_opcode_multip stRevertTest/test_revert_opcode_multiple_sub_calls.py::test_revert_opcode_multiple_sub_calls[fork_Amsterdam-d3-g2-v0] stRevertTest/test_revert_opcode_multiple_sub_calls.py::test_revert_opcode_multiple_sub_calls[fork_Amsterdam-d3-g2-v1] stRevertTest/test_revert_opcode_return.py::test_revert_opcode_return[fork_Amsterdam-d0-g1] -stRevertTest/test_revert_sub_call_storage_oog.py::test_revert_sub_call_storage_oog[fork_Amsterdam--g1-v0] -stRevertTest/test_revert_sub_call_storage_oog2.py::test_revert_sub_call_storage_oog2[fork_Amsterdam--g1-v0] # stSelfBalance (3) stSelfBalance/test_self_balance.py::test_self_balance[fork_Amsterdam] stSelfBalance/test_self_balance_equals_balance.py::test_self_balance_equals_balance[fork_Amsterdam] stSelfBalance/test_self_balance_gas_cost.py::test_self_balance_gas_cost[fork_Amsterdam] -# stSolidityTest (5) +# stSolidityTest (4) stSolidityTest/test_test_contract_interaction.py::test_test_contract_interaction[fork_Amsterdam] stSolidityTest/test_test_contract_suicide.py::test_test_contract_suicide[fork_Amsterdam] stSolidityTest/test_test_overflow.py::test_test_overflow[fork_Amsterdam] @@ -939,7 +931,7 @@ vmArithmeticTest/test_exp_power256_of256.py::test_exp_power256_of256[fork_Amster # CPSB recalibration work. # ----------------------------------------------------------------------------- -# stCallCodes (14) +# stCallCodes (6) stCallCodes/test_callcallcallcode_001_suicide_end.py::test_callcallcallcode_001_suicide_end[fork_Amsterdam] stCallCodes/test_callcode_in_initcode_to_empty_contract.py::test_callcode_in_initcode_to_empty_contract[fork_Amsterdam-d0] stCallCodes/test_callcode_in_initcode_to_empty_contract.py::test_callcode_in_initcode_to_empty_contract[fork_Amsterdam-d1] @@ -947,7 +939,7 @@ stCallCodes/test_callcode_in_initcode_to_existing_contract_with_value_transfer.p stCallCodes/test_callcodecallcallcode_101_suicide_end.py::test_callcodecallcallcode_101_suicide_end[fork_Amsterdam] stCallCodes/test_callcodecallcodecallcode_111_suicide_end.py::test_callcodecallcodecallcode_111_suicide_end[fork_Amsterdam] -# stCreate2 (51) +# stCreate2 (18) stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_CallCode_Refund_NoOoG] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_DelegateCall_Refund_NoOoG] stCreate2/test_create2_suicide.py::test_create2_suicide[fork_Amsterdam-d3] @@ -967,35 +959,35 @@ stCreate2/test_create2collision_selfdestructed_oog.py::test_create2collision_sel stCreate2/test_create2collision_selfdestructed_oog.py::test_create2collision_selfdestructed_oog[fork_Amsterdam-d2] stCreate2/test_create2no_cash.py::test_create2no_cash[fork_Amsterdam-d1] -# stCreateTest (57) +# stCreateTest (4) stCreateTest/test_create_collision_results.py::test_create_collision_results[fork_Amsterdam-d0] stCreateTest/test_create_collision_results.py::test_create_collision_results[fork_Amsterdam-d1] stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_NoOoG2] stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_NoOoG3] -# stDelegatecallTestHomestead (7) +# stDelegatecallTestHomestead (1) stDelegatecallTestHomestead/test_delegatecall_emptycontract.py::test_delegatecall_emptycontract[fork_Amsterdam] # stEIP2930 (0) -# stEIP3855_push0 (7) +# stEIP3855_push0 (5) stEIP3855_push0/test_push0.py::test_push0[fork_Amsterdam-1024_push0] stEIP3855_push0/test_push0.py::test_push0[fork_Amsterdam-jumpdest] stEIP3855_push0/test_push0.py::test_push0[fork_Amsterdam-single_push0] stEIP3855_push0/test_push0_gas2.py::test_push0_gas2[fork_Amsterdam-use_push0] stEIP3855_push0/test_push0_gas2.py::test_push0_gas2[fork_Amsterdam-use_push1_00] -# stPreCompiledContracts2 (13) +# stPreCompiledContracts2 (5) stPreCompiledContracts2/test_call_sha256_1_nonzero_value.py::test_call_sha256_1_nonzero_value[fork_Amsterdam] stPreCompiledContracts2/test_modexp_0_0_0_20500.py::test_modexp_0_0_0_20500[fork_Amsterdam--g2] stPreCompiledContracts2/test_modexp_0_0_0_22000.py::test_modexp_0_0_0_22000[fork_Amsterdam--g2] stPreCompiledContracts2/test_modexp_0_0_0_25000.py::test_modexp_0_0_0_25000[fork_Amsterdam--g2] stPreCompiledContracts2/test_modexp_0_0_0_35000.py::test_modexp_0_0_0_35000[fork_Amsterdam--g2] -# stRevertTest (33) +# stRevertTest (1) stRevertTest/test_revert_in_create_in_init_paris.py::test_revert_in_create_in_init_paris[fork_Amsterdam] -# stStaticCall (81) +# stStaticCall (31) stStaticCall/test_static_call_ask_more_gas_on_depth2_then_transaction_has.py::test_static_call_ask_more_gas_on_depth2_then_transaction_has[fork_Amsterdam-d0] stStaticCall/test_static_call_sha256_1_nonzero_value.py::test_static_call_sha256_1_nonzero_value[fork_Amsterdam] stStaticCall/test_static_call_value_inherit_from_call.py::test_static_call_value_inherit_from_call[fork_Amsterdam] @@ -1028,11 +1020,11 @@ stStaticCall/test_static_check_opcodes5.py::test_static_check_opcodes5[fork_Amst stStaticCall/test_static_check_opcodes5.py::test_static_check_opcodes5[fork_Amsterdam-d4-g1-v1] stStaticCall/test_static_create_empty_contract_and_call_it_0wei.py::test_static_create_empty_contract_and_call_it_0wei[fork_Amsterdam] -# stStaticFlagEnabled (6) +# stStaticFlagEnabled (2) stStaticFlagEnabled/test_callcode_to_precompile_from_called_contract.py::test_callcode_to_precompile_from_called_contract[fork_Amsterdam] stStaticFlagEnabled/test_callcode_to_precompile_from_transaction.py::test_callcode_to_precompile_from_transaction[fork_Amsterdam] -# stSystemOperationsTest (14) +# stSystemOperationsTest (6) stSystemOperationsTest/test_call_to_name_registrator0.py::test_call_to_name_registrator0[fork_Amsterdam] stSystemOperationsTest/test_call_to_name_registrator_address_too_big_right.py::test_call_to_name_registrator_address_too_big_right[fork_Amsterdam] stSystemOperationsTest/test_create_name_registrator.py::test_create_name_registrator[fork_Amsterdam] @@ -1040,7 +1032,7 @@ stSystemOperationsTest/test_create_name_registrator_zero_mem.py::test_create_nam stSystemOperationsTest/test_create_name_registrator_zero_mem2.py::test_create_name_registrator_zero_mem2[fork_Amsterdam] stSystemOperationsTest/test_create_name_registrator_zero_mem_expansion.py::test_create_name_registrator_zero_mem_expansion[fork_Amsterdam] -# stTransactionTest (21) +# stTransactionTest (17) stTransactionTest/test_no_src_account_create.py::test_no_src_account_create[fork_Amsterdam-d0-g1-v0] stTransactionTest/test_no_src_account_create.py::test_no_src_account_create[fork_Amsterdam-d0-g1-v1] stTransactionTest/test_no_src_account_create.py::test_no_src_account_create[fork_Amsterdam-d1-g1-v0] diff --git a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code.py b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code.py index 2818e63a728..7fe9d79af50 100644 --- a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code.py +++ b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code.py @@ -3,6 +3,9 @@ Ported from: state_tests/stCreate2/Create2OOGafterInitCodeFiller.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned to barely +succeed CREATE2 on Cancun; on Amsterdam EIP-8037 the NEW_ACCOUNT +state-gas spills, so lift the budget by Fork.oog_budget_lift. """ import pytest @@ -110,7 +113,7 @@ def test_create2_oo_gafter_init_code( tx_data = [ Bytes(""), ] - tx_gas = [54000, 55000] + tx_gas = [54000, 55000 + fork.oog_budget_lift(creates_before_oog=1)] tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata2.py b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata2.py index bec591d53e3..b85e078eaf9 100644 --- a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata2.py +++ b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata2.py @@ -3,6 +3,10 @@ Ported from: state_tests/stCreate2/Create2OOGafterInitCodeReturndata2Filler.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned to barely +finish CREATE2 + two post-deploy SSTOREs on Cancun; on Amsterdam the +NEW_ACCOUNT and SSTORE-set state-gas spills, so lift the budget by +Fork.oog_budget_lift. """ import pytest @@ -117,7 +121,11 @@ def test_create2_oo_gafter_init_code_returndata2( tx_data = [ Bytes(""), ] - tx_gas = [54000, 95000] + tx_gas = [ + 54000, + 95000 + + fork.oog_budget_lift(creates_before_oog=1, sstores_before_oog=2), + ] tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code.py b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code.py index 8d4f8908661..e60c2ebc67f 100644 --- a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code.py +++ b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code.py @@ -3,6 +3,9 @@ Ported from: state_tests/stCreateTest/CreateOOGafterInitCodeFiller.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned to barely +succeed CREATE on Cancun; on Amsterdam EIP-8037 the NEW_ACCOUNT +state-gas spills, so lift the budget by Fork.oog_budget_lift. """ import pytest @@ -106,7 +109,7 @@ def test_create_oo_gafter_init_code( tx_data = [ Bytes(""), ] - tx_gas = [54000, 55000] + tx_gas = [54000, 55000 + fork.oog_budget_lift(creates_before_oog=1)] tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata2.py b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata2.py index aa428a56fc3..8b4ef73a768 100644 --- a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata2.py +++ b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata2.py @@ -3,6 +3,10 @@ Ported from: state_tests/stCreateTest/CreateOOGafterInitCodeReturndata2Filler.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned to barely +finish CREATE + two post-deploy SSTOREs on Cancun; on Amsterdam the +NEW_ACCOUNT and SSTORE-set state-gas spills, so lift the budget by +Fork.oog_budget_lift. """ import pytest @@ -116,7 +120,11 @@ def test_create_oo_gafter_init_code_returndata2( tx_data = [ Bytes(""), ] - tx_gas = [54000, 95000] + tx_gas = [ + 54000, + 95000 + + fork.oog_budget_lift(creates_before_oog=1, sstores_before_oog=2), + ] tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog.py b/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog.py index df976b6a9b1..9ba23f0660e 100644 --- a/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog.py +++ b/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog.py @@ -3,6 +3,9 @@ Ported from: state_tests/stRevertTest/RevertSubCallStorageOOGFiller.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned to barely +fit 3 fresh SSTOREs on Cancun; on Amsterdam each fresh slot spills +state-gas, so lift the budget by Fork.oog_budget_lift. """ import pytest @@ -115,7 +118,7 @@ def test_revert_sub_call_storage_oog( tx_data = [ Bytes("c0406226"), ] - tx_gas = [81000, 181000] + tx_gas = [81000, 181000 + fork.oog_budget_lift(sstores_before_oog=3)] tx_value = [0, 1] tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog2.py b/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog2.py index 1a11aec7dd8..dd3958fe322 100644 --- a/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog2.py +++ b/tests/ported_static/stRevertTest/test_revert_sub_call_storage_oog2.py @@ -3,6 +3,9 @@ Ported from: state_tests/stRevertTest/RevertSubCallStorageOOG2Filler.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned to barely +fit 2 fresh SSTOREs on Cancun; on Amsterdam each fresh slot spills +state-gas, so lift the budget by Fork.oog_budget_lift. """ import pytest @@ -113,7 +116,7 @@ def test_revert_sub_call_storage_oog2( tx_data = [ Bytes("c0406226"), ] - tx_gas = [61500, 181000] + tx_gas = [61500, 181000 + fork.oog_budget_lift(sstores_before_oog=2)] tx_value = [0, 1] tx = Transaction( diff --git a/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas_partial.py b/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas_partial.py index f04a21de804..52ccc3ac3f3 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas_partial.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas_partial.py @@ -3,6 +3,10 @@ Ported from: state_tests/stWalletTest/multiOwnedConstructionNotEnoughGasPartialFiller.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned for the +multi-owned-wallet construction success path on Cancun; on Amsterdam +the NEW_ACCOUNT, 3 init-code SSTOREs, and 2314-byte code deposit +spill state-gas, so lift the budget by Fork.oog_budget_lift. """ import pytest @@ -98,7 +102,15 @@ def test_multi_owned_construction_not_enough_gas_partial( "606060409081526001600081815581805533600160a060020a0316600381905581526101026020529182205561090a90819061003b90396000f300606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe" # noqa: E501 ), ] - tx_gas = [601249, 751249] + tx_gas = [ + 601249, + 751249 + + fork.oog_budget_lift( + creates_before_oog=1, + sstores_before_oog=3, + deploy_code_size=2314, + ), + ] tx_value = [100] tx = Transaction( diff --git a/tests/ported_static/stWalletTest/test_wallet_construction_oog.py b/tests/ported_static/stWalletTest/test_wallet_construction_oog.py index 36d76b85891..851f26cb823 100644 --- a/tests/ported_static/stWalletTest/test_wallet_construction_oog.py +++ b/tests/ported_static/stWalletTest/test_wallet_construction_oog.py @@ -3,6 +3,10 @@ Ported from: state_tests/stWalletTest/walletConstructionOOGFiller.json +@manually-enhanced: Do not overwrite. tx_gas[1] is tuned for the +contract-creation success path on Cancun; on Amsterdam the +NEW_ACCOUNT plus the 4 fresh storage slots in the deployed wallet +spill state-gas, so lift the budget by Fork.oog_budget_lift. """ import pytest @@ -113,7 +117,17 @@ def test_wallet_construction_oog( "6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe" # noqa: E501 ), ] - tx_gas = [427222, 1225022] + # Deployed wallet code length (matches the bytecode in expect_entries_). + _deployed_code_len = 3989 + tx_gas = [ + 427222, + 1225022 + + fork.oog_budget_lift( + creates_before_oog=1, + sstores_before_oog=4, + deploy_code_size=_deployed_code_len, + ), + ] tx_value = [100] tx = Transaction( From 1d74c314d5b87d9e55d6ce46c508c822e01607c5 Mon Sep 17 00:00:00 2001 From: Leo Lara Date: Tue, 12 May 2026 21:15:55 +0700 Subject: [PATCH 3/4] chore(ported_static): remove stale Amsterdam skip entries for stSStoreTest 16-pair family 22 stSStoreTest files (`sstore_0to*`, `sstore_xto*` excluding `gas`, `gas_left`, `change_from_external_call_in_init_code`) had 3 skip entries each (`d{0,1,2}-g1`). Re-running these on Amsterdam with the skip list disabled shows all 60 fixture variants per file already pass without any code changes. The post-state expectation at `g=1` is `contract_2: storage={1: 0}` (only slot 1, asserted to be zero). On Cancun, ~14 of the 16 SSTORE pairs complete before OoG; on Amsterdam EIP-8037 the state- gas spill cuts that to ~5 pairs. In both cases slot 1 ends at 0 and the final `SSTORE(1, 1)` does not run, so the assertion holds on both forks unchanged. These were defensive skip entries from an earlier snapshot. Remove all 66 entries; no test-file changes needed. --- tests/ported_static/amsterdam_skip_list.txt | 70 +-------------------- 1 file changed, 2 insertions(+), 68 deletions(-) diff --git a/tests/ported_static/amsterdam_skip_list.txt b/tests/ported_static/amsterdam_skip_list.txt index 4f2cdcbe3c4..f97ea93f05c 100644 --- a/tests/ported_static/amsterdam_skip_list.txt +++ b/tests/ported_static/amsterdam_skip_list.txt @@ -8,7 +8,7 @@ # Entries are substring-matched against each pytest nodeid (after # stripping the fixture-format suffix in conftest.py). # -# Total entries: 889 +# Total entries: 823 # stAttackTest (1) stAttackTest/test_crashing_transaction.py::test_crashing_transaction[fork_Amsterdam] @@ -256,31 +256,7 @@ stRevertTest/test_revert_depth_create_address_collision.py::test_revert_depth_cr stRevertTest/test_revert_depth_create_oog.py::test_revert_depth_create_oog[fork_Amsterdam-d1-g1-v0] stRevertTest/test_revert_depth_create_oog.py::test_revert_depth_create_oog[fork_Amsterdam-d1-g1-v1] -# stSStoreTest (76) -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d2-g1] +# stSStoreTest (10) stSStoreTest/test_sstore_change_from_external_call_in_init_code.py::test_sstore_change_from_external_call_in_init_code[fork_Amsterdam-d0] stSStoreTest/test_sstore_change_from_external_call_in_init_code.py::test_sstore_change_from_external_call_in_init_code[fork_Amsterdam-d1] stSStoreTest/test_sstore_change_from_external_call_in_init_code.py::test_sstore_change_from_external_call_in_init_code[fork_Amsterdam-d3] @@ -291,48 +267,6 @@ stSStoreTest/test_sstore_gas.py::test_sstore_gas[fork_Amsterdam] stSStoreTest/test_sstore_gas_left.py::test_sstore_gas_left[fork_Amsterdam-d2] stSStoreTest/test_sstore_gas_left.py::test_sstore_gas_left[fork_Amsterdam-d5] stSStoreTest/test_sstore_gas_left.py::test_sstore_gas_left[fork_Amsterdam-d8] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d2-g1] # stSolidityTest (1) stSolidityTest/test_recursive_create_contracts.py::test_recursive_create_contracts[fork_Amsterdam] From a623fa156ce846fa6b8678a1dfda8e37e67b4173 Mon Sep 17 00:00:00 2001 From: Leo Lara Date: Tue, 12 May 2026 21:31:25 +0700 Subject: [PATCH 4/4] chore: ruff format oog_budget_lift unit test assertions --- .../forks/tests/test_forks.py | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/packages/testing/src/execution_testing/forks/tests/test_forks.py b/packages/testing/src/execution_testing/forks/tests/test_forks.py index 73b69267edb..da2c4ef9f43 100644 --- a/packages/testing/src/execution_testing/forks/tests/test_forks.py +++ b/packages/testing/src/execution_testing/forks/tests/test_forks.py @@ -753,20 +753,17 @@ def test_oog_budget_lift() -> None: create = Amsterdam.create_state_gas() code_64 = Amsterdam.code_deposit_state_gas(code_size=64) assert Amsterdam.oog_budget_lift() == 0 + assert Amsterdam.oog_budget_lift(sstores_before_oog=1) == sstore + assert Amsterdam.oog_budget_lift(creates_before_oog=1) == create + assert Amsterdam.oog_budget_lift(deploy_code_size=64) == code_64 assert ( - Amsterdam.oog_budget_lift(sstores_before_oog=1) == sstore - ) - assert ( - Amsterdam.oog_budget_lift(creates_before_oog=1) == create - ) - assert ( - Amsterdam.oog_budget_lift(deploy_code_size=64) == code_64 + Amsterdam.oog_budget_lift( + sstores_before_oog=3, + creates_before_oog=2, + deploy_code_size=64, + ) + == 3 * sstore + 2 * create + code_64 ) - assert Amsterdam.oog_budget_lift( - sstores_before_oog=3, - creates_before_oog=2, - deploy_code_size=64, - ) == 3 * sstore + 2 * create + code_64 def test_fork_variant_ordering() -> None: