diff --git a/specs/capella/beacon-chain.md b/specs/capella/beacon-chain.md index 09d568f18..3b6dc4453 100644 --- a/specs/capella/beacon-chain.md +++ b/specs/capella/beacon-chain.md @@ -110,6 +110,7 @@ We define the following Python custom types for type hinting and readability: ```python class Withdrawal(Container): index: WithdrawalIndex + validator_index: ValidatorIndex address: ExecutionAddress amount: Gwei ``` @@ -258,6 +259,7 @@ def withdraw_balance(state: BeaconState, validator_index: ValidatorIndex, amount # Create a corresponding withdrawal receipt withdrawal = Withdrawal( index=state.next_withdrawal_index, + validator_index=validator_index, address=ExecutionAddress(state.validators[validator_index].withdrawal_credentials[12:]), amount=amount, ) 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 4932bc60d..9bf70b56d 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 @@ -9,10 +9,11 @@ from eth2spec.test.helpers.state import next_slot def prepare_withdrawal_queue(spec, state, num_withdrawals): pre_queue_len = len(state.withdrawal_queue) - + validator_len = len(state.validators) for i in range(num_withdrawals): withdrawal = spec.Withdrawal( index=i + 5, + validator_index=(i + 1000) % validator_len, address=b'\x42' * 20, amount=200000 + i, ) @@ -110,6 +111,7 @@ def test_fail_empty_queue_non_empty_withdrawals(spec, state): execution_payload = build_empty_execution_payload(spec, state) withdrawal = spec.Withdrawal( index=0, + validator_index=0, address=b'\x30' * 20, amount=420, )