Add a negative test for inactive validator for withdrawal request (#3945)

This commit is contained in:
terence 2024-10-02 05:45:23 -07:00 committed by GitHub
parent 21179dd6e4
commit a6294c6bd0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -850,6 +850,36 @@ def test_full_exit_request_has_partial_withdrawal(spec, state):
spec, state, withdrawal_request, success=False spec, state, withdrawal_request, success=False
) )
@with_electra_and_later
@spec_state_test
def test_incorrect_inactive_validator(spec, state):
rng = random.Random(1361)
# move state forward SHARD_COMMITTEE_PERIOD epochs to allow for exit
state.slot += spec.config.SHARD_COMMITTEE_PERIOD * spec.SLOTS_PER_EPOCH
current_epoch = spec.get_current_epoch(state)
validator_index = rng.choice(spec.get_active_validator_indices(state, current_epoch))
validator_pubkey = state.validators[validator_index].pubkey
address = b"\x22" * 20
incorrect_address = b"\x33" * 20
set_eth1_withdrawal_credential_with_balance(
spec, state, validator_index, address=address
)
withdrawal_request = spec.WithdrawalRequest(
source_address=incorrect_address,
validator_pubkey=validator_pubkey,
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
)
# set validator as not yet activated
state.validators[validator_index].activation_epoch = spec.FAR_FUTURE_EPOCH
assert not spec.is_active_validator(state.validators[validator_index], current_epoch)
yield from run_withdrawal_request_processing(
spec, state, withdrawal_request, success=False
)
# #
# Run processing # Run processing
# #