@lodestar/validator 1.35.0-dev.8ea34e52ba → 1.35.0-dev.955e9f89ed

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/lib/repositories/metaDataRepository.js +3 -4
  2. package/lib/repositories/metaDataRepository.js.map +1 -1
  3. package/lib/services/attestation.js +44 -53
  4. package/lib/services/attestation.js.map +1 -1
  5. package/lib/services/attestationDuties.js +98 -104
  6. package/lib/services/attestationDuties.js.map +1 -1
  7. package/lib/services/block.js +56 -64
  8. package/lib/services/block.js.map +1 -1
  9. package/lib/services/blockDuties.js +23 -31
  10. package/lib/services/blockDuties.js.map +1 -1
  11. package/lib/services/chainHeaderTracker.js +27 -30
  12. package/lib/services/chainHeaderTracker.js.map +1 -1
  13. package/lib/services/doppelgangerService.js +45 -52
  14. package/lib/services/doppelgangerService.js.map +1 -1
  15. package/lib/services/indices.js +5 -8
  16. package/lib/services/indices.js.map +1 -1
  17. package/lib/services/syncCommittee.js +49 -60
  18. package/lib/services/syncCommittee.js.map +1 -1
  19. package/lib/services/syncCommitteeDuties.js +23 -28
  20. package/lib/services/syncCommitteeDuties.js.map +1 -1
  21. package/lib/services/syncingStatusTracker.js +27 -32
  22. package/lib/services/syncingStatusTracker.js.map +1 -1
  23. package/lib/services/validatorStore.js +3 -9
  24. package/lib/services/validatorStore.js.map +1 -1
  25. package/lib/slashingProtection/attestation/attestationByTargetRepository.js +3 -7
  26. package/lib/slashingProtection/attestation/attestationByTargetRepository.js.map +1 -1
  27. package/lib/slashingProtection/attestation/attestationLowerBoundRepository.js +3 -5
  28. package/lib/slashingProtection/attestation/attestationLowerBoundRepository.js.map +1 -1
  29. package/lib/slashingProtection/attestation/index.js +0 -3
  30. package/lib/slashingProtection/attestation/index.js.map +1 -1
  31. package/lib/slashingProtection/block/blockBySlotRepository.js +3 -7
  32. package/lib/slashingProtection/block/blockBySlotRepository.js.map +1 -1
  33. package/lib/slashingProtection/block/index.js +0 -1
  34. package/lib/slashingProtection/block/index.js.map +1 -1
  35. package/lib/slashingProtection/index.js +0 -3
  36. package/lib/slashingProtection/index.js.map +1 -1
  37. package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.js +0 -8
  38. package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.js.map +1 -1
  39. package/lib/slashingProtection/minMaxSurround/minMaxSurround.js +0 -2
  40. package/lib/slashingProtection/minMaxSurround/minMaxSurround.js.map +1 -1
  41. package/lib/slashingProtection/utils.d.ts +1 -1
  42. package/lib/util/clock.js +1 -5
  43. package/lib/util/clock.js.map +1 -1
  44. package/lib/validator.js +0 -15
  45. package/lib/validator.js.map +1 -1
  46. package/package.json +10 -10
@@ -7,12 +7,11 @@ const GENESIS_TIME = Buffer.from("GENESIS_TIME");
7
7
  * Store MetaData of validator.
8
8
  */
