@lodestar/validator 1.35.0-dev.f80d2d52da → 1.35.0-dev.fcf8d024ea
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.
- package/lib/buckets.d.ts.map +1 -0
- package/lib/defaults.d.ts.map +1 -0
- package/lib/genesis.d.ts.map +1 -0
- package/lib/index.d.ts +7 -7
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -5
- package/lib/index.js.map +1 -1
- package/lib/metrics.d.ts.map +1 -0
- package/lib/metrics.js +14 -14
- package/lib/metrics.js.map +1 -1
- package/lib/repositories/index.d.ts.map +1 -0
- package/lib/repositories/metaDataRepository.d.ts.map +1 -0
- package/lib/repositories/metaDataRepository.js +4 -3
- package/lib/repositories/metaDataRepository.js.map +1 -1
- package/lib/services/attestation.d.ts.map +1 -0
- package/lib/services/attestation.js +77 -60
- package/lib/services/attestation.js.map +1 -1
- package/lib/services/attestationDuties.d.ts.map +1 -0
- package/lib/services/attestationDuties.js +105 -98
- package/lib/services/attestationDuties.js.map +1 -1
- package/lib/services/block.d.ts.map +1 -0
- package/lib/services/block.js +64 -56
- package/lib/services/block.js.map +1 -1
- package/lib/services/blockDuties.d.ts +2 -2
- package/lib/services/blockDuties.d.ts.map +1 -0
- package/lib/services/blockDuties.js +35 -26
- package/lib/services/blockDuties.js.map +1 -1
- package/lib/services/chainHeaderTracker.d.ts.map +1 -0
- package/lib/services/chainHeaderTracker.js +30 -27
- package/lib/services/chainHeaderTracker.js.map +1 -1
- package/lib/services/doppelgangerService.d.ts.map +1 -0
- package/lib/services/doppelgangerService.js +52 -45
- package/lib/services/doppelgangerService.js.map +1 -1
- package/lib/services/emitter.d.ts +1 -1
- package/lib/services/emitter.d.ts.map +1 -0
- package/lib/services/externalSignerSync.d.ts.map +1 -0
- package/lib/services/externalSignerSync.js.map +1 -1
- package/lib/services/indices.d.ts.map +1 -0
- package/lib/services/indices.js +8 -5
- package/lib/services/indices.js.map +1 -1
- package/lib/services/prepareBeaconProposer.d.ts.map +1 -0
- package/lib/services/prepareBeaconProposer.js.map +1 -1
- package/lib/services/syncCommittee.d.ts.map +1 -0
- package/lib/services/syncCommittee.js +80 -61
- package/lib/services/syncCommittee.js.map +1 -1
- package/lib/services/syncCommitteeDuties.d.ts.map +1 -0
- package/lib/services/syncCommitteeDuties.js +28 -23
- package/lib/services/syncCommitteeDuties.js.map +1 -1
- package/lib/services/syncingStatusTracker.d.ts.map +1 -0
- package/lib/services/syncingStatusTracker.js +32 -27
- package/lib/services/syncingStatusTracker.js.map +1 -1
- package/lib/services/utils.d.ts.map +1 -0
- package/lib/services/validatorStore.d.ts.map +1 -0
- package/lib/services/validatorStore.js +9 -3
- package/lib/services/validatorStore.js.map +1 -1
- package/lib/slashingProtection/attestation/attestationByTargetRepository.d.ts.map +1 -0
- package/lib/slashingProtection/attestation/attestationByTargetRepository.js +7 -3
- package/lib/slashingProtection/attestation/attestationByTargetRepository.js.map +1 -1
- package/lib/slashingProtection/attestation/attestationLowerBoundRepository.d.ts.map +1 -0
- package/lib/slashingProtection/attestation/attestationLowerBoundRepository.js +5 -3
- package/lib/slashingProtection/attestation/attestationLowerBoundRepository.js.map +1 -1
- package/lib/slashingProtection/attestation/errors.d.ts.map +1 -0
- package/lib/slashingProtection/attestation/index.d.ts.map +1 -0
- package/lib/slashingProtection/attestation/index.js +3 -0
- package/lib/slashingProtection/attestation/index.js.map +1 -1
- package/lib/slashingProtection/block/blockBySlotRepository.d.ts.map +1 -0
- package/lib/slashingProtection/block/blockBySlotRepository.js +7 -3
- package/lib/slashingProtection/block/blockBySlotRepository.js.map +1 -1
- package/lib/slashingProtection/block/errors.d.ts.map +1 -0
- package/lib/slashingProtection/block/index.d.ts.map +1 -0
- package/lib/slashingProtection/block/index.js +1 -0
- package/lib/slashingProtection/block/index.js.map +1 -1
- package/lib/slashingProtection/index.d.ts +1 -1
- package/lib/slashingProtection/index.d.ts.map +1 -0
- package/lib/slashingProtection/index.js +3 -0
- package/lib/slashingProtection/index.js.map +1 -1
- package/lib/slashingProtection/interchange/errors.d.ts.map +1 -0
- package/lib/slashingProtection/interchange/formats/completeV4.d.ts.map +1 -0
- package/lib/slashingProtection/interchange/formats/index.d.ts.map +1 -0
- package/lib/slashingProtection/interchange/formats/v5.d.ts.map +1 -0
- package/lib/slashingProtection/interchange/index.d.ts.map +1 -0
- package/lib/slashingProtection/interchange/parseInterchange.d.ts.map +1 -0
- package/lib/slashingProtection/interchange/serializeInterchange.d.ts.map +1 -0
- package/lib/slashingProtection/interchange/types.d.ts.map +1 -0
- package/lib/slashingProtection/interface.d.ts.map +1 -0
- package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.d.ts.map +1 -0
- package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.js +8 -0
- package/lib/slashingProtection/minMaxSurround/distanceStoreRepository.js.map +1 -1
- package/lib/slashingProtection/minMaxSurround/errors.d.ts.map +1 -0
- package/lib/slashingProtection/minMaxSurround/index.d.ts.map +1 -0
- package/lib/slashingProtection/minMaxSurround/interface.d.ts.map +1 -0
- package/lib/slashingProtection/minMaxSurround/minMaxSurround.d.ts.map +1 -0
- package/lib/slashingProtection/minMaxSurround/minMaxSurround.js +2 -0
- package/lib/slashingProtection/minMaxSurround/minMaxSurround.js.map +1 -1
- package/lib/slashingProtection/types.d.ts.map +1 -0
- package/lib/slashingProtection/utils.d.ts +1 -1
- package/lib/slashingProtection/utils.d.ts.map +1 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/util/batch.d.ts.map +1 -0
- package/lib/util/clock.d.ts +3 -0
- package/lib/util/clock.d.ts.map +1 -0
- package/lib/util/clock.js +9 -1
- package/lib/util/clock.js.map +1 -1
- package/lib/util/difference.d.ts.map +1 -0
- package/lib/util/externalSignerClient.d.ts.map +1 -0
- package/lib/util/format.d.ts.map +1 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/logger.d.ts.map +1 -0
- package/lib/util/params.d.ts.map +1 -0
- package/lib/util/params.js +18 -2
- package/lib/util/params.js.map +1 -1
- package/lib/util/url.d.ts.map +1 -0
- package/lib/validator.d.ts.map +1 -0
- package/lib/validator.js +15 -0
- package/lib/validator.js.map +1 -1
- package/package.json +19 -16
- package/src/buckets.ts +30 -0
- package/src/defaults.ts +8 -0
- package/src/genesis.ts +19 -0
- package/src/index.ts +22 -0
- package/src/metrics.ts +417 -0
- package/src/repositories/index.ts +1 -0
- package/src/repositories/metaDataRepository.ts +42 -0
- package/src/services/attestation.ts +362 -0
- package/src/services/attestationDuties.ts +406 -0
- package/src/services/block.ts +261 -0
- package/src/services/blockDuties.ts +217 -0
- package/src/services/chainHeaderTracker.ts +89 -0
- package/src/services/doppelgangerService.ts +286 -0
- package/src/services/emitter.ts +43 -0
- package/src/services/externalSignerSync.ts +81 -0
- package/src/services/indices.ts +165 -0
- package/src/services/prepareBeaconProposer.ts +119 -0
- package/src/services/syncCommittee.ts +338 -0
- package/src/services/syncCommitteeDuties.ts +337 -0
- package/src/services/syncingStatusTracker.ts +74 -0
- package/src/services/utils.ts +58 -0
- package/src/services/validatorStore.ts +830 -0
- package/src/slashingProtection/attestation/attestationByTargetRepository.ts +77 -0
- package/src/slashingProtection/attestation/attestationLowerBoundRepository.ts +44 -0
- package/src/slashingProtection/attestation/errors.ts +66 -0
- package/src/slashingProtection/attestation/index.ts +171 -0
- package/src/slashingProtection/block/blockBySlotRepository.ts +78 -0
- package/src/slashingProtection/block/errors.ts +28 -0
- package/src/slashingProtection/block/index.ts +94 -0
- package/src/slashingProtection/index.ts +95 -0
- package/src/slashingProtection/interchange/errors.ts +15 -0
- package/src/slashingProtection/interchange/formats/completeV4.ts +125 -0
- package/src/slashingProtection/interchange/formats/index.ts +7 -0
- package/src/slashingProtection/interchange/formats/v5.ts +120 -0
- package/src/slashingProtection/interchange/index.ts +5 -0
- package/src/slashingProtection/interchange/parseInterchange.ts +55 -0
- package/src/slashingProtection/interchange/serializeInterchange.ts +35 -0
- package/src/slashingProtection/interchange/types.ts +18 -0
- package/src/slashingProtection/interface.ts +28 -0
- package/src/slashingProtection/minMaxSurround/distanceStoreRepository.ts +57 -0
- package/src/slashingProtection/minMaxSurround/errors.ts +27 -0
- package/src/slashingProtection/minMaxSurround/index.ts +4 -0
- package/src/slashingProtection/minMaxSurround/interface.ts +23 -0
- package/src/slashingProtection/minMaxSurround/minMaxSurround.ts +104 -0
- package/src/slashingProtection/types.ts +12 -0
- package/src/slashingProtection/utils.ts +42 -0
- package/src/types.ts +31 -0
- package/src/util/batch.ts +15 -0
- package/src/util/clock.ts +170 -0
- package/src/util/difference.ts +10 -0
- package/src/util/externalSignerClient.ts +277 -0
- package/src/util/format.ts +3 -0
- package/src/util/index.ts +6 -0
- package/src/util/logger.ts +51 -0
- package/src/util/params.ts +320 -0
- package/src/util/url.ts +16 -0
- package/src/validator.ts +418 -0
|
@@ -12,6 +12,19 @@ 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();
|
|
15
28
|
constructor(logger, api, clock, validatorStore, chainHeadTracker, syncingStatusTracker, metrics, opts) {
|
|
16
29
|
this.logger = logger;
|
|
17
30
|
this.api = api;
|
|
@@ -19,104 +32,6 @@ export class AttestationDutiesService {
|
|
|
19
32
|
this.validatorStore = validatorStore;
|
|
20
33
|
this.metrics = metrics;
|
|
21
34
|
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
|
-
};
|
|
120
35
|
// Running this task every epoch is safe since a re-org of two epochs is very unlikely
|
|
121
36
|
// TODO: If the re-org event is reliable consider re-running then
|
|
122
37
|
clock.runEveryEpoch(this.runDutiesTasks);
|
|
@@ -179,6 +94,44 @@ export class AttestationDutiesService {
|
|
|
179
94
|
}
|
|
180
95
|
return duties;
|
|
181
96
|
}
|
|
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
|
+
// TODO GLOAS: re-evaluate this timing
|
|
107
|
+
// during the 1 / 3 of epoch, last block of epoch may come
|
|
108
|
+
await sleep(this.clock.msToSlot(slot + 1 / 3), signal);
|
|
109
|
+
const nextEpoch = computeEpochAtSlot(slot) + 1;
|
|
110
|
+
const dependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
|
|
111
|
+
const pendingDependentRoot = this.pendingDependentRootByEpoch.get(nextEpoch);
|
|
112
|
+
if (dependentRoot && pendingDependentRoot && dependentRoot !== pendingDependentRoot) {
|
|
113
|
+
// this happens when pendingDependentRoot is not the last block of an epoch
|
|
114
|
+
this.logger.info("Redownload attester duties when it's close to epoch boundary", { nextEpoch, slot });
|
|
115
|
+
await this.handleAttesterDutiesReorg(nextEpoch, slot, dependentRoot, pendingDependentRoot);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
runDutiesTasks = async (epoch) => {
|
|
119
|
+
await Promise.all([
|
|
120
|
+
// Run pollBeaconAttesters immediately for all known local indices
|
|
121
|
+
this.pollBeaconAttesters(epoch, this.validatorStore.getAllLocalIndices()).catch((e) => {
|
|
122
|
+
this.logger.error("Error on poll attesters", { epoch }, e);
|
|
123
|
+
}),
|
|
124
|
+
// At the same time fetch any remaining unknown validator indices, then poll duties for those newIndices only
|
|
125
|
+
this.validatorStore
|
|
126
|
+
.pollValidatorIndices()
|
|
127
|
+
.then((newIndices) => this.pollBeaconAttesters(epoch, newIndices))
|
|
128
|
+
.catch((e) => {
|
|
129
|
+
this.logger.error("Error on poll indices and attesters", { epoch }, e);
|
|
130
|
+
}),
|
|
131
|
+
]);
|
|
132
|
+
// After both, prune
|
|
133
|
+
this.pruneOldDuties(epoch);
|
|
134
|
+
};
|
|
182
135
|
/**
|
|
183
136
|
* Query the beacon node for attestation duties for any known validators.
|
|
184
137
|
*
|
|
@@ -287,6 +240,60 @@ export class AttestationDutiesService {
|
|
|
287
240
|
}
|
|
288
241
|
}
|
|
289
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* attester duties may be reorged due to 2 scenarios:
|
|
245
|
+
* 1. node is syncing (for nextEpoch duties)
|
|
246
|
+
* 2. node is reorged
|
|
247
|
+
* previousDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)
|
|
248
|
+
* => dependent root of current epoch
|
|
249
|
+
* currentDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)
|
|
250
|
+
* => dependent root of next epoch
|
|
251
|
+
*/
|
|
252
|
+
onNewHead = async ({ slot, head, previousDutyDependentRoot, currentDutyDependentRoot, }) => {
|
|
253
|
+
const currentEpoch = computeEpochAtSlot(slot);
|
|
254
|
+
const nextEpoch = currentEpoch + 1;
|
|
255
|
+
const nextTwoEpoch = currentEpoch + 2;
|
|
256
|
+
const nextTwoEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch + 2)?.dependentRoot;
|
|
257
|
+
// this may happen ONLY when node is syncing
|
|
258
|
+
// it's safe to get attester duties at epoch n + 1 thanks to nextEpochShuffling cache
|
|
259
|
+
// but it's an issue to request attester duties for epoch n + 2 as dependent root keeps changing while node is syncing
|
|
260
|
+
// see https://github.com/ChainSafe/lodestar/issues/3211
|
|
261
|
+
if (nextTwoEpochDependentRoot && head !== nextTwoEpochDependentRoot) {
|
|
262
|
+
// last slot of epoch, we're sure it's the correct dependent root
|
|
263
|
+
if ((slot + 1) % SLOTS_PER_EPOCH === 0) {
|
|
264
|
+
this.logger.info("Next 2 epoch attester duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
|
|
265
|
+
await this.handleAttesterDutiesReorg(nextTwoEpoch, slot, nextTwoEpochDependentRoot, head);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
this.logger.debug("Potential next 2 epoch attester duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
|
|
269
|
+
// node may send adjacent onHead events while it's syncing
|
|
270
|
+
// wait for getting close to next epoch to make sure the dependRoot
|
|
271
|
+
this.pendingDependentRootByEpoch.set(nextTwoEpoch, head);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// dependent root for next epoch changed
|
|
275
|
+
const nextEpochDependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
|
|
276
|
+
if (nextEpochDependentRoot && currentDutyDependentRoot !== nextEpochDependentRoot) {
|
|
277
|
+
this.logger.warn("Potential next epoch attester duties reorg", {
|
|
278
|
+
slot,
|
|
279
|
+
dutyEpoch: nextEpoch,
|
|
280
|
+
priorDependentRoot: nextEpochDependentRoot,
|
|
281
|
+
newDependentRoot: currentDutyDependentRoot,
|
|
282
|
+
});
|
|
283
|
+
await this.handleAttesterDutiesReorg(nextEpoch, slot, nextEpochDependentRoot, currentDutyDependentRoot);
|
|
284
|
+
}
|
|
285
|
+
// dependent root for current epoch changed
|
|
286
|
+
const currentEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch)?.dependentRoot;
|
|
287
|
+
if (currentEpochDependentRoot && currentEpochDependentRoot !== previousDutyDependentRoot) {
|
|
288
|
+
this.logger.warn("Potential current epoch attester duties reorg", {
|
|
289
|
+
slot,
|
|
290
|
+
dutyEpoch: currentEpoch,
|
|
291
|
+
priorDependentRoot: currentEpochDependentRoot,
|
|
292
|
+
newDependentRoot: previousDutyDependentRoot,
|
|
293
|
+
});
|
|
294
|
+
await this.handleAttesterDutiesReorg(currentEpoch, slot, currentEpochDependentRoot, previousDutyDependentRoot);
|
|
295
|
+
}
|
|
296
|
+
};
|
|
290
297
|
async handleAttesterDutiesReorg(dutyEpoch, slot, oldDependentRoot, newDependentRoot) {
|
|
291
298
|
this.metrics?.attesterDutiesReorg.inc();
|
|
292
299
|
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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/services/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAcjD,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAkBnD,KAAK,iBAAiB,GAAG;IACvB,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACvD,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AACF;;GAEG;AACH,qBAAa,qBAAqB;IAI9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IATvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAGhC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,IAAI,EAAE,iBAAiB;IAa1C,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAI3C;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAa7B;IAEF,mDAAmD;YACrC,qBAAqB;IA0EnC,OAAO,CAAC,mBAAmB,CAmBzB;IAEF,OAAO,CAAC,mBAAmB,CAmCzB;CACH"}
|
package/lib/services/block.js
CHANGED
|
@@ -6,6 +6,14 @@ 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;
|
|
9
17
|
constructor(config, logger, api, clock, validatorStore, metrics, opts) {
|
|
10
18
|
this.config = config;
|
|
11
19
|
this.logger = logger;
|
|
@@ -14,67 +22,27 @@ export class BlockProposingService {
|
|
|
14
22
|
this.validatorStore = validatorStore;
|
|
15
23
|
this.metrics = metrics;
|
|
16
24
|
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
|
-
};
|
|
73
25
|
this.dutiesService = new BlockDutiesService(config, logger, api, clock, validatorStore, metrics, this.notifyBlockProductionFn);
|
|
74
26
|
}
|
|
75
27
|
removeDutiesForKey(pubkey) {
|
|
76
28
|
this.dutiesService.removeDutiesForKey(pubkey);
|
|
77
29
|
}
|
|
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
|
+
};
|
|
78
46
|
/** Produce a block at the given slot for pubkey */
|
|
79
47
|
async createAndPublishBlock(pubkey, slot) {
|
|
80
48
|
const pubkeyHex = toPubkeyHex(pubkey);
|
|
@@ -130,6 +98,46 @@ export class BlockProposingService {
|
|
|
130
98
|
this.logger.error("Error proposing block", logCtx, e);
|
|
131
99
|
}
|
|
132
100
|
}
|
|
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
|
+
};
|
|
133
141
|
}
|
|
134
142
|
function parseProduceBlockResponse(response, debugLogCtx, builderSelection) {
|
|
135
143
|
const executionPayloadSource = response.executionPayloadSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/services/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAC,MAAM,eAAe,CAAC;AAEhD,OAAO,EAML,mBAAmB,EAInB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAItF,OAAO,EAAC,kBAAkB,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAuBlE;;GAEG;AACH,MAAM,OAAO,qBAAqB;
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/services/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAC,MAAM,eAAe,CAAC;AAEhD,OAAO,EAML,mBAAmB,EAInB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAItF,OAAO,EAAC,kBAAkB,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAuBlE;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAIb;IACA;IACA;IACA;IACA;IACA;IACA;IATF,aAAa,CAAqB;IAEnD,YACmB,MAAuB,EACvB,MAAgB,EAChB,GAAc,EACd,KAAa,EACb,cAA8B,EAC9B,OAAuB,EACvB,IAAuB;QANvB,WAAM,GAAN,MAAM,CAAiB;QACvB,WAAM,GAAN,MAAM,CAAU;QAChB,QAAG,GAAH,GAAG,CAAW;QACd,UAAK,GAAL,KAAK,CAAQ;QACb,mBAAc,GAAd,cAAc,CAAgB;QAC9B,YAAO,GAAP,OAAO,CAAgB;QACvB,SAAI,GAAJ,IAAI,CAAmB;QAExC,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CACzC,MAAM,EACN,MAAM,EACN,GAAG,EACH,KAAK,EACL,cAAc,EACd,OAAO,EACP,IAAI,CAAC,uBAAuB,CAC7B,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,MAAiB;QAClC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACK,uBAAuB,GAAG,CAAC,IAAU,EAAE,SAAsB,EAAQ,EAAE;QAC7E,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAC,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;YAClG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAC,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,mDAAmD;IAC3C,KAAK,CAAC,qBAAqB,CAAC,MAAiB,EAAE,IAAU;QAC/D,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,EAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,EAAC,CAAC;QAEzD,8CAA8C;QAC9C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5D,MAAM,WAAW,GAAG,EAAC,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC;YAEtD,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACvF,MAAM,EAAC,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAC,GAClE,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;gBACnC,GAAG,WAAW;gBACd,gBAAgB;gBAChB,kBAAkB;gBAClB,YAAY;gBACZ,uBAAuB;gBACvB,YAAY;aACb,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjF,MAAM,WAAW,GAAG;gBAClB,YAAY;gBACZ,uBAAuB;gBACvB,YAAY;aACb,CAAC;YACF,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CACzD,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,WAAW,EACX,gBAAgB,CACjB,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC3D,MAAM,WAAW,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAC,GAAG,WAAW,EAAE,GAAG,oBAAoB,CAAC,WAAW,EAAC,CAAC,CAAC;YAC3F,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC;YAEnC,MAAM,KAAK,GAAG,oBAAoB,CAAC,uBAAuB;gBACxD,CAAC,CAAC,oBAAoB,CAAC,KAAK;gBAC5B,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1F,MAAM,EAAC,mBAAmB,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACxC,MAAM,WAAW,GAAG,EAAC,mBAAmB,EAAC,CAAC;YAE1C,MAAM,iCAAiC,GAAG,oBAAoB,CAAC,uBAAuB;gBACpF,CAAC,CAAC,EAAC,WAAW,EAAC;gBACf,CAAC,CAAC,EAAC,WAAW,EAAE,GAAG,oBAAoB,CAAC,aAAa,EAAC,CAAC;YACzD,OAAQ,iCAA2D,CAAC,KAAK,CAAC,CAAC,0BAA0B;YAErG,MAAM,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBAChG,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC3D,MAAM,WAAW,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,WAAW,EAAC,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,MAAM,EAAE,CAAU,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,mBAAmB,GAAG,KAAK,EACjC,iCAAgG,EAChG,OAAkE,EAAE,EACrD,EAAE;QACjB,IAAI,0BAA0B,CAAC,iCAAiC,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9E,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC;gBAC1C,kBAAkB,EAAE,iCAAiC,CAAC,WAAW;gBACjE,GAAG,IAAI;aACR,CAAC,CACH,CAAC,QAAQ,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,CACE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;gBACnC,mBAAmB,EAAE,iCAAiC;gBACtD,GAAG,IAAI;aACR,CAAC,CACH,CAAC,QAAQ,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEM,mBAAmB,GAAG,KAAK,EACjC,OAAwB,EACxB,IAAU,EACV,YAA0B,EAC1B,QAA4B,EAC5B,kBAA0B,EAC1B,EAAC,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAyC,EAC7F,gBAAmD,EACC,EAAE;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC;YAClD,IAAI;YACJ,YAAY;YACZ,QAAQ;YACR,sBAAsB,EAAE,KAAK;YAC7B,YAAY;YACZ,gBAAgB;YAChB,uBAAuB;YACvB,YAAY;YACZ,kBAAkB;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,WAAW,GAAG;YAClB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,qBAAqB,EAAE,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACjE,mBAAmB,EAAE,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC7D,eAAe,EAAE,cAAc,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACtF,+DAA+D;YAC/D,uBAAuB;YACvB,gBAAgB;YAChB,GAAG,EAAE,gBAAgB;SACtB,CAAC;QAEF,OAAO,yBAAyB,CAAC,EAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAC,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAChG,CAAC,CAAC;CACH;AAED,SAAS,yBAAyB,CAChC,QAGC,EACD,WAAyD,EACzD,gBAAmD;IAEnD,MAAM,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;IAE/D,IACE,CAAC,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW;QACjE,sBAAsB,KAAK,mBAAmB,CAAC,MAAM,CAAC;QACxD,CAAC,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa;YACnE,sBAAsB,KAAK,mBAAmB,CAAC,OAAO,CAAC,EACzD,CAAC;QACD,MAAM,KAAK,CACT,sDAAsD,gBAAgB,2BAA2B,sBAAsB,EAAE,CAC1H,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,uBAAuB,EAAE,CAAC;QACrC,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,IAAI;YACpB,uBAAuB,EAAE,IAAI;YAC7B,sBAAsB;YACtB,WAAW;SACiC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,uBAAuB,EAAE,KAAK;QAC9B,sBAAsB;QACtB,WAAW;KACiC,CAAC;AACjD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApiClient } from "@lodestar/api";
|
|
2
|
-
import {
|
|
2
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
3
3
|
import { BLSPubkey, Slot } from "@lodestar/types";
|
|
4
4
|
import { Metrics } from "../metrics.js";
|
|
5
5
|
import { PubkeyHex } from "../types.js";
|
|
@@ -19,7 +19,7 @@ export declare class BlockDutiesService {
|
|
|
19
19
|
/** Maps an epoch to all *local* proposers in this epoch. Notably, this does not contain
|
|
20
20
|
proposals for any validators which are not registered locally. */
|
|
21
21
|
private readonly proposers;
|
|
22
|
-
constructor(config:
|
|
22
|
+
constructor(config: ChainForkConfig, logger: LoggerVc, api: ApiClient, clock: IClock, validatorStore: ValidatorStore, metrics: Metrics | null, notifyBlockProductionFn: NotifyBlockProductionFn);
|
|
23
23
|
/**
|
|
24
24
|
* Returns the pubkeys of the validators which are assigned to propose in the given slot.
|
|
25
25
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockDuties.d.ts","sourceRoot":"","sources":["../../src/services/blockDuties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAS,MAAM,eAAe,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,SAAS,EAAkB,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAgB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAYnD,eAAO,MAAM,YAAY,IAAI,CAAC;AAG9B,KAAK,uBAAuB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;AAE5E,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE;yEACqE;IACrE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;gBAG7C,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,GAAG,IAAI,EACxC,uBAAuB,EAAE,uBAAuB;IAgBlD;;;;;OAKG;IACH,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE;IAgBhD,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAQ3C,OAAO,CAAC,kBAAkB,CAgBxB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;YACW,4BAA4B;IAoC1C;;;OAGG;YACW,4BAA4B;YAU5B,mBAAmB;IA4BjC,uDAAuD;IACvD,OAAO,CAAC,cAAc;CAOvB"}
|
|
@@ -2,16 +2,28 @@ import { computeEpochAtSlot, computeStartSlotAtEpoch } from "@lodestar/state-tra
|
|
|
2
2
|
import { sleep, toPubkeyHex } from "@lodestar/utils";
|
|
3
3
|
import { differenceHex } from "../util/index.js";
|
|
4
4
|
/** This polls block duties 1s before the next epoch */
|
|
5
|
-
// TODO: change to 6 to do it 2s before the next epoch
|
|
5
|
+
// TODO: change to 8333 (5/6 of slot) to do it 2s before the next epoch
|
|
6
6
|
// once we have some improvement on epoch transition time
|
|
7
7
|
// see https://github.com/ChainSafe/lodestar/issues/5792#issuecomment-1647457442
|
|
8
|
-
|
|
8
|
+
// TODO GLOAS: re-evaluate timing
|
|
9
|
+
const BLOCK_DUTIES_LOOKAHEAD_BPS = 9167;
|
|
9
10
|
/** Only retain `HISTORICAL_DUTIES_EPOCHS` duties prior to the current epoch */
|
|
10
11
|
const HISTORICAL_DUTIES_EPOCHS = 2;
|
|
11
12
|
// Re-declaring to not have to depend on `lodestar-params` just for this 0
|
|
12
13
|
const GENESIS_EPOCH = 0;
|
|
13
14
|
export const GENESIS_SLOT = 0;
|
|
14
15
|
export class BlockDutiesService {
|
|
16
|
+
config;
|
|
17
|
+
logger;
|
|
18
|
+
api;
|
|
19
|
+
clock;
|
|
20
|
+
validatorStore;
|
|
21
|
+
metrics;
|
|
22
|
+
/** Notify the block service if it should produce a block. */
|
|
23
|
+
notifyBlockProductionFn;
|
|
24
|
+
/** Maps an epoch to all *local* proposers in this epoch. Notably, this does not contain
|
|
25
|
+
proposals for any validators which are not registered locally. */
|
|
26
|
+
proposers = new Map();
|
|
15
27
|
constructor(config, logger, api, clock, validatorStore, metrics, notifyBlockProductionFn) {
|
|
16
28
|
this.config = config;
|
|
17
29
|
this.logger = logger;
|
|
@@ -19,29 +31,6 @@ export class BlockDutiesService {
|
|
|
19
31
|
this.clock = clock;
|
|
20
32
|
this.validatorStore = validatorStore;
|
|
21
33
|
this.metrics = metrics;
|
|
22
|
-
/** Maps an epoch to all *local* proposers in this epoch. Notably, this does not contain
|
|
23
|
-
proposals for any validators which are not registered locally. */
|
|
24
|
-
this.proposers = new Map();
|
|
25
|
-
this.runBlockDutiesTask = async (slot, signal) => {
|
|
26
|
-
try {
|
|
27
|
-
if (slot < 0) {
|
|
28
|
-
// Before genesis, fetch the genesis duties but don't notify block production
|
|
29
|
-
// Only fetch duties once since there is not possible to re-org. TODO: Review
|
|
30
|
-
if (!this.proposers.has(GENESIS_EPOCH)) {
|
|
31
|
-
await this.pollBeaconProposers(GENESIS_EPOCH);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
await this.pollBeaconProposersAndNotify(slot, signal);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
catch (e) {
|
|
39
|
-
this.logger.error("Error on pollBeaconProposers", {}, e);
|
|
40
|
-
}
|
|
41
|
-
finally {
|
|
42
|
-
this.pruneOldDuties(computeEpochAtSlot(slot));
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
34
|
this.notifyBlockProductionFn = notifyBlockProductionFn;
|
|
46
35
|
// TODO: Instead of polling every CLOCK_SLOT, poll every CLOCK_EPOCH and track re-org events
|
|
47
36
|
// only then re-fetch the block duties. Make sure most clients (including Lodestar)
|
|
@@ -79,6 +68,26 @@ export class BlockDutiesService {
|
|
|
79
68
|
});
|
|
80
69
|
}
|
|
81
70
|
}
|
|
71
|
+
runBlockDutiesTask = async (slot, signal) => {
|
|
72
|
+
try {
|
|
73
|
+
if (slot < 0) {
|
|
74
|
+
// Before genesis, fetch the genesis duties but don't notify block production
|
|
75
|
+
// Only fetch duties once since there is not possible to re-org. TODO: Review
|
|
76
|
+
if (!this.proposers.has(GENESIS_EPOCH)) {
|
|
77
|
+
await this.pollBeaconProposers(GENESIS_EPOCH);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
await this.pollBeaconProposersAndNotify(slot, signal);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
this.logger.error("Error on pollBeaconProposers", {}, e);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
this.pruneOldDuties(computeEpochAtSlot(slot));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
82
91
|
/**
|
|
83
92
|
* Download the proposer duties for the current epoch and store them in `this.proposers`.
|
|
84
93
|
* If there are any proposer for this slot, send out a notification to the block proposers.
|
|
@@ -143,7 +152,7 @@ export class BlockDutiesService {
|
|
|
143
152
|
*/
|
|
144
153
|
async pollBeaconProposersNextEpoch(currentSlot, nextEpoch, signal) {
|
|
145
154
|
const nextSlot = currentSlot + 1;
|
|
146
|
-
const lookAheadMs =
|
|
155
|
+
const lookAheadMs = this.config.SLOT_DURATION_MS - this.config.getSlotComponentDurationMs(BLOCK_DUTIES_LOOKAHEAD_BPS);
|
|
147
156
|
await sleep(this.clock.msToSlot(nextSlot) - lookAheadMs, signal);
|
|
148
157
|
this.logger.debug("Polling proposers for next epoch", { nextEpoch, nextSlot });
|
|
149
158
|
// Poll proposers for the next epoch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockDuties.js","sourceRoot":"","sources":["../../src/services/blockDuties.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEvF,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAmB,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAGjE,uDAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"blockDuties.js","sourceRoot":"","sources":["../../src/services/blockDuties.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEvF,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAmB,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAGjE,uDAAuD;AACvD,uEAAuE;AACvE,yDAAyD;AACzD,gFAAgF;AAChF,iCAAiC;AACjC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AACxC,+EAA+E;AAC/E,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,0EAA0E;AAC1E,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAK9B,MAAM,OAAO,kBAAkB;IAQV;IACA;IACA;IACA;IACA;IACA;IAZnB,6DAA6D;IAC5C,uBAAuB,CAA0B;IAClE;yEACqE;IACpD,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEhE,YACmB,MAAuB,EACvB,MAAgB,EAChB,GAAc,EACd,KAAa,EACb,cAA8B,EAC9B,OAAuB,EACxC,uBAAgD;QAN/B,WAAM,GAAN,MAAM,CAAiB;QACvB,WAAM,GAAN,MAAM,CAAU;QAChB,QAAG,GAAH,GAAG,CAAW;QACd,UAAK,GAAL,KAAK,CAAQ;QACb,mBAAc,GAAd,cAAc,CAAgB;QAC9B,YAAO,GAAP,OAAO,CAAgB;QAGxC,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QAEvD,4FAA4F;QAC5F,yFAAyF;QACzF,uCAAuC;QACvC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC/C,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,uBAAuB,CAAC,IAAU;QAChC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC,CAAC,4BAA4B;QAE7E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC3B,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB,CAAC,MAAiB;QAClC,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACvD,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChE,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,kBAAkB,GAAG,KAAK,EAAE,IAAU,EAAE,MAAmB,EAAiB,EAAE;QACpF,IAAI,CAAC;YACH,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACb,6EAA6E;gBAC7E,6EAA6E;gBAC7E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;oBACvC,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;QACpE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACK,KAAK,CAAC,4BAA4B,CAAC,WAAiB,EAAE,MAAmB;QAC/E,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC;QAC/E,IAAI,eAAe,EAAE,CAAC;YACpB,uEAAuE;YACvE,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,iFAAiF;QACjF,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QACnE,CAAC;QAED,yCAAyC;QACzC,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;QAEhE,kGAAkG;QAClG,EAAE;QACF,yFAAyF;QACzF,6EAA6E;QAC7E,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,wBAAwB,GAAG,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;QAEzF,6FAA6F;QAC7F,EAAE;QACF,gFAAgF;QAChF,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAC,WAAW,EAAC,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,4BAA4B,CAAC,WAAiB,EAAE,SAAgB,EAAE,MAAmB;QACjG,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC;QACjC,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,0BAA0B,CAAC,CAAC;QACpG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAC,SAAS,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC7E,oCAAoC;QACpC,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAY;QAC5C,mGAAmG;QACnG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,EAAC,aAAa,EAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACpD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7G,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,EAAC,CAAC,CAAC;QAEtG,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,IAAI,EAAE,cAAc,EAAC,CAAC,CAAC;QAEjE,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa,EAAE,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,GAAG,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE;gBAC5E,kBAAkB,EAAE,KAAK,CAAC,aAAa;gBACvC,aAAa;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,uDAAuD;IAC/C,cAAc,CAAC,YAAmB;QACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,GAAG,wBAAwB,GAAG,YAAY,EAAE,CAAC;gBACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chainHeaderTracker.d.ts","sourceRoot":"","sources":["../../src/services/chainHeaderTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAS,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,MAAM,EAAU,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAiB,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAInE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1D;;GAEG;AACH,qBAAa,kBAAkB;IAM3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;gBAGrB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,qBAAqB;IAGjD,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAiBhC,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAQ5C,YAAY,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI;IAIlC,OAAO,CAAC,YAAY,CA2BlB;CACH"}
|