From b87f1fc4eb547401932af94c9a4eca6c0efda350 Mon Sep 17 00:00:00 2001 From: Hsiao-Wei Wang Date: Fri, 12 Apr 2024 21:40:40 +0900 Subject: [PATCH] Remove duplicate tests --- .../block_processing/test_process_deposit.py | 284 ------------------ .../pyspec/eth2spec/test/helpers/deposits.py | 85 ------ 2 files changed, 369 deletions(-) delete mode 100644 tests/core/pyspec/eth2spec/test/eip7251/block_processing/test_process_deposit.py diff --git a/tests/core/pyspec/eth2spec/test/eip7251/block_processing/test_process_deposit.py b/tests/core/pyspec/eth2spec/test/eip7251/block_processing/test_process_deposit.py deleted file mode 100644 index 0b74fd65c..000000000 --- a/tests/core/pyspec/eth2spec/test/eip7251/block_processing/test_process_deposit.py +++ /dev/null @@ -1,284 +0,0 @@ -from eth2spec.test.helpers.deposits import ( - build_deposit, - prepare_state_and_deposit, - run_deposit_processing_eip7251, - run_deposit_processing_eip7251_with_specific_fork_version, - sign_deposit_data, -) -from eth2spec.test.helpers.keys import privkeys, pubkeys - -from eth2spec.test.context import ( - spec_state_test, - with_eip7251_and_later, - always_bls, -) - - -@with_eip7251_and_later -@spec_state_test -def test_new_deposit_under_min_activation_balance(spec, state): - # fresh deposit = next validator index = validator appended to registry - validator_index = len(state.validators) - # effective balance will be 1 EFFECTIVE_BALANCE_INCREMENT smaller because of this small decrement. - amount = spec.MIN_ACTIVATION_BALANCE - 1 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -def test_new_deposit_min(spec, state): - # fresh deposit = next validator index = validator appended to registry - validator_index = len(state.validators) - amount = spec.MIN_DEPOSIT_AMOUNT - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -def test_new_deposit_between_min_and_max(spec, state): - # fresh deposit = next validator index = validator appended to registry - validator_index = len(state.validators) - amount = spec.MAX_EFFECTIVE_BALANCE_EIP7251 // 2 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -def test_new_deposit_max(spec, state): - # fresh deposit = next validator index = validator appended to registry - validator_index = len(state.validators) - # effective balance will be exactly the same as balance. - amount = spec.MAX_EFFECTIVE_BALANCE_EIP7251 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -def test_new_deposit_over_max(spec, state): - # fresh deposit = next validator index = validator appended to registry - validator_index = len(state.validators) - amount = spec.MAX_EFFECTIVE_BALANCE_EIP7251 + 1 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -# @with_eip7251_and_later -# @spec_state_test -# def test_top_up__max_effective_balance(spec, state): -# validator_index = 0 -# amount = spec.MAX_EFFECTIVE_BALANCE_EIP7251 // 4 -# deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - -# state.balances[validator_index] = spec.MAX_EFFECTIVE_BALANCE_EIP7251 -# state.validators[validator_index].effective_balance = spec.MAX_EFFECTIVE_BALANCE_EIP7251 - -# yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - -# assert state.balances[validator_index] == spec.MAX_EFFECTIVE_BALANCE_EIP7251 + amount -# assert state.validators[validator_index].effective_balance == spec.MAX_EFFECTIVE_BALANCE_EIP7251 - -@with_eip7251_and_later -@spec_state_test -@always_bls -def test_correct_sig_but_forked_state(spec, state): - validator_index = len(state.validators) - amount = spec.MAX_EFFECTIVE_BALANCE - # deposits will always be valid, regardless of the current fork - state.fork.current_version = spec.Version('0x1234abcd') - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -@always_bls -def test_incorrect_sig_new_deposit(spec, state): - # fresh deposit = next validator index = validator appended to registry - validator_index = len(state.validators) - amount = spec.MIN_ACTIVATION_BALANCE - deposit = prepare_state_and_deposit(spec, state, validator_index, amount) - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index, effective=False) - - -@with_eip7251_and_later -@spec_state_test -def test_top_up__max_effective_balance(spec, state): - validator_index = 0 - amount = spec.MAX_EFFECTIVE_BALANCE // 4 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - - state.balances[validator_index] = spec.MAX_EFFECTIVE_BALANCE - state.validators[validator_index].effective_balance = spec.MAX_EFFECTIVE_BALANCE - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - assert state.validators[validator_index].effective_balance == spec.MAX_EFFECTIVE_BALANCE - - -@with_eip7251_and_later -@spec_state_test -def test_top_up__less_effective_balance(spec, state): - validator_index = 0 - amount = spec.MAX_EFFECTIVE_BALANCE // 4 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - - initial_balance = spec.MAX_EFFECTIVE_BALANCE - 1000 - initial_effective_balance = spec.MAX_EFFECTIVE_BALANCE - spec.EFFECTIVE_BALANCE_INCREMENT - state.balances[validator_index] = initial_balance - state.validators[validator_index].effective_balance = initial_effective_balance - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - # unchanged effective balance - assert state.validators[validator_index].effective_balance == initial_effective_balance - - -@with_eip7251_and_later -@spec_state_test -def test_top_up__zero_balance(spec, state): - validator_index = 0 - amount = spec.MAX_EFFECTIVE_BALANCE // 4 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, signed=True) - - initial_balance = 0 - initial_effective_balance = 0 - state.balances[validator_index] = initial_balance - state.validators[validator_index].effective_balance = initial_effective_balance - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - # unchanged effective balance - assert state.validators[validator_index].effective_balance == initial_effective_balance - - -@with_eip7251_and_later -@spec_state_test -@always_bls -def test_incorrect_sig_top_up(spec, state): - validator_index = 0 - amount = spec.MAX_EFFECTIVE_BALANCE // 4 - deposit = prepare_state_and_deposit(spec, state, validator_index, amount) - - # invalid signatures, in top-ups, are allowed! - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -def test_incorrect_withdrawal_credentials_top_up(spec, state): - validator_index = 0 - amount = spec.MAX_EFFECTIVE_BALANCE // 4 - withdrawal_credentials = spec.BLS_WITHDRAWAL_PREFIX + spec.hash(b"junk")[1:] - deposit = prepare_state_and_deposit( - spec, - state, - validator_index, - amount, - withdrawal_credentials=withdrawal_credentials - ) - - # inconsistent withdrawal credentials, in top-ups, are allowed! - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -def test_invalid_wrong_deposit_for_deposit_count(spec, state): - deposit_data_leaves = [spec.DepositData() for _ in range(len(state.validators))] - - # build root for deposit_1 - index_1 = len(deposit_data_leaves) - pubkey_1 = pubkeys[index_1] - privkey_1 = privkeys[index_1] - _, _, deposit_data_leaves = build_deposit( - spec, - deposit_data_leaves, - pubkey_1, - privkey_1, - spec.MAX_EFFECTIVE_BALANCE, - withdrawal_credentials=b'\x00' * 32, - signed=True, - ) - deposit_count_1 = len(deposit_data_leaves) - - # build root for deposit_2 - index_2 = len(deposit_data_leaves) - pubkey_2 = pubkeys[index_2] - privkey_2 = privkeys[index_2] - deposit_2, root_2, deposit_data_leaves = build_deposit( - spec, - deposit_data_leaves, - pubkey_2, - privkey_2, - spec.MAX_EFFECTIVE_BALANCE, - withdrawal_credentials=b'\x00' * 32, - signed=True, - ) - - # state has root for deposit_2 but is at deposit_count for deposit_1 - state.eth1_data.deposit_root = root_2 - state.eth1_data.deposit_count = deposit_count_1 - - yield from run_deposit_processing_eip7251(spec, state, deposit_2, index_2, valid=False) - - -@with_eip7251_and_later -@spec_state_test -def test_invalid_bad_merkle_proof(spec, state): - validator_index = len(state.validators) - amount = spec.MAX_EFFECTIVE_BALANCE - deposit = prepare_state_and_deposit(spec, state, validator_index, amount) - - # mess up merkle branch - deposit.proof[5] = spec.Bytes32() - - sign_deposit_data(spec, deposit.data, privkeys[validator_index]) - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index, valid=False) - - -@with_eip7251_and_later -@spec_state_test -def test_key_validate_invalid_subgroup(spec, state): - validator_index = len(state.validators) - amount = spec.MAX_EFFECTIVE_BALANCE - - # All-zero pubkey would not pass `bls.KeyValidate`, but `process_deposit` would not throw exception. - pubkey = b'\x00' * 48 - - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, pubkey=pubkey, signed=True) - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -def test_key_validate_invalid_decompression(spec, state): - validator_index = len(state.validators) - amount = spec.MAX_EFFECTIVE_BALANCE - - # `deserialization_fails_infinity_with_true_b_flag` BLS G1 deserialization test case. - # This pubkey would not pass `bls.KeyValidate`, but `process_deposit` would not throw exception. - pubkey_hex = 'c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' - pubkey = bytes.fromhex(pubkey_hex) - - deposit = prepare_state_and_deposit(spec, state, validator_index, amount, pubkey=pubkey, signed=True) - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index) - - -@with_eip7251_and_later -@spec_state_test -@always_bls -def test_ineffective_deposit_with_bad_fork_version(spec, state): - yield from run_deposit_processing_eip7251_with_specific_fork_version( - spec, - state, - fork_version=spec.Version('0xAaBbCcDd'), - effective=False, - ) diff --git a/tests/core/pyspec/eth2spec/test/helpers/deposits.py b/tests/core/pyspec/eth2spec/test/helpers/deposits.py index 29134abe2..a770e4d5e 100644 --- a/tests/core/pyspec/eth2spec/test/helpers/deposits.py +++ b/tests/core/pyspec/eth2spec/test/helpers/deposits.py @@ -407,88 +407,3 @@ def run_deposit_receipt_processing_with_specific_fork_version( valid=valid, effective=effective ) - - -# ******************** -# * EIP7251 * -# ******************** - - -def run_deposit_processing_eip7251(spec, state, deposit, validator_index, valid=True, effective=True): - """ - Run ``process_deposit``, yielding: - - pre-state ('pre') - - deposit ('deposit') - - post-state ('post'). - If ``valid == False``, run expecting ``AssertionError`` - """ - pre_validator_count = len(state.validators) - pre_pending_deposits = len(state.pending_balance_deposits) - pre_balance = 0 - pre_effective_balance = 0 - is_top_up = False - # is a top-up - if validator_index < pre_validator_count: - is_top_up = True - pre_balance = get_balance(state, validator_index) - pre_effective_balance = state.validators[validator_index].effective_balance - - yield 'pre', state - yield 'deposit', deposit - - if not valid: - expect_assertion_error(lambda: spec.process_deposit(state, deposit)) - yield 'post', None - return - - spec.process_deposit(state, deposit) - - yield 'post', state - - if not effective or not bls.KeyValidate(deposit.data.pubkey): - assert len(state.validators) == pre_validator_count - assert len(state.balances) == pre_validator_count - else: - # no balance changes on deposit processing - assert get_balance(state, validator_index) == pre_balance - assert state.validators[validator_index].effective_balance == pre_effective_balance - if is_top_up: - assert len(state.validators) == pre_validator_count - assert len(state.balances) == pre_validator_count - else: - # new validator - assert len(state.validators) == pre_validator_count + 1 - assert len(state.balances) == pre_validator_count + 1 - # new correct balance deposit has been appended - assert len(state.pending_balance_deposits) == pre_pending_deposits + 1 - assert state.pending_balance_deposits[pre_pending_deposits].amount == deposit.data.amount - assert state.pending_balance_deposits[pre_pending_deposits].index == validator_index - assert state.eth1_deposit_index == state.eth1_data.deposit_count - - -def run_deposit_processing_eip7251_with_specific_fork_version( - spec, - state, - fork_version, - valid=True, - effective=True): - validator_index = len(state.validators) - amount = spec.MAX_EFFECTIVE_BALANCE - - pubkey = pubkeys[validator_index] - privkey = privkeys[validator_index] - withdrawal_credentials = spec.BLS_WITHDRAWAL_PREFIX + spec.hash(pubkey)[1:] - - deposit_message = spec.DepositMessage(pubkey=pubkey, withdrawal_credentials=withdrawal_credentials, amount=amount) - domain = spec.compute_domain(domain_type=spec.DOMAIN_DEPOSIT, fork_version=fork_version) - deposit_data = spec.DepositData( - pubkey=pubkey, withdrawal_credentials=withdrawal_credentials, amount=amount, - signature=bls.Sign(privkey, spec.compute_signing_root(deposit_message, domain)) - ) - deposit, root, _ = deposit_from_context(spec, [deposit_data], 0) - - state.eth1_deposit_index = 0 - state.eth1_data.deposit_root = root - state.eth1_data.deposit_count = 1 - - yield from run_deposit_processing_eip7251(spec, state, deposit, validator_index, valid=valid, effective=effective)