Skip to content

Commit 3aa47a7

Browse files
authored
update validator monitor to use fork-aware deadline calculations (#7749)
* update validator monitor to use fork-aware deadline calculations * fix update test_blockchain_dag
1 parent 32039d5 commit 3aa47a7

17 files changed

+63
-56
lines changed

beacon_chain/nimbus_beacon_node.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -932,7 +932,7 @@ proc init*(
932932
# break existing setups
933933
let
934934
validatorMonitor = newClone(ValidatorMonitor.init(
935-
cfg.timeParams,
935+
cfg,
936936
config.validatorMonitorAuto,
937937
config.validatorMonitorTotals.get(
938938
not config.validatorMonitorDetails)))

beacon_chain/trusted_node_sync.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ proc doTrustedNodeSync*(
378378
# we can now load a ChainDAG to start backfilling it
379379
let
380380
validatorMonitor = newClone(
381-
ValidatorMonitor.init(cfg.timeParams, false, false))
381+
ValidatorMonitor.init(cfg, false, false))
382382
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {}, eraPath = eraDir)
383383
backfillSlot = max(dag.backfill.slot, 1.Slot) - 1
384384
horizon = max(dag.horizon, dag.frontfill.valueOr(BlockId()).slot)

beacon_chain/validators/validator_monitor.nim

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ type
194194
summaries: array[2, EpochSummary] # We monitor the current and previous epochs
195195

196196
ValidatorMonitor* = object
197-
timeParams: TimeParams
197+
cfg: RuntimeConfig
198198

199199
epoch: Epoch # The most recent epoch seen in monitoring
200200

@@ -261,10 +261,10 @@ proc addAutoMonitor*(
261261

262262
func init*(
263263
T: type ValidatorMonitor,
264-
timeParams: TimeParams,
264+
cfg: RuntimeConfig,
265265
autoRegister = false,
266266
totals = false): T =
267-
T(timeParams: timeParams, autoRegister: autoRegister, totals: totals)
267+
T(cfg: cfg, autoRegister: autoRegister, totals: totals)
268268

269269
template summaryIdx(epoch: Epoch): int = (epoch.uint64 mod 2).int
270270

@@ -665,7 +665,9 @@ proc registerAttestation*(
665665
attestation: phase0.Attestation | SingleAttestation, idx: ValidatorIndex) =
666666
let
667667
slot = attestation.data.slot
668-
delay = seen_timestamp - slot.attestation_deadline(self.timeParams)
668+
consensusFork = self.cfg.consensusForkAtEpoch(slot.epoch)
669+
delay = seen_timestamp - slot.attestation_deadline(
670+
self.cfg.timeParams, consensusFork)
669671

670672
self.withMonitor(idx):
671673
let id = monitor.id
@@ -690,7 +692,9 @@ proc registerAggregate*(
690692
attesting_indices: openArray[ValidatorIndex]) =
691693
let
692694
slot = aggregate_and_proof.aggregate.data.slot
693-
delay = seen_timestamp - slot.aggregate_deadline(self.timeParams)
695+
consensusFork = self.cfg.consensusForkAtEpoch(slot.epoch)
696+
delay = seen_timestamp - slot.aggregate_deadline(
697+
self.cfg.timeParams, consensusFork)
694698
aggregator_index = aggregate_and_proof.aggregator_index
695699

696700
self.withMonitor(aggregator_index):
@@ -761,7 +765,7 @@ proc registerBeaconBlock*(
761765
let
762766
id = monitor.id
763767
slot = blck.slot
764-
delay = seen_timestamp - slot.block_deadline(self.timeParams)
768+
delay = seen_timestamp - slot.block_deadline(self.cfg.timeParams)
765769

766770
validator_monitor_beacon_block.inc(1, [$src, metricId])
767771
validator_monitor_beacon_block_delay_seconds.observe(
@@ -780,8 +784,9 @@ proc registerSyncCommitteeMessage*(
780784
let
781785
id = monitor.id
782786
slot = sync_committee_message.slot
783-
delay = seen_timestamp -
784-
slot.sync_committee_message_deadline(self.timeParams)
787+
consensusFork = self.cfg.consensusForkAtEpoch(slot.epoch)
788+
delay = seen_timestamp - slot.sync_committee_message_deadline(
789+
self.cfg.timeParams, consensusFork)
785790

786791
validator_monitor_sync_committee_messages.inc(1, [$src, metricId])
787792
validator_monitor_sync_committee_messages_delay_seconds.observe(
@@ -804,7 +809,9 @@ proc registerSyncContribution*(
804809
participants: openArray[ValidatorIndex]) =
805810
let
806811
slot = contribution_and_proof.contribution.slot
807-
delay = seen_timestamp - slot.sync_contribution_deadline(self.timeParams)
812+
consensusFork = self.cfg.consensusForkAtEpoch(slot.epoch)
813+
delay = seen_timestamp - slot.sync_contribution_deadline(
814+
self.cfg.timeParams, consensusFork)
808815

809816
let aggregator_index = contribution_and_proof.aggregator_index
810817
self.withMonitor(aggregator_index):

ncli/ncli_db.nim

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ proc cmdBench(conf: DbConf, cfg: RuntimeConfig) =
239239

240240
echo "Initializing block pool..."
241241
let
242-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
242+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
243243
dag = withTimerRet(timers[tInit]):
244244
ChainDAGRef.init(cfg, db, validatorMonitor, {}, conf.eraDir)
245245

@@ -531,7 +531,7 @@ proc cmdRewindState(conf: DbConf, cfg: RuntimeConfig) =
531531
echo "Initializing block pool..."
532532

533533
let
534-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
534+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
535535
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {}, conf.eraDir)
536536

537537
let bid = dag.getBlockId(fromHex(Eth2Digest, conf.blockRoot)).valueOr:
@@ -569,7 +569,7 @@ proc cmdExportEra(conf: DbConf, cfg: RuntimeConfig) =
569569
tBlocks
570570

571571
let
572-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
572+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
573573
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {}, conf.eraDir)
574574

575575
let tmpState = assignClone(dag.headState)
@@ -751,7 +751,7 @@ proc cmdValidatorPerf(conf: DbConf, cfg: RuntimeConfig) =
751751

752752
echo "# Initializing block pool..."
753753
let
754-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
754+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
755755
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {}, conf.eraDir)
756756

757757
var
@@ -987,7 +987,7 @@ proc cmdValidatorDb(conf: DbConf, cfg: RuntimeConfig) =
987987

988988
echo "Initializing block pool..."
989989
let
990-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
990+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
991991
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {}, conf.eraDir)
992992

993993
let outDb = SqStoreRef.init(conf.outDir, "validatorDb").expect("DB")

research/block_sim.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ cli do(
7777
ChainDAGRef.preInit(db, genesisState[])
7878
let rng = HmacDrbgContext.new()
7979
var
80-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
80+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
8181
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {})
8282
taskpool =
8383
try:

tests/consensus_spec/test_fixture_fork_choice.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ proc initialLoad(
101101

102102
let
103103
cfg = forkedState[].kind.genesisTestRuntimeConfig
104-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
104+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
105105
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {})
106106
fkChoice = newClone(ForkChoice.init(
107107
dag.getFinalizedEpochRef(), dag.finalizedHead.blck))

tests/consensus_spec/test_fixture_light_client_data_collection.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ proc runTest(suiteName, path: string, consensusFork: static ConsensusFork) =
138138
ChainDAGRef.preInit(db, initial_state[])
139139

140140
let
141-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
141+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
142142
dag = ChainDAGRef.init(cfg, db, validatorMonitor, {},
143143
lcDataConfig = LightClientDataConfig(
144144
serve: true, importMode: LightClientDataImportMode.Full))

tests/test_attestation_pool.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ suite "Attestation pool electra processing" & preset():
8383
const TOTAL_COMMITTEES = 2
8484
var
8585
cfg = genesisTestRuntimeConfig(ConsensusFork.Electra)
86-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
86+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
8787
dag = init(
8888
ChainDAGRef, cfg,
8989
cfg.makeTestDB(

tests/test_beacon_chain_db.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ proc getTestStates(
113113
consensusFork: ConsensusFork): seq[ref ForkedHashedBeaconState] =
114114
let
115115
db = cfg.makeTestDB(SLOTS_PER_EPOCH)
116-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
116+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
117117
dag = init(ChainDAGRef, cfg, db, validatorMonitor, {})
118118
var testStates = getTestStates(dag.headState, consensusFork)
119119

@@ -256,7 +256,7 @@ suite "Beacon chain DB" & preset():
256256
block:
257257
var
258258
db = cfg.makeTestDB(SLOTS_PER_EPOCH)
259-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
259+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
260260
dag = init(ChainDAGRef, cfg, db, validatorMonitor, {})
261261
state = ForkedHashedBeaconState.new(
262262
(ref consensusFork.BeaconState)(slot: 10.Slot)[])

tests/test_block_processor.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ suite "Block processor" & preset():
4747
res.FULU_FORK_EPOCH = Epoch(4)
4848
res
4949
db = cfg.makeTestDB(SLOTS_PER_EPOCH)
50-
validatorMonitor = newClone(ValidatorMonitor.init(cfg.timeParams))
50+
validatorMonitor = newClone(ValidatorMonitor.init(cfg))
5151
dag = init(ChainDAGRef, cfg, db, validatorMonitor, {})
5252
taskpool = Taskpool.new()
5353
quarantine = newClone(Quarantine.init(cfg))
@@ -126,7 +126,7 @@ suite "Block processor" & preset():
126126

127127
# check that init also reloads block graph
128128
var
129-
validatorMonitor2 = newClone(ValidatorMonitor.init(cfg.timeParams))
129+
validatorMonitor2 = newClone(ValidatorMonitor.init(cfg))
130130
dag2 = init(ChainDAGRef, cfg, db, validatorMonitor2, {})
131131

132132
check:

0 commit comments

Comments
 (0)