@lodestar/state-transition 1.23.0-dev.8da003e0f1 → 1.23.0-dev.a19655d95b
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/processConsolidationRequest.js +1 -1
- package/lib/block/processConsolidationRequest.js.map +1 -1
- package/lib/block/processDeposit.js +1 -1
- package/lib/block/processDeposit.js.map +1 -1
- package/lib/block/processOperations.js +3 -3
- package/lib/block/processOperations.js.map +1 -1
- package/lib/block/processWithdrawalRequest.js +1 -1
- package/lib/block/processWithdrawalRequest.js.map +1 -1
- package/lib/cache/epochCache.d.ts +56 -24
- package/lib/cache/epochCache.js +184 -73
- 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/pubkeyCache.d.ts +1 -9
- package/lib/cache/pubkeyCache.js +0 -18
- package/lib/cache/pubkeyCache.js.map +1 -1
- package/lib/cache/stateCache.js +2 -1
- package/lib/cache/stateCache.js.map +1 -1
- package/lib/cache/syncCommitteeCache.d.ts +1 -1
- package/lib/cache/syncCommitteeCache.js +1 -1
- package/lib/cache/syncCommitteeCache.js.map +1 -1
- package/lib/epoch/processSlashings.js +8 -2
- package/lib/epoch/processSlashings.js.map +1 -1
- package/lib/epoch/processSyncCommitteeUpdates.js +1 -1
- package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/slot/upgradeStateToAltair.js +1 -1
- package/lib/slot/upgradeStateToAltair.js.map +1 -1
- package/lib/slot/upgradeStateToElectra.js +1 -8
- package/lib/slot/upgradeStateToElectra.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/execution.js +1 -8
- package/lib/util/execution.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 +7 -6
package/lib/cache/epochCache.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
2
|
import * as immutable from "immutable";
|
|
3
|
+
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
3
4
|
import { createBeaconConfig } from "@lodestar/config";
|
|
4
5
|
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";
|
|
5
6
|
import { LodestarError, fromHex } from "@lodestar/utils";
|
|
6
7
|
import { computeActivationExitEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, getChurnLimit, isActiveValidator, isAggregatorFromCommitteeLength, computeSyncPeriodAtEpoch, getSeed, computeProposers, getActivationChurnLimit, } from "../util/index.js";
|
|
7
|
-
import { computeEpochShuffling,
|
|
8
|
+
import { computeEpochShuffling, calculateShufflingDecisionRoot, } from "../util/epochShuffling.js";
|
|
8
9
|
import { computeBaseRewardPerIncrement, computeSyncParticipantReward } from "../util/syncCommittee.js";
|
|
9
10
|
import { sumTargetUnslashedBalanceIncrements } from "../util/targetUnslashedBalance.js";
|
|
10
11
|
import { getTotalSlashingsByIncrement } from "../epoch/processSlashings.js";
|
|
12
|
+
import { calculateCommitteeAssignments } from "../util/calculateCommitteeAssignments.js";
|
|
11
13
|
import { getEffectiveBalanceIncrementsWithLen } from "./effectiveBalanceIncrements.js";
|
|
12
|
-
import {
|
|
14
|
+
import { syncPubkeys, toMemoryEfficientHexStr, newUnfinalizedPubkeyIndexMap, } from "./pubkeyCache.js";
|
|
13
15
|
import { computeSyncCommitteeCache, getSyncCommitteeCache, SyncCommitteeCacheEmpty, } from "./syncCommitteeCache.js";
|
|
14
16
|
/** `= PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT)` */
|
|
15
17
|
export const PROPOSER_WEIGHT_FACTOR = PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT);
|
|
@@ -36,17 +38,25 @@ export const PROPOSER_WEIGHT_FACTOR = PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PR
|
|
|
36
38
|
* - syncPeriod
|
|
37
39
|
**/
|
|
38
40
|
export class EpochCache {
|
|
41
|
+
get nextEpoch() {
|
|
42
|
+
return this.epoch + 1;
|
|
43
|
+
}
|
|
39
44
|
constructor(data) {
|
|
40
45
|
this.config = data.config;
|
|
41
46
|
this.pubkey2index = data.pubkey2index;
|
|
42
47
|
this.index2pubkey = data.index2pubkey;
|
|
43
48
|
this.unfinalizedPubkey2index = data.unfinalizedPubkey2index;
|
|
49
|
+
this.shufflingCache = data.shufflingCache;
|
|
44
50
|
this.proposers = data.proposers;
|
|
45
51
|
this.proposersPrevEpoch = data.proposersPrevEpoch;
|
|
46
52
|
this.proposersNextEpoch = data.proposersNextEpoch;
|
|
53
|
+
this.previousDecisionRoot = data.previousDecisionRoot;
|
|
54
|
+
this.currentDecisionRoot = data.currentDecisionRoot;
|
|
55
|
+
this.nextDecisionRoot = data.nextDecisionRoot;
|
|
47
56
|
this.previousShuffling = data.previousShuffling;
|
|
48
57
|
this.currentShuffling = data.currentShuffling;
|
|
49
58
|
this.nextShuffling = data.nextShuffling;
|
|
59
|
+
this.nextActiveIndices = data.nextActiveIndices;
|
|
50
60
|
this.effectiveBalanceIncrements = data.effectiveBalanceIncrements;
|
|
51
61
|
this.totalSlashingsByIncrement = data.totalSlashingsByIncrement;
|
|
52
62
|
this.syncParticipantReward = data.syncParticipantReward;
|
|
@@ -71,7 +81,7 @@ export class EpochCache {
|
|
|
71
81
|
*
|
|
72
82
|
* SLOW CODE - 🐢
|
|
73
83
|
*/
|
|
74
|
-
static createFromState(state, { config, pubkey2index, index2pubkey }, opts) {
|
|
84
|
+
static createFromState(state, { config, pubkey2index, index2pubkey, shufflingCache }, opts) {
|
|
75
85
|
const currentEpoch = computeEpochAtSlot(state.slot);
|
|
76
86
|
const isGenesis = currentEpoch === GENESIS_EPOCH;
|
|
77
87
|
const previousEpoch = isGenesis ? GENESIS_EPOCH : currentEpoch - 1;
|
|
@@ -88,17 +98,17 @@ export class EpochCache {
|
|
|
88
98
|
}
|
|
89
99
|
const effectiveBalanceIncrements = getEffectiveBalanceIncrementsWithLen(validatorCount);
|
|
90
100
|
const totalSlashingsByIncrement = getTotalSlashingsByIncrement(state);
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
101
|
+
const previousActiveIndicesAsNumberArray = [];
|
|
102
|
+
const currentActiveIndicesAsNumberArray = [];
|
|
103
|
+
const nextActiveIndicesAsNumberArray = [];
|
|
94
104
|
// BeaconChain could provide a shuffling cache to avoid re-computing shuffling every epoch
|
|
95
105
|
// in that case, we don't need to compute shufflings again
|
|
96
|
-
const
|
|
97
|
-
const cachedPreviousShuffling =
|
|
98
|
-
const
|
|
99
|
-
const cachedCurrentShuffling =
|
|
100
|
-
const
|
|
101
|
-
const cachedNextShuffling =
|
|
106
|
+
const previousDecisionRoot = calculateShufflingDecisionRoot(config, state, previousEpoch);
|
|
107
|
+
const cachedPreviousShuffling = shufflingCache?.getSync(previousEpoch, previousDecisionRoot);
|
|
108
|
+
const currentDecisionRoot = calculateShufflingDecisionRoot(config, state, currentEpoch);
|
|
109
|
+
const cachedCurrentShuffling = shufflingCache?.getSync(currentEpoch, currentDecisionRoot);
|
|
110
|
+
const nextDecisionRoot = calculateShufflingDecisionRoot(config, state, nextEpoch);
|
|
111
|
+
const cachedNextShuffling = shufflingCache?.getSync(nextEpoch, nextDecisionRoot);
|
|
102
112
|
for (let i = 0; i < validatorCount; i++) {
|
|
103
113
|
const validator = validators[i];
|
|
104
114
|
// Note: Not usable for fork-choice balances since in-active validators are not zero'ed
|
|
@@ -106,17 +116,17 @@ export class EpochCache {
|
|
|
106
116
|
// we only need to track active indices for previous, current and next epoch if we have to compute shufflings
|
|
107
117
|
// skip doing that if we already have cached shufflings
|
|
108
118
|
if (cachedPreviousShuffling == null && isActiveValidator(validator, previousEpoch)) {
|
|
109
|
-
|
|
119
|
+
previousActiveIndicesAsNumberArray.push(i);
|
|
110
120
|
}
|
|
111
121
|
if (isActiveValidator(validator, currentEpoch)) {
|
|
112
122
|
if (cachedCurrentShuffling == null) {
|
|
113
|
-
|
|
123
|
+
currentActiveIndicesAsNumberArray.push(i);
|
|
114
124
|
}
|
|
115
125
|
// We track totalActiveBalanceIncrements as ETH to fit total network balance in a JS number (53 bits)
|
|
116
126
|
totalActiveBalanceIncrements += effectiveBalanceIncrements[i];
|
|
117
127
|
}
|
|
118
128
|
if (cachedNextShuffling == null && isActiveValidator(validator, nextEpoch)) {
|
|
119
|
-
|
|
129
|
+
nextActiveIndicesAsNumberArray.push(i);
|
|
120
130
|
}
|
|
121
131
|
const { exitEpoch } = validator;
|
|
122
132
|
if (exitEpoch !== FAR_FUTURE_EPOCH) {
|
|
@@ -137,13 +147,40 @@ export class EpochCache {
|
|
|
137
147
|
else if (totalActiveBalanceIncrements >= Number.MAX_SAFE_INTEGER) {
|
|
138
148
|
throw Error("totalActiveBalanceIncrements >= Number.MAX_SAFE_INTEGER. MAX_EFFECTIVE_BALANCE is too low.");
|
|
139
149
|
}
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
150
|
+
const nextActiveIndices = new Uint32Array(nextActiveIndicesAsNumberArray);
|
|
151
|
+
let previousShuffling;
|
|
152
|
+
let currentShuffling;
|
|
153
|
+
let nextShuffling;
|
|
154
|
+
if (!shufflingCache) {
|
|
155
|
+
// Only for testing. shufflingCache should always be available in prod
|
|
156
|
+
previousShuffling = computeEpochShuffling(state, new Uint32Array(previousActiveIndicesAsNumberArray), previousEpoch);
|
|
157
|
+
currentShuffling = isGenesis
|
|
158
|
+
? previousShuffling
|
|
159
|
+
: computeEpochShuffling(state, new Uint32Array(currentActiveIndicesAsNumberArray), currentEpoch);
|
|
160
|
+
nextShuffling = computeEpochShuffling(state, nextActiveIndices, nextEpoch);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
currentShuffling = cachedCurrentShuffling
|
|
164
|
+
? cachedCurrentShuffling
|
|
165
|
+
: shufflingCache.getSync(currentEpoch, currentDecisionRoot, {
|
|
166
|
+
state,
|
|
167
|
+
activeIndices: new Uint32Array(currentActiveIndicesAsNumberArray),
|
|
168
|
+
});
|
|
169
|
+
previousShuffling = cachedPreviousShuffling
|
|
170
|
+
? cachedPreviousShuffling
|
|
171
|
+
: isGenesis
|
|
172
|
+
? currentShuffling
|
|
173
|
+
: shufflingCache.getSync(previousEpoch, previousDecisionRoot, {
|
|
174
|
+
state,
|
|
175
|
+
activeIndices: new Uint32Array(previousActiveIndicesAsNumberArray),
|
|
176
|
+
});
|
|
177
|
+
nextShuffling = cachedNextShuffling
|
|
178
|
+
? cachedNextShuffling
|
|
179
|
+
: shufflingCache.getSync(nextEpoch, nextDecisionRoot, {
|
|
180
|
+
state,
|
|
181
|
+
activeIndices: nextActiveIndices,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
147
184
|
const currentProposerSeed = getSeed(state, currentEpoch, DOMAIN_BEACON_PROPOSER);
|
|
148
185
|
// Allow to create CachedBeaconState for empty states, or no active validators
|
|
149
186
|
const proposers = currentShuffling.activeIndices.length > 0
|
|
@@ -207,13 +244,18 @@ export class EpochCache {
|
|
|
207
244
|
index2pubkey,
|
|
208
245
|
// `createFromFinalizedState()` creates cache with empty unfinalizedPubkey2index. Be cautious to only pass in finalized state
|
|
209
246
|
unfinalizedPubkey2index: newUnfinalizedPubkeyIndexMap(),
|
|
247
|
+
shufflingCache,
|
|
210
248
|
proposers,
|
|
211
249
|
// On first epoch, set to null to prevent unnecessary work since this is only used for metrics
|
|
212
250
|
proposersPrevEpoch: null,
|
|
213
251
|
proposersNextEpoch,
|
|
252
|
+
previousDecisionRoot,
|
|
253
|
+
currentDecisionRoot,
|
|
254
|
+
nextDecisionRoot,
|
|
214
255
|
previousShuffling,
|
|
215
256
|
currentShuffling,
|
|
216
257
|
nextShuffling,
|
|
258
|
+
nextActiveIndices,
|
|
217
259
|
effectiveBalanceIncrements,
|
|
218
260
|
totalSlashingsByIncrement,
|
|
219
261
|
syncParticipantReward,
|
|
@@ -247,13 +289,18 @@ export class EpochCache {
|
|
|
247
289
|
index2pubkey: this.index2pubkey,
|
|
248
290
|
// No need to clone this reference. On each mutation the `unfinalizedPubkey2index` reference is replaced, @see `addPubkey`
|
|
249
291
|
unfinalizedPubkey2index: this.unfinalizedPubkey2index,
|
|
292
|
+
shufflingCache: this.shufflingCache,
|
|
250
293
|
// Immutable data
|
|
251
294
|
proposers: this.proposers,
|
|
252
295
|
proposersPrevEpoch: this.proposersPrevEpoch,
|
|
253
296
|
proposersNextEpoch: this.proposersNextEpoch,
|
|
297
|
+
previousDecisionRoot: this.previousDecisionRoot,
|
|
298
|
+
currentDecisionRoot: this.currentDecisionRoot,
|
|
299
|
+
nextDecisionRoot: this.nextDecisionRoot,
|
|
254
300
|
previousShuffling: this.previousShuffling,
|
|
255
301
|
currentShuffling: this.currentShuffling,
|
|
256
302
|
nextShuffling: this.nextShuffling,
|
|
303
|
+
nextActiveIndices: this.nextActiveIndices,
|
|
257
304
|
// Uint8Array, requires cloning, but it is cloned only when necessary before an epoch transition
|
|
258
305
|
// See EpochCache.beforeEpochTransition()
|
|
259
306
|
effectiveBalanceIncrements: this.effectiveBalanceIncrements,
|
|
@@ -278,23 +325,79 @@ export class EpochCache {
|
|
|
278
325
|
}
|
|
279
326
|
/**
|
|
280
327
|
* Called to re-use information, such as the shuffling of the next epoch, after transitioning into a
|
|
281
|
-
* new epoch.
|
|
328
|
+
* new epoch. Also handles pre-computation of values that may change during the upcoming epoch and
|
|
329
|
+
* that get used in the following epoch transition. Often those pre-computations are not used by the
|
|
330
|
+
* chain but are courtesy values that are served via the API for epoch look ahead of duties.
|
|
331
|
+
*
|
|
332
|
+
* Steps for afterProcessEpoch
|
|
333
|
+
* 1) update previous/current/next values of cached items
|
|
282
334
|
*/
|
|
283
335
|
afterProcessEpoch(state, epochTransitionCache) {
|
|
336
|
+
// Because the slot was incremented before entering this function the "next epoch" is actually the "current epoch"
|
|
337
|
+
// in this context but that is not actually true because the state transition happens in the last 4 seconds of the
|
|
338
|
+
// epoch. For the context of this function "upcoming epoch" is used to denote the epoch that will begin after this
|
|
339
|
+
// function returns. The epoch that is "next" once the state transition is complete is referred to as the
|
|
340
|
+
// epochAfterUpcoming for the same reason to help minimize confusion.
|
|
341
|
+
const upcomingEpoch = this.nextEpoch;
|
|
342
|
+
const epochAfterUpcoming = upcomingEpoch + 1;
|
|
343
|
+
// move current to previous
|
|
284
344
|
this.previousShuffling = this.currentShuffling;
|
|
285
|
-
this.
|
|
286
|
-
const currEpoch = this.currentShuffling.epoch;
|
|
287
|
-
const nextEpoch = currEpoch + 1;
|
|
288
|
-
this.nextShuffling = computeEpochShuffling(state, epochTransitionCache.nextEpochShufflingActiveValidatorIndices, epochTransitionCache.nextEpochShufflingActiveIndicesLength, nextEpoch);
|
|
289
|
-
// Roll current proposers into previous proposers for metrics
|
|
345
|
+
this.previousDecisionRoot = this.currentDecisionRoot;
|
|
290
346
|
this.proposersPrevEpoch = this.proposers;
|
|
291
|
-
|
|
292
|
-
this.
|
|
347
|
+
// move next to current or calculate upcoming
|
|
348
|
+
this.currentDecisionRoot = this.nextDecisionRoot;
|
|
349
|
+
if (this.nextShuffling) {
|
|
350
|
+
// was already pulled from the ShufflingCache to the EpochCache (should be in most cases)
|
|
351
|
+
this.currentShuffling = this.nextShuffling;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
this.shufflingCache?.metrics?.shufflingCache.nextShufflingNotOnEpochCache.inc();
|
|
355
|
+
this.currentShuffling =
|
|
356
|
+
this.shufflingCache?.getSync(upcomingEpoch, this.currentDecisionRoot, {
|
|
357
|
+
state,
|
|
358
|
+
// have to use the "nextActiveIndices" that were saved in the last transition here to calculate
|
|
359
|
+
// the upcoming shuffling if it is not already built (similar condition to the below computation)
|
|
360
|
+
activeIndices: this.nextActiveIndices,
|
|
361
|
+
}) ??
|
|
362
|
+
// allow for this case during testing where the ShufflingCache is not present, may affect perf testing
|
|
363
|
+
// so should be taken into account when structuring tests. Should not affect unit or other tests though
|
|
364
|
+
computeEpochShuffling(state, this.nextActiveIndices, upcomingEpoch);
|
|
365
|
+
}
|
|
366
|
+
const upcomingProposerSeed = getSeed(state, upcomingEpoch, DOMAIN_BEACON_PROPOSER);
|
|
367
|
+
// next epoch was moved to current epoch so use current here
|
|
368
|
+
this.proposers = computeProposers(this.config.getForkSeqAtEpoch(upcomingEpoch), upcomingProposerSeed, this.currentShuffling, this.effectiveBalanceIncrements);
|
|
369
|
+
// handle next values
|
|
370
|
+
this.nextDecisionRoot = epochTransitionCache.nextShufflingDecisionRoot;
|
|
371
|
+
this.nextActiveIndices = epochTransitionCache.nextShufflingActiveIndices;
|
|
372
|
+
if (this.shufflingCache) {
|
|
373
|
+
this.nextShuffling = null;
|
|
374
|
+
// This promise will resolve immediately after the synchronous code of the state-transition runs. Until
|
|
375
|
+
// the build is done on a worker thread it will be calculated immediately after the epoch transition
|
|
376
|
+
// completes. Once the work is done concurrently it should be ready by time this get runs so the promise
|
|
377
|
+
// will resolve directly on the next spin of the event loop because the epoch transition and shuffling take
|
|
378
|
+
// about the same time to calculate so theoretically its ready now. Do not await here though in case it
|
|
379
|
+
// is not ready yet as the transition must not be asynchronous.
|
|
380
|
+
this.shufflingCache
|
|
381
|
+
.get(epochAfterUpcoming, this.nextDecisionRoot)
|
|
382
|
+
.then((shuffling) => {
|
|
383
|
+
if (!shuffling) {
|
|
384
|
+
throw new Error("EpochShuffling not returned from get in afterProcessEpoch");
|
|
385
|
+
}
|
|
386
|
+
this.nextShuffling = shuffling;
|
|
387
|
+
})
|
|
388
|
+
.catch((err) => {
|
|
389
|
+
this.shufflingCache?.logger?.error("EPOCH_CONTEXT_SHUFFLING_BUILD_ERROR", { epoch: epochAfterUpcoming, decisionRoot: epochTransitionCache.nextShufflingDecisionRoot }, err);
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
// Only for testing. shufflingCache should always be available in prod
|
|
394
|
+
this.nextShuffling = computeEpochShuffling(state, this.nextActiveIndices, epochAfterUpcoming);
|
|
395
|
+
}
|
|
293
396
|
// Only pre-compute the seed since it's very cheap. Do the expensive computeProposers() call only on demand.
|
|
294
|
-
this.proposersNextEpoch = { computed: false, seed: getSeed(state,
|
|
397
|
+
this.proposersNextEpoch = { computed: false, seed: getSeed(state, epochAfterUpcoming, DOMAIN_BEACON_PROPOSER) };
|
|
295
398
|
// TODO: DEDUPLICATE from createEpochCache
|
|
296
399
|
//
|
|
297
|
-
// Precompute churnLimit for efficient initiateValidatorExit() during block proposing MUST be recompute
|
|
400
|
+
// Precompute churnLimit for efficient initiateValidatorExit() during block proposing MUST be recompute every time the
|
|
298
401
|
// active validator indices set changes in size. Validators change active status only when:
|
|
299
402
|
// - validator.activation_epoch is set. Only changes in process_registry_updates() if validator can be activated. If
|
|
300
403
|
// the value changes it will be set to `epoch + 1 + MAX_SEED_LOOKAHEAD`.
|
|
@@ -311,13 +414,13 @@ export class EpochCache {
|
|
|
311
414
|
this.churnLimit = getChurnLimit(this.config, this.currentShuffling.activeIndices.length);
|
|
312
415
|
this.activationChurnLimit = getActivationChurnLimit(this.config, this.config.getForkSeq(state.slot), this.currentShuffling.activeIndices.length);
|
|
313
416
|
// Maybe advance exitQueueEpoch at the end of the epoch if there haven't been any exists for a while
|
|
314
|
-
const exitQueueEpoch = computeActivationExitEpoch(
|
|
417
|
+
const exitQueueEpoch = computeActivationExitEpoch(upcomingEpoch);
|
|
315
418
|
if (exitQueueEpoch > this.exitQueueEpoch) {
|
|
316
419
|
this.exitQueueEpoch = exitQueueEpoch;
|
|
317
420
|
this.exitQueueChurn = 0;
|
|
318
421
|
}
|
|
319
422
|
this.totalActiveBalanceIncrements = epochTransitionCache.nextEpochTotalActiveBalanceByIncrement;
|
|
320
|
-
if (
|
|
423
|
+
if (upcomingEpoch >= this.config.ALTAIR_FORK_EPOCH) {
|
|
321
424
|
this.syncParticipantReward = computeSyncParticipantReward(this.totalActiveBalanceIncrements);
|
|
322
425
|
this.syncProposerReward = Math.floor(this.syncParticipantReward * PROPOSER_WEIGHT_FACTOR);
|
|
323
426
|
this.baseRewardPerIncrement = computeBaseRewardPerIncrement(this.totalActiveBalanceIncrements);
|
|
@@ -336,7 +439,7 @@ export class EpochCache {
|
|
|
336
439
|
// Only keep validatorLength for epochs after finalized cpState.epoch
|
|
337
440
|
// eg. [100(epoch 1), 102(epoch 2)].push(104(epoch 3)), this.epoch = 3, finalized cp epoch = 1
|
|
338
441
|
// We keep the last (3 - 1) items = [102, 104]
|
|
339
|
-
if (
|
|
442
|
+
if (upcomingEpoch >= this.config.ELECTRA_FORK_EPOCH) {
|
|
340
443
|
this.historicalValidatorLengths = this.historicalValidatorLengths.push(state.validators.length);
|
|
341
444
|
// If number of validatorLengths we want to keep exceeds the current list size, it implies
|
|
342
445
|
// finalized checkpoint hasn't advanced, and no need to slice
|
|
@@ -456,7 +559,7 @@ export class EpochCache {
|
|
|
456
559
|
*/
|
|
457
560
|
getBeaconProposersNextEpoch() {
|
|
458
561
|
if (!this.proposersNextEpoch.computed) {
|
|
459
|
-
const indexes = computeProposers(this.config.getForkSeqAtEpoch(this.epoch + 1), this.proposersNextEpoch.seed, this.
|
|
562
|
+
const indexes = computeProposers(this.config.getForkSeqAtEpoch(this.epoch + 1), this.proposersNextEpoch.seed, this.getShufflingAtEpoch(this.nextEpoch), this.effectiveBalanceIncrements);
|
|
460
563
|
this.proposersNextEpoch = { computed: true, indexes };
|
|
461
564
|
}
|
|
462
565
|
return this.proposersNextEpoch.indexes;
|
|
@@ -497,28 +600,8 @@ export class EpochCache {
|
|
|
497
600
|
}
|
|
498
601
|
}
|
|
499
602
|
getCommitteeAssignments(epoch, requestedValidatorIndices) {
|
|
500
|
-
const
|
|
501
|
-
|
|
502
|
-
const epochCommittees = this.getShufflingAtEpoch(epoch).committees;
|
|
503
|
-
for (let epochSlot = 0; epochSlot < SLOTS_PER_EPOCH; epochSlot++) {
|
|
504
|
-
const slotCommittees = epochCommittees[epochSlot];
|
|
505
|
-
for (let i = 0, committeesAtSlot = slotCommittees.length; i < committeesAtSlot; i++) {
|
|
506
|
-
for (let j = 0, committeeLength = slotCommittees[i].length; j < committeeLength; j++) {
|
|
507
|
-
const validatorIndex = slotCommittees[i][j];
|
|
508
|
-
if (requestedValidatorIndicesSet.has(validatorIndex)) {
|
|
509
|
-
duties.set(validatorIndex, {
|
|
510
|
-
validatorIndex,
|
|
511
|
-
committeeLength,
|
|
512
|
-
committeesAtSlot,
|
|
513
|
-
validatorCommitteeIndex: j,
|
|
514
|
-
committeeIndex: i,
|
|
515
|
-
slot: epoch * SLOTS_PER_EPOCH + epochSlot,
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
return duties;
|
|
603
|
+
const shuffling = this.getShufflingAtEpoch(epoch);
|
|
604
|
+
return calculateCommitteeAssignments(shuffling, requestedValidatorIndices);
|
|
522
605
|
}
|
|
523
606
|
/**
|
|
524
607
|
* Return the committee assignment in the ``epoch`` for ``validator_index``.
|
|
@@ -562,7 +645,7 @@ export class EpochCache {
|
|
|
562
645
|
}
|
|
563
646
|
getValidatorIndex(pubkey) {
|
|
564
647
|
if (this.isPostElectra()) {
|
|
565
|
-
return this.pubkey2index.get(pubkey) ?? this.unfinalizedPubkey2index.get(toMemoryEfficientHexStr(pubkey));
|
|
648
|
+
return this.pubkey2index.get(pubkey) ?? this.unfinalizedPubkey2index.get(toMemoryEfficientHexStr(pubkey)) ?? null;
|
|
566
649
|
}
|
|
567
650
|
else {
|
|
568
651
|
return this.pubkey2index.get(pubkey);
|
|
@@ -594,9 +677,10 @@ export class EpochCache {
|
|
|
594
677
|
* Add finalized validator index and pubkey into finalized cache.
|
|
595
678
|
* Since addFinalizedPubkey() primarily takes pubkeys from unfinalized cache, it can take pubkey hex string directly
|
|
596
679
|
*/
|
|
597
|
-
addFinalizedPubkey(index,
|
|
680
|
+
addFinalizedPubkey(index, pubkeyOrHex, metrics) {
|
|
681
|
+
const pubkey = typeof pubkeyOrHex === "string" ? fromHex(pubkeyOrHex) : pubkeyOrHex;
|
|
598
682
|
const existingIndex = this.pubkey2index.get(pubkey);
|
|
599
|
-
if (existingIndex !==
|
|
683
|
+
if (existingIndex !== null) {
|
|
600
684
|
if (existingIndex === index) {
|
|
601
685
|
// Repeated insert.
|
|
602
686
|
metrics?.finalizedPubkeyDuplicateInsert.inc();
|
|
@@ -604,7 +688,7 @@ export class EpochCache {
|
|
|
604
688
|
}
|
|
605
689
|
else {
|
|
606
690
|
// attempt to insert the same pubkey with different index, should never happen.
|
|
607
|
-
throw Error(
|
|
691
|
+
throw Error(`inserted existing pubkey into finalizedPubkey2index cache with a different index, index=${index} priorIndex=${existingIndex}`);
|
|
608
692
|
}
|
|
609
693
|
}
|
|
610
694
|
this.pubkey2index.set(pubkey, index);
|
|
@@ -628,6 +712,13 @@ export class EpochCache {
|
|
|
628
712
|
getShufflingAtEpoch(epoch) {
|
|
629
713
|
const shuffling = this.getShufflingAtEpochOrNull(epoch);
|
|
630
714
|
if (shuffling === null) {
|
|
715
|
+
if (epoch === this.nextEpoch) {
|
|
716
|
+
throw new EpochCacheError({
|
|
717
|
+
code: EpochCacheErrorCode.NEXT_SHUFFLING_NOT_AVAILABLE,
|
|
718
|
+
epoch: epoch,
|
|
719
|
+
decisionRoot: this.getShufflingDecisionRoot(this.nextEpoch),
|
|
720
|
+
});
|
|
721
|
+
}
|
|
631
722
|
throw new EpochCacheError({
|
|
632
723
|
code: EpochCacheErrorCode.COMMITTEE_EPOCH_OUT_OF_RANGE,
|
|
633
724
|
currentEpoch: this.currentShuffling.epoch,
|
|
@@ -636,18 +727,36 @@ export class EpochCache {
|
|
|
636
727
|
}
|
|
637
728
|
return shuffling;
|
|
638
729
|
}
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
730
|
+
getShufflingDecisionRoot(epoch) {
|
|
731
|
+
switch (epoch) {
|
|
732
|
+
case this.epoch - 1:
|
|
733
|
+
return this.previousDecisionRoot;
|
|
734
|
+
case this.epoch:
|
|
735
|
+
return this.currentDecisionRoot;
|
|
736
|
+
case this.nextEpoch:
|
|
737
|
+
return this.nextDecisionRoot;
|
|
738
|
+
default:
|
|
739
|
+
throw new EpochCacheError({
|
|
740
|
+
code: EpochCacheErrorCode.DECISION_ROOT_EPOCH_OUT_OF_RANGE,
|
|
741
|
+
currentEpoch: this.epoch,
|
|
742
|
+
requestedEpoch: epoch,
|
|
743
|
+
});
|
|
648
744
|
}
|
|
649
|
-
|
|
650
|
-
|
|
745
|
+
}
|
|
746
|
+
getShufflingAtEpochOrNull(epoch) {
|
|
747
|
+
switch (epoch) {
|
|
748
|
+
case this.epoch - 1:
|
|
749
|
+
return this.previousShuffling;
|
|
750
|
+
case this.epoch:
|
|
751
|
+
return this.currentShuffling;
|
|
752
|
+
case this.nextEpoch:
|
|
753
|
+
if (!this.nextShuffling) {
|
|
754
|
+
this.nextShuffling =
|
|
755
|
+
this.shufflingCache?.getSync(this.nextEpoch, this.getShufflingDecisionRoot(this.nextEpoch)) ?? null;
|
|
756
|
+
}
|
|
757
|
+
return this.nextShuffling;
|
|
758
|
+
default:
|
|
759
|
+
return null;
|
|
651
760
|
}
|
|
652
761
|
}
|
|
653
762
|
/**
|
|
@@ -735,6 +844,8 @@ export var EpochCacheErrorCode;
|
|
|
735
844
|
(function (EpochCacheErrorCode) {
|
|
736
845
|
EpochCacheErrorCode["COMMITTEE_INDEX_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE";
|
|
737
846
|
EpochCacheErrorCode["COMMITTEE_EPOCH_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_COMMITTEE_EPOCH_OUT_OF_RANGE";
|
|
847
|
+
EpochCacheErrorCode["DECISION_ROOT_EPOCH_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_DECISION_ROOT_EPOCH_OUT_OF_RANGE";
|
|
848
|
+
EpochCacheErrorCode["NEXT_SHUFFLING_NOT_AVAILABLE"] = "EPOCH_CONTEXT_ERROR_NEXT_SHUFFLING_NOT_AVAILABLE";
|
|
738
849
|
EpochCacheErrorCode["NO_SYNC_COMMITTEE"] = "EPOCH_CONTEXT_ERROR_NO_SYNC_COMMITTEE";
|
|
739
850
|
EpochCacheErrorCode["PROPOSER_EPOCH_MISMATCH"] = "EPOCH_CONTEXT_ERROR_PROPOSER_EPOCH_MISMATCH";
|
|
740
851
|
})(EpochCacheErrorCode || (EpochCacheErrorCode = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochCache.js","sourceRoot":"","sources":["../../src/cache/epochCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAavC,OAAO,EAAC,kBAAkB,EAA4B,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,+BAA+B,EAC/B,wBAAwB,EACxB,OAAO,EACP,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,qBAAqB,EAAkB,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AAC3G,OAAO,EAAC,6BAA6B,EAAE,4BAA4B,EAAC,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAC,mCAAmC,EAAC,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAC,4BAA4B,EAAC,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAA6B,oCAAoC,EAAC,MAAM,iCAAiC,CAAC;AACjH,OAAO,EAEL,cAAc,EAEd,WAAW,EACX,uBAAuB,EAEvB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EAErB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,mEAAmE;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,GAAG,CAAC,kBAAkB,GAAG,eAAe,CAAC,CAAC;AAiB/F;;;;;;;;;;;;;;;;;;;;;IAqBI;AACJ,MAAM,OAAO,UAAU;IA2IrB,YAAY,IA4BX;QACC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC;QAClE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QAChE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC1D,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,uCAAuC,CAAC;QAC5F,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,wCAAwC,CAAC;QAC9F,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACpE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,yBAAyB,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CACpB,KAA0B,EAC1B,EAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAA0B,EAC7D,IAAqB;QAErB,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,YAAY,KAAK,aAAa,CAAC;QACjD,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;QAEnC,IAAI,4BAA4B,GAAG,CAAC,CAAC;QACrC,IAAI,cAAc,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;QAC3D,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC;QAEzC,sGAAsG;QACtG,2EAA2E;QAC3E,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;YAC3B,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,0BAA0B,GAAG,oCAAoC,CAAC,cAAc,CAAC,CAAC;QACxF,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,qBAAqB,GAAqB,EAAE,CAAC;QACnD,MAAM,oBAAoB,GAAqB,EAAE,CAAC;QAClD,MAAM,iBAAiB,GAAqB,EAAE,CAAC;QAE/C,0FAA0F;QAC1F,0DAA0D;QAC1D,MAAM,8BAA8B,GAAG,yBAAyB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACvF,MAAM,uBAAuB,GAAG,IAAI,EAAE,eAAe,EAAE,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;QACvG,MAAM,6BAA6B,GAAG,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACrF,MAAM,sBAAsB,GAAG,IAAI,EAAE,eAAe,EAAE,CAAC,YAAY,EAAE,6BAA6B,CAAC,CAAC;QACpG,MAAM,0BAA0B,GAAG,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC/E,MAAM,mBAAmB,GAAG,IAAI,EAAE,eAAe,EAAE,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;QAE3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAEhC,uFAAuF;YACvF,0BAA0B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,2BAA2B,CAAC,CAAC;YAErG,6GAA6G;YAC7G,uDAAuD;YACvD,IAAI,uBAAuB,IAAI,IAAI,IAAI,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;gBACnF,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC/C,IAAI,sBAAsB,IAAI,IAAI,EAAE,CAAC;oBACnC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC;gBACD,qGAAqG;gBACrG,4BAA4B,IAAI,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,mBAAmB,IAAI,IAAI,IAAI,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC3E,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,EAAC,SAAS,EAAC,GAAG,SAAS,CAAC;YAC9B,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;gBACnC,IAAI,SAAS,GAAG,cAAc,EAAE,CAAC;oBAC/B,cAAc,GAAG,SAAS,CAAC;oBAC3B,cAAc,GAAG,CAAC,CAAC;gBACrB,CAAC;qBAAM,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;oBACxC,cAAc,IAAI,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,8EAA8E;QAC9E,4CAA4C;QAC5C,IAAI,4BAA4B,GAAG,CAAC,EAAE,CAAC;YACrC,4BAA4B,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,4BAA4B,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACnE,MAAM,KAAK,CAAC,4FAA4F,CAAC,CAAC;QAC5G,CAAC;QAED,MAAM,gBAAgB,GACpB,sBAAsB;YACtB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChG,MAAM,iBAAiB,GACrB,uBAAuB;YACvB,CAAC,SAAS;gBACR,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACxG,MAAM,aAAa,GACjB,mBAAmB,IAAI,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE9G,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;QAEjF,8EAA8E;QAC9E,MAAM,SAAS,GACb,gBAAgB,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACvC,CAAC,CAAC,gBAAgB,CACd,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,EACtC,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,CAC3B;YACH,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,kBAAkB,GAAsB;YAC5C,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,sBAAsB,CAAC;SACxD,CAAC;QAEF,uEAAuE;QACvE,MAAM,eAAe,GAAG,YAAY,IAAI,MAAM,CAAC,iBAAiB,CAAC;QAEjE,uGAAuG;QACvG,4GAA4G;QAC5G,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,4BAA4B,CAAC,CAAC;QACzF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,CAAC;QACtF,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,4BAA4B,CAAC,CAAC;QAE3F,IAAI,2BAA+C,CAAC;QACpD,IAAI,wBAA4C,CAAC;QACjD,8EAA8E;QAC9E,IAAI,eAAe,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,KAA0B,CAAC;YAC/C,2BAA2B,GAAG,yBAAyB,CAAC,WAAW,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;YACxG,wBAAwB,GAAG,yBAAyB,CAAC,WAAW,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,2BAA2B,GAAG,IAAI,uBAAuB,EAAE,CAAC;YAC5D,wBAAwB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC3D,CAAC;QAED,qHAAqH;QACrH,2FAA2F;QAC3F,oHAAoH;QACpH,0EAA0E;QAC1E,qHAAqH;QACrH,iEAAiE;QACjE,MAAM;QACN,mFAAmF;QACnF,MAAM;QACN,sHAAsH;QACtH,EAAE;QACF,oHAAoH;QACpH,mHAAmH;QACnH,gFAAgF;QAChF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAChF,MAAM,oBAAoB,GAAG,uBAAuB,CAClD,MAAM,EACN,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAC7B,gBAAgB,CAAC,aAAa,CAAC,MAAM,CACtC,CAAC;QACF,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;YACjC,cAAc,IAAI,CAAC,CAAC;YACpB,cAAc,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,4DAA4D;QAC5D,yFAAyF;QACzF,IAAI,wCAAwC,GAAG,CAAC,CAAC;QACjD,IAAI,uCAAuC,GAAG,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,EAAC,0BAA0B,EAAE,yBAAyB,EAAC,GAAG,KAA0B,CAAC;YAC3F,wCAAwC,GAAG,mCAAmC,CAC5E,0BAA0B,CAAC,MAAM,EAAE,EACnC,aAAa,EACb,UAAU,CACX,CAAC;YACF,uCAAuC,GAAG,mCAAmC,CAC3E,yBAAyB,CAAC,MAAM,EAAE,EAClC,YAAY,EACZ,UAAU,CACX,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,UAAU,CAAC;YACpB,MAAM;YACN,YAAY;YACZ,YAAY;YACZ,6HAA6H;YAC7H,uBAAuB,EAAE,4BAA4B,EAAE;YACvD,SAAS;YACT,8FAA8F;YAC9F,kBAAkB,EAAE,IAAI;YACxB,kBAAkB;YAClB,iBAAiB;YACjB,gBAAgB;YAChB,aAAa;YACb,0BAA0B;YAC1B,yBAAyB;YACzB,qBAAqB;YACrB,kBAAkB;YAClB,sBAAsB;YACtB,4BAA4B;YAC5B,UAAU;YACV,oBAAoB;YACpB,cAAc;YACd,cAAc;YACd,wCAAwC;YACxC,uCAAuC;YACvC,2BAA2B;YAC3B,wBAAwB;YACxB,KAAK,EAAE,YAAY;YACnB,UAAU,EAAE,wBAAwB,CAAC,YAAY,CAAC;YAClD,yBAAyB,EAAE,SAAS,CAAC,IAAI,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK;QACH,oGAAoG;QACpG,+DAA+D;QAC/D,oDAAoD;QACpD,OAAO,IAAI,UAAU,CAAC;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,yEAAyE;YACzE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,0HAA0H;YAC1H,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,iBAAiB;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gGAAgG;YAChG,yCAAyC;YACzC,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;YAC3D,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;YACzD,0CAA0C;YAC1C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;YAC/D,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,wCAAwC,EAAE,IAAI,CAAC,wCAAwC;YACvF,uCAAuC,EAAE,IAAI,CAAC,uCAAuC;YACrF,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;YAC7D,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,yBAAyB,EAAE,IAAI,CAAC,0BAA0B;SAC3D,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,iBAAiB,CACf,KAA0B,EAC1B,oBAKC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC9C,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;QAEhC,IAAI,CAAC,aAAa,GAAG,qBAAqB,CACxC,KAAK,EACL,oBAAoB,CAAC,wCAAwC,EAC7D,oBAAoB,CAAC,qCAAqC,EAC1D,SAAS,CACV,CAAC;QAEF,6DAA6D;QAC7D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC;QAEzC,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAC/B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,EACxC,mBAAmB,EACnB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,0BAA0B,CAChC,CAAC;QAEF,4GAA4G;QAC5G,IAAI,CAAC,kBAAkB,GAAG,EAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAC,CAAC;QAEpH,0CAA0C;QAC1C,EAAE;QACF,qHAAqH;QACrH,2FAA2F;QAC3F,oHAAoH;QACpH,0EAA0E;QAC1E,qHAAqH;QACrH,iEAAiE;QACjE,MAAM;QACN,mFAAmF;QACnF,MAAM;QACN,sHAAsH;QACtH,EAAE;QACF,oHAAoH;QACpH,mHAAmH;QACnH,gFAAgF;QAChF,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzF,IAAI,CAAC,oBAAoB,GAAG,uBAAuB,CACjD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAClC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAC3C,CAAC;QAEF,oGAAoG;QACpG,MAAM,cAAc,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACrC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,4BAA4B,GAAG,oBAAoB,CAAC,sCAAsC,CAAC;QAChG,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC/C,IAAI,CAAC,qBAAqB,GAAG,4BAA4B,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC7F,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,CAAC;YAC1F,IAAI,CAAC,sBAAsB,GAAG,6BAA6B,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,uCAAuC,CAAC;QAC7F,IAAI,CAAC,uCAAuC,GAAG,CAAC,CAAC;QAEjD,qBAAqB;QACrB,4DAA4D;QAC5D,MAAM;QACN,oBAAoB;QACpB,sDAAsD;QACtD,MAAM;QACN,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,sDAAsD;QACtD,qEAAqE;QACrE,8FAA8F;QAC9F,8CAA8C;QAC9C,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAChD,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEhG,0FAA0F;YAC1F,6DAA6D;YAC7D,MAAM,sBAAsB,GAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;YAEtF,IAAI,sBAAsB,EAAE,CAAC;gBAC3B,oHAAoH;gBACpH,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CACrE,KAAK,CAAC,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAC7C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;QACnB,sEAAsE;QACtE,gFAAgF;QAChF,IAAI,CAAC,0BAA0B,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,IAAU,EAAE,KAAqB;QAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAU,EAAE,OAAyB;QACvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,IAAI,eAAe,CAAC;oBACxB,IAAI,EAAE,mBAAmB,CAAC,4BAA4B;oBACtD,KAAK;oBACL,QAAQ,EAAE,cAAc,CAAC,MAAM;iBAChC,CAAC,CAAC;YACL,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,iCAAiC;QACjC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,mDAAmD;QACnD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wBAAwB,CAAC,KAAY;QACnC,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,IAAY,EAAE,cAAsB;QACvD,MAAM,oBAAoB,GAAG,IAAI,GAAG,eAAe,CAAC;QACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,yBAAyB,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;QAC3E,OAAO,CAAC,yBAAyB,GAAG,cAAc,CAAC,GAAG,wBAAwB,CAAC;IACjF,CAAC;IAED,iBAAiB,CAAC,IAAU;QAC1B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC1C,MAAM,IAAI,eAAe,CAAC;gBACxB,IAAI,EAAE,mBAAmB,CAAC,uBAAuB;gBACjD,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;gBACzC,cAAc,EAAE,KAAK;aACtB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;IAChD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,2BAA2B;QACzB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,gBAAgB,CAC9B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAC5B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,0BAA0B,CAChC,CAAC;YACF,IAAI,CAAC,kBAAkB,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,IAAa,EAAE,WAAwB;QAC3D,MAAM,EAAC,IAAI,EAAC,GAAG,WAAW,CAAC;QAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAErE,gBAAgB;QAChB,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,OAAO;YACL,gBAAgB,EAAE,gBAAgB;YAClC,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,WAAW,CAAC,SAAS;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAa,EAAE,WAAwB;QACzD,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,EAAC,eAAe,EAAE,IAAI,EAAC,GAAG,WAAW,CAAC;YAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAExE,OAAO,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,EAAC,eAAe,EAAE,aAAa,EAAE,IAAI,EAAC,GAAG,WAAkC,CAAC;YAElF,4DAA4D;YAC5D,0FAA0F;YAC1F,8EAA8E;YAC9E,+CAA+C;YAC/C,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;YAE3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAE/E,OAAO,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,uBAAuB,CACrB,KAAY,EACZ,yBAA2C;QAE3C,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;QAEvD,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;QACnE,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACjE,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrF,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,4BAA4B,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;wBACrD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;4BACzB,cAAc;4BACd,eAAe;4BACf,gBAAgB;4BAChB,uBAAuB,EAAE,CAAC;4BAC1B,cAAc,EAAE,CAAC;4BACjB,IAAI,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS;yBAC1C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,sBAAsB,CAAC,KAAY,EAAE,cAA8B;QACjE,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,CACT,gEAAgE,KAAK,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAC7G,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACnE,KAAK,IAAI,IAAI,GAAG,cAAc,EAAE,IAAI,GAAG,cAAc,GAAG,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;YAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACnD,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBACvC,OAAO;wBACL,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;wBACjC,cAAc,EAAE,CAAC;wBACjB,IAAI;qBACL,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,IAAU,EAAE,KAAqB,EAAE,aAA2B;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,+BAA+B,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAqB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,iBAAiB,CAAC,MAA8B;QAC9C,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5G,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAqB,EAAE,MAAkB;QACjD,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,kCAAkC;YAClC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,KAAqB,EAAE,MAA8B,EAAE,OAA2B;QACrG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QACxG,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,mBAAmB,CAAC,SAAoC,EAAE,OAA2B;QACnF,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxF,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAAqB,EAAE,MAA8B,EAAE,OAA2B;QACnG,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;gBAC5B,mBAAmB;gBACnB,OAAO,EAAE,8BAA8B,CAAC,GAAG,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;iBAAM,CAAC;gBACN,+EAA+E;gBAC/E,MAAM,KAAK,CAAC,kFAAkF,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,2BAA2B;IAC1F,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,OAA4B;QACnD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,kBAAkB,CAAC,IAAU;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,wBAAwB,CAAC,IAAU;QACjC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB,CAAC,KAAY;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,eAAe,CAAC;gBACxB,IAAI,EAAE,mBAAmB,CAAC,4BAA4B;gBACtD,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;gBACzC,cAAc,EAAE,KAAK;aACtB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yBAAyB,CAAC,KAAY;QACpC,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,uBAAuB,CAAC,IAAU;QAChC,mCAAmC;QACnC,OAAO,IAAI,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACH,8BAA8B,CAAC,KAAY;QACzC,QAAQ,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,KAAK,IAAI,CAAC,UAAU;gBAClB,OAAO,IAAI,CAAC,2BAA2B,CAAC;YAC1C,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC;gBACtB,OAAO,IAAI,CAAC,wBAAwB,CAAC;YACvC;gBACE,MAAM,IAAI,eAAe,CAAC,EAAC,IAAI,EAAE,mBAAmB,CAAC,iBAAiB,EAAE,KAAK,EAAC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,6FAA6F;IAC7F,0BAA0B,CAAC,wBAAkC;QAC3D,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACjE,IAAI,CAAC,wBAAwB,GAAG,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;IAClF,CAAC;IAED,8EAA8E;IAC9E,wBAAwB,CAAC,wBAAkC;QACzD,IAAI,CAAC,wBAAwB,GAAG,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;QAChF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,wBAAwB,CAAC;IACnE,CAAC;IAED,6BAA6B,CAAC,KAAa,EAAE,gBAAwB;QACnE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,gBAAgB;YAChB,mFAAmF;YACnF,iFAAiF;YACjF,iFAAiF;YACjF,kBAAkB;YAClB,EAAE;YACF,kFAAkF;YAClF,MAAM,SAAS,GACb,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;YACvG,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC;YACnE,IAAI,CAAC,0BAA0B,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;gBACpD,8CAA8C;gBAC9C,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC;gBACnE,IAAI,CAAC,0BAA0B,GAAG,IAAI,WAAW,CAAC,oCAAoC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,2BAA2B,CAAC,CAAC;IACtG,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACtD,CAAC;IAED,wBAAwB,CAAC,WAAkB;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAEhC,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,mDAAmD;QACnD,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,sFAAsF;QACtF,IAAI,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF;AAED,SAAS,oCAAoC,CAAC,cAAsB;IAClE,oFAAoF;IACpF,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;AACjD,CAAC;AAYD,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,wGAAiF,CAAA;IACjF,wGAAiF,CAAA;IACjF,kFAA2D,CAAA;IAC3D,8FAAuE,CAAA;AACzE,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAuBD,MAAM,OAAO,eAAgB,SAAQ,aAAkC;CAAG;AAE1E,MAAM,UAAU,kCAAkC,CAChD,WAAwB,EACxB,KAAyD;IAEzD,OAAO;QACL,MAAM,EAAE,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,qBAAqB,CAAC;QACpE,8EAA8E;QAC9E,YAAY,EAAE,IAAI,cAAc,EAAE;QAClC,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC"}
|
|
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,
|