9
9
  export class MetaDataRepository {
10
- db;
11
- bucket = Bucket.validator_metaData;
12
- bucketId = getBucketNameByValue(this.bucket);
13
- dbReqOpts = { bucketId: this.bucketId };
14
10
  constructor(db) {
15
11
  this.db = db;
12
+ this.bucket = Bucket.validator_metaData;
13
+ this.bucketId = getBucketNameByValue(this.bucket);
14
+ this.dbReqOpts = { bucketId: this.bucketId };
16
15
  this.dbReqOpts = { bucketId: this.bucketId };
17
16
  }
18
17
  async getGenesisValidatorsRoot() {
@@ -1 +1 @@
1
- {"version":3,"file":"metaDataRepository.js","sourceRoot":"","sources":["../../src/repositories/metaDataRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAC,MAAM,cAAc,CAAC;AAElD,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,MAAM,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAG3D,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACvE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAMP;IALZ,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAE5B,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,GAAc,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;IAElE,YAAsB,EAAuC;QAAvC,OAAE,GAAF,EAAE,CAAqC;QAC3D,IAAI,CAAC,SAAS,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,qBAA2B;QACxD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAsB;QACzC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxG,CAAC;IAEO,SAAS,CAAC,GAAe;QAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"metaDataRepository.js","sourceRoot":"","sources":["../../src/repositories/metaDataRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAC,MAAM,cAAc,CAAC;AAElD,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,MAAM,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAG3D,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACvE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAM7B,YAAsB,EAAuC;QAAvC,OAAE,GAAF,EAAE,CAAqC;QALnD,WAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAE5B,aAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,cAAS,GAAc,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QAGhE,IAAI,CAAC,SAAS,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,qBAA2B;QACxD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAsB;QACzC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxG,CAAC;IAEO,SAAS,CAAC,GAAe;QAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -16,15 +16,6 @@ const DEFAULT_AFTER_BLOCK_DELAY_SLOT_FRACTION = 0;
16
16
  * Service that sets up and handles validator attester duties.
17
17
  */
18
18
  export class AttestationService {
19
- logger;
20
- api;
21
- clock;
22
- validatorStore;
23
- emitter;
24
- metrics;
25
- config;
26
- opts;
27
- dutiesService;
28
19
  constructor(logger, api, clock, validatorStore, emitter, chainHeadTracker, syncingStatusTracker, metrics, config, opts) {
29
20
  this.logger = logger;
30
21
  this.api = api;
@@ -34,6 +25,50 @@ export class AttestationService {
34
25
  this.metrics = metrics;
35
26
  this.config = config;
36
27
  this.opts = opts;
28
+ this.runAttestationTasks = async (slot, signal) => {
29
+ // Fetch info first so a potential delay is absorbed by the sleep() below
30
+ const duties = this.dutiesService.getDutiesAtSlot(slot);
31
+ if (duties.length === 0) {
32
+ return;
33
+ }
34
+ if (this.opts?.distributedAggregationSelection) {
35
+ // Validator in distributed cluster only has a key share, not the full private key.
36
+ // The partial selection proofs must be exchanged for combined selection proofs by
37
+ // calling submitBeaconCommitteeSelections on the distributed validator middleware client.
38
+ // This will run in parallel to other attestation tasks but must be finished before starting
39
+ // attestation aggregation as it is required to correctly determine if validator is aggregator
40
+ // and to produce a AggregateAndProof that can be threshold aggregated by the middleware client.
41
+ this.runDistributedAggregationSelectionTasks(duties, slot, signal).catch((e) => this.logger.error("Error on attestation aggregation selection", { slot }, e));
42
+ }
43
+ // A validator should create and broadcast the attestation to the associated attestation subnet when either
44
+ // (a) the validator has received a valid block from the expected block proposer for the assigned slot or
45
+ // (b) one-third of the slot has transpired (SECONDS_PER_SLOT / 3 seconds after the start of slot) -- whichever comes first.
46
+ await Promise.race([sleep(this.clock.msToSlot(slot + 1 / 3), signal), this.emitter.waitForBlockSlot(slot)]);
47
+ this.metrics?.attesterStepCallProduceAttestation.observe(this.clock.secFromSlot(slot + 1 / 3));
48
+ // Beacon node's endpoint produceAttestationData return data is not dependent on committeeIndex.
49
+ // Produce a single attestation for all committees and submit unaggregated attestations in one go.
50
+ try {
51
+ // Produce a single attestation for all committees, and clone mutate before signing
52
+ const attestationNoCommittee = await this.produceAttestation(0, slot);
53
+ // Step 1. Mutate, and sign `Attestation` for each validator. Then publish all `Attestations` in one go
54
+ await this.signAndPublishAttestations(slot, attestationNoCommittee, duties);
55
+ // Step 2. after all attestations are submitted, make an aggregate.
56
+ // First, wait until the `aggregation_production_instant` (2/3rds of the way through the slot)
57
+ await sleep(this.clock.msToSlot(slot + 2 / 3), signal);
58
+ this.metrics?.attesterStepCallProduceAggregate.observe(this.clock.secFromSlot(slot + 2 / 3));
59
+ const dutiesByCommitteeIndex = groupAttDutiesByCommitteeIndex(duties);
60
+ const isPostElectra = this.config.getForkSeq(slot) >= ForkSeq.electra;
61
+ // Then download, sign and publish a `SignedAggregateAndProof` for each
62
+ // validator that is elected to aggregate for this `slot` and `committeeIndex`.
63
+ await Promise.all(Array.from(dutiesByCommitteeIndex.entries()).map(([index, dutiesSameCommittee]) => {
64
+ const attestationData = { ...attestationNoCommittee, index: isPostElectra ? 0 : index };
65
+ return this.produceAndPublishAggregates(attestationData, index, dutiesSameCommittee);
66
+ }));
67
+ }
68
+ catch (e) {
69
+ this.logger.error("Error on attestation routine", { slot }, e);
70
+ }
71
+ };
37
72
  this.dutiesService = new AttestationDutiesService(logger, api, clock, validatorStore, chainHeadTracker, syncingStatusTracker, metrics, {
38
73
  distributedAggregationSelection: opts?.distributedAggregationSelection,
39
74
  });
@@ -43,50 +78,6 @@ export class AttestationService {
43
78
  removeDutiesForKey(pubkey) {
44
79
  this.dutiesService.removeDutiesForKey(pubkey);
45
80
  }
46
- runAttestationTasks = async (slot, signal) => {
47
- // Fetch info first so a potential delay is absorbed by the sleep() below
48
- const duties = this.dutiesService.getDutiesAtSlot(slot);
49
- if (duties.length === 0) {
50
- return;
51
- }
52
- if (this.opts?.distributedAggregationSelection) {
53
- // Validator in distributed cluster only has a key share, not the full private key.
54
- // The partial selection proofs must be exchanged for combined selection proofs by
55
- // calling submitBeaconCommitteeSelections on the distributed validator middleware client.
56
- // This will run in parallel to other attestation tasks but must be finished before starting
57
- // attestation aggregation as it is required to correctly determine if validator is aggregator
58
- // and to produce a AggregateAndProof that can be threshold aggregated by the middleware client.
59
- this.runDistributedAggregationSelectionTasks(duties, slot, signal).catch((e) => this.logger.error("Error on attestation aggregation selection", { slot }, e));
60
- }
61
- // A validator should create and broadcast the attestation to the associated attestation subnet when either
62
- // (a) the validator has received a valid block from the expected block proposer for the assigned slot or
63
- // (b) one-third of the slot has transpired (SECONDS_PER_SLOT / 3 seconds after the start of slot) -- whichever comes first.
64
- await Promise.race([sleep(this.clock.msToSlot(slot + 1 / 3), signal), this.emitter.waitForBlockSlot(slot)]);
65
- this.metrics?.attesterStepCallProduceAttestation.observe(this.clock.secFromSlot(slot + 1 / 3));
66
- // Beacon node's endpoint produceAttestationData return data is not dependent on committeeIndex.
67
- // Produce a single attestation for all committees and submit unaggregated attestations in one go.
68
- try {
69
- // Produce a single attestation for all committees, and clone mutate before signing
70
- const attestationNoCommittee = await this.produceAttestation(0, slot);
71
- // Step 1. Mutate, and sign `Attestation` for each validator. Then publish all `Attestations` in one go
72
- await this.signAndPublishAttestations(slot, attestationNoCommittee, duties);
73
- // Step 2. after all attestations are submitted, make an aggregate.
74
- // First, wait until the `aggregation_production_instant` (2/3rds of the way through the slot)
75
- await sleep(this.clock.msToSlot(slot + 2 / 3), signal);
76
- this.metrics?.attesterStepCallProduceAggregate.observe(this.clock.secFromSlot(slot + 2 / 3));
77
- const dutiesByCommitteeIndex = groupAttDutiesByCommitteeIndex(duties);
78
- const isPostElectra = this.config.getForkSeq(slot) >= ForkSeq.electra;
79
- // Then download, sign and publish a `SignedAggregateAndProof` for each
80
- // validator that is elected to aggregate for this `slot` and `committeeIndex`.
81
- await Promise.all(Array.from(dutiesByCommitteeIndex.entries()).map(([index, dutiesSameCommittee]) => {
82
- const attestationData = { ...attestationNoCommittee, index: isPostElectra ? 0 : index };
83
- return this.produceAndPublishAggregates(attestationData, index, dutiesSameCommittee);
84
- }));
85
- }
86
- catch (e) {
87
- this.logger.error("Error on attestation routine", { slot }, e);
88
- }
89
- };
90
81
  /**
91
82
  * Performs the first step of the attesting process: downloading one `Attestation` object.
92
83
  * Beacon node's endpoint produceAttestationData return data is not dependent on committeeIndex.
@@ -1 +1 @@
1
- {"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../src/services/attestation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../src/services/attestation.ts"],"names":[],"mappings":"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"}
@@ -12,19 +12,6 @@ const HISTORICAL_DUTIES_EPOCHS = 2;
12
12
  **/
13
13
  const SUBSCRIPTIONS_PER_REQUEST = 8738;
14
14
  export class AttestationDutiesService {
15
- logger;
16
- api;
17
- clock;
18
- validatorStore;
19
- metrics;
20
- opts;
21
- /** Maps a validator public key to their duties for each epoch */
22
- dutiesByIndexByEpoch = new Map();
23
- /**
24
- * We may receive new dependentRoot of an epoch but it's not the last slot of epoch
25
- * so we have to wait for getting close to the next epoch to redownload new attesterDuties.
26
- */
27
- pendingDependentRootByEpoch = new Map();
28
15
  constructor(logger, api, clock, validatorStore, chainHeadTracker, syncingStatusTracker, metrics, opts) {
29
16
  this.logger = logger;
30
17
  this.api = api;
@@ -32,6 +19,104 @@ export class AttestationDutiesService {
32
19
  this.validatorStore = validatorStore;
33
20
  this.metrics = metrics;
34
21
  this.opts = opts;
22
+ /** Maps a validator public key to their duties for each epoch */
23
+ this.dutiesByIndexByEpoch = new Map();
24
+ /**
25
+ * We may receive new dependentRoot of an epoch but it's not the last slot of epoch
26
+ * so we have to wait for getting close to the next epoch to redownload new attesterDuties.
27
+ */
28
+ this.pendingDependentRootByEpoch = new Map();
29
+ /**
30
+ * If a reorg dependent root comes at a slot other than last slot of epoch
31
+ * just update this.pendingDependentRootByEpoch() and process here
32
+ */
33
+ this.prepareForNextEpoch = async (slot, signal) => {
34
+ // only interested in last slot of epoch
35
+ if ((slot + 1) % SLOTS_PER_EPOCH !== 0) {
36
+ return;
37
+ }
38
+ // during the 1 / 3 of epoch, last block of epoch may come
39
+ await sleep(this.clock.msToSlot(slot + 1 / 3), signal);
40
+ const nextEpoch = computeEpochAtSlot(slot) + 1;
41
+ const dependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
42
+ const pendingDependentRoot = this.pendingDependentRootByEpoch.get(nextEpoch);
43
+ if (dependentRoot && pendingDependentRoot && dependentRoot !== pendingDependentRoot) {
44
+ // this happens when pendingDependentRoot is not the last block of an epoch
45
+ this.logger.info("Redownload attester duties when it's close to epoch boundary", { nextEpoch, slot });
46
+ await this.handleAttesterDutiesReorg(nextEpoch, slot, dependentRoot, pendingDependentRoot);
47
+ }
48
+ };
49
+ this.runDutiesTasks = async (epoch) => {
50
+ await Promise.all([
51
+ // Run pollBeaconAttesters immediately for all known local indices
52
+ this.pollBeaconAttesters(epoch, this.validatorStore.getAllLocalIndices()).catch((e) => {
53
+ this.logger.error("Error on poll attesters", { epoch }, e);
54
+ }),
55
+ // At the same time fetch any remaining unknown validator indices, then poll duties for those newIndices only
56
+ this.validatorStore
57
+ .pollValidatorIndices()
58
+ .then((newIndices) => this.pollBeaconAttesters(epoch, newIndices))
59
+ .catch((e) => {
60
+ this.logger.error("Error on poll indices and attesters", { epoch }, e);
61
+ }),
62
+ ]);
63
+ // After both, prune
64
+ this.pruneOldDuties(epoch);
65
+ };
66
+ /**
67
+ * attester duties may be reorged due to 2 scenarios:
68
+ * 1. node is syncing (for nextEpoch duties)
69
+ * 2. node is reorged
70
+ * previousDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)
71
+ * => dependent root of current epoch
72
+ * currentDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)
73
+ * => dependent root of next epoch
74
+ */
75
+ this.onNewHead = async ({ slot, head, previousDutyDependentRoot, currentDutyDependentRoot, }) => {
76
+ const currentEpoch = computeEpochAtSlot(slot);
77
+ const nextEpoch = currentEpoch + 1;
78
+ const nextTwoEpoch = currentEpoch + 2;
79
+ const nextTwoEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch + 2)?.dependentRoot;
80
+ // this may happen ONLY when node is syncing
81
+ // it's safe to get attester duties at epoch n + 1 thanks to nextEpochShuffling cache
82
+ // but it's an issue to request attester duties for epoch n + 2 as dependent root keeps changing while node is syncing
83
+ // see https://github.com/ChainSafe/lodestar/issues/3211
84
+ if (nextTwoEpochDependentRoot && head !== nextTwoEpochDependentRoot) {
85
+ // last slot of epoch, we're sure it's the correct dependent root
86
+ if ((slot + 1) % SLOTS_PER_EPOCH === 0) {
87
+ this.logger.info("Next 2 epoch attester duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
88
+ await this.handleAttesterDutiesReorg(nextTwoEpoch, slot, nextTwoEpochDependentRoot, head);
89
+ }
90
+ else {
91
+ this.logger.debug("Potential next 2 epoch attester duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
92
+ // node may send adjacent onHead events while it's syncing
93
+ // wait for getting close to next epoch to make sure the dependRoot
94
+ this.pendingDependentRootByEpoch.set(nextTwoEpoch, head);
95
+ }
96
+ }
97
+ // dependent root for next epoch changed
98
+ const nextEpochDependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
99
+ if (nextEpochDependentRoot && currentDutyDependentRoot !== nextEpochDependentRoot) {
100
+ this.logger.warn("Potential next epoch attester duties reorg", {
101
+ slot,
102
+ dutyEpoch: nextEpoch,
103
+ priorDependentRoot: nextEpochDependentRoot,
104
+ newDependentRoot: currentDutyDependentRoot,
105
+ });
106
+ await this.handleAttesterDutiesReorg(nextEpoch, slot, nextEpochDependentRoot, currentDutyDependentRoot);
107
+ }
108
+ // dependent root for current epoch changed
109
+ const currentEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch)?.dependentRoot;
110
+ if (currentEpochDependentRoot && currentEpochDependentRoot !== previousDutyDependentRoot) {
111
+ this.logger.warn("Potential current epoch attester duties reorg", {
112
+ slot,
113
+ dutyEpoch: currentEpoch,
114
+ priorDependentRoot: currentEpochDependentRoot,
115
+ newDependentRoot: previousDutyDependentRoot,
116
+ });
117
+ await this.handleAttesterDutiesReorg(currentEpoch, slot, currentEpochDependentRoot, previousDutyDependentRoot);
118
+ }
119
+ };
35
120
  // Running this task every epoch is safe since a re-org of two epochs is very unlikely
36
121
  // TODO: If the re-org event is reliable consider re-running then
37
122
  clock.runEveryEpoch(this.runDutiesTasks);
@@ -94,43 +179,6 @@ export class AttestationDutiesService {
94
179
  }
95
180
  return duties;
96
181
  }
97
- /**
98
- * If a reorg dependent root comes at a slot other than last slot of epoch
99
- * just update this.pendingDependentRootByEpoch() and process here
100
- */
101
- prepareForNextEpoch = async (slot, signal) => {
102
- // only interested in last slot of epoch
103
- if ((slot + 1) % SLOTS_PER_EPOCH !== 0) {
104
- return;
105
- }
106
- // during the 1 / 3 of epoch, last block of epoch may come
107
- await sleep(this.clock.msToSlot(slot + 1 / 3), signal);
108
- const nextEpoch = computeEpochAtSlot(slot) + 1;
109
- const dependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
110
- const pendingDependentRoot = this.pendingDependentRootByEpoch.get(nextEpoch);
111
- if (dependentRoot && pendingDependentRoot && dependentRoot !== pendingDependentRoot) {
112
- // this happens when pendingDependentRoot is not the last block of an epoch
113
- this.logger.info("Redownload attester duties when it's close to epoch boundary", { nextEpoch, slot });
114
- await this.handleAttesterDutiesReorg(nextEpoch, slot, dependentRoot, pendingDependentRoot);
115
- }
116
- };
117
- runDutiesTasks = async (epoch) => {
118
- await Promise.all([
119
- // Run pollBeaconAttesters immediately for all known local indices
120
- this.pollBeaconAttesters(epoch, this.validatorStore.getAllLocalIndices()).catch((e) => {
121
- this.logger.error("Error on poll attesters", { epoch }, e);
122
- }),
123
- // At the same time fetch any remaining unknown validator indices, then poll duties for those newIndices only
124
- this.validatorStore
125
- .pollValidatorIndices()
126
- .then((newIndices) => this.pollBeaconAttesters(epoch, newIndices))
127
- .catch((e) => {
128
- this.logger.error("Error on poll indices and attesters", { epoch }, e);
129
- }),
130
- ]);
131
- // After both, prune
132
- this.pruneOldDuties(epoch);
133
- };
134
182
  /**
135
183
  * Query the beacon node for attestation duties for any known validators.
136
184
  *
@@ -239,60 +287,6 @@ export class AttestationDutiesService {
239
287
  }
240
288
  }
241
289
  }
242
- /**
243
- * attester duties may be reorged due to 2 scenarios:
244
- * 1. node is syncing (for nextEpoch duties)
245
- * 2. node is reorged
246
- * previousDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)
247
- * => dependent root of current epoch
248
- * currentDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)
249
- * => dependent root of next epoch
250
- */
251
- onNewHead = async ({ slot, head, previousDutyDependentRoot, currentDutyDependentRoot, }) => {
252
- const currentEpoch = computeEpochAtSlot(slot);
253
- const nextEpoch = currentEpoch + 1;
254
- const nextTwoEpoch = currentEpoch + 2;
255
- const nextTwoEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch + 2)?.dependentRoot;
256
- // this may happen ONLY when node is syncing
257
- // it's safe to get attester duties at epoch n + 1 thanks to nextEpochShuffling cache
258
- // but it's an issue to request attester duties for epoch n + 2 as dependent root keeps changing while node is syncing
259
- // see https://github.com/ChainSafe/lodestar/issues/3211
260
- if (nextTwoEpochDependentRoot && head !== nextTwoEpochDependentRoot) {
261
- // last slot of epoch, we're sure it's the correct dependent root
262
- if ((slot + 1) % SLOTS_PER_EPOCH === 0) {
263
- this.logger.info("Next 2 epoch attester duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
264
- await this.handleAttesterDutiesReorg(nextTwoEpoch, slot, nextTwoEpochDependentRoot, head);
265
- }
266
- else {
267
- this.logger.debug("Potential next 2 epoch attester duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
268
- // node may send adjacent onHead events while it's syncing
269
- // wait for getting close to next epoch to make sure the dependRoot
270
- this.pendingDependentRootByEpoch.set(nextTwoEpoch, head);
271
- }
272
- }
273
- // dependent root for next epoch changed
274
- const nextEpochDependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
275
- if (nextEpochDependentRoot && currentDutyDependentRoot !== nextEpochDependentRoot) {
276
- this.logger.warn("Potential next epoch attester duties reorg", {
277
- slot,
278
- dutyEpoch: nextEpoch,
279
- priorDependentRoot: nextEpochDependentRoot,
280
- newDependentRoot: currentDutyDependentRoot,
281
- });
282
- await this.handleAttesterDutiesReorg(nextEpoch, slot, nextEpochDependentRoot, currentDutyDependentRoot);
283
- }
284
- // dependent root for current epoch changed
285
- const currentEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch)?.dependentRoot;
286
- if (currentEpochDependentRoot && currentEpochDependentRoot !== previousDutyDependentRoot) {
287
- this.logger.warn("Potential current epoch attester duties reorg", {
288
- slot,
289
- dutyEpoch: currentEpoch,
290
- priorDependentRoot: currentEpochDependentRoot,
291
- newDependentRoot: previousDutyDependentRoot,
292
- });
293
- await this.handleAttesterDutiesReorg(currentEpoch, slot, currentEpochDependentRoot, previousDutyDependentRoot);
294
- }
295
- };
296
290
  async handleAttesterDutiesReorg(dutyEpoch, slot, oldDependentRoot, newDependentRoot) {
297
291
  this.metrics?.attesterDutiesReorg.inc();
298
292
  const logContext = { dutyEpoch, slot, oldDependentRoot, newDependentRoot };
@@ -1 +1 @@
1
- {"version":3,"file":"attestationDuties.js","sourceRoot":"","sources":["../../src/services/attestationDuties.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attestationDuties.js","sourceRoot":"","sources":["../../src/services/attestationDuties.ts"],"names":[],"mappings":"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"}
@@ -6,14 +6,6 @@ import { BlockDutiesService, GENESIS_SLOT } from "./blockDuties.js";
6
6
  * Service that sets up and handles validator block proposal duties.
7
7
  */
8
8
  export class BlockProposingService {
9
- config;
10
- logger;
11
- api;
12
- clock;
13
- validatorStore;
14
- metrics;
15
- opts;
16
- dutiesService;
17
9
  constructor(config, logger, api, clock, validatorStore, metrics, opts) {
18
10
  this.config = config;
19
11
  this.logger = logger;
@@ -22,27 +14,67 @@ export class BlockProposingService {
22
14
  this.validatorStore = validatorStore;
23
15
  this.metrics = metrics;
24
16
  this.opts = opts;
17
+ /**
18
+ * `BlockDutiesService` must call this fn to trigger block creation
19
+ * This function may run more than once at a time, rationale in `BlockDutiesService.pollBeaconProposers`
20
+ */
21
+ this.notifyBlockProductionFn = (slot, proposers) => {
22
+ if (slot <= GENESIS_SLOT) {
23
+ this.logger.debug("Not producing block before or at genesis slot");
24
+ return;
25
+ }
26
+ if (proposers.length > 1) {
27
+ this.logger.warn("Multiple block proposers", { slot, count: proposers.length });
28
+ }
29
+ Promise.all(proposers.map((pubkey) => this.createAndPublishBlock(pubkey, slot))).catch((e) => {
30
+ this.logger.error("Error on block duties", { slot }, e);
31
+ });
32
+ };
33
+ this.publishBlockWrapper = async (signedBlindedBlockOrBlockContents, opts = {}) => {
34
+ if (isBlindedSignedBeaconBlock(signedBlindedBlockOrBlockContents.signedBlock)) {
35
+ (await this.api.beacon.publishBlindedBlockV2({
36
+ signedBlindedBlock: signedBlindedBlockOrBlockContents.signedBlock,
37
+ ...opts,
38
+ })).assertOk();
39
+ }
40
+ else {
41
+ (await this.api.beacon.publishBlockV2({
42
+ signedBlockContents: signedBlindedBlockOrBlockContents,
43
+ ...opts,
44
+ })).assertOk();
45
+ }
46
+ };
47
+ this.produceBlockWrapper = async (_config, slot, randaoReveal, graffiti, builderBoostFactor, { feeRecipient, strictFeeRecipientCheck, blindedLocal }, builderSelection) => {
48
+ const res = await this.api.validator.produceBlockV3({
49
+ slot,
50
+ randaoReveal,
51
+ graffiti,
52
+ skipRandaoVerification: false,
53
+ feeRecipient,
54
+ builderSelection,
55
+ strictFeeRecipientCheck,
56
+ blindedLocal,
57
+ builderBoostFactor,
58
+ });
59
+ const meta = res.meta();
60
+ const debugLogCtx = {
61
+ executionPayloadSource: meta.executionPayloadSource,
62
+ executionPayloadBlinded: meta.executionPayloadBlinded,
63
+ executionPayloadValue: prettyWeiToEth(meta.executionPayloadValue),
64
+ consensusBlockValue: prettyWeiToEth(meta.consensusBlockValue),
65
+ totalBlockValue: prettyWeiToEth(meta.executionPayloadValue + meta.consensusBlockValue),
66
+ // TODO PR: should be used in api call instead of adding in log
67
+ strictFeeRecipientCheck,
68
+ builderSelection,
69
+ api: "produceBlockV3",
70
+ };
71
+ return parseProduceBlockResponse({ data: res.value(), ...meta }, debugLogCtx, builderSelection);
72
+ };
25
73
  this.dutiesService = new BlockDutiesService(config, logger, api, clock, validatorStore, metrics, this.notifyBlockProductionFn);
26
74
  }
27
75
  removeDutiesForKey(pubkey) {
28
76
  this.dutiesService.removeDutiesForKey(pubkey);
29
77
  }
30
- /**
31
- * `BlockDutiesService` must call this fn to trigger block creation
32
- * This function may run more than once at a time, rationale in `BlockDutiesService.pollBeaconProposers`
33
- */
34
- notifyBlockProductionFn = (slot, proposers) => {
35
- if (slot <= GENESIS_SLOT) {
36
- this.logger.debug("Not producing block before or at genesis slot");
37
- return;
38
- }
39
- if (proposers.length > 1) {
40
- this.logger.warn("Multiple block proposers", { slot, count: proposers.length });
41
- }
42
- Promise.all(proposers.map((pubkey) => this.createAndPublishBlock(pubkey, slot))).catch((e) => {
43
- this.logger.error("Error on block duties", { slot }, e);
44
- });
45
- };
46
78
  /** Produce a block at the given slot for pubkey */
47
79
  async createAndPublishBlock(pubkey, slot) {
48
80
  const pubkeyHex = toPubkeyHex(pubkey);
@@ -98,46 +130,6 @@ export class BlockProposingService {
98
130
  this.logger.error("Error proposing block", logCtx, e);
99
131
  }
100
132
  }
101
- publishBlockWrapper = async (signedBlindedBlockOrBlockContents, opts = {}) => {
102
- if (isBlindedSignedBeaconBlock(signedBlindedBlockOrBlockContents.signedBlock)) {
103
- (await this.api.beacon.publishBlindedBlockV2({
104
- signedBlindedBlock: signedBlindedBlockOrBlockContents.signedBlock,
105
- ...opts,
106
- })).assertOk();
107
- }
108
- else {
109
- (await this.api.beacon.publishBlockV2({
110
- signedBlockContents: signedBlindedBlockOrBlockContents,
111
- ...opts,
112
- })).assertOk();
113
- }
114
- };
115
- produceBlockWrapper = async (_config, slot, randaoReveal, graffiti, builderBoostFactor, { feeRecipient, strictFeeRecipientCheck, blindedLocal }, builderSelection) => {
116
- const res = await this.api.validator.produceBlockV3({
117
- slot,
118
- randaoReveal,
119
- graffiti,
120
- skipRandaoVerification: false,
121
- feeRecipient,
122
- builderSelection,
123
- strictFeeRecipientCheck,
124
- blindedLocal,
125
- builderBoostFactor,
126
- });
127
- const meta = res.meta();
128
- const debugLogCtx = {
129
- executionPayloadSource: meta.executionPayloadSource,
130
- executionPayloadBlinded: meta.executionPayloadBlinded,
131
- executionPayloadValue: prettyWeiToEth(meta.executionPayloadValue),
132
- consensusBlockValue: prettyWeiToEth(meta.consensusBlockValue),
133
- totalBlockValue: prettyWeiToEth(meta.executionPayloadValue + meta.consensusBlockValue),
134
- // TODO PR: should be used in api call instead of adding in log
135
- strictFeeRecipientCheck,
136
- builderSelection,
137
- api: "produceBlockV3",
138
- };
139
- return parseProduceBlockResponse({ data: res.value(), ...meta }, debugLogCtx, builderSelection);
140
- };
141
133
  }
142
134
  function parseProduceBlockResponse(response, debugLogCtx, builderSelection) {
143
135
  const executionPayloadSource = response.executionPayloadSource;