Fix two effective_balance bugs
* Initialisation bug: initial `effective_balance` be not greater than `MAX_EFFECTIVE_BALANCE` * Hysteresis bug: do not prevent `effective_balance` to go from `MAX_EFFECTIVE_BALANCE - 1` to `MAX_EFFECTIVE_BALANCE`
This commit is contained in:
parent
2787fea5fe
commit
9dd4b2110a
|
@ -1603,10 +1603,10 @@ def process_final_updates(state: BeaconState) -> None:
|
||||||
state.eth1_data_votes = []
|
state.eth1_data_votes = []
|
||||||
# Update effective balances with hysteresis
|
# Update effective balances with hysteresis
|
||||||
for index, validator in enumerate(state.validator_registry):
|
for index, validator in enumerate(state.validator_registry):
|
||||||
balance = min(state.balances[index], MAX_EFFECTIVE_BALANCE)
|
balance = state.balances[index]
|
||||||
HALF_INCREMENT = EFFECTIVE_BALANCE_INCREMENT // 2
|
HALF_INCREMENT = EFFECTIVE_BALANCE_INCREMENT // 2
|
||||||
if balance < validator.effective_balance or validator.effective_balance + 3 * HALF_INCREMENT < balance:
|
if balance < validator.effective_balance or validator.effective_balance + 3 * HALF_INCREMENT < balance:
|
||||||
validator.effective_balance = balance - balance % EFFECTIVE_BALANCE_INCREMENT
|
validator.effective_balance = min(balance - balance % EFFECTIVE_BALANCE_INCREMENT, MAX_EFFECTIVE_BALANCE)
|
||||||
# Update start shard
|
# Update start shard
|
||||||
state.latest_start_shard = (state.latest_start_shard + get_shard_delta(state, current_epoch)) % SHARD_COUNT
|
state.latest_start_shard = (state.latest_start_shard + get_shard_delta(state, current_epoch)) % SHARD_COUNT
|
||||||
# Set active index root
|
# Set active index root
|
||||||
|
@ -1840,7 +1840,7 @@ def process_deposit(state: BeaconState, deposit: Deposit) -> None:
|
||||||
activation_epoch=FAR_FUTURE_EPOCH,
|
activation_epoch=FAR_FUTURE_EPOCH,
|
||||||
exit_epoch=FAR_FUTURE_EPOCH,
|
exit_epoch=FAR_FUTURE_EPOCH,
|
||||||
withdrawable_epoch=FAR_FUTURE_EPOCH,
|
withdrawable_epoch=FAR_FUTURE_EPOCH,
|
||||||
effective_balance=amount - amount % EFFECTIVE_BALANCE_INCREMENT
|
effective_balance=min(amount - amount % EFFECTIVE_BALANCE_INCREMENT, MAX_EFFECTIVE_BALANCE)
|
||||||
))
|
))
|
||||||
state.balances.append(amount)
|
state.balances.append(amount)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue