use correct `INACTIVITY_SCORE_RECOVERY_RATE` if overridden from default (#6091)

When a config defines a different `INACTIVITY_SCORE_RECOVERY_RATE` than
the default, `process_inactivity_updates` uses an incorrect rate ever
since #2710 when `INACTIVITY_SCORE_RECOVERY_RATE` became configurable.
This commit is contained in:
Etan Kissling 2024-03-17 13:32:30 +01:00 committed by GitHub
parent 4aea780320
commit ef2411e1a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 7 deletions

View File

@ -65,10 +65,6 @@ const
CURRENT_SYNC_COMMITTEE_GINDEX* = 54.GeneralizedIndex # current_sync_committee
NEXT_SYNC_COMMITTEE_GINDEX* = 55.GeneralizedIndex # next_sync_committee
# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#inactivity-penalties
INACTIVITY_SCORE_BIAS* = 4
INACTIVITY_SCORE_RECOVERY_RATE* = 16
SYNC_SUBCOMMITTEE_SIZE* = SYNC_COMMITTEE_SIZE div SYNC_COMMITTEE_SUBNET_COUNT
# "Note: The sum of the weights equal WEIGHT_DENOMINATOR."

View File

@ -1077,9 +1077,11 @@ func process_sync_committee_updates*(
# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#inactivity-scores
template compute_inactivity_update(
cfg: RuntimeConfig,
state: altair.BeaconState | bellatrix.BeaconState | capella.BeaconState |
deneb.BeaconState | electra.BeaconState,
info: altair.EpochInfo, pre_inactivity_score: Gwei): Gwei =
info: altair.EpochInfo,
pre_inactivity_score: Gwei): Gwei =
let previous_epoch = get_previous_epoch(state) # get_eligible_validator_indices()
# Increase the inactivity score of inactive validators
@ -1094,7 +1096,8 @@ template compute_inactivity_update(
# Decrease the inactivity score of all eligible validators during a
# leak-free epoch
if not_in_inactivity_leak:
inactivity_score -= min(INACTIVITY_SCORE_RECOVERY_RATE.uint64, inactivity_score)
inactivity_score -=
min(cfg.INACTIVITY_SCORE_RECOVERY_RATE, inactivity_score)
inactivity_score
# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#inactivity-scores
@ -1118,7 +1121,7 @@ func process_inactivity_updates*(
let
pre_inactivity_score = state.inactivity_scores.asSeq()[index]
inactivity_score =
compute_inactivity_update(state, info, pre_inactivity_score)
compute_inactivity_update(cfg, state, info, pre_inactivity_score)
# Most inactivity scores remain at 0 - avoid invalidating cache
if pre_inactivity_score != inactivity_score: