@lodestar/state-transition 1.22.0-rc.0 → 1.23.0-dev.0dceb831ca
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/block/processBlsToExecutionChange.js +3 -2
- package/lib/block/processBlsToExecutionChange.js.map +1 -1
- package/lib/block/processExecutionPayload.js +4 -3
- package/lib/block/processExecutionPayload.js.map +1 -1
- package/lib/block/processWithdrawalRequest.js +3 -3
- package/lib/block/processWithdrawalRequest.js.map +1 -1
- package/lib/cache/epochCache.d.ts +52 -21
- package/lib/cache/epochCache.js +179 -71
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/epochTransitionCache.d.ts +4 -4
- package/lib/cache/epochTransitionCache.js +19 -4
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/cache/stateCache.js +2 -1
- package/lib/cache/stateCache.js.map +1 -1
- package/lib/epoch/processSyncCommitteeUpdates.js +1 -1
- package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
- package/lib/slot/upgradeStateToAltair.js +1 -1
- package/lib/slot/upgradeStateToAltair.js.map +1 -1
- package/lib/stateTransition.js +19 -0
- package/lib/stateTransition.js.map +1 -1
- package/lib/util/calculateCommitteeAssignments.d.ts +12 -0
- package/lib/util/calculateCommitteeAssignments.js +26 -0
- package/lib/util/calculateCommitteeAssignments.js.map +1 -0
- package/lib/util/computeAnchorCheckpoint.d.ts +8 -0
- package/lib/util/computeAnchorCheckpoint.js +32 -0
- package/lib/util/computeAnchorCheckpoint.js.map +1 -0
- package/lib/util/epochShuffling.d.ts +42 -2
- package/lib/util/epochShuffling.js +18 -13
- package/lib/util/epochShuffling.js.map +1 -1
- package/lib/util/index.d.ts +2 -0
- package/lib/util/index.js +2 -0
- package/lib/util/index.js.map +1 -1
- package/package.json +6 -6
package/lib/cache/epochCache.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
2
|
import * as immutable from "immutable";
|
|
3
|
-
import { fromHexString } from "@chainsafe/ssz";
|
|
4
3
|
import { createBeaconConfig } from "@lodestar/config";
|
|
5
4
|
import { ATTESTATION_SUBNET_COUNT, DOMAIN_BEACON_PROPOSER, EFFECTIVE_BALANCE_INCREMENT, FAR_FUTURE_EPOCH, ForkSeq, GENESIS_EPOCH, PROPOSER_WEIGHT, SLOTS_PER_EPOCH, WEIGHT_DENOMINATOR, } from "@lodestar/params";
|
|
6
|
-
import { LodestarError } from "@lodestar/utils";
|
|
5
|
+
import { LodestarError, fromHex } from "@lodestar/utils";
|
|
7
6
|
import { computeActivationExitEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, getChurnLimit, isActiveValidator, isAggregatorFromCommitteeLength, computeSyncPeriodAtEpoch, getSeed, computeProposers, getActivationChurnLimit, } from "../util/index.js";
|
|
8
|
-
import { computeEpochShuffling,
|
|
7
|
+
import { computeEpochShuffling, calculateShufflingDecisionRoot, } from "../util/epochShuffling.js";
|
|
9
8
|
import { computeBaseRewardPerIncrement, computeSyncParticipantReward } from "../util/syncCommittee.js";
|
|
10
9
|
import { sumTargetUnslashedBalanceIncrements } from "../util/targetUnslashedBalance.js";
|
|
11
10
|
import { getTotalSlashingsByIncrement } from "../epoch/processSlashings.js";
|
|
11
|
+
import { calculateCommitteeAssignments } from "../util/calculateCommitteeAssignments.js";
|
|
12
12
|
import { getEffectiveBalanceIncrementsWithLen } from "./effectiveBalanceIncrements.js";
|
|
13
13
|
import { PubkeyIndexMap, syncPubkeys, toMemoryEfficientHexStr, newUnfinalizedPubkeyIndexMap, } from "./pubkeyCache.js";
|
|
14
14
|
import { computeSyncCommitteeCache, getSyncCommitteeCache, SyncCommitteeCacheEmpty, } from "./syncCommitteeCache.js";
|
|
@@ -37,17 +37,25 @@ export const PROPOSER_WEIGHT_FACTOR = PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PR
|
|
|
37
37
|
* - syncPeriod
|
|
38
38
|
**/
|
|
39
39
|
export class EpochCache {
|
|
40
|
+
get nextEpoch() {
|
|
41
|
+
return this.epoch + 1;
|
|
42
|
+
}
|
|
40
43
|
constructor(data) {
|
|
41
44
|
this.config = data.config;
|
|
42
45
|
this.pubkey2index = data.pubkey2index;
|
|
43
46
|
this.index2pubkey = data.index2pubkey;
|
|
44
47
|
this.unfinalizedPubkey2index = data.unfinalizedPubkey2index;
|
|
48
|
+
this.shufflingCache = data.shufflingCache;
|
|
45
49
|
this.proposers = data.proposers;
|
|
46
50
|
this.proposersPrevEpoch = data.proposersPrevEpoch;
|
|
47
51
|
this.proposersNextEpoch = data.proposersNextEpoch;
|
|
52
|
+
this.previousDecisionRoot = data.previousDecisionRoot;
|
|
53
|
+
this.currentDecisionRoot = data.currentDecisionRoot;
|
|
54
|
+
this.nextDecisionRoot = data.nextDecisionRoot;
|
|
48
55
|
this.previousShuffling = data.previousShuffling;
|
|
49
56
|
this.currentShuffling = data.currentShuffling;
|
|
50
57
|
this.nextShuffling = data.nextShuffling;
|
|
58
|
+
this.nextActiveIndices = data.nextActiveIndices;
|
|
51
59
|
this.effectiveBalanceIncrements = data.effectiveBalanceIncrements;
|
|
52
60
|
this.totalSlashingsByIncrement = data.totalSlashingsByIncrement;
|
|
53
61
|
this.syncParticipantReward = data.syncParticipantReward;
|
|
@@ -72,7 +80,7 @@ export class EpochCache {
|
|
|
72
80
|
*
|
|
73
81
|
* SLOW CODE - 🐢
|
|
74
82
|
*/
|
|
75
|
-
static createFromState(state, { config, pubkey2index, index2pubkey }, opts) {
|
|
83
|
+
static createFromState(state, { config, pubkey2index, index2pubkey, shufflingCache }, opts) {
|
|
76
84
|
const currentEpoch = computeEpochAtSlot(state.slot);
|
|
77
85
|
const isGenesis = currentEpoch === GENESIS_EPOCH;
|
|
78
86
|
const previousEpoch = isGenesis ? GENESIS_EPOCH : currentEpoch - 1;
|
|
@@ -89,17 +97,17 @@ export class EpochCache {
|
|
|
89
97
|
}
|
|
90
98
|
const effectiveBalanceIncrements = getEffectiveBalanceIncrementsWithLen(validatorCount);
|
|
91
99
|
const totalSlashingsByIncrement = getTotalSlashingsByIncrement(state);
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
const
|
|
100
|
+
const previousActiveIndicesAsNumberArray = [];
|
|
101
|
+
const currentActiveIndicesAsNumberArray = [];
|
|
102
|
+
const nextActiveIndicesAsNumberArray = [];
|
|
95
103
|
// BeaconChain could provide a shuffling cache to avoid re-computing shuffling every epoch
|
|
96
104
|
// in that case, we don't need to compute shufflings again
|
|
97
|
-
const
|
|
98
|
-
const cachedPreviousShuffling =
|
|
99
|
-
const
|
|
100
|
-
const cachedCurrentShuffling =
|
|
101
|
-
const
|
|
102
|
-
const cachedNextShuffling =
|
|
105
|
+
const previousDecisionRoot = calculateShufflingDecisionRoot(config, state, previousEpoch);
|
|
106
|
+
const cachedPreviousShuffling = shufflingCache?.getSync(previousEpoch, previousDecisionRoot);
|
|
107
|
+
const currentDecisionRoot = calculateShufflingDecisionRoot(config, state, currentEpoch);
|
|
108
|
+
const cachedCurrentShuffling = shufflingCache?.getSync(currentEpoch, currentDecisionRoot);
|
|
109
|
+
const nextDecisionRoot = calculateShufflingDecisionRoot(config, state, nextEpoch);
|
|
110
|
+
const cachedNextShuffling = shufflingCache?.getSync(nextEpoch, nextDecisionRoot);
|
|
103
111
|
for (let i = 0; i < validatorCount; i++) {
|
|
104
112
|
const validator = validators[i];
|
|
105
113
|
// Note: Not usable for fork-choice balances since in-active validators are not zero'ed
|
|
@@ -107,17 +115,17 @@ export class EpochCache {
|
|
|
107
115
|
// we only need to track active indices for previous, current and next epoch if we have to compute shufflings
|
|
108
116
|
// skip doing that if we already have cached shufflings
|
|
109
117
|
if (cachedPreviousShuffling == null && isActiveValidator(validator, previousEpoch)) {
|
|
110
|
-
|
|
118
|
+
previousActiveIndicesAsNumberArray.push(i);
|
|
111
119
|
}
|
|
112
120
|
if (isActiveValidator(validator, currentEpoch)) {
|
|
113
121
|
if (cachedCurrentShuffling == null) {
|
|
114
|
-
|
|
122
|
+
currentActiveIndicesAsNumberArray.push(i);
|
|
115
123
|
}
|
|
116
124
|
// We track totalActiveBalanceIncrements as ETH to fit total network balance in a JS number (53 bits)
|
|
117
125
|
totalActiveBalanceIncrements += effectiveBalanceIncrements[i];
|
|
118
126
|
}
|
|
119
127
|
if (cachedNextShuffling == null && isActiveValidator(validator, nextEpoch)) {
|
|
120
|
-
|
|
128
|
+
nextActiveIndicesAsNumberArray.push(i);
|
|
121
129
|
}
|
|
122
130
|
const { exitEpoch } = validator;
|
|
123
131
|
if (exitEpoch !== FAR_FUTURE_EPOCH) {
|
|
@@ -138,13 +146,40 @@ export class EpochCache {
|
|
|
138
146
|
else if (totalActiveBalanceIncrements >= Number.MAX_SAFE_INTEGER) {
|
|
139
147
|
throw Error("totalActiveBalanceIncrements >= Number.MAX_SAFE_INTEGER. MAX_EFFECTIVE_BALANCE is too low.");
|
|
140
148
|
}
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
const nextActiveIndices = new Uint32Array(nextActiveIndicesAsNumberArray);
|
|
150
|
+
let previousShuffling;
|
|
151
|
+
let currentShuffling;
|
|
152
|
+
let nextShuffling;
|
|
153
|
+
if (!shufflingCache) {
|
|
154
|
+
// Only for testing. shufflingCache should always be available in prod
|
|
155
|
+
previousShuffling = computeEpochShuffling(state, new Uint32Array(previousActiveIndicesAsNumberArray), previousEpoch);
|
|
156
|
+
currentShuffling = isGenesis
|
|
157
|
+
? previousShuffling
|
|
158
|
+
: computeEpochShuffling(state, new Uint32Array(currentActiveIndicesAsNumberArray), currentEpoch);
|
|
159
|
+
nextShuffling = computeEpochShuffling(state, nextActiveIndices, nextEpoch);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
currentShuffling = cachedCurrentShuffling
|
|
163
|
+
? cachedCurrentShuffling
|
|
164
|
+
: shufflingCache.getSync(currentEpoch, currentDecisionRoot, {
|
|
165
|
+
state,
|
|
166
|
+
activeIndices: new Uint32Array(currentActiveIndicesAsNumberArray),
|
|
167
|
+
});
|
|
168
|
+
previousShuffling = cachedPreviousShuffling
|
|
169
|
+
? cachedPreviousShuffling
|
|
170
|
+
: isGenesis
|
|
171
|
+
? currentShuffling
|
|
172
|
+
: shufflingCache.getSync(previousEpoch, previousDecisionRoot, {
|
|
173
|
+
state,
|
|
174
|
+
activeIndices: new Uint32Array(previousActiveIndicesAsNumberArray),
|
|
175
|
+
});
|
|
176
|
+
nextShuffling = cachedNextShuffling
|
|
177
|
+
? cachedNextShuffling
|
|
178
|
+
: shufflingCache.getSync(nextEpoch, nextDecisionRoot, {
|
|
179
|
+
state,
|
|
180
|
+
activeIndices: nextActiveIndices,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
148
183
|
const currentProposerSeed = getSeed(state, currentEpoch, DOMAIN_BEACON_PROPOSER);
|
|
149
184
|
// Allow to create CachedBeaconState for empty states, or no active validators
|
|
150
185
|
const proposers = currentShuffling.activeIndices.length > 0
|
|
@@ -208,13 +243,18 @@ export class EpochCache {
|
|
|
208
243
|
index2pubkey,
|
|
209
244
|
// `createFromFinalizedState()` creates cache with empty unfinalizedPubkey2index. Be cautious to only pass in finalized state
|
|
210
245
|
unfinalizedPubkey2index: newUnfinalizedPubkeyIndexMap(),
|
|
246
|
+
shufflingCache,
|
|
211
247
|
proposers,
|
|
212
248
|
// On first epoch, set to null to prevent unnecessary work since this is only used for metrics
|
|
213
249
|
proposersPrevEpoch: null,
|
|
214
250
|
proposersNextEpoch,
|
|
251
|
+
previousDecisionRoot,
|
|
252
|
+
currentDecisionRoot,
|
|
253
|
+
nextDecisionRoot,
|
|
215
254
|
previousShuffling,
|
|
216
255
|
currentShuffling,
|
|
217
256
|
nextShuffling,
|
|
257
|
+
nextActiveIndices,
|
|
218
258
|
effectiveBalanceIncrements,
|
|
219
259
|
totalSlashingsByIncrement,
|
|
220
260
|
syncParticipantReward,
|
|
@@ -248,13 +288,18 @@ export class EpochCache {
|
|
|
248
288
|
index2pubkey: this.index2pubkey,
|
|
249
289
|
// No need to clone this reference. On each mutation the `unfinalizedPubkey2index` reference is replaced, @see `addPubkey`
|
|
250
290
|
unfinalizedPubkey2index: this.unfinalizedPubkey2index,
|
|
291
|
+
shufflingCache: this.shufflingCache,
|
|
251
292
|
// Immutable data
|
|
252
293
|
proposers: this.proposers,
|
|
253
294
|
proposersPrevEpoch: this.proposersPrevEpoch,
|
|
254
295
|
proposersNextEpoch: this.proposersNextEpoch,
|
|
296
|
+
previousDecisionRoot: this.previousDecisionRoot,
|
|
297
|
+
currentDecisionRoot: this.currentDecisionRoot,
|
|
298
|
+
nextDecisionRoot: this.nextDecisionRoot,
|
|
255
299
|
previousShuffling: this.previousShuffling,
|
|
256
300
|
currentShuffling: this.currentShuffling,
|
|
257
301
|
nextShuffling: this.nextShuffling,
|
|
302
|
+
nextActiveIndices: this.nextActiveIndices,
|
|
258
303
|
// Uint8Array, requires cloning, but it is cloned only when necessary before an epoch transition
|
|
259
304
|
// See EpochCache.beforeEpochTransition()
|
|
260
305
|
effectiveBalanceIncrements: this.effectiveBalanceIncrements,
|
|
@@ -279,23 +324,79 @@ export class EpochCache {
|
|
|
279
324
|
}
|
|
280
325
|
/**
|
|
281
326
|
* Called to re-use information, such as the shuffling of the next epoch, after transitioning into a
|
|
282
|
-
* new epoch.
|
|
327
|
+
* new epoch. Also handles pre-computation of values that may change during the upcoming epoch and
|
|
328
|
+
* that get used in the following epoch transition. Often those pre-computations are not used by the
|
|
329
|
+
* chain but are courtesy values that are served via the API for epoch look ahead of duties.
|
|
330
|
+
*
|
|
331
|
+
* Steps for afterProcessEpoch
|
|
332
|
+
* 1) update previous/current/next values of cached items
|
|
283
333
|
*/
|
|
284
334
|
afterProcessEpoch(state, epochTransitionCache) {
|
|
335
|
+
// Because the slot was incremented before entering this function the "next epoch" is actually the "current epoch"
|
|
336
|
+
// in this context but that is not actually true because the state transition happens in the last 4 seconds of the
|
|
337
|
+
// epoch. For the context of this function "upcoming epoch" is used to denote the epoch that will begin after this
|
|
338
|
+
// function returns. The epoch that is "next" once the state transition is complete is referred to as the
|
|
339
|
+
// epochAfterUpcoming for the same reason to help minimize confusion.
|
|
340
|
+
const upcomingEpoch = this.nextEpoch;
|
|
341
|
+
const epochAfterUpcoming = upcomingEpoch + 1;
|
|
342
|
+
// move current to previous
|
|
285
343
|
this.previousShuffling = this.currentShuffling;
|
|
286
|
-
this.
|
|
287
|
-
const currEpoch = this.currentShuffling.epoch;
|
|
288
|
-
const nextEpoch = currEpoch + 1;
|
|
289
|
-
this.nextShuffling = computeEpochShuffling(state, epochTransitionCache.nextEpochShufflingActiveValidatorIndices, epochTransitionCache.nextEpochShufflingActiveIndicesLength, nextEpoch);
|
|
290
|
-
// Roll current proposers into previous proposers for metrics
|
|
344
|
+
this.previousDecisionRoot = this.currentDecisionRoot;
|
|
291
345
|
this.proposersPrevEpoch = this.proposers;
|
|
292
|
-
|
|
293
|
-
this.
|
|
346
|
+
// move next to current or calculate upcoming
|
|
347
|
+
this.currentDecisionRoot = this.nextDecisionRoot;
|
|
348
|
+
if (this.nextShuffling) {
|
|
349
|
+
// was already pulled from the ShufflingCache to the EpochCache (should be in most cases)
|
|
350
|
+
this.currentShuffling = this.nextShuffling;
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
this.shufflingCache?.metrics?.shufflingCache.nextShufflingNotOnEpochCache.inc();
|
|
354
|
+
this.currentShuffling =
|
|
355
|
+
this.shufflingCache?.getSync(upcomingEpoch, this.currentDecisionRoot, {
|
|
356
|
+
state,
|
|
357
|
+
// have to use the "nextActiveIndices" that were saved in the last transition here to calculate
|
|
358
|
+
// the upcoming shuffling if it is not already built (similar condition to the below computation)
|
|
359
|
+
activeIndices: this.nextActiveIndices,
|
|
360
|
+
}) ??
|
|
361
|
+
// allow for this case during testing where the ShufflingCache is not present, may affect perf testing
|
|
362
|
+
// so should be taken into account when structuring tests. Should not affect unit or other tests though
|
|
363
|
+
computeEpochShuffling(state, this.nextActiveIndices, upcomingEpoch);
|
|
364
|
+
}
|
|
365
|
+
const upcomingProposerSeed = getSeed(state, upcomingEpoch, DOMAIN_BEACON_PROPOSER);
|
|
366
|
+
// next epoch was moved to current epoch so use current here
|
|
367
|
+
this.proposers = computeProposers(this.config.getForkSeqAtEpoch(upcomingEpoch), upcomingProposerSeed, this.currentShuffling, this.effectiveBalanceIncrements);
|
|
368
|
+
// handle next values
|
|
369
|
+
this.nextDecisionRoot = epochTransitionCache.nextShufflingDecisionRoot;
|
|
370
|
+
this.nextActiveIndices = epochTransitionCache.nextShufflingActiveIndices;
|
|
371
|
+
if (this.shufflingCache) {
|
|
372
|
+
this.nextShuffling = null;
|
|
373
|
+
// This promise will resolve immediately after the synchronous code of the state-transition runs. Until
|
|
374
|
+
// the build is done on a worker thread it will be calculated immediately after the epoch transition
|
|
375
|
+
// completes. Once the work is done concurrently it should be ready by time this get runs so the promise
|
|
376
|
+
// will resolve directly on the next spin of the event loop because the epoch transition and shuffling take
|
|
377
|
+
// about the same time to calculate so theoretically its ready now. Do not await here though in case it
|
|
378
|
+
// is not ready yet as the transition must not be asynchronous.
|
|
379
|
+
this.shufflingCache
|
|
380
|
+
.get(epochAfterUpcoming, this.nextDecisionRoot)
|
|
381
|
+
.then((shuffling) => {
|
|
382
|
+
if (!shuffling) {
|
|
383
|
+
throw new Error("EpochShuffling not returned from get in afterProcessEpoch");
|
|
384
|
+
}
|
|
385
|
+
this.nextShuffling = shuffling;
|
|
386
|
+
})
|
|
387
|
+
.catch((err) => {
|
|
388
|
+
this.shufflingCache?.logger?.error("EPOCH_CONTEXT_SHUFFLING_BUILD_ERROR", { epoch: epochAfterUpcoming, decisionRoot: epochTransitionCache.nextShufflingDecisionRoot }, err);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
// Only for testing. shufflingCache should always be available in prod
|
|
393
|
+
this.nextShuffling = computeEpochShuffling(state, this.nextActiveIndices, epochAfterUpcoming);
|
|
394
|
+
}
|
|
294
395
|
// Only pre-compute the seed since it's very cheap. Do the expensive computeProposers() call only on demand.
|
|
295
|
-
this.proposersNextEpoch = { computed: false, seed: getSeed(state,
|
|
396
|
+
this.proposersNextEpoch = { computed: false, seed: getSeed(state, epochAfterUpcoming, DOMAIN_BEACON_PROPOSER) };
|
|
296
397
|
// TODO: DEDUPLICATE from createEpochCache
|
|
297
398
|
//
|
|
298
|
-
// Precompute churnLimit for efficient initiateValidatorExit() during block proposing MUST be recompute
|
|
399
|
+
// Precompute churnLimit for efficient initiateValidatorExit() during block proposing MUST be recompute every time the
|
|
299
400
|
// active validator indices set changes in size. Validators change active status only when:
|
|
300
401
|
// - validator.activation_epoch is set. Only changes in process_registry_updates() if validator can be activated. If
|
|
301
402
|
// the value changes it will be set to `epoch + 1 + MAX_SEED_LOOKAHEAD`.
|
|
@@ -312,13 +413,13 @@ export class EpochCache {
|
|
|
312
413
|
this.churnLimit = getChurnLimit(this.config, this.currentShuffling.activeIndices.length);
|
|
313
414
|
this.activationChurnLimit = getActivationChurnLimit(this.config, this.config.getForkSeq(state.slot), this.currentShuffling.activeIndices.length);
|
|
314
415
|
// Maybe advance exitQueueEpoch at the end of the epoch if there haven't been any exists for a while
|
|
315
|
-
const exitQueueEpoch = computeActivationExitEpoch(
|
|
416
|
+
const exitQueueEpoch = computeActivationExitEpoch(upcomingEpoch);
|
|
316
417
|
if (exitQueueEpoch > this.exitQueueEpoch) {
|
|
317
418
|
this.exitQueueEpoch = exitQueueEpoch;
|
|
318
419
|
this.exitQueueChurn = 0;
|
|
319
420
|
}
|
|
320
421
|
this.totalActiveBalanceIncrements = epochTransitionCache.nextEpochTotalActiveBalanceByIncrement;
|
|
321
|
-
if (
|
|
422
|
+
if (upcomingEpoch >= this.config.ALTAIR_FORK_EPOCH) {
|
|
322
423
|
this.syncParticipantReward = computeSyncParticipantReward(this.totalActiveBalanceIncrements);
|
|
323
424
|
this.syncProposerReward = Math.floor(this.syncParticipantReward * PROPOSER_WEIGHT_FACTOR);
|
|
324
425
|
this.baseRewardPerIncrement = computeBaseRewardPerIncrement(this.totalActiveBalanceIncrements);
|
|
@@ -337,7 +438,7 @@ export class EpochCache {
|
|
|
337
438
|
// Only keep validatorLength for epochs after finalized cpState.epoch
|
|
338
439
|
// eg. [100(epoch 1), 102(epoch 2)].push(104(epoch 3)), this.epoch = 3, finalized cp epoch = 1
|
|
339
440
|
// We keep the last (3 - 1) items = [102, 104]
|
|
340
|
-
if (
|
|
441
|
+
if (upcomingEpoch >= this.config.ELECTRA_FORK_EPOCH) {
|
|
341
442
|
this.historicalValidatorLengths = this.historicalValidatorLengths.push(state.validators.length);
|
|
342
443
|
// If number of validatorLengths we want to keep exceeds the current list size, it implies
|
|
343
444
|
// finalized checkpoint hasn't advanced, and no need to slice
|
|
@@ -457,7 +558,7 @@ export class EpochCache {
|
|
|
457
558
|
*/
|
|
458
559
|
getBeaconProposersNextEpoch() {
|
|
459
560
|
if (!this.proposersNextEpoch.computed) {
|
|
460
|
-
const indexes = computeProposers(this.config.getForkSeqAtEpoch(this.epoch + 1), this.proposersNextEpoch.seed, this.
|
|
561
|
+
const indexes = computeProposers(this.config.getForkSeqAtEpoch(this.epoch + 1), this.proposersNextEpoch.seed, this.getShufflingAtEpoch(this.nextEpoch), this.effectiveBalanceIncrements);
|
|
461
562
|
this.proposersNextEpoch = { computed: true, indexes };
|
|
462
563
|
}
|
|
463
564
|
return this.proposersNextEpoch.indexes;
|
|
@@ -498,28 +599,8 @@ export class EpochCache {
|
|
|
498
599
|
}
|
|
499
600
|
}
|
|
500
601
|
getCommitteeAssignments(epoch, requestedValidatorIndices) {
|
|
501
|
-
const
|
|
502
|
-
|
|
503
|
-
const epochCommittees = this.getShufflingAtEpoch(epoch).committees;
|
|
504
|
-
for (let epochSlot = 0; epochSlot < SLOTS_PER_EPOCH; epochSlot++) {
|
|
505
|
-
const slotCommittees = epochCommittees[epochSlot];
|
|
506
|
-
for (let i = 0, committeesAtSlot = slotCommittees.length; i < committeesAtSlot; i++) {
|
|
507
|
-
for (let j = 0, committeeLength = slotCommittees[i].length; j < committeeLength; j++) {
|
|
508
|
-
const validatorIndex = slotCommittees[i][j];
|
|
509
|
-
if (requestedValidatorIndicesSet.has(validatorIndex)) {
|
|
510
|
-
duties.set(validatorIndex, {
|
|
511
|
-
validatorIndex,
|
|
512
|
-
committeeLength,
|
|
513
|
-
committeesAtSlot,
|
|
514
|
-
validatorCommitteeIndex: j,
|
|
515
|
-
committeeIndex: i,
|
|
516
|
-
slot: epoch * SLOTS_PER_EPOCH + epochSlot,
|
|
517
|
-
});
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
return duties;
|
|
602
|
+
const shuffling = this.getShufflingAtEpoch(epoch);
|
|
603
|
+
return calculateCommitteeAssignments(shuffling, requestedValidatorIndices);
|
|
523
604
|
}
|
|
524
605
|
/**
|
|
525
606
|
* Return the committee assignment in the ``epoch`` for ``validator_index``.
|
|
@@ -609,7 +690,7 @@ export class EpochCache {
|
|
|
609
690
|
}
|
|
610
691
|
}
|
|
611
692
|
this.pubkey2index.set(pubkey, index);
|
|
612
|
-
const pubkeyBytes = pubkey instanceof Uint8Array ? pubkey :
|
|
693
|
+
const pubkeyBytes = pubkey instanceof Uint8Array ? pubkey : fromHex(pubkey);
|
|
613
694
|
this.index2pubkey[index] = PublicKey.fromBytes(pubkeyBytes); // Optimize for aggregation
|
|
614
695
|
}
|
|
615
696
|
/**
|
|
@@ -629,6 +710,13 @@ export class EpochCache {
|
|
|
629
710
|
getShufflingAtEpoch(epoch) {
|
|
630
711
|
const shuffling = this.getShufflingAtEpochOrNull(epoch);
|
|
631
712
|
if (shuffling === null) {
|
|
713
|
+
if (epoch === this.nextEpoch) {
|
|
714
|
+
throw new EpochCacheError({
|
|
715
|
+
code: EpochCacheErrorCode.NEXT_SHUFFLING_NOT_AVAILABLE,
|
|
716
|
+
epoch: epoch,
|
|
717
|
+
decisionRoot: this.getShufflingDecisionRoot(this.nextEpoch),
|
|
718
|
+
});
|
|
719
|
+
}
|
|
632
720
|
throw new EpochCacheError({
|
|
633
721
|
code: EpochCacheErrorCode.COMMITTEE_EPOCH_OUT_OF_RANGE,
|
|
634
722
|
currentEpoch: this.currentShuffling.epoch,
|
|
@@ -637,18 +725,36 @@ export class EpochCache {
|
|
|
637
725
|
}
|
|
638
726
|
return shuffling;
|
|
639
727
|
}
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
728
|
+
getShufflingDecisionRoot(epoch) {
|
|
729
|
+
switch (epoch) {
|
|
730
|
+
case this.epoch - 1:
|
|
731
|
+
return this.previousDecisionRoot;
|
|
732
|
+
case this.epoch:
|
|
733
|
+
return this.currentDecisionRoot;
|
|
734
|
+
case this.nextEpoch:
|
|
735
|
+
return this.nextDecisionRoot;
|
|
736
|
+
default:
|
|
737
|
+
throw new EpochCacheError({
|
|
738
|
+
code: EpochCacheErrorCode.DECISION_ROOT_EPOCH_OUT_OF_RANGE,
|
|
739
|
+
currentEpoch: this.epoch,
|
|
740
|
+
requestedEpoch: epoch,
|
|
741
|
+
});
|
|
649
742
|
}
|
|
650
|
-
|
|
651
|
-
|
|
743
|
+
}
|
|
744
|
+
getShufflingAtEpochOrNull(epoch) {
|
|
745
|
+
switch (epoch) {
|
|
746
|
+
case this.epoch - 1:
|
|
747
|
+
return this.previousShuffling;
|
|
748
|
+
case this.epoch:
|
|
749
|
+
return this.currentShuffling;
|
|
750
|
+
case this.nextEpoch:
|
|
751
|
+
if (!this.nextShuffling) {
|
|
752
|
+
this.nextShuffling =
|
|
753
|
+
this.shufflingCache?.getSync(this.nextEpoch, this.getShufflingDecisionRoot(this.nextEpoch)) ?? null;
|
|
754
|
+
}
|
|
755
|
+
return this.nextShuffling;
|
|
756
|
+
default:
|
|
757
|
+
return null;
|
|
652
758
|
}
|
|
653
759
|
}
|
|
654
760
|
/**
|
|
@@ -736,6 +842,8 @@ export var EpochCacheErrorCode;
|
|
|
736
842
|
(function (EpochCacheErrorCode) {
|
|
737
843
|
EpochCacheErrorCode["COMMITTEE_INDEX_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE";
|
|
738
844
|
EpochCacheErrorCode["COMMITTEE_EPOCH_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_COMMITTEE_EPOCH_OUT_OF_RANGE";
|
|
845
|
+
EpochCacheErrorCode["DECISION_ROOT_EPOCH_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_DECISION_ROOT_EPOCH_OUT_OF_RANGE";
|
|
846
|
+
EpochCacheErrorCode["NEXT_SHUFFLING_NOT_AVAILABLE"] = "EPOCH_CONTEXT_ERROR_NEXT_SHUFFLING_NOT_AVAILABLE";
|
|
739
847
|
EpochCacheErrorCode["NO_SYNC_COMMITTEE"] = "EPOCH_CONTEXT_ERROR_NO_SYNC_COMMITTEE";
|
|
740
848
|
EpochCacheErrorCode["PROPOSER_EPOCH_MISMATCH"] = "EPOCH_CONTEXT_ERROR_PROPOSER_EPOCH_MISMATCH";
|
|
741
849
|
})(EpochCacheErrorCode || (EpochCacheErrorCode = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochCache.js","sourceRoot":"","sources":["../../src/cache/epochCache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"epochCache.js","sourceRoot":"","sources":["../../src/cache/epochCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Epoch,
|
|
1
|
+
import { phase0, Epoch, RootHex, ValidatorIndex } from "@lodestar/types";
|
|
2
2
|
import { CachedBeaconStateAllForks } from "../index.js";
|
|
3
3
|
export type EpochTransitionCacheOpts = {
|
|
4
4
|
/**
|
|
@@ -126,11 +126,11 @@ export interface EpochTransitionCache {
|
|
|
126
126
|
* | beforeProcessEpoch | calculate during the validator loop|
|
|
127
127
|
* | afterEpochTransitionCache | read it |
|
|
128
128
|
*/
|
|
129
|
-
|
|
129
|
+
nextShufflingActiveIndices: Uint32Array;
|
|
130
130
|
/**
|
|
131
|
-
*
|
|
131
|
+
* Shuffling decision root that gets set on the EpochCache in afterProcessEpoch
|
|
132
132
|
*/
|
|
133
|
-
|
|
133
|
+
nextShufflingDecisionRoot: RootHex;
|
|
134
134
|
/**
|
|
135
135
|
* Altair specific, this is total active balances for the next epoch.
|
|
136
136
|
* This is only used in `afterProcessEpoch` to compute base reward and sync participant reward.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { intDiv } from "@lodestar/utils";
|
|
2
|
-
import { EPOCHS_PER_SLASHINGS_VECTOR, FAR_FUTURE_EPOCH, ForkSeq, MIN_ACTIVATION_BALANCE } from "@lodestar/params";
|
|
1
|
+
import { intDiv, toRootHex } from "@lodestar/utils";
|
|
2
|
+
import { EPOCHS_PER_SLASHINGS_VECTOR, FAR_FUTURE_EPOCH, ForkSeq, SLOTS_PER_HISTORICAL_ROOT, MIN_ACTIVATION_BALANCE, } from "@lodestar/params";
|
|
3
3
|
import { hasMarkers, FLAG_UNSLASHED, FLAG_ELIGIBLE_ATTESTER, FLAG_PREV_SOURCE_ATTESTER, FLAG_PREV_TARGET_ATTESTER, FLAG_PREV_HEAD_ATTESTER, FLAG_CURR_SOURCE_ATTESTER, FLAG_CURR_TARGET_ATTESTER, FLAG_CURR_HEAD_ATTESTER, } from "../util/attesterStatus.js";
|
|
4
4
|
import { computeBaseRewardPerIncrement } from "../util/altair.js";
|
|
5
5
|
import { processPendingAttestations } from "../epoch/processPendingAttestations.js";
|
|
@@ -142,6 +142,21 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
142
142
|
nextEpochShufflingActiveValidatorIndices[nextEpochShufflingActiveIndicesLength++] = i;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
+
// Trigger async build of shuffling for epoch after next (nextShuffling post epoch transition)
|
|
146
|
+
const epochAfterNext = state.epochCtx.nextEpoch + 1;
|
|
147
|
+
// cannot call calculateShufflingDecisionRoot here because spec prevent getting current slot
|
|
148
|
+
// as a decision block. we are part way through the transition though and this was added in
|
|
149
|
+
// process slot beforeProcessEpoch happens so it available and valid
|
|
150
|
+
const nextShufflingDecisionRoot = toRootHex(state.blockRoots.get(state.slot % SLOTS_PER_HISTORICAL_ROOT));
|
|
151
|
+
const nextShufflingActiveIndices = new Uint32Array(nextEpochShufflingActiveIndicesLength);
|
|
152
|
+
if (nextEpochShufflingActiveIndicesLength > nextEpochShufflingActiveValidatorIndices.length) {
|
|
153
|
+
throw new Error(`Invalid activeValidatorCount: ${nextEpochShufflingActiveIndicesLength} > ${nextEpochShufflingActiveValidatorIndices.length}`);
|
|
154
|
+
}
|
|
155
|
+
// only the first `activeValidatorCount` elements are copied to `activeIndices`
|
|
156
|
+
for (let i = 0; i < nextEpochShufflingActiveIndicesLength; i++) {
|
|
157
|
+
nextShufflingActiveIndices[i] = nextEpochShufflingActiveValidatorIndices[i];
|
|
158
|
+
}
|
|
159
|
+
state.epochCtx.shufflingCache?.build(epochAfterNext, nextShufflingDecisionRoot, state, nextShufflingActiveIndices);
|
|
145
160
|
if (totalActiveStakeByIncrement < 1) {
|
|
146
161
|
totalActiveStakeByIncrement = 1;
|
|
147
162
|
}
|
|
@@ -235,8 +250,8 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
235
250
|
indicesEligibleForActivationQueue,
|
|
236
251
|
indicesEligibleForActivation,
|
|
237
252
|
indicesToEject,
|
|
238
|
-
|
|
239
|
-
|
|
253
|
+
nextShufflingDecisionRoot,
|
|
254
|
+
nextShufflingActiveIndices,
|
|
240
255
|
// to be updated in processEffectiveBalanceUpdates
|
|
241
256
|
nextEpochTotalActiveBalanceByIncrement: 0,
|
|
242
257
|
isActivePrevEpoch,
|