diff --git a/beacon_chain/attestation_pool.nim b/beacon_chain/attestation_pool.nim index eed280a12..dfe4ad9fa 100644 --- a/beacon_chain/attestation_pool.nim +++ b/beacon_chain/attestation_pool.nim @@ -351,13 +351,19 @@ proc getAttestationsForBlock*(pool: var AttestationPool, cache: var StateCache): seq[Attestation] = ## Retrieve attestations that may be added to a new block at the slot of the ## given state - let newBlockSlot = state.slot + let newBlockSlot = state.slot.uint64 var attestations: seq[AttestationEntry] pool.updateAttestationsCache(state) - for i in max(1, newBlockSlot.int64 - ATTESTATION_LOOKBACK.int64) .. - newBlockSlot.int64: + # Consider attestations from the current slot and ranging back up to + # ATTESTATION_LOOKBACK slots, excluding the special genesis slot. As + # unsigned subtraction (mostly avoided in this codebase, partly as a + # consequence) will otherwise wrap through zero, clamp value which's + # subtracted so that slots through ATTESTATION_LOOKBACK don't do so. + for i in max( + 1'u64, newBlockSlot - min(newBlockSlot, ATTESTATION_LOOKBACK)) .. + newBlockSlot: let maybeSlotData = getAttestationsForSlot(pool, i.Slot) if maybeSlotData.isSome: insert(attestations, maybeSlotData.get.attestations) diff --git a/beacon_chain/validators/validator_duties.nim b/beacon_chain/validators/validator_duties.nim index be340acc8..6816bee40 100644 --- a/beacon_chain/validators/validator_duties.nim +++ b/beacon_chain/validators/validator_duties.nim @@ -583,8 +583,7 @@ proc updateValidatorMetrics*(node: BeaconNode) = if i < 64: attached_validator_balance.set( - min(balance, int64.high.uint64).int64, - labelValues = [shortLog(v.pubkey)]) + balance.toGaugeValue, labelValues = [shortLog(v.pubkey)]) else: inc i total += balance