bugfix: voluntary exit processing in EIP-7251
This commit is contained in:
parent
a80a777589
commit
b5d7bd0a8a
|
@ -1051,12 +1051,12 @@ def process_voluntary_exit(state: BeaconState, signed_voluntary_exit: SignedVolu
|
||||||
assert get_current_epoch(state) >= voluntary_exit.epoch
|
assert get_current_epoch(state) >= voluntary_exit.epoch
|
||||||
# Verify the validator has been active long enough
|
# Verify the validator has been active long enough
|
||||||
assert get_current_epoch(state) >= validator.activation_epoch + SHARD_COMMITTEE_PERIOD
|
assert get_current_epoch(state) >= validator.activation_epoch + SHARD_COMMITTEE_PERIOD
|
||||||
# Verify signature
|
|
||||||
domain = get_domain(state, DOMAIN_VOLUNTARY_EXIT, voluntary_exit.epoch)
|
|
||||||
signing_root = compute_signing_root(voluntary_exit, domain)
|
|
||||||
assert bls.Verify(validator.pubkey, signing_root, signed_voluntary_exit.signature)
|
|
||||||
# Only exit validator if it has no pending withdrawals in the queue
|
# Only exit validator if it has no pending withdrawals in the queue
|
||||||
assert get_pending_balance_to_withdraw(state, voluntary_exit.validator_index) == 0 # [New in EIP7251]
|
assert get_pending_balance_to_withdraw(state, voluntary_exit.validator_index) == 0 # [New in EIP7251]
|
||||||
|
# Verify signature
|
||||||
|
domain = compute_domain(DOMAIN_VOLUNTARY_EXIT, CAPELLA_FORK_VERSION, state.genesis_validators_root)
|
||||||
|
signing_root = compute_signing_root(voluntary_exit, domain)
|
||||||
|
assert bls.Verify(validator.pubkey, signing_root, signed_voluntary_exit.signature)
|
||||||
# Initiate exit
|
# Initiate exit
|
||||||
initiate_validator_exit(state, voluntary_exit.validator_index)
|
initiate_validator_exit(state, voluntary_exit.validator_index)
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue