@lodestar/state-transition 1.22.0-dev.20c18ad85d → 1.22.0-dev.295690b896
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/LICENSE +201 -165
- package/lib/block/index.js +1 -1
- package/lib/block/index.js.map +1 -1
- package/lib/block/initiateValidatorExit.d.ts +2 -1
- package/lib/block/initiateValidatorExit.js +21 -13
- package/lib/block/initiateValidatorExit.js.map +1 -1
- package/lib/block/isValidIndexedAttestation.js +5 -2
- package/lib/block/isValidIndexedAttestation.js.map +1 -1
- package/lib/block/processAttestationPhase0.d.ts +2 -2
- package/lib/block/processAttestationPhase0.js +32 -10
- package/lib/block/processAttestationPhase0.js.map +1 -1
- package/lib/block/processAttestations.d.ts +2 -2
- package/lib/block/processAttestations.js.map +1 -1
- package/lib/block/processAttestationsAltair.d.ts +2 -2
- package/lib/block/processAttestationsAltair.js +3 -3
- package/lib/block/processAttestationsAltair.js.map +1 -1
- package/lib/block/processBlsToExecutionChange.js +3 -2
- package/lib/block/processBlsToExecutionChange.js.map +1 -1
- package/lib/block/processConsolidationRequest.d.ts +4 -0
- package/lib/block/processConsolidationRequest.js +55 -0
- package/lib/block/processConsolidationRequest.js.map +1 -0
- package/lib/block/processDeposit.d.ts +8 -0
- package/lib/block/processDeposit.js +94 -54
- package/lib/block/processDeposit.js.map +1 -1
- package/lib/block/processDepositRequest.d.ts +5 -0
- package/lib/block/processDepositRequest.js +9 -0
- package/lib/block/processDepositRequest.js.map +1 -0
- package/lib/block/processExecutionPayload.js +4 -3
- package/lib/block/processExecutionPayload.js.map +1 -1
- package/lib/block/processOperations.d.ts +4 -1
- package/lib/block/processOperations.js +21 -4
- package/lib/block/processOperations.js.map +1 -1
- package/lib/block/processVoluntaryExit.d.ts +2 -1
- package/lib/block/processVoluntaryExit.js +16 -6
- package/lib/block/processVoluntaryExit.js.map +1 -1
- package/lib/block/processWithdrawalRequest.d.ts +5 -0
- package/lib/block/processWithdrawalRequest.js +67 -0
- package/lib/block/processWithdrawalRequest.js.map +1 -0
- package/lib/block/processWithdrawals.d.ts +5 -3
- package/lib/block/processWithdrawals.js +67 -15
- package/lib/block/processWithdrawals.js.map +1 -1
- package/lib/block/slashValidator.js +9 -5
- package/lib/block/slashValidator.js.map +1 -1
- package/lib/cache/effectiveBalanceIncrements.d.ts +3 -4
- package/lib/cache/effectiveBalanceIncrements.js +5 -5
- package/lib/cache/effectiveBalanceIncrements.js.map +1 -1
- package/lib/cache/epochCache.d.ts +66 -8
- package/lib/cache/epochCache.js +185 -23
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/epochTransitionCache.d.ts +12 -2
- package/lib/cache/epochTransitionCache.js +6 -3
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/cache/pubkeyCache.d.ts +23 -3
- package/lib/cache/pubkeyCache.js +8 -1
- package/lib/cache/pubkeyCache.js.map +1 -1
- package/lib/cache/stateCache.d.ts +4 -2
- package/lib/cache/stateCache.js +2 -1
- package/lib/cache/stateCache.js.map +1 -1
- package/lib/cache/syncCommitteeCache.js +2 -2
- package/lib/cache/syncCommitteeCache.js.map +1 -1
- package/lib/cache/types.d.ts +1 -0
- package/lib/epoch/index.d.ts +6 -2
- package/lib/epoch/index.js +27 -5
- package/lib/epoch/index.js.map +1 -1
- package/lib/epoch/processEffectiveBalanceUpdates.d.ts +4 -1
- package/lib/epoch/processEffectiveBalanceUpdates.js +25 -6
- package/lib/epoch/processEffectiveBalanceUpdates.js.map +1 -1
- package/lib/epoch/processPendingBalanceDeposits.d.ts +12 -0
- package/lib/epoch/processPendingBalanceDeposits.js +68 -0
- package/lib/epoch/processPendingBalanceDeposits.js.map +1 -0
- package/lib/epoch/processPendingConsolidations.d.ts +16 -0
- package/lib/epoch/processPendingConsolidations.js +49 -0
- package/lib/epoch/processPendingConsolidations.js.map +1 -0
- package/lib/epoch/processRegistryUpdates.d.ts +2 -1
- package/lib/epoch/processRegistryUpdates.js +6 -3
- package/lib/epoch/processRegistryUpdates.js.map +1 -1
- package/lib/epoch/processRewardsAndPenalties.js +2 -1
- package/lib/epoch/processRewardsAndPenalties.js.map +1 -1
- package/lib/epoch/processSyncCommitteeUpdates.d.ts +2 -1
- package/lib/epoch/processSyncCommitteeUpdates.js +4 -3
- package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/metrics.d.ts +5 -0
- package/lib/metrics.js.map +1 -1
- package/lib/signatureSets/attesterSlashings.d.ts +3 -3
- package/lib/signatureSets/attesterSlashings.js +1 -2
- package/lib/signatureSets/attesterSlashings.js.map +1 -1
- package/lib/signatureSets/index.js +2 -2
- package/lib/signatureSets/index.js.map +1 -1
- package/lib/signatureSets/indexedAttestation.js +2 -1
- package/lib/signatureSets/indexedAttestation.js.map +1 -1
- package/lib/slot/index.d.ts +1 -0
- package/lib/slot/index.js +1 -0
- package/lib/slot/index.js.map +1 -1
- package/lib/slot/upgradeStateToAltair.js +1 -1
- package/lib/slot/upgradeStateToAltair.js.map +1 -1
- package/lib/slot/upgradeStateToElectra.d.ts +8 -0
- package/lib/slot/upgradeStateToElectra.js +138 -0
- package/lib/slot/upgradeStateToElectra.js.map +1 -0
- package/lib/stateTransition.d.ts +1 -0
- package/lib/stateTransition.js +10 -6
- package/lib/stateTransition.js.map +1 -1
- package/lib/types.d.ts +2 -2
- package/lib/util/balance.js +2 -2
- package/lib/util/balance.js.map +1 -1
- package/lib/util/deposit.d.ts +4 -0
- package/lib/util/deposit.js +22 -0
- package/lib/util/deposit.js.map +1 -0
- package/lib/util/electra.d.ts +8 -0
- package/lib/util/electra.js +47 -0
- package/lib/util/electra.js.map +1 -0
- package/lib/util/epoch.d.ts +4 -1
- package/lib/util/epoch.js +37 -0
- package/lib/util/epoch.js.map +1 -1
- package/lib/util/execution.js +8 -0
- package/lib/util/execution.js.map +1 -1
- package/lib/util/genesis.d.ts +1 -1
- package/lib/util/genesis.js +30 -9
- package/lib/util/genesis.js.map +1 -1
- package/lib/util/index.d.ts +3 -0
- package/lib/util/index.js +3 -0
- package/lib/util/index.js.map +1 -1
- package/lib/util/loadState/index.d.ts +1 -1
- package/lib/util/loadState/index.js +1 -1
- package/lib/util/loadState/index.js.map +1 -1
- package/lib/util/loadState/loadState.d.ts +7 -0
- package/lib/util/loadState/loadState.js +15 -0
- package/lib/util/loadState/loadState.js.map +1 -1
- package/lib/util/seed.d.ts +4 -3
- package/lib/util/seed.js +11 -10
- package/lib/util/seed.js.map +1 -1
- package/lib/util/syncCommittee.d.ts +2 -1
- package/lib/util/syncCommittee.js +2 -2
- package/lib/util/syncCommittee.js.map +1 -1
- package/lib/util/validator.d.ts +10 -1
- package/lib/util/validator.js +35 -1
- package/lib/util/validator.js.map +1 -1
- package/package.json +9 -8
package/lib/cache/epochCache.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
|
+
import * as immutable from "immutable";
|
|
2
3
|
import { createBeaconConfig } from "@lodestar/config";
|
|
3
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";
|
|
4
|
-
import { LodestarError } from "@lodestar/utils";
|
|
5
|
+
import { LodestarError, fromHex } from "@lodestar/utils";
|
|
5
6
|
import { computeActivationExitEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, getChurnLimit, isActiveValidator, isAggregatorFromCommitteeLength, computeSyncPeriodAtEpoch, getSeed, computeProposers, getActivationChurnLimit, } from "../util/index.js";
|
|
6
7
|
import { computeEpochShuffling, getShufflingDecisionBlock } from "../util/epochShuffling.js";
|
|
7
8
|
import { computeBaseRewardPerIncrement, computeSyncParticipantReward } from "../util/syncCommittee.js";
|
|
8
9
|
import { sumTargetUnslashedBalanceIncrements } from "../util/targetUnslashedBalance.js";
|
|
9
10
|
import { getTotalSlashingsByIncrement } from "../epoch/processSlashings.js";
|
|
10
11
|
import { getEffectiveBalanceIncrementsWithLen } from "./effectiveBalanceIncrements.js";
|
|
11
|
-
import { PubkeyIndexMap, syncPubkeys } from "./pubkeyCache.js";
|
|
12
|
+
import { PubkeyIndexMap, syncPubkeys, toMemoryEfficientHexStr, newUnfinalizedPubkeyIndexMap, } from "./pubkeyCache.js";
|
|
12
13
|
import { computeSyncCommitteeCache, getSyncCommitteeCache, SyncCommitteeCacheEmpty, } from "./syncCommitteeCache.js";
|
|
13
14
|
/** `= PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT)` */
|
|
14
15
|
export const PROPOSER_WEIGHT_FACTOR = PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT);
|
|
@@ -39,6 +40,7 @@ export class EpochCache {
|
|
|
39
40
|
this.config = data.config;
|
|
40
41
|
this.pubkey2index = data.pubkey2index;
|
|
41
42
|
this.index2pubkey = data.index2pubkey;
|
|
43
|
+
this.unfinalizedPubkey2index = data.unfinalizedPubkey2index;
|
|
42
44
|
this.proposers = data.proposers;
|
|
43
45
|
this.proposersPrevEpoch = data.proposersPrevEpoch;
|
|
44
46
|
this.proposersNextEpoch = data.proposersNextEpoch;
|
|
@@ -61,10 +63,11 @@ export class EpochCache {
|
|
|
61
63
|
this.nextSyncCommitteeIndexed = data.nextSyncCommitteeIndexed;
|
|
62
64
|
this.epoch = data.epoch;
|
|
63
65
|
this.syncPeriod = data.syncPeriod;
|
|
66
|
+
this.historicalValidatorLengths = data.historialValidatorLengths;
|
|
64
67
|
}
|
|
65
68
|
/**
|
|
66
69
|
* Create an epoch cache
|
|
67
|
-
* @param
|
|
70
|
+
* @param state a finalized beacon state. Passing in unfinalized state may cause unexpected behaviour eg. empty unfinalized cache
|
|
68
71
|
*
|
|
69
72
|
* SLOW CODE - 🐢
|
|
70
73
|
*/
|
|
@@ -144,7 +147,7 @@ export class EpochCache {
|
|
|
144
147
|
const currentProposerSeed = getSeed(state, currentEpoch, DOMAIN_BEACON_PROPOSER);
|
|
145
148
|
// Allow to create CachedBeaconState for empty states, or no active validators
|
|
146
149
|
const proposers = currentShuffling.activeIndices.length > 0
|
|
147
|
-
? computeProposers(currentProposerSeed, currentShuffling, effectiveBalanceIncrements)
|
|
150
|
+
? computeProposers(config.getForkSeqAtEpoch(currentEpoch), currentProposerSeed, currentShuffling, effectiveBalanceIncrements)
|
|
148
151
|
: [];
|
|
149
152
|
const proposersNextEpoch = {
|
|
150
153
|
computed: false,
|
|
@@ -202,6 +205,8 @@ export class EpochCache {
|
|
|
202
205
|
config,
|
|
203
206
|
pubkey2index,
|
|
204
207
|
index2pubkey,
|
|
208
|
+
// `createFromFinalizedState()` creates cache with empty unfinalizedPubkey2index. Be cautious to only pass in finalized state
|
|
209
|
+
unfinalizedPubkey2index: newUnfinalizedPubkeyIndexMap(),
|
|
205
210
|
proposers,
|
|
206
211
|
// On first epoch, set to null to prevent unnecessary work since this is only used for metrics
|
|
207
212
|
proposersPrevEpoch: null,
|
|
@@ -225,6 +230,7 @@ export class EpochCache {
|
|
|
225
230
|
nextSyncCommitteeIndexed,
|
|
226
231
|
epoch: currentEpoch,
|
|
227
232
|
syncPeriod: computeSyncPeriodAtEpoch(currentEpoch),
|
|
233
|
+
historialValidatorLengths: immutable.List(),
|
|
228
234
|
});
|
|
229
235
|
}
|
|
230
236
|
/**
|
|
@@ -239,6 +245,8 @@ export class EpochCache {
|
|
|
239
245
|
// Common append-only structures shared with all states, no need to clone
|
|
240
246
|
pubkey2index: this.pubkey2index,
|
|
241
247
|
index2pubkey: this.index2pubkey,
|
|
248
|
+
// No need to clone this reference. On each mutation the `unfinalizedPubkey2index` reference is replaced, @see `addPubkey`
|
|
249
|
+
unfinalizedPubkey2index: this.unfinalizedPubkey2index,
|
|
242
250
|
// Immutable data
|
|
243
251
|
proposers: this.proposers,
|
|
244
252
|
proposersPrevEpoch: this.proposersPrevEpoch,
|
|
@@ -265,6 +273,7 @@ export class EpochCache {
|
|
|
265
273
|
nextSyncCommitteeIndexed: this.nextSyncCommitteeIndexed,
|
|
266
274
|
epoch: this.epoch,
|
|
267
275
|
syncPeriod: this.syncPeriod,
|
|
276
|
+
historialValidatorLengths: this.historicalValidatorLengths,
|
|
268
277
|
});
|
|
269
278
|
}
|
|
270
279
|
/**
|
|
@@ -280,7 +289,7 @@ export class EpochCache {
|
|
|
280
289
|
// Roll current proposers into previous proposers for metrics
|
|
281
290
|
this.proposersPrevEpoch = this.proposers;
|
|
282
291
|
const currentProposerSeed = getSeed(state, this.currentShuffling.epoch, DOMAIN_BEACON_PROPOSER);
|
|
283
|
-
this.proposers = computeProposers(currentProposerSeed, this.currentShuffling, this.effectiveBalanceIncrements);
|
|
292
|
+
this.proposers = computeProposers(this.config.getForkSeqAtEpoch(currEpoch), currentProposerSeed, this.currentShuffling, this.effectiveBalanceIncrements);
|
|
284
293
|
// Only pre-compute the seed since it's very cheap. Do the expensive computeProposers() call only on demand.
|
|
285
294
|
this.proposersNextEpoch = { computed: false, seed: getSeed(state, this.nextShuffling.epoch, DOMAIN_BEACON_PROPOSER) };
|
|
286
295
|
// TODO: DEDUPLICATE from createEpochCache
|
|
@@ -323,25 +332,64 @@ export class EpochCache {
|
|
|
323
332
|
// ```
|
|
324
333
|
this.epoch = computeEpochAtSlot(state.slot);
|
|
325
334
|
this.syncPeriod = computeSyncPeriodAtEpoch(this.epoch);
|
|
335
|
+
// ELECTRA Only: Add current cpState.validators.length
|
|
336
|
+
// Only keep validatorLength for epochs after finalized cpState.epoch
|
|
337
|
+
// eg. [100(epoch 1), 102(epoch 2)].push(104(epoch 3)), this.epoch = 3, finalized cp epoch = 1
|
|
338
|
+
// We keep the last (3 - 1) items = [102, 104]
|
|
339
|
+
if (currEpoch >= this.config.ELECTRA_FORK_EPOCH) {
|
|
340
|
+
this.historicalValidatorLengths = this.historicalValidatorLengths.push(state.validators.length);
|
|
341
|
+
// If number of validatorLengths we want to keep exceeds the current list size, it implies
|
|
342
|
+
// finalized checkpoint hasn't advanced, and no need to slice
|
|
343
|
+
const hasFinalizedCpAdvanced = this.epoch - state.finalizedCheckpoint.epoch < this.historicalValidatorLengths.size;
|
|
344
|
+
if (hasFinalizedCpAdvanced) {
|
|
345
|
+
// We use finalized cp epoch - this.epoch which is a negative number to keep the last n entries and discard the rest
|
|
346
|
+
this.historicalValidatorLengths = this.historicalValidatorLengths.slice(state.finalizedCheckpoint.epoch - this.epoch);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
326
349
|
}
|
|
327
350
|
beforeEpochTransition() {
|
|
328
351
|
// Clone (copy) before being mutated in processEffectiveBalanceUpdates
|
|
329
|
-
// NOTE: Force to use
|
|
330
|
-
this.effectiveBalanceIncrements =
|
|
352
|
+
// NOTE: Force to use Uint16Array.slice (copy) instead of Buffer.call (not copy)
|
|
353
|
+
this.effectiveBalanceIncrements = Uint16Array.prototype.slice.call(this.effectiveBalanceIncrements, 0);
|
|
331
354
|
}
|
|
332
355
|
/**
|
|
333
356
|
* Return the beacon committee at slot for index.
|
|
334
357
|
*/
|
|
335
358
|
getBeaconCommittee(slot, index) {
|
|
359
|
+
return this.getBeaconCommittees(slot, [index]);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Return a single Uint32Array representing concatted committees of indices
|
|
363
|
+
*/
|
|
364
|
+
getBeaconCommittees(slot, indices) {
|
|
365
|
+
if (indices.length === 0) {
|
|
366
|
+
throw new Error("Attempt to get committees without providing CommitteeIndex");
|
|
367
|
+
}
|
|
336
368
|
const slotCommittees = this.getShufflingAtSlot(slot).committees[slot % SLOTS_PER_EPOCH];
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
369
|
+
const committees = [];
|
|
370
|
+
for (const index of indices) {
|
|
371
|
+
if (index >= slotCommittees.length) {
|
|
372
|
+
throw new EpochCacheError({
|
|
373
|
+
code: EpochCacheErrorCode.COMMITTEE_INDEX_OUT_OF_RANGE,
|
|
374
|
+
index,
|
|
375
|
+
maxIndex: slotCommittees.length,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
committees.push(slotCommittees[index]);
|
|
379
|
+
}
|
|
380
|
+
// Early return if only one index
|
|
381
|
+
if (committees.length === 1) {
|
|
382
|
+
return committees[0];
|
|
343
383
|
}
|
|
344
|
-
|
|
384
|
+
// Create a new Uint32Array to flatten `committees`
|
|
385
|
+
const totalLength = committees.reduce((acc, curr) => acc + curr.length, 0);
|
|
386
|
+
const result = new Uint32Array(totalLength);
|
|
387
|
+
let offset = 0;
|
|
388
|
+
for (const committee of committees) {
|
|
389
|
+
result.set(committee, offset);
|
|
390
|
+
offset += committee.length;
|
|
391
|
+
}
|
|
392
|
+
return result;
|
|
345
393
|
}
|
|
346
394
|
getCommitteeCountPerSlot(epoch) {
|
|
347
395
|
return this.getShufflingAtEpoch(epoch).committeesPerSlot;
|
|
@@ -408,7 +456,7 @@ export class EpochCache {
|
|
|
408
456
|
*/
|
|
409
457
|
getBeaconProposersNextEpoch() {
|
|
410
458
|
if (!this.proposersNextEpoch.computed) {
|
|
411
|
-
const indexes = computeProposers(this.proposersNextEpoch.seed, this.nextShuffling, this.effectiveBalanceIncrements);
|
|
459
|
+
const indexes = computeProposers(this.config.getForkSeqAtEpoch(this.epoch + 1), this.proposersNextEpoch.seed, this.nextShuffling, this.effectiveBalanceIncrements);
|
|
412
460
|
this.proposersNextEpoch = { computed: true, indexes };
|
|
413
461
|
}
|
|
414
462
|
return this.proposersNextEpoch.indexes;
|
|
@@ -416,10 +464,9 @@ export class EpochCache {
|
|
|
416
464
|
/**
|
|
417
465
|
* Return the indexed attestation corresponding to ``attestation``.
|
|
418
466
|
*/
|
|
419
|
-
getIndexedAttestation(attestation) {
|
|
420
|
-
const {
|
|
421
|
-
const
|
|
422
|
-
const attestingIndices = aggregationBits.intersectValues(committeeIndices);
|
|
467
|
+
getIndexedAttestation(fork, attestation) {
|
|
468
|
+
const { data } = attestation;
|
|
469
|
+
const attestingIndices = this.getAttestingIndices(fork, attestation);
|
|
423
470
|
// sort in-place
|
|
424
471
|
attestingIndices.sort((a, b) => a - b);
|
|
425
472
|
return {
|
|
@@ -428,6 +475,27 @@ export class EpochCache {
|
|
|
428
475
|
signature: attestation.signature,
|
|
429
476
|
};
|
|
430
477
|
}
|
|
478
|
+
/**
|
|
479
|
+
* Return indices of validators who attestested in `attestation`
|
|
480
|
+
*/
|
|
481
|
+
getAttestingIndices(fork, attestation) {
|
|
482
|
+
if (fork < ForkSeq.electra) {
|
|
483
|
+
const { aggregationBits, data } = attestation;
|
|
484
|
+
const validatorIndices = this.getBeaconCommittee(data.slot, data.index);
|
|
485
|
+
return aggregationBits.intersectValues(validatorIndices);
|
|
486
|
+
}
|
|
487
|
+
else {
|
|
488
|
+
const { aggregationBits, committeeBits, data } = attestation;
|
|
489
|
+
// There is a naming conflict on the term `committeeIndices`
|
|
490
|
+
// In Lodestar it usually means a list of validator indices of participants in a committee
|
|
491
|
+
// In the spec it means a list of committee indices according to committeeBits
|
|
492
|
+
// This `committeeIndices` refers to the latter
|
|
493
|
+
// TODO Electra: resolve the naming conflicts
|
|
494
|
+
const committeeIndices = committeeBits.getTrueBitIndexes();
|
|
495
|
+
const validatorIndices = this.getBeaconCommittees(data.slot, committeeIndices);
|
|
496
|
+
return aggregationBits.intersectValues(validatorIndices);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
431
499
|
getCommitteeAssignments(epoch, requestedValidatorIndices) {
|
|
432
500
|
const requestedValidatorIndicesSet = new Set(requestedValidatorIndices);
|
|
433
501
|
const duties = new Map();
|
|
@@ -484,9 +552,70 @@ export class EpochCache {
|
|
|
484
552
|
const committee = this.getBeaconCommittee(slot, index);
|
|
485
553
|
return isAggregatorFromCommitteeLength(committee.length, slotSignature);
|
|
486
554
|
}
|
|
555
|
+
/**
|
|
556
|
+
* Return finalized pubkey given the validator index.
|
|
557
|
+
* Only finalized pubkey as we do not store unfinalized pubkey because no where in the spec has a
|
|
558
|
+
* need to make such enquiry
|
|
559
|
+
*/
|
|
560
|
+
getPubkey(index) {
|
|
561
|
+
return this.index2pubkey[index];
|
|
562
|
+
}
|
|
563
|
+
getValidatorIndex(pubkey) {
|
|
564
|
+
if (this.isPostElectra()) {
|
|
565
|
+
return this.pubkey2index.get(pubkey) ?? this.unfinalizedPubkey2index.get(toMemoryEfficientHexStr(pubkey));
|
|
566
|
+
}
|
|
567
|
+
else {
|
|
568
|
+
return this.pubkey2index.get(pubkey);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
*
|
|
573
|
+
* Add unfinalized pubkeys
|
|
574
|
+
*
|
|
575
|
+
*/
|
|
487
576
|
addPubkey(index, pubkey) {
|
|
577
|
+
if (this.isPostElectra()) {
|
|
578
|
+
this.addUnFinalizedPubkey(index, pubkey);
|
|
579
|
+
}
|
|
580
|
+
else {
|
|
581
|
+
// deposit mechanism pre ELECTRA follows a safe distance with assumption
|
|
582
|
+
// that they are already canonical
|
|
583
|
+
this.addFinalizedPubkey(index, pubkey);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
addUnFinalizedPubkey(index, pubkey, metrics) {
|
|
587
|
+
this.unfinalizedPubkey2index = this.unfinalizedPubkey2index.set(toMemoryEfficientHexStr(pubkey), index);
|
|
588
|
+
metrics?.newUnFinalizedPubkey.inc();
|
|
589
|
+
}
|
|
590
|
+
addFinalizedPubkeys(pubkeyMap, metrics) {
|
|
591
|
+
pubkeyMap.forEach((index, pubkey) => this.addFinalizedPubkey(index, pubkey, metrics));
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Add finalized validator index and pubkey into finalized cache.
|
|
595
|
+
* Since addFinalizedPubkey() primarily takes pubkeys from unfinalized cache, it can take pubkey hex string directly
|
|
596
|
+
*/
|
|
597
|
+
addFinalizedPubkey(index, pubkey, metrics) {
|
|
598
|
+
const existingIndex = this.pubkey2index.get(pubkey);
|
|
599
|
+
if (existingIndex !== undefined) {
|
|
600
|
+
if (existingIndex === index) {
|
|
601
|
+
// Repeated insert.
|
|
602
|
+
metrics?.finalizedPubkeyDuplicateInsert.inc();
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
else {
|
|
606
|
+
// attempt to insert the same pubkey with different index, should never happen.
|
|
607
|
+
throw Error("inserted existing pubkey into finalizedPubkey2index cache with a different index");
|
|
608
|
+
}
|
|
609
|
+
}
|
|
488
610
|
this.pubkey2index.set(pubkey, index);
|
|
489
|
-
|
|
611
|
+
const pubkeyBytes = pubkey instanceof Uint8Array ? pubkey : fromHex(pubkey);
|
|
612
|
+
this.index2pubkey[index] = PublicKey.fromBytes(pubkeyBytes); // Optimize for aggregation
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* Delete pubkeys from unfinalized cache
|
|
616
|
+
*/
|
|
617
|
+
deleteUnfinalizedPubkeys(pubkeys) {
|
|
618
|
+
this.unfinalizedPubkey2index = this.unfinalizedPubkey2index.deleteAll(pubkeys);
|
|
490
619
|
}
|
|
491
620
|
getShufflingAtSlot(slot) {
|
|
492
621
|
const epoch = computeEpochAtSlot(slot);
|
|
@@ -556,14 +685,47 @@ export class EpochCache {
|
|
|
556
685
|
this.currentSyncCommitteeIndexed = this.nextSyncCommitteeIndexed;
|
|
557
686
|
}
|
|
558
687
|
effectiveBalanceIncrementsSet(index, effectiveBalance) {
|
|
559
|
-
if (
|
|
560
|
-
//
|
|
688
|
+
if (this.isPostElectra()) {
|
|
689
|
+
// TODO: electra
|
|
690
|
+
// getting length and setting getEffectiveBalanceIncrementsByteLen is not fork safe
|
|
691
|
+
// so each time we add an index, we should new the Uint8Array to keep it forksafe
|
|
692
|
+
// one simple optimization could be to increment the length once per block rather
|
|
693
|
+
// on each add/set
|
|
694
|
+
//
|
|
695
|
+
// there could still be some unused length remaining from the prev ELECTRA padding
|
|
696
|
+
const newLength = index >= this.effectiveBalanceIncrements.length ? index + 1 : this.effectiveBalanceIncrements.length;
|
|
561
697
|
const effectiveBalanceIncrements = this.effectiveBalanceIncrements;
|
|
562
|
-
this.effectiveBalanceIncrements = new
|
|
698
|
+
this.effectiveBalanceIncrements = new Uint16Array(newLength);
|
|
563
699
|
this.effectiveBalanceIncrements.set(effectiveBalanceIncrements, 0);
|
|
564
700
|
}
|
|
701
|
+
else {
|
|
702
|
+
if (index >= this.effectiveBalanceIncrements.length) {
|
|
703
|
+
// Clone and extend effectiveBalanceIncrements
|
|
704
|
+
const effectiveBalanceIncrements = this.effectiveBalanceIncrements;
|
|
705
|
+
this.effectiveBalanceIncrements = new Uint16Array(getEffectiveBalanceIncrementsByteLen(index + 1));
|
|
706
|
+
this.effectiveBalanceIncrements.set(effectiveBalanceIncrements, 0);
|
|
707
|
+
}
|
|
708
|
+
}
|
|
565
709
|
this.effectiveBalanceIncrements[index] = Math.floor(effectiveBalance / EFFECTIVE_BALANCE_INCREMENT);
|
|
566
710
|
}
|
|
711
|
+
isPostElectra() {
|
|
712
|
+
return this.epoch >= this.config.ELECTRA_FORK_EPOCH;
|
|
713
|
+
}
|
|
714
|
+
getValidatorCountAtEpoch(targetEpoch) {
|
|
715
|
+
const currentEpoch = this.epoch;
|
|
716
|
+
if (targetEpoch === currentEpoch) {
|
|
717
|
+
return this.historicalValidatorLengths.get(-1);
|
|
718
|
+
}
|
|
719
|
+
// Attempt to get validator count from future epoch
|
|
720
|
+
if (targetEpoch > currentEpoch) {
|
|
721
|
+
return undefined;
|
|
722
|
+
}
|
|
723
|
+
// targetEpoch is so far back that historicalValidatorLengths doesnt contain such info
|
|
724
|
+
if (targetEpoch < currentEpoch - this.historicalValidatorLengths.size + 1) {
|
|
725
|
+
return undefined;
|
|
726
|
+
}
|
|
727
|
+
return this.historicalValidatorLengths.get(targetEpoch - currentEpoch - 1);
|
|
728
|
+
}
|
|
567
729
|
}
|
|
568
730
|
function getEffectiveBalanceIncrementsByteLen(validatorCount) {
|
|
569
731
|
// TODO: Research what's the best number to minimize both memory cost and copy costs
|
|
@@ -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, ValidatorIndex } from "@lodestar/types";
|
|
1
|
+
import { Epoch, ValidatorIndex, phase0 } from "@lodestar/types";
|
|
2
2
|
import { CachedBeaconStateAllForks } from "../index.js";
|
|
3
3
|
export type EpochTransitionCacheOpts = {
|
|
4
4
|
/**
|
|
@@ -58,7 +58,7 @@ export interface EpochTransitionCache {
|
|
|
58
58
|
/**
|
|
59
59
|
* Indices of validators that just joined and will be eligible for the active queue.
|
|
60
60
|
* ```
|
|
61
|
-
* v.activationEligibilityEpoch === FAR_FUTURE_EPOCH && v.effectiveBalance
|
|
61
|
+
* v.activationEligibilityEpoch === FAR_FUTURE_EPOCH && v.effectiveBalance >= MAX_EFFECTIVE_BALANCE
|
|
62
62
|
* ```
|
|
63
63
|
* All validators in indicesEligibleForActivationQueue get activationEligibilityEpoch set. So it can only include
|
|
64
64
|
* validators that have just joined the registry through a valid full deposit(s).
|
|
@@ -101,6 +101,16 @@ export interface EpochTransitionCache {
|
|
|
101
101
|
*/
|
|
102
102
|
inclusionDelays: number[];
|
|
103
103
|
flags: number[];
|
|
104
|
+
/**
|
|
105
|
+
* Validators in the current epoch, should use it for read-only value instead of accessing state.validators directly.
|
|
106
|
+
* Note that during epoch processing, validators could be updated so need to use it with care.
|
|
107
|
+
*/
|
|
108
|
+
validators: phase0.Validator[];
|
|
109
|
+
/**
|
|
110
|
+
* This is for electra only
|
|
111
|
+
* Validators that're switched to compounding during processPendingConsolidations(), not available in beforeProcessEpoch()
|
|
112
|
+
*/
|
|
113
|
+
newCompoundingValidators?: Set<ValidatorIndex>;
|
|
104
114
|
/**
|
|
105
115
|
* balances array will be populated by processRewardsAndPenalties() and consumed by processEffectiveBalanceUpdates().
|
|
106
116
|
* processRewardsAndPenalties() already has a regular Javascript array of balances.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { intDiv } from "@lodestar/utils";
|
|
2
|
-
import { EPOCHS_PER_SLASHINGS_VECTOR, FAR_FUTURE_EPOCH, ForkSeq,
|
|
2
|
+
import { EPOCHS_PER_SLASHINGS_VECTOR, FAR_FUTURE_EPOCH, ForkSeq, 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";
|
|
@@ -100,11 +100,11 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
100
100
|
// def is_eligible_for_activation_queue(validator: Validator) -> bool:
|
|
101
101
|
// return (
|
|
102
102
|
// validator.activation_eligibility_epoch == FAR_FUTURE_EPOCH
|
|
103
|
-
// and validator.effective_balance
|
|
103
|
+
// and validator.effective_balance >= MAX_EFFECTIVE_BALANCE # [Modified in Electra]
|
|
104
104
|
// )
|
|
105
105
|
// ```
|
|
106
106
|
if (validator.activationEligibilityEpoch === FAR_FUTURE_EPOCH &&
|
|
107
|
-
validator.effectiveBalance
|
|
107
|
+
validator.effectiveBalance >= MIN_ACTIVATION_BALANCE) {
|
|
108
108
|
indicesEligibleForActivationQueue.push(i);
|
|
109
109
|
}
|
|
110
110
|
// To optimize process_registry_updates():
|
|
@@ -245,6 +245,9 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
245
245
|
proposerIndices,
|
|
246
246
|
inclusionDelays,
|
|
247
247
|
flags,
|
|
248
|
+
validators,
|
|
249
|
+
// will be assigned in processPendingConsolidations()
|
|
250
|
+
newCompoundingValidators: undefined,
|
|
248
251
|
// Will be assigned in processRewardsAndPenalties()
|
|
249
252
|
balances: undefined,
|
|
250
253
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochTransitionCache.js","sourceRoot":"","sources":["../../src/cache/epochTransitionCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,2BAA2B,EAAE,gBAAgB,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"epochTransitionCache.js","sourceRoot":"","sources":["../../src/cache/epochTransitionCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
|
+
import * as immutable from "immutable";
|
|
2
3
|
import { ValidatorIndex, phase0 } from "@lodestar/types";
|
|
3
4
|
export type Index2PubkeyCache = PublicKey[];
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* OrderedMap preserves the order of entries in which they are `set()`.
|
|
7
|
+
* We assume `values()` yields validator indices in strictly increasing order
|
|
8
|
+
* as new validator indices are assigned in increasing order.
|
|
9
|
+
* EIP-6914 will break this assumption.
|
|
10
|
+
*/
|
|
11
|
+
export type UnfinalizedPubkeyIndexMap = immutable.Map<PubkeyHex, ValidatorIndex>;
|
|
12
|
+
export type PubkeyHex = string;
|
|
13
|
+
/**
|
|
14
|
+
* toHexString() creates hex strings via string concatenation, which are very memory inefficient.
|
|
15
|
+
* Memory benchmarks show that Buffer.toString("hex") produces strings with 10x less memory.
|
|
16
|
+
*
|
|
17
|
+
* Does not prefix to save memory, thus the prefix is removed from an already string representation.
|
|
18
|
+
*
|
|
19
|
+
* See https://github.com/ChainSafe/lodestar/issues/3446
|
|
20
|
+
*/
|
|
21
|
+
export declare function toMemoryEfficientHexStr(hex: Uint8Array | string): string;
|
|
22
|
+
/**
|
|
23
|
+
* A wrapper for calling immutable.js. To abstract the initialization of UnfinalizedPubkeyIndexMap
|
|
24
|
+
*/
|
|
25
|
+
export declare function newUnfinalizedPubkeyIndexMap(): UnfinalizedPubkeyIndexMap;
|
|
5
26
|
export declare class PubkeyIndexMap {
|
|
6
27
|
readonly map: Map<string, number>;
|
|
7
28
|
get size(): number;
|
|
@@ -9,7 +30,7 @@ export declare class PubkeyIndexMap {
|
|
|
9
30
|
* Must support reading with string for API support where pubkeys are already strings
|
|
10
31
|
*/
|
|
11
32
|
get(key: Uint8Array | PubkeyHex): ValidatorIndex | undefined;
|
|
12
|
-
set(key: Uint8Array, value: ValidatorIndex): void;
|
|
33
|
+
set(key: Uint8Array | PubkeyHex, value: ValidatorIndex): void;
|
|
13
34
|
}
|
|
14
35
|
/**
|
|
15
36
|
* Checks the pubkey indices against a state and adds missing pubkeys
|
|
@@ -19,5 +40,4 @@ export declare class PubkeyIndexMap {
|
|
|
19
40
|
* If pubkey caches are empty: SLOW CODE - 🐢
|
|
20
41
|
*/
|
|
21
42
|
export declare function syncPubkeys(validators: phase0.Validator[], pubkey2index: PubkeyIndexMap, index2pubkey: Index2PubkeyCache): void;
|
|
22
|
-
export {};
|
|
23
43
|
//# sourceMappingURL=pubkeyCache.d.ts.map
|
package/lib/cache/pubkeyCache.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
|
+
import * as immutable from "immutable";
|
|
2
3
|
/**
|
|
3
4
|
* toHexString() creates hex strings via string concatenation, which are very memory inefficient.
|
|
4
5
|
* Memory benchmarks show that Buffer.toString("hex") produces strings with 10x less memory.
|
|
@@ -7,7 +8,7 @@ import { PublicKey } from "@chainsafe/blst";
|
|
|
7
8
|
*
|
|
8
9
|
* See https://github.com/ChainSafe/lodestar/issues/3446
|
|
9
10
|
*/
|
|
10
|
-
function toMemoryEfficientHexStr(hex) {
|
|
11
|
+
export function toMemoryEfficientHexStr(hex) {
|
|
11
12
|
if (typeof hex === "string") {
|
|
12
13
|
if (hex.startsWith("0x")) {
|
|
13
14
|
hex = hex.slice(2);
|
|
@@ -16,6 +17,12 @@ function toMemoryEfficientHexStr(hex) {
|
|
|
16
17
|
}
|
|
17
18
|
return Buffer.from(hex.buffer, hex.byteOffset, hex.byteLength).toString("hex");
|
|
18
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* A wrapper for calling immutable.js. To abstract the initialization of UnfinalizedPubkeyIndexMap
|
|
22
|
+
*/
|
|
23
|
+
export function newUnfinalizedPubkeyIndexMap() {
|
|
24
|
+
return immutable.Map();
|
|
25
|
+
}
|
|
19
26
|
export class PubkeyIndexMap {
|
|
20
27
|
constructor() {
|
|
21
28
|
// We don't really need the full pubkey. We could just use the first 20 bytes like an Ethereum address
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubkeyCache.js","sourceRoot":"","sources":["../../src/cache/pubkeyCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pubkeyCache.js","sourceRoot":"","sources":["../../src/cache/pubkeyCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAcvC;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAwB;IAC9D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,SAAS,CAAC,GAAG,EAA6B,CAAC;AACpD,CAAC;AAED,MAAM,OAAO,cAAc;IAA3B;QACE,sGAAsG;QAC7F,QAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IAgBtD,CAAC;IAdC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAA2B;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,GAA2B,EAAE,KAAqB;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,UAA8B,EAC9B,YAA4B,EAC5B,YAA+B;IAE/B,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,2CAA2C,YAAY,CAAC,IAAI,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;IACnC,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5B,gHAAgH;QAChH,6DAA6D;QAC7D,kCAAkC;QAClC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B;IAC5E,CAAC;AACH,CAAC"}
|