@lodestar/validator 1.51.0-dev.c99cf49add → 1.51.0-dev.e22f67e7bc
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/services/attestationDuties.d.ts.map +1 -1
- package/lib/services/attestationDuties.js +12 -4
- package/lib/services/attestationDuties.js.map +1 -1
- package/lib/services/chainHeaderTracker.d.ts.map +1 -1
- package/lib/services/chainHeaderTracker.js +6 -1
- package/lib/services/chainHeaderTracker.js.map +1 -1
- package/lib/services/emitter.d.ts +10 -1
- package/lib/services/emitter.d.ts.map +1 -1
- package/lib/services/emitter.js +4 -0
- package/lib/services/emitter.js.map +1 -1
- package/lib/services/inclusionList.d.ts +25 -0
- package/lib/services/inclusionList.d.ts.map +1 -0
- package/lib/services/inclusionList.js +101 -0
- package/lib/services/inclusionList.js.map +1 -0
- package/lib/services/inclusionListDuties.d.ts +59 -0
- package/lib/services/inclusionListDuties.d.ts.map +1 -0
- package/lib/services/inclusionListDuties.js +252 -0
- package/lib/services/inclusionListDuties.js.map +1 -0
- package/lib/services/syncCommitteeDuties.d.ts.map +1 -1
- package/lib/services/syncCommitteeDuties.js +10 -5
- package/lib/services/syncCommitteeDuties.js.map +1 -1
- package/lib/services/validatorStore.d.ts +7 -1
- package/lib/services/validatorStore.d.ts.map +1 -1
- package/lib/services/validatorStore.js +29 -3
- package/lib/services/validatorStore.js.map +1 -1
- package/lib/slashingProtection/attestation/index.d.ts +1 -0
- package/lib/slashingProtection/attestation/index.d.ts.map +1 -1
- package/lib/slashingProtection/attestation/index.js +77 -44
- package/lib/slashingProtection/attestation/index.js.map +1 -1
- package/lib/slashingProtection/index.d.ts +2 -0
- package/lib/slashingProtection/index.d.ts.map +1 -1
- package/lib/slashingProtection/index.js +48 -5
- package/lib/slashingProtection/index.js.map +1 -1
- package/lib/util/externalSignerClient.d.ts +6 -2
- package/lib/util/externalSignerClient.d.ts.map +1 -1
- package/lib/util/externalSignerClient.js +4 -0
- package/lib/util/externalSignerClient.js.map +1 -1
- package/lib/validator.d.ts +4 -1
- package/lib/validator.d.ts.map +1 -1
- package/lib/validator.js +7 -1
- package/lib/validator.js.map +1 -1
- package/package.json +12 -12
- package/src/services/attestationDuties.ts +18 -4
- package/src/services/chainHeaderTracker.ts +8 -1
- package/src/services/emitter.ts +10 -0
- package/src/services/inclusionList.ts +140 -0
- package/src/services/inclusionListDuties.ts +306 -0
- package/src/services/syncCommitteeDuties.ts +13 -5
- package/src/services/validatorStore.ts +43 -3
- package/src/slashingProtection/attestation/index.ts +81 -46
- package/src/slashingProtection/index.ts +50 -6
- package/src/util/externalSignerClient.ts +8 -1
- package/src/validator.ts +18 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
2
|
+
import { computeEpochAtSlot, isStartSlotOfEpoch } from "@lodestar/state-transition";
|
|
3
|
+
import { sleep, toPubkeyHex } from "@lodestar/utils";
|
|
4
|
+
/** Only retain `HISTORICAL_DUTIES_EPOCHS` duties prior to the current epoch. */
|
|
5
|
+
const HISTORICAL_DUTIES_EPOCHS = 2;
|
|
6
|
+
/**
|
|
7
|
+
* Similar to AttestationDutiesService but
|
|
8
|
+
* - No generating and caching selection proof
|
|
9
|
+
* - No handling and maintaining subnet subscription
|
|
10
|
+
*/
|
|
11
|
+
export class InclusionListDutiesService {
|
|
12
|
+
config;
|
|
13
|
+
logger;
|
|
14
|
+
api;
|
|
15
|
+
clock;
|
|
16
|
+
validatorStore;
|
|
17
|
+
/** Maps a validator index to its duty for each epoch */
|
|
18
|
+
dutiesByIndexByEpoch = new Map();
|
|
19
|
+
/**
|
|
20
|
+
* We may receive new dependentRoot of an epoch but it's not the last slot of epoch
|
|
21
|
+
* so we have to wait for getting close to the next epoch to redownload new inclusionListDuties.
|
|
22
|
+
*/
|
|
23
|
+
pendingDependentRootByEpoch = new Map();
|
|
24
|
+
constructor(config, logger, api, clock, validatorStore, chainHeadTracker, syncingStatusTracker) {
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
this.api = api;
|
|
28
|
+
this.clock = clock;
|
|
29
|
+
this.validatorStore = validatorStore;
|
|
30
|
+
// Running this task every epoch is safe since a re-org of two epochs is very unlikely
|
|
31
|
+
clock.runEveryEpoch(this.runDutiesTasks);
|
|
32
|
+
clock.runEverySlot(this.prepareForNextEpoch);
|
|
33
|
+
chainHeadTracker.runOnNewHead(this.onNewHead);
|
|
34
|
+
syncingStatusTracker.runOnResynced(async (slot) => {
|
|
35
|
+
// Skip on first slot of epoch since tasks are already scheduled
|
|
36
|
+
if (!isStartSlotOfEpoch(slot)) {
|
|
37
|
+
return this.runDutiesTasks(computeEpochAtSlot(slot));
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
removeDutiesForKey(pubkey) {
|
|
42
|
+
for (const [epoch, dutiesAtEpoch] of this.dutiesByIndexByEpoch) {
|
|
43
|
+
for (const [vIndex, duty] of dutiesAtEpoch.dutiesByIndex) {
|
|
44
|
+
if (toPubkeyHex(duty.pubkey) === pubkey) {
|
|
45
|
+
dutiesAtEpoch.dutiesByIndex.delete(vIndex);
|
|
46
|
+
if (dutiesAtEpoch.dutiesByIndex.size === 0) {
|
|
47
|
+
this.dutiesByIndexByEpoch.delete(epoch);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Returns all `ValidatorDuty` for the given `slot` */
|
|
54
|
+
getDutiesAtSlot(slot) {
|
|
55
|
+
const epoch = computeEpochAtSlot(slot);
|
|
56
|
+
const duties = [];
|
|
57
|
+
const epochDuties = this.dutiesByIndexByEpoch.get(epoch);
|
|
58
|
+
if (epochDuties === undefined) {
|
|
59
|
+
return duties;
|
|
60
|
+
}
|
|
61
|
+
for (const validatorDuty of epochDuties.dutiesByIndex.values()) {
|
|
62
|
+
if (validatorDuty.slot === slot) {
|
|
63
|
+
duties.push(validatorDuty);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return duties;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* If a reorg dependent root comes at a slot other than last slot of epoch
|
|
70
|
+
* just update this.pendingDependentRootByEpoch() and process here
|
|
71
|
+
*/
|
|
72
|
+
prepareForNextEpoch = async (slot, signal) => {
|
|
73
|
+
// only interested in last slot of epoch
|
|
74
|
+
if ((slot + 1) % SLOTS_PER_EPOCH !== 0) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// during the 1 / 3 of epoch, last block of epoch may come
|
|
78
|
+
await sleep(this.clock.msToSlot(slot + 1 / 3), signal);
|
|
79
|
+
const nextEpoch = computeEpochAtSlot(slot) + 1;
|
|
80
|
+
const dependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
|
|
81
|
+
const pendingDependentRoot = this.pendingDependentRootByEpoch.get(nextEpoch);
|
|
82
|
+
if (dependentRoot && pendingDependentRoot && dependentRoot !== pendingDependentRoot) {
|
|
83
|
+
// this happens when pendingDependentRoot is not the last block of an epoch
|
|
84
|
+
this.logger.info("Redownload inclusion list duties when it's close to epoch boundary", { nextEpoch, slot });
|
|
85
|
+
await this.handleInclusionListDutiesReorg(nextEpoch, slot, dependentRoot, pendingDependentRoot);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
runDutiesTasks = async (epoch) => {
|
|
89
|
+
// pollInclusionListCommittee also polls epoch + 1, so start one epoch before the fork
|
|
90
|
+
if (epoch + 1 < this.config.HEZE_FORK_EPOCH) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
await Promise.all([
|
|
94
|
+
// Run pollInclusionListCommittee immediately for all known local indices
|
|
95
|
+
this.pollInclusionListCommittee(epoch, this.validatorStore.getAllLocalIndices()).catch((e) => {
|
|
96
|
+
this.logger.error("Error on poll inclusion list committee", { epoch }, e);
|
|
97
|
+
}),
|
|
98
|
+
// At the same time fetch any remaining unknown validator indices, then poll duties for those newIndices only
|
|
99
|
+
this.validatorStore
|
|
100
|
+
.pollValidatorIndices()
|
|
101
|
+
.then((newIndices) => this.pollInclusionListCommittee(epoch, newIndices))
|
|
102
|
+
.catch((e) => {
|
|
103
|
+
this.logger.error("Error on poll indices and inclusion list committee", { epoch }, e);
|
|
104
|
+
}),
|
|
105
|
+
]);
|
|
106
|
+
// After both, prune
|
|
107
|
+
this.pruneOldDuties(epoch);
|
|
108
|
+
};
|
|
109
|
+
async pollInclusionListCommittee(currentEpoch, indexArr) {
|
|
110
|
+
const nextEpoch = currentEpoch + 1;
|
|
111
|
+
// No need to bother the BN if we don't have any validators.
|
|
112
|
+
if (indexArr.length === 0) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
for (const epoch of [currentEpoch, nextEpoch]) {
|
|
116
|
+
// Download the duties and update the duties for the current and next epoch.
|
|
117
|
+
await this.pollInclusionListCommitteeForEpoch(epoch, indexArr).catch((e) => {
|
|
118
|
+
this.logger.error("Failed to download inclusion list duties", { epoch }, e);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* For the given `indexArr`, download the duties for the given `epoch` and store them in duties.
|
|
124
|
+
*/
|
|
125
|
+
async pollInclusionListCommitteeForEpoch(epoch, indexArr) {
|
|
126
|
+
// Don't fetch duties for epochs before genesis. However, should fetch epoch 0 duties at epoch -1
|
|
127
|
+
if (epoch < 0) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Inclusion list committees only exist post-heze; the beacon node rejects earlier epochs
|
|
131
|
+
if (epoch < this.config.HEZE_FORK_EPOCH) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const res = await this.api.validator.getInclusionListCommitteeDuties({ epoch, indices: indexArr });
|
|
135
|
+
const inclusionListDuties = res.value();
|
|
136
|
+
const { dependentRoot } = res.meta();
|
|
137
|
+
const relevantDuties = inclusionListDuties.filter((duty) => {
|
|
138
|
+
const pubkeyHex = toPubkeyHex(duty.pubkey);
|
|
139
|
+
return this.validatorStore.hasVotingPubkey(pubkeyHex) && this.validatorStore.isDoppelgangerSafe(pubkeyHex);
|
|
140
|
+
});
|
|
141
|
+
this.logger.debug("Downloaded inclusion list duties", { epoch, dependentRoot, count: relevantDuties.length });
|
|
142
|
+
const dutiesAtEpoch = this.dutiesByIndexByEpoch.get(epoch);
|
|
143
|
+
const priorDependentRoot = dutiesAtEpoch?.dependentRoot;
|
|
144
|
+
const dependentRootChanged = priorDependentRoot !== undefined && priorDependentRoot !== dependentRoot;
|
|
145
|
+
if (!priorDependentRoot || dependentRootChanged) {
|
|
146
|
+
const dutiesByIndex = new Map();
|
|
147
|
+
for (const duty of relevantDuties) {
|
|
148
|
+
dutiesByIndex.set(duty.validatorIndex, duty);
|
|
149
|
+
}
|
|
150
|
+
this.dutiesByIndexByEpoch.set(epoch, { dependentRoot, dutiesByIndex });
|
|
151
|
+
if (priorDependentRoot && dependentRootChanged) {
|
|
152
|
+
this.logger.warn("Inclusion list duties re-org. This may happen from time to time", {
|
|
153
|
+
priorDependentRoot: priorDependentRoot,
|
|
154
|
+
dependentRoot: dependentRoot,
|
|
155
|
+
epoch,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const existingDuties = dutiesAtEpoch.dutiesByIndex;
|
|
161
|
+
const existingDutiesCount = existingDuties.size;
|
|
162
|
+
for (const duty of relevantDuties) {
|
|
163
|
+
if (!existingDuties.has(duty.validatorIndex)) {
|
|
164
|
+
existingDuties.set(duty.validatorIndex, duty);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (existingDuties.size > existingDutiesCount) {
|
|
168
|
+
this.logger.debug("Discovered new inclusion list duties", {
|
|
169
|
+
epoch,
|
|
170
|
+
dependentRoot,
|
|
171
|
+
count: existingDuties.size - existingDutiesCount,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async handleInclusionListDutiesReorg(dutyEpoch, slot, oldDependentRoot, newDependentRoot) {
|
|
177
|
+
const logContext = { dutyEpoch, slot, oldDependentRoot, newDependentRoot };
|
|
178
|
+
this.logger.debug("Redownload inclusion list duties", logContext);
|
|
179
|
+
await this.pollInclusionListCommitteeForEpoch(dutyEpoch, this.validatorStore.getAllLocalIndices())
|
|
180
|
+
.then(() => {
|
|
181
|
+
this.pendingDependentRootByEpoch.delete(dutyEpoch);
|
|
182
|
+
})
|
|
183
|
+
.catch((e) => {
|
|
184
|
+
this.logger.error("Failed to redownload inclusion list duties when reorg happens", logContext, e);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* inclusion list duties may be reorged due to 2 scenarios:
|
|
189
|
+
* 1. node is syncing (for nextEpoch duties)
|
|
190
|
+
* 2. node is reorged
|
|
191
|
+
* previousDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)
|
|
192
|
+
* => dependent root of current epoch
|
|
193
|
+
* currentDutyDependentRoot = get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)
|
|
194
|
+
* => dependent root of next epoch
|
|
195
|
+
*/
|
|
196
|
+
onNewHead = async ({ slot, head, previousDutyDependentRoot, currentDutyDependentRoot, }) => {
|
|
197
|
+
const currentEpoch = computeEpochAtSlot(slot);
|
|
198
|
+
const nextEpoch = currentEpoch + 1;
|
|
199
|
+
const nextTwoEpoch = currentEpoch + 2;
|
|
200
|
+
const nextTwoEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch + 2)?.dependentRoot;
|
|
201
|
+
// this may happen ONLY when node is syncing
|
|
202
|
+
// it's safe to get inclusion list duties at epoch n + 1 thanks to nextEpochShuffling cache
|
|
203
|
+
// but it's an issue to request inclusion list duties for epoch n + 2 as dependent root keeps changing while node is syncing
|
|
204
|
+
// see https://github.com/ChainSafe/lodestar/issues/3211
|
|
205
|
+
if (nextTwoEpochDependentRoot && head !== nextTwoEpochDependentRoot) {
|
|
206
|
+
// last slot of epoch, we're sure it's the correct dependent root
|
|
207
|
+
if ((slot + 1) % SLOTS_PER_EPOCH === 0) {
|
|
208
|
+
this.logger.info("Next 2 epoch inclusion list duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
|
|
209
|
+
await this.handleInclusionListDutiesReorg(nextTwoEpoch, slot, nextTwoEpochDependentRoot, head);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
this.logger.debug("Potential next 2 epoch inclusion list duties reorg", { slot, dutyEpoch: nextTwoEpoch, head });
|
|
213
|
+
// node may send adjacent onHead events while it's syncing
|
|
214
|
+
// wait for getting close to next epoch to make sure the dependRoot
|
|
215
|
+
this.pendingDependentRootByEpoch.set(nextTwoEpoch, head);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// dependent root for next epoch changed
|
|
219
|
+
const nextEpochDependentRoot = this.dutiesByIndexByEpoch.get(nextEpoch)?.dependentRoot;
|
|
220
|
+
if (nextEpochDependentRoot && currentDutyDependentRoot !== nextEpochDependentRoot) {
|
|
221
|
+
this.logger.warn("Potential next epoch inclusion list duties reorg", {
|
|
222
|
+
slot,
|
|
223
|
+
dutyEpoch: nextEpoch,
|
|
224
|
+
priorDependentRoot: nextEpochDependentRoot,
|
|
225
|
+
newDependentRoot: currentDutyDependentRoot,
|
|
226
|
+
});
|
|
227
|
+
await this.handleInclusionListDutiesReorg(nextEpoch, slot, nextEpochDependentRoot, currentDutyDependentRoot);
|
|
228
|
+
}
|
|
229
|
+
// dependent root for current epoch changed
|
|
230
|
+
const currentEpochDependentRoot = this.dutiesByIndexByEpoch.get(currentEpoch)?.dependentRoot;
|
|
231
|
+
if (currentEpochDependentRoot && currentEpochDependentRoot !== previousDutyDependentRoot) {
|
|
232
|
+
this.logger.warn("Potential current epoch inclusion list duties reorg", {
|
|
233
|
+
slot,
|
|
234
|
+
dutyEpoch: currentEpoch,
|
|
235
|
+
priorDependentRoot: currentEpochDependentRoot,
|
|
236
|
+
newDependentRoot: previousDutyDependentRoot,
|
|
237
|
+
});
|
|
238
|
+
await this.handleInclusionListDutiesReorg(currentEpoch, slot, currentEpochDependentRoot, previousDutyDependentRoot);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
/** Run once per epoch to prune duties map */
|
|
242
|
+
pruneOldDuties(currentEpoch) {
|
|
243
|
+
for (const byEpochMap of [this.dutiesByIndexByEpoch, this.pendingDependentRootByEpoch]) {
|
|
244
|
+
for (const epoch of byEpochMap.keys()) {
|
|
245
|
+
if (epoch + HISTORICAL_DUTIES_EPOCHS < currentEpoch) {
|
|
246
|
+
byEpochMap.delete(epoch);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=inclusionListDuties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inclusionListDuties.js","sourceRoot":"","sources":["../../src/services/inclusionListDuties.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAS,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAOnD,gFAAgF;AAChF,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAMnC;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IAUlB,MAAM;IACN,MAAM;IACN,GAAG;IACZ,KAAK;IACI,cAAc;IAbjC,wDAAwD;IACvC,oBAAoB,GAAG,IAAI,GAAG,EAAqC,CAAC;IACrF;;;OAGG;IACc,2BAA2B,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzE,YACmB,MAAuB,EACvB,MAAgB,EAChB,GAAc,EACvB,KAAa,EACJ,cAA8B,EAC/C,gBAAoC,EACpC,oBAA0C;sBANzB,MAAM;sBACN,MAAM;mBACN,GAAG;qBACZ,KAAK;8BACI,cAAc;QAI/B,sFAAsF;QACtF,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7C,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,oBAAoB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,gEAAgE;YAChE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,MAAiB;QAClC,KAAK,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/D,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,aAAa,CAAC,aAAa,EAAE,CAAC;gBACzD,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;oBACxC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC3C,IAAI,aAAa,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBAC3C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,eAAe,CAAC,IAAU;QACxB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,aAAa,IAAI,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/D,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,mBAAmB,GAAG,KAAK,EAAE,IAAU,EAAE,MAAmB,EAAiB,EAAE;QACrF,wCAAwC;QACxC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEvD,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;QAC9E,MAAM,oBAAoB,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,aAAa,IAAI,oBAAoB,IAAI,aAAa,KAAK,oBAAoB,EAAE,CAAC;YACpF,2EAA2E;YAC3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oEAAoE,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1G,MAAM,IAAI,CAAC,8BAA8B,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC;IAEM,cAAc,GAAG,KAAK,EAAE,KAAY,EAAiB,EAAE;QAC7D,sFAAsF;QACtF,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,yEAAyE;YACzE,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBAClG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAC,KAAK,EAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC;YAEF,6GAA6G;YAC7G,IAAI,CAAC,cAAc;iBAChB,oBAAoB,EAAE;iBACtB,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACxE,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,EAAC,KAAK,EAAC,EAAE,CAAC,CAAC,CAAC;YACtF,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAC,YAAmB,EAAE,QAA0B;QACtF,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;QAEnC,4DAA4D;QAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,4EAA4E;YAC5E,MAAM,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBAChF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAC,KAAK,EAAC,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kCAAkC,CAAC,KAAY,EAAE,QAA0B;QACvF,iGAAiG;QACjG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,yFAAyF;QACzF,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,+BAA+B,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;QACjG,MAAM,mBAAmB,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,EAAC,aAAa,EAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACzD,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,kCAAkC,EAAE,EAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,EAAC,CAAC,CAAC;QAE5G,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,kBAAkB,GAAG,aAAa,EAAE,aAAa,CAAC;QACxD,MAAM,oBAAoB,GAAG,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,KAAK,aAAa,CAAC;QAEtG,IAAI,CAAC,kBAAkB,IAAI,oBAAoB,EAAE,CAAC;YAChD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqC,CAAC;YACnE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,aAAa,EAAC,CAAC,CAAC;YAErE,IAAI,kBAAkB,IAAI,oBAAoB,EAAE,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,EAAE;oBAClF,kBAAkB,EAAE,kBAAkB;oBACtC,aAAa,EAAE,aAAa;oBAC5B,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC;YACnD,MAAM,mBAAmB,GAAG,cAAc,CAAC,IAAI,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC7C,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YAED,IAAI,cAAc,CAAC,IAAI,GAAG,mBAAmB,EAAE,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;oBACxD,KAAK;oBACL,aAAa;oBACb,KAAK,EAAE,cAAc,CAAC,IAAI,GAAG,mBAAmB;iBACjD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,SAAgB,EAChB,IAAU,EACV,gBAAyB,EACzB,gBAAyB;QAEzB,MAAM,UAAU,GAAG,EAAC,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,UAAU,CAAC,CAAC;QAElE,MAAM,IAAI,CAAC,kCAAkC,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;aAC/F,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;OAQG;IACK,SAAS,GAAG,KAAK,EAAE,EACzB,IAAI,EACJ,IAAI,EACJ,yBAAyB,EACzB,wBAAwB,GACV,EAAiB,EAAE;QACjC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC,CAAC;QACtC,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC;QAEjG,4CAA4C;QAC5C,2FAA2F;QAC3F,4HAA4H;QAC5H,wDAAwD;QACxD,IAAI,yBAAyB,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACpE,iEAAiE;YACjE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,KAAK,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;gBACpG,MAAM,IAAI,CAAC,8BAA8B,CAAC,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,CAAC,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;gBAC/G,0DAA0D;gBAC1D,mEAAmE;gBACnE,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;QACvF,IAAI,sBAAsB,IAAI,wBAAwB,KAAK,sBAAsB,EAAE,CAAC;YAClF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBACnE,IAAI;gBACJ,SAAS,EAAE,SAAS;gBACpB,kBAAkB,EAAE,sBAAsB;gBAC1C,gBAAgB,EAAE,wBAAwB;aAC3C,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,8BAA8B,CAAC,SAAS,EAAE,IAAI,EAAE,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;QAC/G,CAAC;QAED,2CAA2C;QAC3C,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;QAC7F,IAAI,yBAAyB,IAAI,yBAAyB,KAAK,yBAAyB,EAAE,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE;gBACtE,IAAI;gBACJ,SAAS,EAAE,YAAY;gBACvB,kBAAkB,EAAE,yBAAyB;gBAC7C,gBAAgB,EAAE,yBAAyB;aAC5C,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,8BAA8B,CACvC,YAAY,EACZ,IAAI,EACJ,yBAAyB,EACzB,yBAAyB,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,6CAA6C;IACrC,cAAc,CAAC,YAAmB;QACxC,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACvF,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,KAAK,GAAG,wBAAwB,GAAG,YAAY,EAAE,CAAC;oBACpD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeDuties.d.ts","sourceRoot":"","sources":["../../src/services/syncCommitteeDuties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAS,MAAM,eAAe,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,MAAM,EAMP,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,YAAY,EAAS,IAAI,EAAc,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAmBnD,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;OAIG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qGAAqG;IACrG,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,uGAAuG;IACvG,qBAAqB,CAAC,EAAE,YAAY,CAAC;IACrC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB;;;;;OAKG;IACH,eAAe,EAAE,kBAAkB,EAAE,CAAC;CACvC,CAAC;AAKF,KAAK,8BAA8B,GAAG;IACpC,+BAA+B,CAAC,EAAE,OAAO,CAAC;CAC3C,CAAC;AAEF;;;GAGG;AACH,qBAAa,0BAA0B;IAKnC,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;IAG/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAXxB,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA4D;IAElG,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,cAAc,EAC/C,oBAAoB,EAAE,oBAAoB,EAC1C,OAAO,EAAE,OAAO,GAAG,IAAI,EACN,IAAI,CAAC,EAAE,8BAA8B,YAAA,EAsBvD;IAED;;;;;;;OAOG;IACG,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"syncCommitteeDuties.d.ts","sourceRoot":"","sources":["../../src/services/syncCommitteeDuties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAS,MAAM,eAAe,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,MAAM,EAMP,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,YAAY,EAAS,IAAI,EAAc,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAmBnD,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;OAIG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qGAAqG;IACrG,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,uGAAuG;IACvG,qBAAqB,CAAC,EAAE,YAAY,CAAC;IACrC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB;;;;;OAKG;IACH,eAAe,EAAE,kBAAkB,EAAE,CAAC;CACvC,CAAC;AAKF,KAAK,8BAA8B,GAAG;IACpC,+BAA+B,CAAC,EAAE,OAAO,CAAC;CAC3C,CAAC;AAEF;;;GAGG;AACH,qBAAa,0BAA0B;IAKnC,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;IAG/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAXxB,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA4D;IAElG,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,QAAQ,EAChB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,cAAc,EAC/C,oBAAoB,EAAE,oBAAoB,EAC1C,OAAO,EAAE,OAAO,GAAG,IAAI,EACN,IAAI,CAAC,EAAE,8BAA8B,YAAA,EAsBvD;IAED;;;;;;;OAOG;IACG,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAoC9D;IAED,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAW1C;IAED,OAAO,CAAC,cAAc,CAuBpB;IAEF;;;;;;;;;OASG;YACW,kBAAkB;IAqDhC;;OAEG;YACW,0BAA0B;YAyD1B,kBAAkB;IAyBhC,uDAAuD;IACvD,OAAO,CAAC,cAAc;IAStB;;;;;;OAMG;YACW,uCAAuC;CA8DtD"}
|
|
@@ -72,11 +72,16 @@ export class SyncCommitteeDutiesService {
|
|
|
72
72
|
const dutiesByIndex = this.dutiesByIndexByPeriod.get(period);
|
|
73
73
|
if (dutiesByIndex) {
|
|
74
74
|
for (const dutyAtPeriod of dutiesByIndex.values()) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
try {
|
|
76
|
+
// Validator always has a duty during the entire period
|
|
77
|
+
duties.push({
|
|
78
|
+
duty: dutyAtPeriod.duty,
|
|
79
|
+
selectionProofs: await this.getSelectionProofs(slot, dutyAtPeriod.duty),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
this.logger.error("Error signing sync committee selection proofs", { slot, validatorIndex: dutyAtPeriod.duty.validatorIndex }, e);
|
|
84
|
+
}
|
|
80
85
|
}
|
|
81
86
|
if (this.opts?.distributedAggregationSelection) {
|
|
82
87
|
// Validator in distributed cluster only has a key share, not the full private key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeDuties.js","sourceRoot":"","sources":["../../src/services/syncCommitteeDuties.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gCAAgC,EAAE,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAEL,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAK5C,OAAO,EAAC,6BAA6B,EAAC,MAAM,YAAY,CAAC;AAGzD,mFAAmF;AACnF,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC;;;;;;;;;;GAUG;AACH,MAAM,4BAA4B,GAAG,CAAC,CAAC;AACvC,oFAAoF;AACpF,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAyCzC;;;GAGG;AACH,MAAM,OAAO,0BAA0B;IAKlB,MAAM;IACN,MAAM;IACN,GAAG;IACH,KAAK;IACL,cAAc;IAGd,IAAI;IAXvB,gEAAgE;IAC/C,qBAAqB,GAAG,IAAI,GAAG,EAAiD,CAAC;IAElG,YACmB,MAAuB,EACvB,MAAgB,EAChB,GAAc,EACd,KAAa,EACb,cAA8B,EAC/C,oBAA0C,EAC1C,OAAuB,EACN,IAAqC;sBAPrC,MAAM;sBACN,MAAM;mBACN,GAAG;qBACH,KAAK;8BACL,cAAc;oBAGd,IAAI;QAErB,uFAAuF;QACvF,iEAAiE;QACjE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,oBAAoB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,gEAAgE;YAChE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC;oBAChE,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC;gBAC/B,CAAC;gBACD,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC7C,OAAO,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CAAC,IAAU;QAC9B,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,mCAAmC;QACrF,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClD,uDAAuD;
|
|
1
|
+
{"version":3,"file":"syncCommitteeDuties.js","sourceRoot":"","sources":["../../src/services/syncCommitteeDuties.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { SecretKey } from "@chainsafe/lodestar-z/blst";
|
|
|
2
2
|
import { routes } from "@lodestar/api";
|
|
3
3
|
import { BuilderConfigData, BuilderEntryConfig } from "@lodestar/api/keymanager";
|
|
4
4
|
import { BeaconConfig } from "@lodestar/config";
|
|
5
|
-
import { Attestation, BLSPubkey, BLSSignature, BeaconBlock, BlindedBeaconBlock, Epoch, Root, SignedAggregateAndProof, SignedBeaconBlock, SignedBlindedBeaconBlock, SingleAttestation, Slot, ValidatorIndex, altair, bellatrix, gloas, phase0 } from "@lodestar/types";
|
|
5
|
+
import { Attestation, BLSPubkey, BLSSignature, BeaconBlock, BlindedBeaconBlock, Epoch, Root, SignedAggregateAndProof, SignedBeaconBlock, SignedBlindedBeaconBlock, SingleAttestation, Slot, ValidatorIndex, altair, bellatrix, gloas, heze, phase0 } from "@lodestar/types";
|
|
6
6
|
import { Metrics } from "../metrics.js";
|
|
7
7
|
import { ISlashingProtection } from "../slashingProtection/index.js";
|
|
8
8
|
import { PubkeyHex } from "../types.js";
|
|
@@ -161,6 +161,7 @@ export declare class ValidatorStore {
|
|
|
161
161
|
}, selectionProof: BLSSignature, contribution: altair.SyncCommitteeContribution): Promise<altair.SignedContributionAndProof>;
|
|
162
162
|
signPayloadAttestation(duty: routes.validator.PtcDuty, data: gloas.PayloadAttestationData, currentSlot: Slot, logger?: LoggerVc): Promise<gloas.PayloadAttestationMessage>;
|
|
163
163
|
signProposerPreferences(duty: routes.validator.ProposerDuty, dependentRoot: Uint8Array, feeRecipient: ExecutionAddress, gasLimit: number, currentSlot: Slot): Promise<gloas.SignedProposerPreferences>;
|
|
164
|
+
signInclusionList(duty: routes.validator.InclusionListDuty, inclusionList: heze.InclusionList): Promise<heze.SignedInclusionList>;
|
|
164
165
|
signAttestationSelectionProof(pubkey: BLSPubkeyMaybeHex, slot: Slot): Promise<BLSSignature>;
|
|
165
166
|
signSyncCommitteeSelectionProof(pubkey: BLSPubkeyMaybeHex, slot: Slot, subcommitteeIndex: number): Promise<BLSSignature>;
|
|
166
167
|
signVoluntaryExit(pubkey: BLSPubkeyMaybeHex, validatorIndex: number, exitEpoch: Epoch): Promise<phase0.SignedVoluntaryExit>;
|
|
@@ -184,6 +185,11 @@ export declare class ValidatorStore {
|
|
|
184
185
|
/** Prevent signing bad data sent by the Beacon node */
|
|
185
186
|
private validateAttestationDuty;
|
|
186
187
|
private validatePtcDuty;
|
|
188
|
+
/**
|
|
189
|
+
* Required before signing a message that is slashable or that the beacon node counts as validator
|
|
190
|
+
* liveness (see `validatorSeenAtEpoch`), otherwise doppelganger detection would flag our own messages.
|
|
191
|
+
* Skip it for anything else.
|
|
192
|
+
*/
|
|
187
193
|
private assertDoppelgangerSafe;
|
|
188
194
|
}
|
|
189
195
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validatorStore.d.ts","sourceRoot":"","sources":["../../src/services/validatorStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"validatorStore.d.ts","sourceRoot":"","sources":["../../src/services/validatorStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BitArray } from "@chainsafe/ssz";
|
|
2
2
|
import { routes } from "@lodestar/api";
|
|
3
|
-
import { DOMAIN_AGGREGATE_AND_PROOF, DOMAIN_APPLICATION_BUILDER, DOMAIN_BEACON_ATTESTER, DOMAIN_BEACON_BUILDER, DOMAIN_BEACON_PROPOSER, DOMAIN_BUILDER_REQUEST_AUTH, DOMAIN_CONTRIBUTION_AND_PROOF, DOMAIN_PROPOSER_PREFERENCES, DOMAIN_PTC_ATTESTER, DOMAIN_RANDAO, DOMAIN_SELECTION_PROOF, DOMAIN_SYNC_COMMITTEE, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, ForkSeq, MAX_BUILDER_AUTH_DATA_SIZE, } from "@lodestar/params";
|
|
3
|
+
import { DOMAIN_AGGREGATE_AND_PROOF, DOMAIN_APPLICATION_BUILDER, DOMAIN_BEACON_ATTESTER, DOMAIN_BEACON_BUILDER, DOMAIN_BEACON_PROPOSER, DOMAIN_BUILDER_REQUEST_AUTH, DOMAIN_CONTRIBUTION_AND_PROOF, DOMAIN_INCLUSION_LIST_COMMITTEE, DOMAIN_PROPOSER_PREFERENCES, DOMAIN_PTC_ATTESTER, DOMAIN_RANDAO, DOMAIN_SELECTION_PROOF, DOMAIN_SYNC_COMMITTEE, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, ForkSeq, MAX_BUILDER_AUTH_DATA_SIZE, } from "@lodestar/params";
|
|
4
4
|
import { ZERO_HASH, blindedOrFullBlockHashTreeRoot, computeDomain, computeEpochAtSlot, computeSigningRoot, computeStartSlotAtEpoch, } from "@lodestar/state-transition";
|
|
5
5
|
import { ssz, } from "@lodestar/types";
|
|
6
6
|
import { fromHex, isValidAsciiHttpUrl, toHex, toPubkeyHex, toRootHex } from "@lodestar/utils";
|
|
@@ -402,7 +402,8 @@ export class ValidatorStore {
|
|
|
402
402
|
}
|
|
403
403
|
removeSigner(pubkeyHex) {
|
|
404
404
|
this.doppelgangerService?.unregisterValidator(pubkeyHex);
|
|
405
|
-
|
|
405
|
+
this.indicesService.removeForKey(pubkeyHex);
|
|
406
|
+
return this.validators.delete(pubkeyHex);
|
|
406
407
|
}
|
|
407
408
|
/** Return true if there is at least 1 pubkey registered */
|
|
408
409
|
hasSomeValidators() {
|
|
@@ -530,6 +531,7 @@ export class ValidatorStore {
|
|
|
530
531
|
}
|
|
531
532
|
async signAggregateAndProof(duty, selectionProof, aggregate) {
|
|
532
533
|
this.validateAttestationDuty(duty, aggregate.data);
|
|
534
|
+
this.assertDoppelgangerSafe(duty.pubkey);
|
|
533
535
|
const aggregateAndProof = {
|
|
534
536
|
aggregate,
|
|
535
537
|
aggregatorIndex: duty.validatorIndex,
|
|
@@ -609,7 +611,6 @@ export class ValidatorStore {
|
|
|
609
611
|
if (duty.slot <= currentSlot) {
|
|
610
612
|
throw Error(`Not signing proposer preferences for past slot ${duty.slot} (current ${currentSlot})`);
|
|
611
613
|
}
|
|
612
|
-
this.assertDoppelgangerSafe(duty.pubkey);
|
|
613
614
|
const message = {
|
|
614
615
|
dependentRoot,
|
|
615
616
|
proposalSlot: duty.slot,
|
|
@@ -629,6 +630,26 @@ export class ValidatorStore {
|
|
|
629
630
|
signature: await this.getSignature(duty.pubkey, signingRoot, signingSlot, signableMessage),
|
|
630
631
|
};
|
|
631
632
|
}
|
|
633
|
+
async signInclusionList(duty, inclusionList) {
|
|
634
|
+
if (duty.slot !== inclusionList.slot) {
|
|
635
|
+
throw Error(`Inconsistent duties during signing: duty.slot ${duty.slot} != inclusionList.slot ${inclusionList.slot}`);
|
|
636
|
+
}
|
|
637
|
+
if (duty.validatorIndex !== inclusionList.validatorIndex) {
|
|
638
|
+
throw Error(`Inconsistent duties during signing: duty.validatorIndex ${duty.validatorIndex} != inclusionList.validatorIndex ${inclusionList.validatorIndex}`);
|
|
639
|
+
}
|
|
640
|
+
this.assertDoppelgangerSafe(duty.pubkey);
|
|
641
|
+
const signingSlot = inclusionList.slot;
|
|
642
|
+
const domain = this.config.getDomain(signingSlot, DOMAIN_INCLUSION_LIST_COMMITTEE);
|
|
643
|
+
const signingRoot = computeSigningRoot(ssz.heze.InclusionList, inclusionList, domain);
|
|
644
|
+
const signableMessage = {
|
|
645
|
+
type: SignableMessageType.INCLUSION_LIST,
|
|
646
|
+
data: inclusionList,
|
|
647
|
+
};
|
|
648
|
+
return {
|
|
649
|
+
message: inclusionList,
|
|
650
|
+
signature: await this.getSignature(duty.pubkey, signingRoot, signingSlot, signableMessage),
|
|
651
|
+
};
|
|
652
|
+
}
|
|
632
653
|
async signAttestationSelectionProof(pubkey, slot) {
|
|
633
654
|
const signingSlot = slot;
|
|
634
655
|
const domain = this.config.getDomain(slot, DOMAIN_SELECTION_PROOF);
|
|
@@ -813,6 +834,11 @@ export class ValidatorStore {
|
|
|
813
834
|
throw Error(`Inconsistent PTC duties during signing: duty.slot ${duty.slot} != data.slot ${data.slot}`);
|
|
814
835
|
}
|
|
815
836
|
}
|
|
837
|
+
/**
|
|
838
|
+
* Required before signing a message that is slashable or that the beacon node counts as validator
|
|
839
|
+
* liveness (see `validatorSeenAtEpoch`), otherwise doppelganger detection would flag our own messages.
|
|
840
|
+
* Skip it for anything else.
|
|
841
|
+
*/
|
|
816
842
|
assertDoppelgangerSafe(pubKey) {
|
|
817
843
|
const pubkeyHex = typeof pubKey === "string" ? pubKey : toPubkeyHex(pubKey);
|
|
818
844
|
if (!this.isDoppelgangerSafe(pubkeyHex)) {
|