diff --git a/setup.py b/setup.py index f95f85284a..83c7e857e1 100644 --- a/setup.py +++ b/setup.py @@ -638,35 +638,6 @@ def preparations(cls): @classmethod def sundry_functions(cls) -> str: return super().sundry_functions() + '\n\n' + ''' -# -# Temporarily disable Withdrawals functions for EIP4844 testnets -# - - -def no_op(fn): # type: ignore - # pylint: disable=unused-argument - def wrapper(*args, **kw): # type: ignore - return None - return wrapper - - -def get_empty_list_result(fn): # type: ignore - # pylint: disable=unused-argument - def wrapper(*args, **kw): # type: ignore - return [] - return wrapper - - -process_withdrawals = no_op(process_withdrawals) -process_bls_to_execution_change = no_op(process_bls_to_execution_change) -get_expected_withdrawals = get_empty_list_result(get_expected_withdrawals) -process_historical_summaries_update = no_op(process_historical_summaries_update) - - -# -# End -# - def retrieve_blobs_sidecar(slot: Slot, beacon_block_root: Root) -> PyUnion[BlobsSidecar, str]: # pylint: disable=unused-argument return "TEST"''' diff --git a/specs/eip4844/beacon-chain.md b/specs/eip4844/beacon-chain.md index 19acb57d85..bc5c41a5c2 100644 --- a/specs/eip4844/beacon-chain.md +++ b/specs/eip4844/beacon-chain.md @@ -33,7 +33,6 @@ - [`process_execution_payload`](#process_execution_payload) - [Blob KZG commitments](#blob-kzg-commitments) - [Testing](#testing) - - [Disabling Withdrawals](#disabling-withdrawals) @@ -346,11 +345,3 @@ def initialize_beacon_state_from_eth1(eth1_block_hash: Hash32, return state ``` - -### Disabling Withdrawals - -During testing we avoid Capella-specific updates to the state transition. We do this by replacing the following functions with a no-op implementation: -- `process_withdrawals` -- `process_bls_to_execution_change` - -The `get_expected_withdrawals` function is also modified to return an empty withdrawals list. As such, the `PayloadAttributes` used to update forkchoice does not contain withdrawals. diff --git a/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_bls_to_execution_change.py b/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_bls_to_execution_change.py index 6a1ba5b36a..094de5eebd 100644 --- a/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_bls_to_execution_change.py +++ b/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_bls_to_execution_change.py @@ -1,8 +1,7 @@ -from eth2spec.test.helpers.constants import CAPELLA from eth2spec.test.helpers.keys import pubkeys from eth2spec.test.helpers.bls_to_execution_changes import get_signed_address_change -from eth2spec.test.context import spec_state_test, expect_assertion_error, with_phases, always_bls +from eth2spec.test.context import spec_state_test, expect_assertion_error, with_capella_and_later, always_bls def run_bls_to_execution_change_processing(spec, state, signed_address_change, valid=True): @@ -38,14 +37,14 @@ def run_bls_to_execution_change_processing(spec, state, signed_address_change, v yield 'post', state -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success(spec, state): signed_address_change = get_signed_address_change(spec, state) yield from run_bls_to_execution_change_processing(spec, state, signed_address_change) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_not_activated(spec, state): validator_index = 3 @@ -63,7 +62,7 @@ def test_success_not_activated(spec, state): assert not spec.is_fully_withdrawable_validator(validator, balance, spec.get_current_epoch(state)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_in_activation_queue(spec, state): validator_index = 3 @@ -81,7 +80,7 @@ def test_success_in_activation_queue(spec, state): assert not spec.is_fully_withdrawable_validator(validator, balance, spec.get_current_epoch(state)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_in_exit_queue(spec, state): validator_index = 3 @@ -94,7 +93,7 @@ def test_success_in_exit_queue(spec, state): yield from run_bls_to_execution_change_processing(spec, state, signed_address_change) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_exited(spec, state): validator_index = 4 @@ -111,7 +110,7 @@ def test_success_exited(spec, state): assert not spec.is_fully_withdrawable_validator(validator, balance, spec.get_current_epoch(state)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_withdrawable(spec, state): validator_index = 4 @@ -129,7 +128,7 @@ def test_success_withdrawable(spec, state): assert spec.is_fully_withdrawable_validator(validator, balance, spec.get_current_epoch(state)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_val_index_out_of_range(spec, state): # Create for one validator beyond the validator list length @@ -138,7 +137,7 @@ def test_invalid_val_index_out_of_range(spec, state): yield from run_bls_to_execution_change_processing(spec, state, signed_address_change, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_already_0x01(spec, state): # Create for one validator beyond the validator list length @@ -150,7 +149,7 @@ def test_invalid_already_0x01(spec, state): yield from run_bls_to_execution_change_processing(spec, state, signed_address_change, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_incorrect_from_bls_pubkey(spec, state): # Create for one validator beyond the validator list length @@ -164,7 +163,7 @@ def test_invalid_incorrect_from_bls_pubkey(spec, state): yield from run_bls_to_execution_change_processing(spec, state, signed_address_change, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test @always_bls def test_invalid_bad_signature(spec, state): diff --git a/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_deposit.py b/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_deposit.py index 685d176518..e0603d301f 100644 --- a/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_deposit.py +++ b/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_deposit.py @@ -1,8 +1,7 @@ from eth2spec.test.context import ( spec_state_test, - with_phases, + with_capella_and_later, ) -from eth2spec.test.helpers.constants import CAPELLA from eth2spec.test.helpers.state import next_epoch_via_block from eth2spec.test.helpers.deposits import ( prepare_state_and_deposit, @@ -11,7 +10,7 @@ from eth2spec.test.helpers.withdrawals import set_validator_fully_withdrawable -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_top_up_to_withdrawn_validator(spec, state): validator_index = 0 diff --git a/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_withdrawals.py b/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_withdrawals.py index fa3806d2c8..674231096c 100644 --- a/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_withdrawals.py +++ b/tests/core/pyspec/eth2spec/test/capella/block_processing/test_process_withdrawals.py @@ -4,9 +4,9 @@ spec_state_test, expect_assertion_error, with_presets, - with_phases, + with_capella_and_later, ) -from eth2spec.test.helpers.constants import MAINNET, MINIMAL, CAPELLA +from eth2spec.test.helpers.constants import MAINNET, MINIMAL from eth2spec.test.helpers.execution_payload import ( build_empty_execution_payload, compute_el_block_hash, @@ -97,7 +97,7 @@ def run_withdrawals_processing(spec, state, execution_payload, num_expected_with return expected_withdrawals -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_zero_expected_withdrawals(spec, state): assert len(spec.get_expected_withdrawals(state)) == 0 @@ -108,7 +108,7 @@ def test_success_zero_expected_withdrawals(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_one_full_withdrawal(spec, state): fully_withdrawable_indices, partial_withdrawals_indices = prepare_expected_withdrawals( @@ -125,7 +125,7 @@ def test_success_one_full_withdrawal(spec, state): partial_withdrawals_indices=partial_withdrawals_indices) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_one_partial_withdrawal(spec, state): fully_withdrawable_indices, partial_withdrawals_indices = prepare_expected_withdrawals( @@ -145,7 +145,7 @@ def test_success_one_partial_withdrawal(spec, state): ) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_max_per_slot(spec, state): num_full_withdrawals = spec.MAX_WITHDRAWALS_PER_PAYLOAD // 2 @@ -163,7 +163,7 @@ def test_success_max_per_slot(spec, state): partial_withdrawals_indices=partial_withdrawals_indices) -@with_phases([CAPELLA]) +@with_capella_and_later @with_presets([MAINNET], reason="too few validators with minimal config") @spec_state_test def test_success_all_fully_withdrawable_in_one_sweep(spec, state): @@ -182,7 +182,7 @@ def test_success_all_fully_withdrawable_in_one_sweep(spec, state): partial_withdrawals_indices=partial_withdrawals_indices) -@with_phases([CAPELLA]) +@with_capella_and_later @with_presets([MINIMAL], reason="too many validators with mainnet config") @spec_state_test def test_success_all_fully_withdrawable(spec, state): @@ -201,7 +201,7 @@ def test_success_all_fully_withdrawable(spec, state): partial_withdrawals_indices=partial_withdrawals_indices) -@with_phases([CAPELLA]) +@with_capella_and_later @with_presets([MAINNET], reason="too few validators with minimal config") @spec_state_test def test_success_all_partially_withdrawable_in_one_sweep(spec, state): @@ -220,7 +220,7 @@ def test_success_all_partially_withdrawable_in_one_sweep(spec, state): partial_withdrawals_indices=partial_withdrawals_indices) -@with_phases([CAPELLA]) +@with_capella_and_later @with_presets([MINIMAL], reason="too many validators with mainnet config") @spec_state_test def test_success_all_partially_withdrawable(spec, state): @@ -243,7 +243,7 @@ def test_success_all_partially_withdrawable(spec, state): # Failure cases in which the number of withdrawals in the execution_payload is incorrect # -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_non_withdrawable_non_empty_withdrawals(spec, state): next_slot(spec, state) @@ -260,7 +260,7 @@ def test_invalid_non_withdrawable_non_empty_withdrawals(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_one_expected_full_withdrawal_and_none_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=1) @@ -273,7 +273,7 @@ def test_invalid_one_expected_full_withdrawal_and_none_in_withdrawals(spec, stat yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_one_expected_partial_withdrawal_and_none_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_partial_withdrawals=1) @@ -286,7 +286,7 @@ def test_invalid_one_expected_partial_withdrawal_and_none_in_withdrawals(spec, s yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_one_expected_full_withdrawal_and_duplicate_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=2) @@ -299,7 +299,7 @@ def test_invalid_one_expected_full_withdrawal_and_duplicate_in_withdrawals(spec, yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_two_expected_partial_withdrawal_and_duplicate_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_partial_withdrawals=2) @@ -312,7 +312,7 @@ def test_invalid_two_expected_partial_withdrawal_and_duplicate_in_withdrawals(sp yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_max_per_slot_full_withdrawals_and_one_less_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD) @@ -325,7 +325,7 @@ def test_invalid_max_per_slot_full_withdrawals_and_one_less_in_withdrawals(spec, yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_max_per_slot_partial_withdrawals_and_one_less_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_partial_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD) @@ -338,7 +338,7 @@ def test_invalid_max_per_slot_partial_withdrawals_and_one_less_in_withdrawals(sp yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_a_lot_fully_withdrawable_too_few_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD * 4) @@ -351,7 +351,7 @@ def test_invalid_a_lot_fully_withdrawable_too_few_in_withdrawals(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_a_lot_partially_withdrawable_too_few_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_partial_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD * 4) @@ -364,7 +364,7 @@ def test_invalid_a_lot_partially_withdrawable_too_few_in_withdrawals(spec, state yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_a_lot_mixed_withdrawable_in_queue_too_few_in_withdrawals(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD, @@ -382,7 +382,7 @@ def test_invalid_a_lot_mixed_withdrawable_in_queue_too_few_in_withdrawals(spec, # Failure cases in which the withdrawals in the execution_payload are incorrect # -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_incorrect_withdrawal_index(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=1) @@ -395,7 +395,7 @@ def test_invalid_incorrect_withdrawal_index(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_incorrect_address_full(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=1) @@ -408,7 +408,7 @@ def test_invalid_incorrect_address_full(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_incorrect_address_partial(spec, state): prepare_expected_withdrawals(spec, state, num_partial_withdrawals=1) @@ -421,7 +421,7 @@ def test_invalid_incorrect_address_partial(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_incorrect_amount_full(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=1) @@ -434,7 +434,7 @@ def test_invalid_incorrect_amount_full(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_incorrect_amount_partial(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=1) @@ -447,7 +447,7 @@ def test_invalid_incorrect_amount_partial(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_one_of_many_incorrectly_full(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD * 4) @@ -466,7 +466,7 @@ def test_invalid_one_of_many_incorrectly_full(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_one_of_many_incorrectly_partial(spec, state): prepare_expected_withdrawals(spec, state, num_partial_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD * 4) @@ -485,7 +485,7 @@ def test_invalid_one_of_many_incorrectly_partial(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_many_incorrectly_full(spec, state): prepare_expected_withdrawals(spec, state, num_full_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD * 4) @@ -504,7 +504,7 @@ def test_invalid_many_incorrectly_full(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, valid=False) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_many_incorrectly_partial(spec, state): prepare_expected_withdrawals(spec, state, num_partial_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD * 4) @@ -527,7 +527,7 @@ def test_invalid_many_incorrectly_partial(spec, state): # More full withdrawal cases # -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_withdrawable_epoch_but_0_balance(spec, state): current_epoch = spec.get_current_epoch(state) @@ -541,7 +541,7 @@ def test_withdrawable_epoch_but_0_balance(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=0) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_withdrawable_epoch_but_0_effective_balance_0_balance(spec, state): current_epoch = spec.get_current_epoch(state) @@ -555,7 +555,7 @@ def test_withdrawable_epoch_but_0_effective_balance_0_balance(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=0) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_withdrawable_epoch_but_0_effective_balance_nonzero_balance(spec, state): current_epoch = spec.get_current_epoch(state) @@ -569,7 +569,7 @@ def test_withdrawable_epoch_but_0_effective_balance_nonzero_balance(spec, state) yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=1) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_no_withdrawals_but_some_next_epoch(spec, state): current_epoch = spec.get_current_epoch(state) @@ -583,7 +583,7 @@ def test_no_withdrawals_but_some_next_epoch(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=0) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_all_withdrawal(spec, state): # Make all validators withdrawable @@ -619,25 +619,25 @@ def run_random_full_withdrawals_test(spec, state, rng): yield from run_withdrawals_processing(spec, state, execution_payload) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_full_withdrawals_0(spec, state): yield from run_random_full_withdrawals_test(spec, state, random.Random(444)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_full_withdrawals_1(spec, state): yield from run_random_full_withdrawals_test(spec, state, random.Random(420)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_full_withdrawals_2(spec, state): yield from run_random_full_withdrawals_test(spec, state, random.Random(200)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_full_withdrawals_3(spec, state): yield from run_random_full_withdrawals_test(spec, state, random.Random(2000000)) @@ -647,7 +647,7 @@ def test_random_full_withdrawals_3(spec, state): # More partial withdrawal cases # -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_no_max_effective_balance(spec, state): validator_index = len(state.validators) // 2 @@ -663,7 +663,7 @@ def test_success_no_max_effective_balance(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=0) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_no_excess_balance(spec, state): validator_index = len(state.validators) // 2 @@ -679,7 +679,7 @@ def test_success_no_excess_balance(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=0) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_excess_balance_but_no_max_effective_balance(spec, state): validator_index = len(state.validators) // 2 @@ -696,7 +696,7 @@ def test_success_excess_balance_but_no_max_effective_balance(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=0) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_one_partial_withdrawable_not_yet_active(spec, state): validator_index = min(len(state.validators) // 2, spec.MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP - 1) @@ -710,7 +710,7 @@ def test_success_one_partial_withdrawable_not_yet_active(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=1) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_one_partial_withdrawable_in_exit_queue(spec, state): validator_index = min(len(state.validators) // 2, spec.MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP - 1) @@ -725,7 +725,7 @@ def test_success_one_partial_withdrawable_in_exit_queue(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=1) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_one_partial_withdrawable_exited(spec, state): validator_index = min(len(state.validators) // 2, spec.MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP - 1) @@ -739,7 +739,7 @@ def test_success_one_partial_withdrawable_exited(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=1) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_one_partial_withdrawable_active_and_slashed(spec, state): validator_index = min(len(state.validators) // 2, spec.MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP - 1) @@ -753,7 +753,7 @@ def test_success_one_partial_withdrawable_active_and_slashed(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=1) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_one_partial_withdrawable_exited_and_slashed(spec, state): validator_index = min(len(state.validators) // 2, spec.MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP - 1) @@ -768,7 +768,7 @@ def test_success_one_partial_withdrawable_exited_and_slashed(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=1) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_two_partial_withdrawable(spec, state): set_validator_partially_withdrawable(spec, state, 0) @@ -779,7 +779,7 @@ def test_success_two_partial_withdrawable(spec, state): yield from run_withdrawals_processing(spec, state, execution_payload, num_expected_withdrawals=2) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_max_partial_withdrawable(spec, state): # Sanity check that this test works for this state @@ -794,7 +794,7 @@ def test_success_max_partial_withdrawable(spec, state): spec, state, execution_payload, num_expected_withdrawals=spec.MAX_WITHDRAWALS_PER_PAYLOAD) -@with_phases([CAPELLA]) +@with_capella_and_later @with_presets([MINIMAL], reason="not enough validators with mainnet config") @spec_state_test def test_success_max_plus_one_withdrawable(spec, state): @@ -833,37 +833,37 @@ def run_random_partial_withdrawals_test(spec, state, rng): yield from run_withdrawals_processing(spec, state, execution_payload) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_0(spec, state): yield from run_random_partial_withdrawals_test(spec, state, random.Random(0)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_partial_withdrawals_1(spec, state): yield from run_random_partial_withdrawals_test(spec, state, random.Random(1)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_partial_withdrawals_2(spec, state): yield from run_random_partial_withdrawals_test(spec, state, random.Random(2)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_partial_withdrawals_3(spec, state): yield from run_random_partial_withdrawals_test(spec, state, random.Random(3)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_partial_withdrawals_4(spec, state): yield from run_random_partial_withdrawals_test(spec, state, random.Random(4)) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_random_partial_withdrawals_5(spec, state): yield from run_random_partial_withdrawals_test(spec, state, random.Random(5)) diff --git a/tests/core/pyspec/eth2spec/test/capella/epoch_processing/test_process_historical_batches_update.py b/tests/core/pyspec/eth2spec/test/capella/epoch_processing/test_process_historical_batches_update.py index f1f8292ebf..c5465d328b 100644 --- a/tests/core/pyspec/eth2spec/test/capella/epoch_processing/test_process_historical_batches_update.py +++ b/tests/core/pyspec/eth2spec/test/capella/epoch_processing/test_process_historical_batches_update.py @@ -1,7 +1,6 @@ from eth2spec.test.context import ( - CAPELLA, spec_state_test, - with_phases, + with_capella_and_later, ) from eth2spec.test.helpers.epoch_processing import ( run_epoch_processing_with @@ -12,7 +11,7 @@ def run_process_historical_summaries_update(spec, state): yield from run_epoch_processing_with(spec, state, 'process_historical_summaries_update') -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_historical_summaries_accumulator(spec, state): # skip ahead to near the end of the historical batch period (excl block before epoch processing) diff --git a/tests/core/pyspec/eth2spec/test/capella/sanity/test_blocks.py b/tests/core/pyspec/eth2spec/test/capella/sanity/test_blocks.py index 1df046c9d3..1cd1c13178 100644 --- a/tests/core/pyspec/eth2spec/test/capella/sanity/test_blocks.py +++ b/tests/core/pyspec/eth2spec/test/capella/sanity/test_blocks.py @@ -1,7 +1,6 @@ from eth2spec.test.context import ( - with_phases, spec_state_test + with_capella_and_later, spec_state_test ) -from eth2spec.test.helpers.constants import CAPELLA from eth2spec.test.helpers.state import ( state_transition_and_sign_block, ) @@ -25,7 +24,7 @@ # BLSToExecutionChange # -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_bls_change(spec, state): index = 0 @@ -48,7 +47,7 @@ def test_success_bls_change(spec, state): assert post_credentials[12:] == signed_address_change.message.to_execution_address -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_success_exit_and_bls_change(spec, state): # move state forward SHARD_COMMITTEE_PERIOD epochs to allow for exit @@ -77,7 +76,7 @@ def test_success_exit_and_bls_change(spec, state): assert spec.is_fully_withdrawable_validator(validator, balance, validator.withdrawable_epoch) -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_duplicate_bls_changes_same_block(spec, state): index = 0 @@ -96,7 +95,7 @@ def test_invalid_duplicate_bls_changes_same_block(spec, state): yield 'post', None -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_two_bls_changes_of_different_addresses_same_validator_same_block(spec, state): index = 0 @@ -124,7 +123,7 @@ def test_invalid_two_bls_changes_of_different_addresses_same_validator_same_bloc # Withdrawals # -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_full_withdrawal_in_epoch_transition(spec, state): index = 0 @@ -145,7 +144,7 @@ def test_full_withdrawal_in_epoch_transition(spec, state): assert len(spec.get_expected_withdrawals(state)) == 0 -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_partial_withdrawal_in_epoch_transition(spec, state): index = state.next_withdrawal_index @@ -169,7 +168,7 @@ def test_partial_withdrawal_in_epoch_transition(spec, state): assert len(spec.get_expected_withdrawals(state)) == 0 -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_many_partial_withdrawals_in_epoch_transition(spec, state): assert len(state.validators) > spec.MAX_WITHDRAWALS_PER_PAYLOAD @@ -221,7 +220,7 @@ def _perform_valid_withdrawal(spec, state): return pre_state, signed_block_1, pre_next_withdrawal_index -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_withdrawal_success_two_blocks(spec, state): pre_state, signed_block_1, pre_next_withdrawal_index = _perform_valid_withdrawal(spec, state) @@ -238,7 +237,7 @@ def test_withdrawal_success_two_blocks(spec, state): yield 'post', state -@with_phases([CAPELLA]) +@with_capella_and_later @spec_state_test def test_invalid_withdrawal_fail_second_block_payload_isnt_compatible(spec, state): _perform_valid_withdrawal(spec, state) diff --git a/tests/core/pyspec/eth2spec/test/eip4844/block_processing/__init__.py b/tests/core/pyspec/eth2spec/test/eip4844/block_processing/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/core/pyspec/eth2spec/test/eip4844/block_processing/test_process_bls_to_execution_change.py b/tests/core/pyspec/eth2spec/test/eip4844/block_processing/test_process_bls_to_execution_change.py deleted file mode 100644 index d9b93394f6..0000000000 --- a/tests/core/pyspec/eth2spec/test/eip4844/block_processing/test_process_bls_to_execution_change.py +++ /dev/null @@ -1,40 +0,0 @@ -from eth2spec.test.helpers.bls_to_execution_changes import get_signed_address_change -from eth2spec.test.context import spec_state_test, expect_assertion_error, with_eip4844_and_later - - -def run_bls_to_execution_change_processing_no_op(spec, state, signed_address_change, valid=True): - """ - Run ``process_bls_to_execution_change``, yielding: - - pre-state ('pre') - - address-change ('address_change') - - post-state ('post'). - If ``valid == False``, run expecting ``AssertionError`` - """ - pre_state = state.copy() - - # yield pre-state - yield 'pre', state - - yield 'address_change', signed_address_change - - # If the address_change is invalid, processing is aborted, and there is no post-state. - if not valid: - expect_assertion_error(lambda: spec.process_bls_to_execution_change(state, signed_address_change)) - yield 'post', None - return - - # process address change - spec.process_bls_to_execution_change(state, signed_address_change) - - # yield post-state - yield 'post', state - - # Make sure state has NOT been changed - assert state == pre_state - - -@with_eip4844_and_later -@spec_state_test -def test_no_op(spec, state): - signed_address_change = get_signed_address_change(spec, state) - yield from run_bls_to_execution_change_processing_no_op(spec, state, signed_address_change) diff --git a/tests/core/pyspec/eth2spec/test/eip4844/block_processing/test_process_withdrawals.py b/tests/core/pyspec/eth2spec/test/eip4844/block_processing/test_process_withdrawals.py deleted file mode 100644 index a7db37e422..0000000000 --- a/tests/core/pyspec/eth2spec/test/eip4844/block_processing/test_process_withdrawals.py +++ /dev/null @@ -1,41 +0,0 @@ - -from eth2spec.test.context import spec_state_test, expect_assertion_error, with_eip4844_and_later -from eth2spec.test.helpers.execution_payload import ( - build_empty_execution_payload, -) -from eth2spec.test.helpers.state import next_slot - - -def run_withdrawals_processing(spec, state, execution_payload, valid=True): - """ - Run ``process_execution_payload``, yielding: - - pre-state ('pre') - - execution payload ('execution_payload') - - post-state ('post'). - If ``valid == False``, run expecting ``AssertionError`` - """ - pre_state = state.copy() - - yield 'pre', state - yield 'execution_payload', execution_payload - - if not valid: - expect_assertion_error(lambda: spec.process_withdrawals(state, execution_payload)) - yield 'post', None - return - - spec.process_withdrawals(state, execution_payload) - - yield 'post', state - - # Make sure state has NOT been changed - assert state == pre_state - - -@with_eip4844_and_later -@spec_state_test -def test_no_op(spec, state): - next_slot(spec, state) - execution_payload = build_empty_execution_payload(spec, state) - - yield from run_withdrawals_processing(spec, state, execution_payload) diff --git a/tests/core/pyspec/eth2spec/test/eip4844/epoch_processing/__init__.py b/tests/core/pyspec/eth2spec/test/eip4844/epoch_processing/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/core/pyspec/eth2spec/test/eip4844/epoch_processing/test_process_historical_batches_update.py b/tests/core/pyspec/eth2spec/test/eip4844/epoch_processing/test_process_historical_batches_update.py deleted file mode 100644 index 21865ae382..0000000000 --- a/tests/core/pyspec/eth2spec/test/eip4844/epoch_processing/test_process_historical_batches_update.py +++ /dev/null @@ -1,23 +0,0 @@ -from eth2spec.test.context import ( - spec_state_test, - with_eip4844_and_later, -) -from eth2spec.test.helpers.epoch_processing import ( - run_epoch_processing_with -) - - -def run_process_historical_summaries_update(spec, state): - yield from run_epoch_processing_with(spec, state, 'process_historical_summaries_update') - - -@with_eip4844_and_later -@spec_state_test -def test_no_op(spec, state): - # skip ahead to near the end of the historical batch period (excl block before epoch processing) - state.slot = spec.SLOTS_PER_HISTORICAL_ROOT - 1 - historical_summaries_len = len(state.historical_summaries) - - yield from run_process_historical_summaries_update(spec, state) - - assert len(state.historical_summaries) == historical_summaries_len diff --git a/tests/core/pyspec/eth2spec/test/phase0/sanity/test_blocks.py b/tests/core/pyspec/eth2spec/test/phase0/sanity/test_blocks.py index 71c7798a1e..2e1a2a369a 100644 --- a/tests/core/pyspec/eth2spec/test/phase0/sanity/test_blocks.py +++ b/tests/core/pyspec/eth2spec/test/phase0/sanity/test_blocks.py @@ -29,7 +29,7 @@ compute_committee_indices, compute_sync_committee_participant_reward_and_penalty, ) -from eth2spec.test.helpers.constants import PHASE0, EIP4844, MINIMAL +from eth2spec.test.helpers.constants import PHASE0, MINIMAL from eth2spec.test.helpers.forks import is_post_altair, is_post_bellatrix, is_post_capella from eth2spec.test.context import ( spec_test, spec_state_test, dump_skipping_message, @@ -1046,11 +1046,7 @@ def test_historical_batch(spec, state): if is_post_capella(spec): # Frozen `historical_roots` assert state.historical_roots == pre_historical_roots - if spec.fork == EIP4844: - # TODO: no-op for now in EIP4844 testnet - assert state.historical_summaries == pre_historical_summaries - else: - assert len(state.historical_summaries) == len(pre_historical_summaries) + 1 + assert len(state.historical_summaries) == len(pre_historical_summaries) + 1 else: assert len(state.historical_roots) == len(pre_historical_roots) + 1 diff --git a/tests/core/pyspec/eth2spec/test/phase0/sanity/test_slots.py b/tests/core/pyspec/eth2spec/test/phase0/sanity/test_slots.py index 7b860159a2..90d332d570 100644 --- a/tests/core/pyspec/eth2spec/test/phase0/sanity/test_slots.py +++ b/tests/core/pyspec/eth2spec/test/phase0/sanity/test_slots.py @@ -1,6 +1,3 @@ -from eth2spec.test.helpers.constants import ( - EIP4844, -) from eth2spec.test.helpers.forks import ( is_post_capella, ) @@ -87,10 +84,6 @@ def test_historical_accumulator(spec, state): if is_post_capella(spec): # Frozen `historical_roots` assert state.historical_roots == pre_historical_roots - if spec.fork == EIP4844: - # TODO: no-op for now in EIP4844 testnet - assert state.historical_summaries == pre_historical_summaries - else: - assert len(state.historical_summaries) == len(pre_historical_summaries) + 1 + assert len(state.historical_summaries) == len(pre_historical_summaries) + 1 else: assert len(state.historical_roots) == len(pre_historical_roots) + 1 diff --git a/tests/generators/epoch_processing/main.py b/tests/generators/epoch_processing/main.py index 58beb0fd2d..dda4345a8e 100644 --- a/tests/generators/epoch_processing/main.py +++ b/tests/generators/epoch_processing/main.py @@ -32,10 +32,7 @@ ]} capella_mods = combine_mods(_new_capella_mods, bellatrix_mods) - _new_eip4844_mods = {key: 'eth2spec.test.eip4844.epoch_processing.test_process_' + key for key in [ - 'historical_summaries_update', - ]} - eip4844_mods = combine_mods(_new_eip4844_mods, capella_mods) + eip4844_mods = capella_mods # TODO Custody Game testgen is disabled for now # custody_game_mods = {**{key: 'eth2spec.test.custody_game.epoch_processing.test_process_' + key for key in [ diff --git a/tests/generators/operations/main.py b/tests/generators/operations/main.py index 4c073ebe40..d370a1b850 100644 --- a/tests/generators/operations/main.py +++ b/tests/generators/operations/main.py @@ -36,11 +36,7 @@ ]} capella_mods = combine_mods(_new_capella_mods, bellatrix_mods) - _new_eip4844_mods = {key: 'eth2spec.test.eip4844.block_processing.test_process_' + key for key in [ - 'bls_to_execution_change', - 'withdrawals', - ]} - eip4844_mods = combine_mods(_new_eip4844_mods, capella_mods) + eip4844_mods = capella_mods # TODO Custody Game testgen is disabled for now # _new_custody_game_mods = {key: 'eth2spec.test.custody_game.block_processing.test_process_' + key for key in [