@lodestar/state-transition 1.24.0-dev.25c2ee5e5b → 1.24.0-dev.30c669b1f5
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 +5 -1
- package/lib/block/processConsolidationRequest.js.map +1 -1
- package/lib/block/processExecutionPayload.js +3 -3
- package/lib/block/processExecutionPayload.js.map +1 -1
- package/lib/cache/epochCache.d.ts +7 -52
- package/lib/cache/epochCache.js +31 -110
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/epochTransitionCache.d.ts +11 -6
- package/lib/cache/epochTransitionCache.js +15 -2
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/cache/pubkeyCache.d.ts +1 -23
- package/lib/cache/pubkeyCache.js +0 -24
- package/lib/cache/pubkeyCache.js.map +1 -1
- package/lib/epoch/processEffectiveBalanceUpdates.js +3 -4
- package/lib/epoch/processEffectiveBalanceUpdates.js.map +1 -1
- package/lib/epoch/processPendingDeposits.js +11 -2
- package/lib/epoch/processPendingDeposits.js.map +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.js +0 -3
- package/lib/index.js.map +1 -1
- package/lib/metrics.d.ts +0 -4
- package/lib/metrics.js.map +1 -1
- package/lib/util/electra.d.ts +8 -0
- package/lib/util/electra.js +12 -0
- package/lib/util/electra.js.map +1 -1
- package/package.json +7 -8
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { FAR_FUTURE_EPOCH, MIN_ACTIVATION_BALANCE, PENDING_CONSOLIDATIONS_LIMIT } from "@lodestar/params";
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
3
|
import { hasEth1WithdrawalCredential } from "../util/capella.js";
|
|
4
|
-
import { hasExecutionWithdrawalCredential, switchToCompoundingValidator } from "../util/electra.js";
|
|
4
|
+
import { hasExecutionWithdrawalCredential, isPubkeyKnown, switchToCompoundingValidator } from "../util/electra.js";
|
|
5
5
|
import { computeConsolidationEpochAndUpdateChurn } from "../util/epoch.js";
|
|
6
6
|
import { getConsolidationChurnLimit, isActiveValidator } from "../util/validator.js";
|
|
7
7
|
// TODO Electra: Clean up necessary as there is a lot of overlap with isValidSwitchToCompoundRequest
|
|
8
8
|
export function processConsolidationRequest(state, consolidationRequest) {
|
|
9
9
|
const { sourcePubkey, targetPubkey, sourceAddress } = consolidationRequest;
|
|
10
|
+
if (!isPubkeyKnown(state, sourcePubkey) || !isPubkeyKnown(state, targetPubkey)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
10
13
|
const sourceIndex = state.epochCtx.getValidatorIndex(sourcePubkey);
|
|
11
14
|
const targetIndex = state.epochCtx.getValidatorIndex(targetPubkey);
|
|
12
15
|
if (sourceIndex === null || targetIndex === null) {
|
|
@@ -72,6 +75,7 @@ function isValidSwitchToCompoundRequest(state, consolidationRequest) {
|
|
|
72
75
|
const targetIndex = state.epochCtx.getValidatorIndex(targetPubkey);
|
|
73
76
|
// Verify pubkey exists
|
|
74
77
|
if (sourceIndex === null) {
|
|
78
|
+
// this check is mainly to make the compiler happy, pubkey is checked by the consumer already
|
|
75
79
|
return false;
|
|
76
80
|
}
|
|
77
81
|
// Switch to compounding requires source and target be equal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processConsolidationRequest.js","sourceRoot":"","sources":["../../src/block/processConsolidationRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,sBAAsB,EAAE,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAU,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAC,2BAA2B,EAAC,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAC,gCAAgC,EAAE,4BAA4B,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"processConsolidationRequest.js","sourceRoot":"","sources":["../../src/block/processConsolidationRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { byteArrayEquals } from "@chainsafe/ssz";
|
|
2
|
-
import { ForkSeq
|
|
2
|
+
import { ForkSeq } from "@lodestar/params";
|
|
3
3
|
import { isExecutionPayload } from "@lodestar/types";
|
|
4
4
|
import { toHex, toRootHex } from "@lodestar/utils";
|
|
5
5
|
import { executionPayloadToPayloadHeader, getFullOrBlindedPayloadFromBody, isMergeTransitionComplete, } from "../util/execution.js";
|
|
@@ -31,8 +31,8 @@ export function processExecutionPayload(fork, state, body, externalData) {
|
|
|
31
31
|
}
|
|
32
32
|
if (fork >= ForkSeq.deneb) {
|
|
33
33
|
const blobKzgCommitmentsLen = body.blobKzgCommitments?.length ?? 0;
|
|
34
|
-
if (blobKzgCommitmentsLen > MAX_BLOBS_PER_BLOCK) {
|
|
35
|
-
throw Error(`blobKzgCommitmentsLen exceeds limit=${MAX_BLOBS_PER_BLOCK}`);
|
|
34
|
+
if (blobKzgCommitmentsLen > state.config.MAX_BLOBS_PER_BLOCK) {
|
|
35
|
+
throw Error(`blobKzgCommitmentsLen exceeds limit=${state.config.MAX_BLOBS_PER_BLOCK}`);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
// Verify the execution payload is valid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processExecutionPayload.js","sourceRoot":"","sources":["../../src/block/processExecutionPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"processExecutionPayload.js","sourceRoot":"","sources":["../../src/block/processExecutionPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,11 @@ import { BeaconConfig, ChainConfig } from "@lodestar/config";
|
|
|
4
4
|
import { ForkSeq } from "@lodestar/params";
|
|
5
5
|
import { Attestation, BLSSignature, CommitteeIndex, Epoch, IndexedAttestation, RootHex, Slot, SyncPeriod, ValidatorIndex, phase0 } from "@lodestar/types";
|
|
6
6
|
import { LodestarError } from "@lodestar/utils";
|
|
7
|
-
import * as immutable from "immutable";
|
|
8
|
-
import { EpochCacheMetrics } from "../metrics.js";
|
|
9
7
|
import { AttesterDuty } from "../util/calculateCommitteeAssignments.js";
|
|
10
8
|
import { EpochShuffling, IShufflingCache } from "../util/epochShuffling.js";
|
|
11
9
|
import { EffectiveBalanceIncrements } from "./effectiveBalanceIncrements.js";
|
|
12
|
-
import {
|
|
10
|
+
import { EpochTransitionCache } from "./epochTransitionCache.js";
|
|
11
|
+
import { Index2PubkeyCache } from "./pubkeyCache.js";
|
|
13
12
|
import { CachedBeaconStateAllForks } from "./stateCache.js";
|
|
14
13
|
import { SyncCommitteeCache } from "./syncCommitteeCache.js";
|
|
15
14
|
import { BeaconStateAllForks } from "./types.js";
|
|
@@ -58,30 +57,20 @@ type ProposersDeferred = {
|
|
|
58
57
|
export declare class EpochCache {
|
|
59
58
|
config: BeaconConfig;
|
|
60
59
|
/**
|
|
61
|
-
* Unique globally shared
|
|
60
|
+
* Unique globally shared pubkey registry. There should only exist one for the entire application.
|
|
62
61
|
*
|
|
63
62
|
* TODO: this is a hack, we need a safety mechanism in case a bad eth1 majority vote is in,
|
|
64
63
|
* or handle non finalized data differently, or use an immutable.js structure for cheap copies
|
|
65
64
|
*
|
|
66
|
-
* New: This would include only validators whose activation_eligibility_epoch != FAR_FUTURE_EPOCH and hence it is
|
|
67
|
-
* insert only. Validators could be 1) Active 2) In the activation queue 3) Initialized but pending queued
|
|
68
|
-
*
|
|
69
65
|
* $VALIDATOR_COUNT x 192 char String -> Number Map
|
|
70
66
|
*/
|
|
71
67
|
pubkey2index: PubkeyIndexMap;
|
|
72
68
|
/**
|
|
73
|
-
* Unique globally shared
|
|
74
|
-
*
|
|
75
|
-
* New: This would include only validators whose activation_eligibility_epoch != FAR_FUTURE_EPOCH and hence it is
|
|
76
|
-
* insert only. Validators could be 1) Active 2) In the activation queue 3) Initialized but pending queued
|
|
69
|
+
* Unique globally shared pubkey registry. There should only exist one for the entire application.
|
|
77
70
|
*
|
|
78
71
|
* $VALIDATOR_COUNT x BLST deserialized pubkey (Jacobian coordinates)
|
|
79
72
|
*/
|
|
80
73
|
index2pubkey: Index2PubkeyCache;
|
|
81
|
-
/**
|
|
82
|
-
* Unique pubkey registry shared in the same fork. There should only exist one for the fork.
|
|
83
|
-
*/
|
|
84
|
-
unfinalizedPubkey2index: UnfinalizedPubkeyIndexMap;
|
|
85
74
|
/**
|
|
86
75
|
* ShufflingCache is passed in from `beacon-node` so should be available at runtime but may not be
|
|
87
76
|
* present during testing.
|
|
@@ -189,22 +178,12 @@ export declare class EpochCache {
|
|
|
189
178
|
/** TODO: Indexed SyncCommitteeCache */
|
|
190
179
|
nextSyncCommitteeIndexed: SyncCommitteeCache;
|
|
191
180
|
syncPeriod: SyncPeriod;
|
|
192
|
-
/**
|
|
193
|
-
* state.validators.length of every state at epoch boundary
|
|
194
|
-
* They are saved in increasing order of epoch.
|
|
195
|
-
* The first validator length in the list corresponds to the state AFTER the latest finalized checkpoint state. ie. state.finalizedCheckpoint.epoch - 1
|
|
196
|
-
* The last validator length corresponds to the latest epoch state ie. this.epoch
|
|
197
|
-
* eg. latest epoch = 105, latest finalized cp state epoch = 102
|
|
198
|
-
* then the list will be (in terms of epoch) [103, 104, 105]
|
|
199
|
-
*/
|
|
200
|
-
historicalValidatorLengths: immutable.List<number>;
|
|
201
181
|
epoch: Epoch;
|
|
202
182
|
get nextEpoch(): Epoch;
|
|
203
183
|
constructor(data: {
|
|
204
184
|
config: BeaconConfig;
|
|
205
185
|
pubkey2index: PubkeyIndexMap;
|
|
206
186
|
index2pubkey: Index2PubkeyCache;
|
|
207
|
-
unfinalizedPubkey2index: UnfinalizedPubkeyIndexMap;
|
|
208
187
|
shufflingCache?: IShufflingCache;
|
|
209
188
|
proposers: number[];
|
|
210
189
|
proposersPrevEpoch: number[] | null;
|
|
@@ -232,11 +211,10 @@ export declare class EpochCache {
|
|
|
232
211
|
nextSyncCommitteeIndexed: SyncCommitteeCache;
|
|
233
212
|
epoch: Epoch;
|
|
234
213
|
syncPeriod: SyncPeriod;
|
|
235
|
-
historialValidatorLengths: immutable.List<number>;
|
|
236
214
|
});
|
|
237
215
|
/**
|
|
238
216
|
* Create an epoch cache
|
|
239
|
-
* @param state a finalized beacon state. Passing in unfinalized state may cause unexpected behaviour
|
|
217
|
+
* @param state a finalized beacon state. Passing in unfinalized state may cause unexpected behaviour
|
|
240
218
|
*
|
|
241
219
|
* SLOW CODE - 🐢
|
|
242
220
|
*/
|
|
@@ -254,11 +232,7 @@ export declare class EpochCache {
|
|
|
254
232
|
* Steps for afterProcessEpoch
|
|
255
233
|
* 1) update previous/current/next values of cached items
|
|
256
234
|
*/
|
|
257
|
-
afterProcessEpoch(state: CachedBeaconStateAllForks, epochTransitionCache:
|
|
258
|
-
nextShufflingDecisionRoot: RootHex;
|
|
259
|
-
nextShufflingActiveIndices: Uint32Array;
|
|
260
|
-
nextEpochTotalActiveBalanceByIncrement: number;
|
|
261
|
-
}): void;
|
|
235
|
+
afterProcessEpoch(state: CachedBeaconStateAllForks, epochTransitionCache: EpochTransitionCache): void;
|
|
262
236
|
beforeEpochTransition(): void;
|
|
263
237
|
/**
|
|
264
238
|
* Return the beacon committee at slot for index.
|
|
@@ -334,29 +308,11 @@ export declare class EpochCache {
|
|
|
334
308
|
getCommitteeAssignment(epoch: Epoch, validatorIndex: ValidatorIndex): phase0.CommitteeAssignment | null;
|
|
335
309
|
isAggregator(slot: Slot, index: CommitteeIndex, slotSignature: BLSSignature): boolean;
|
|
336
310
|
/**
|
|
337
|
-
* Return
|
|
338
|
-
* Only finalized pubkey as we do not store unfinalized pubkey because no where in the spec has a
|
|
339
|
-
* need to make such enquiry
|
|
311
|
+
* Return pubkey given the validator index.
|
|
340
312
|
*/
|
|
341
313
|
getPubkey(index: ValidatorIndex): PublicKey | undefined;
|
|
342
314
|
getValidatorIndex(pubkey: Uint8Array): ValidatorIndex | null;
|
|
343
|
-
/**
|
|
344
|
-
*
|
|
345
|
-
* Add unfinalized pubkeys
|
|
346
|
-
*
|
|
347
|
-
*/
|
|
348
315
|
addPubkey(index: ValidatorIndex, pubkey: Uint8Array): void;
|
|
349
|
-
addUnFinalizedPubkey(index: ValidatorIndex, pubkey: PubkeyHex | Uint8Array, metrics?: EpochCacheMetrics): void;
|
|
350
|
-
addFinalizedPubkeys(pubkeyMap: UnfinalizedPubkeyIndexMap, metrics?: EpochCacheMetrics): void;
|
|
351
|
-
/**
|
|
352
|
-
* Add finalized validator index and pubkey into finalized cache.
|
|
353
|
-
* Since addFinalizedPubkey() primarily takes pubkeys from unfinalized cache, it can take pubkey hex string directly
|
|
354
|
-
*/
|
|
355
|
-
addFinalizedPubkey(index: ValidatorIndex, pubkeyOrHex: PubkeyHex | Uint8Array, metrics?: EpochCacheMetrics): void;
|
|
356
|
-
/**
|
|
357
|
-
* Delete pubkeys from unfinalized cache
|
|
358
|
-
*/
|
|
359
|
-
deleteUnfinalizedPubkeys(pubkeys: Iterable<PubkeyHex>): void;
|
|
360
316
|
getShufflingAtSlot(slot: Slot): EpochShuffling;
|
|
361
317
|
getShufflingAtSlotOrNull(slot: Slot): EpochShuffling | null;
|
|
362
318
|
getShufflingAtEpoch(epoch: Epoch): EpochShuffling;
|
|
@@ -380,7 +336,6 @@ export declare class EpochCache {
|
|
|
380
336
|
setSyncCommitteesIndexed(nextSyncCommitteeIndices: number[]): void;
|
|
381
337
|
effectiveBalanceIncrementsSet(index: number, effectiveBalance: number): void;
|
|
382
338
|
isPostElectra(): boolean;
|
|
383
|
-
getValidatorCountAtEpoch(targetEpoch: Epoch): number | undefined;
|
|
384
339
|
}
|
|
385
340
|
export declare enum EpochCacheErrorCode {
|
|
386
341
|
COMMITTEE_INDEX_OUT_OF_RANGE = "EPOCH_CONTEXT_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE",
|
package/lib/cache/epochCache.js
CHANGED
|
@@ -2,8 +2,7 @@ import { PublicKey } from "@chainsafe/blst";
|
|
|
2
2
|
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
3
3
|
import { createBeaconConfig } from "@lodestar/config";
|
|
4
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";
|
|
5
|
-
import { LodestarError
|
|
6
|
-
import * as immutable from "immutable";
|
|
5
|
+
import { LodestarError } from "@lodestar/utils";
|
|
7
6
|
import { getTotalSlashingsByIncrement } from "../epoch/processSlashings.js";
|
|
8
7
|
import { calculateCommitteeAssignments } from "../util/calculateCommitteeAssignments.js";
|
|
9
8
|
import { calculateShufflingDecisionRoot, computeEpochShuffling, } from "../util/epochShuffling.js";
|
|
@@ -11,7 +10,7 @@ import { computeActivationExitEpoch, computeEpochAtSlot, computeProposers, compu
|
|
|
11
10
|
import { computeBaseRewardPerIncrement, computeSyncParticipantReward } from "../util/syncCommittee.js";
|
|
12
11
|
import { sumTargetUnslashedBalanceIncrements } from "../util/targetUnslashedBalance.js";
|
|
13
12
|
import { getEffectiveBalanceIncrementsWithLen } from "./effectiveBalanceIncrements.js";
|
|
14
|
-
import {
|
|
13
|
+
import { syncPubkeys } from "./pubkeyCache.js";
|
|
15
14
|
import { SyncCommitteeCacheEmpty, computeSyncCommitteeCache, getSyncCommitteeCache, } from "./syncCommitteeCache.js";
|
|
16
15
|
/** `= PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT)` */
|
|
17
16
|
export const PROPOSER_WEIGHT_FACTOR = PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT);
|
|
@@ -45,7 +44,6 @@ export class EpochCache {
|
|
|
45
44
|
this.config = data.config;
|
|
46
45
|
this.pubkey2index = data.pubkey2index;
|
|
47
46
|
this.index2pubkey = data.index2pubkey;
|
|
48
|
-
this.unfinalizedPubkey2index = data.unfinalizedPubkey2index;
|
|
49
47
|
this.shufflingCache = data.shufflingCache;
|
|
50
48
|
this.proposers = data.proposers;
|
|
51
49
|
this.proposersPrevEpoch = data.proposersPrevEpoch;
|
|
@@ -73,11 +71,10 @@ export class EpochCache {
|
|
|
73
71
|
this.nextSyncCommitteeIndexed = data.nextSyncCommitteeIndexed;
|
|
74
72
|
this.epoch = data.epoch;
|
|
75
73
|
this.syncPeriod = data.syncPeriod;
|
|
76
|
-
this.historicalValidatorLengths = data.historialValidatorLengths;
|
|
77
74
|
}
|
|
78
75
|
/**
|
|
79
76
|
* Create an epoch cache
|
|
80
|
-
* @param state a finalized beacon state. Passing in unfinalized state may cause unexpected behaviour
|
|
77
|
+
* @param state a finalized beacon state. Passing in unfinalized state may cause unexpected behaviour
|
|
81
78
|
*
|
|
82
79
|
* SLOW CODE - 🐢
|
|
83
80
|
*/
|
|
@@ -242,8 +239,6 @@ export class EpochCache {
|
|
|
242
239
|
config,
|
|
243
240
|
pubkey2index,
|
|
244
241
|
index2pubkey,
|
|
245
|
-
// `createFromFinalizedState()` creates cache with empty unfinalizedPubkey2index. Be cautious to only pass in finalized state
|
|
246
|
-
unfinalizedPubkey2index: newUnfinalizedPubkeyIndexMap(),
|
|
247
242
|
shufflingCache,
|
|
248
243
|
proposers,
|
|
249
244
|
// On first epoch, set to null to prevent unnecessary work since this is only used for metrics
|
|
@@ -272,7 +267,6 @@ export class EpochCache {
|
|
|
272
267
|
nextSyncCommitteeIndexed,
|
|
273
268
|
epoch: currentEpoch,
|
|
274
269
|
syncPeriod: computeSyncPeriodAtEpoch(currentEpoch),
|
|
275
|
-
historialValidatorLengths: immutable.List(),
|
|
276
270
|
});
|
|
277
271
|
}
|
|
278
272
|
/**
|
|
@@ -287,8 +281,6 @@ export class EpochCache {
|
|
|
287
281
|
// Common append-only structures shared with all states, no need to clone
|
|
288
282
|
pubkey2index: this.pubkey2index,
|
|
289
283
|
index2pubkey: this.index2pubkey,
|
|
290
|
-
// No need to clone this reference. On each mutation the `unfinalizedPubkey2index` reference is replaced, @see `addPubkey`
|
|
291
|
-
unfinalizedPubkey2index: this.unfinalizedPubkey2index,
|
|
292
284
|
shufflingCache: this.shufflingCache,
|
|
293
285
|
// Immutable data
|
|
294
286
|
proposers: this.proposers,
|
|
@@ -320,7 +312,6 @@ export class EpochCache {
|
|
|
320
312
|
nextSyncCommitteeIndexed: this.nextSyncCommitteeIndexed,
|
|
321
313
|
epoch: this.epoch,
|
|
322
314
|
syncPeriod: this.syncPeriod,
|
|
323
|
-
historialValidatorLengths: this.historicalValidatorLengths,
|
|
324
315
|
});
|
|
325
316
|
}
|
|
326
317
|
/**
|
|
@@ -370,24 +361,32 @@ export class EpochCache {
|
|
|
370
361
|
this.nextDecisionRoot = epochTransitionCache.nextShufflingDecisionRoot;
|
|
371
362
|
this.nextActiveIndices = epochTransitionCache.nextShufflingActiveIndices;
|
|
372
363
|
if (this.shufflingCache) {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
.
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
364
|
+
if (!epochTransitionCache.asyncShufflingCalculation) {
|
|
365
|
+
this.nextShuffling = this.shufflingCache.getSync(epochAfterUpcoming, this.nextDecisionRoot, {
|
|
366
|
+
state,
|
|
367
|
+
activeIndices: this.nextActiveIndices,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
this.nextShuffling = null;
|
|
372
|
+
// This promise will resolve immediately after the synchronous code of the state-transition runs. Until
|
|
373
|
+
// the build is done on a worker thread it will be calculated immediately after the epoch transition
|
|
374
|
+
// completes. Once the work is done concurrently it should be ready by time this get runs so the promise
|
|
375
|
+
// will resolve directly on the next spin of the event loop because the epoch transition and shuffling take
|
|
376
|
+
// about the same time to calculate so theoretically its ready now. Do not await here though in case it
|
|
377
|
+
// is not ready yet as the transition must not be asynchronous.
|
|
378
|
+
this.shufflingCache
|
|
379
|
+
.get(epochAfterUpcoming, this.nextDecisionRoot)
|
|
380
|
+
.then((shuffling) => {
|
|
381
|
+
if (!shuffling) {
|
|
382
|
+
throw new Error("EpochShuffling not returned from get in afterProcessEpoch");
|
|
383
|
+
}
|
|
384
|
+
this.nextShuffling = shuffling;
|
|
385
|
+
})
|
|
386
|
+
.catch((err) => {
|
|
387
|
+
this.shufflingCache?.logger?.error("EPOCH_CONTEXT_SHUFFLING_BUILD_ERROR", { epoch: epochAfterUpcoming, decisionRoot: epochTransitionCache.nextShufflingDecisionRoot }, err);
|
|
388
|
+
});
|
|
389
|
+
}
|
|
391
390
|
}
|
|
392
391
|
else {
|
|
393
392
|
// Only for testing. shufflingCache should always be available in prod
|
|
@@ -435,20 +434,6 @@ export class EpochCache {
|
|
|
435
434
|
// ```
|
|
436
435
|
this.epoch = computeEpochAtSlot(state.slot);
|
|
437
436
|
this.syncPeriod = computeSyncPeriodAtEpoch(this.epoch);
|
|
438
|
-
// ELECTRA Only: Add current cpState.validators.length
|
|
439
|
-
// Only keep validatorLength for epochs after finalized cpState.epoch
|
|
440
|
-
// eg. [100(epoch 1), 102(epoch 2)].push(104(epoch 3)), this.epoch = 3, finalized cp epoch = 1
|
|
441
|
-
// We keep the last (3 - 1) items = [102, 104]
|
|
442
|
-
if (upcomingEpoch >= this.config.ELECTRA_FORK_EPOCH) {
|
|
443
|
-
this.historicalValidatorLengths = this.historicalValidatorLengths.push(state.validators.length);
|
|
444
|
-
// If number of validatorLengths we want to keep exceeds the current list size, it implies
|
|
445
|
-
// finalized checkpoint hasn't advanced, and no need to slice
|
|
446
|
-
const hasFinalizedCpAdvanced = this.epoch - state.finalizedCheckpoint.epoch < this.historicalValidatorLengths.size;
|
|
447
|
-
if (hasFinalizedCpAdvanced) {
|
|
448
|
-
// We use finalized cp epoch - this.epoch which is a negative number to keep the last n entries and discard the rest
|
|
449
|
-
this.historicalValidatorLengths = this.historicalValidatorLengths.slice(state.finalizedCheckpoint.epoch - this.epoch);
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
437
|
}
|
|
453
438
|
beforeEpochTransition() {
|
|
454
439
|
// Clone (copy) before being mutated in processEffectiveBalanceUpdates
|
|
@@ -637,66 +622,17 @@ export class EpochCache {
|
|
|
637
622
|
return isAggregatorFromCommitteeLength(committee.length, slotSignature);
|
|
638
623
|
}
|
|
639
624
|
/**
|
|
640
|
-
* Return
|
|
641
|
-
* Only finalized pubkey as we do not store unfinalized pubkey because no where in the spec has a
|
|
642
|
-
* need to make such enquiry
|
|
625
|
+
* Return pubkey given the validator index.
|
|
643
626
|
*/
|
|
644
627
|
getPubkey(index) {
|
|
645
628
|
return this.index2pubkey[index];
|
|
646
629
|
}
|
|
647
630
|
getValidatorIndex(pubkey) {
|
|
648
|
-
if (this.isPostElectra()) {
|
|
649
|
-
return this.pubkey2index.get(pubkey) ?? this.unfinalizedPubkey2index.get(toMemoryEfficientHexStr(pubkey)) ?? null;
|
|
650
|
-
}
|
|
651
631
|
return this.pubkey2index.get(pubkey);
|
|
652
632
|
}
|
|
653
|
-
/**
|
|
654
|
-
*
|
|
655
|
-
* Add unfinalized pubkeys
|
|
656
|
-
*
|
|
657
|
-
*/
|
|
658
633
|
addPubkey(index, pubkey) {
|
|
659
|
-
if (this.isPostElectra()) {
|
|
660
|
-
this.addUnFinalizedPubkey(index, pubkey);
|
|
661
|
-
}
|
|
662
|
-
else {
|
|
663
|
-
// deposit mechanism pre ELECTRA follows a safe distance with assumption
|
|
664
|
-
// that they are already canonical
|
|
665
|
-
this.addFinalizedPubkey(index, pubkey);
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
addUnFinalizedPubkey(index, pubkey, metrics) {
|
|
669
|
-
this.unfinalizedPubkey2index = this.unfinalizedPubkey2index.set(toMemoryEfficientHexStr(pubkey), index);
|
|
670
|
-
metrics?.newUnFinalizedPubkey.inc();
|
|
671
|
-
}
|
|
672
|
-
addFinalizedPubkeys(pubkeyMap, metrics) {
|
|
673
|
-
pubkeyMap.forEach((index, pubkey) => this.addFinalizedPubkey(index, pubkey, metrics));
|
|
674
|
-
}
|
|
675
|
-
/**
|
|
676
|
-
* Add finalized validator index and pubkey into finalized cache.
|
|
677
|
-
* Since addFinalizedPubkey() primarily takes pubkeys from unfinalized cache, it can take pubkey hex string directly
|
|
678
|
-
*/
|
|
679
|
-
addFinalizedPubkey(index, pubkeyOrHex, metrics) {
|
|
680
|
-
const pubkey = typeof pubkeyOrHex === "string" ? fromHex(pubkeyOrHex) : pubkeyOrHex;
|
|
681
|
-
const existingIndex = this.pubkey2index.get(pubkey);
|
|
682
|
-
if (existingIndex !== null) {
|
|
683
|
-
if (existingIndex === index) {
|
|
684
|
-
// Repeated insert.
|
|
685
|
-
metrics?.finalizedPubkeyDuplicateInsert.inc();
|
|
686
|
-
return;
|
|
687
|
-
}
|
|
688
|
-
// attempt to insert the same pubkey with different index, should never happen.
|
|
689
|
-
throw Error(`inserted existing pubkey into finalizedPubkey2index cache with a different index, index=${index} priorIndex=${existingIndex}`);
|
|
690
|
-
}
|
|
691
634
|
this.pubkey2index.set(pubkey, index);
|
|
692
|
-
|
|
693
|
-
this.index2pubkey[index] = PublicKey.fromBytes(pubkeyBytes); // Optimize for aggregation
|
|
694
|
-
}
|
|
695
|
-
/**
|
|
696
|
-
* Delete pubkeys from unfinalized cache
|
|
697
|
-
*/
|
|
698
|
-
deleteUnfinalizedPubkeys(pubkeys) {
|
|
699
|
-
this.unfinalizedPubkey2index = this.unfinalizedPubkey2index.deleteAll(pubkeys);
|
|
635
|
+
this.index2pubkey[index] = PublicKey.fromBytes(pubkey); // Optimize for aggregation
|
|
700
636
|
}
|
|
701
637
|
getShufflingAtSlot(slot) {
|
|
702
638
|
const epoch = computeEpochAtSlot(slot);
|
|
@@ -817,21 +753,6 @@ export class EpochCache {
|
|
|
817
753
|
isPostElectra() {
|
|
818
754
|
return this.epoch >= this.config.ELECTRA_FORK_EPOCH;
|
|
819
755
|
}
|
|
820
|
-
getValidatorCountAtEpoch(targetEpoch) {
|
|
821
|
-
const currentEpoch = this.epoch;
|
|
822
|
-
if (targetEpoch === currentEpoch) {
|
|
823
|
-
return this.historicalValidatorLengths.get(-1);
|
|
824
|
-
}
|
|
825
|
-
// Attempt to get validator count from future epoch
|
|
826
|
-
if (targetEpoch > currentEpoch) {
|
|
827
|
-
return undefined;
|
|
828
|
-
}
|
|
829
|
-
// targetEpoch is so far back that historicalValidatorLengths doesnt contain such info
|
|
830
|
-
if (targetEpoch < currentEpoch - this.historicalValidatorLengths.size + 1) {
|
|
831
|
-
return undefined;
|
|
832
|
-
}
|
|
833
|
-
return this.historicalValidatorLengths.get(targetEpoch - currentEpoch - 1);
|
|
834
|
-
}
|
|
835
756
|
}
|
|
836
757
|
function getEffectiveBalanceIncrementsByteLen(validatorCount) {
|
|
837
758
|
// 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,10 +1,14 @@
|
|
|
1
|
-
import { Epoch, RootHex, ValidatorIndex
|
|
1
|
+
import { Epoch, RootHex, ValidatorIndex } from "@lodestar/types";
|
|
2
2
|
import { CachedBeaconStateAllForks } from "../index.js";
|
|
3
3
|
export type EpochTransitionCacheOpts = {
|
|
4
4
|
/**
|
|
5
5
|
* Assert progressive balances the same to EpochTransitionCache
|
|
6
6
|
*/
|
|
7
7
|
assertCorrectProgressiveBalances?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Do not queue shuffling calculation async. Forces sync JIT calculation in afterProcessEpoch
|
|
10
|
+
*/
|
|
11
|
+
asyncShufflingCalculation?: boolean;
|
|
8
12
|
};
|
|
9
13
|
/**
|
|
10
14
|
* EpochTransitionCache is the parent object of:
|
|
@@ -101,11 +105,7 @@ export interface EpochTransitionCache {
|
|
|
101
105
|
*/
|
|
102
106
|
inclusionDelays: number[];
|
|
103
107
|
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[];
|
|
108
|
+
isCompoundingValidatorArr: boolean[];
|
|
109
109
|
/**
|
|
110
110
|
* balances array will be populated by processRewardsAndPenalties() and consumed by processEffectiveBalanceUpdates().
|
|
111
111
|
* processRewardsAndPenalties() already has a regular Javascript array of balances.
|
|
@@ -138,6 +138,11 @@ export interface EpochTransitionCache {
|
|
|
138
138
|
* | afterEpochTransitionCache | read it |
|
|
139
139
|
*/
|
|
140
140
|
nextEpochTotalActiveBalanceByIncrement: number;
|
|
141
|
+
/**
|
|
142
|
+
* Compute the shuffling sync or async. Defaults to synchronous. Need to pass `true` with the
|
|
143
|
+
* `EpochTransitionCacheOpts`
|
|
144
|
+
*/
|
|
145
|
+
asyncShufflingCalculation: boolean;
|
|
141
146
|
/**
|
|
142
147
|
* Track by validator index if it's active in the prev epoch.
|
|
143
148
|
* Used in metrics
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EPOCHS_PER_SLASHINGS_VECTOR, FAR_FUTURE_EPOCH, ForkSeq, MIN_ACTIVATION_BALANCE, SLOTS_PER_HISTORICAL_ROOT, } from "@lodestar/params";
|
|
2
2
|
import { intDiv, toRootHex } from "@lodestar/utils";
|
|
3
3
|
import { processPendingAttestations } from "../epoch/processPendingAttestations.js";
|
|
4
|
+
import { hasCompoundingWithdrawalCredential, } from "../index.js";
|
|
4
5
|
import { computeBaseRewardPerIncrement } from "../util/altair.js";
|
|
5
6
|
import { FLAG_CURR_HEAD_ATTESTER, FLAG_CURR_SOURCE_ATTESTER, FLAG_CURR_TARGET_ATTESTER, FLAG_ELIGIBLE_ATTESTER, FLAG_PREV_HEAD_ATTESTER, FLAG_PREV_SOURCE_ATTESTER, FLAG_PREV_TARGET_ATTESTER, FLAG_UNSLASHED, hasMarkers, } from "../util/attesterStatus.js";
|
|
6
7
|
// reuse arrays to avoid memory reallocation and gc
|
|
@@ -18,6 +19,8 @@ const inclusionDelays = new Array();
|
|
|
18
19
|
/** WARNING: reused, never gc'd */
|
|
19
20
|
const flags = new Array();
|
|
20
21
|
/** WARNING: reused, never gc'd */
|
|
22
|
+
const isCompoundingValidatorArr = new Array();
|
|
23
|
+
/** WARNING: reused, never gc'd */
|
|
21
24
|
const nextEpochShufflingActiveValidatorIndices = new Array();
|
|
22
25
|
export function beforeProcessEpoch(state, opts) {
|
|
23
26
|
const { config, epochCtx } = state;
|
|
@@ -60,6 +63,9 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
60
63
|
// In the second loop, set participation flags
|
|
61
64
|
// TODO: optimize by combining the two loops
|
|
62
65
|
// likely will require splitting into phase0 and post-phase0 versions
|
|
66
|
+
if (forkSeq >= ForkSeq.electra) {
|
|
67
|
+
isCompoundingValidatorArr.length = validatorCount;
|
|
68
|
+
}
|
|
63
69
|
// Clone before being mutated in processEffectiveBalanceUpdates
|
|
64
70
|
epochCtx.beforeEpochTransition();
|
|
65
71
|
const effectiveBalancesByIncrements = epochCtx.effectiveBalanceIncrements;
|
|
@@ -89,6 +95,9 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
89
95
|
flag |= FLAG_ELIGIBLE_ATTESTER;
|
|
90
96
|
}
|
|
91
97
|
flags[i] = flag;
|
|
98
|
+
if (forkSeq >= ForkSeq.electra) {
|
|
99
|
+
isCompoundingValidatorArr[i] = hasCompoundingWithdrawalCredential(validator.withdrawalCredentials);
|
|
100
|
+
}
|
|
92
101
|
if (isActiveCurr) {
|
|
93
102
|
totalActiveStakeByIncrement += effectiveBalancesByIncrements[i];
|
|
94
103
|
}
|
|
@@ -156,7 +165,10 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
156
165
|
for (let i = 0; i < nextEpochShufflingActiveIndicesLength; i++) {
|
|
157
166
|
nextShufflingActiveIndices[i] = nextEpochShufflingActiveValidatorIndices[i];
|
|
158
167
|
}
|
|
159
|
-
|
|
168
|
+
const asyncShufflingCalculation = opts?.asyncShufflingCalculation ?? false;
|
|
169
|
+
if (asyncShufflingCalculation) {
|
|
170
|
+
state.epochCtx.shufflingCache?.build(epochAfterNext, nextShufflingDecisionRoot, state, nextShufflingActiveIndices);
|
|
171
|
+
}
|
|
160
172
|
if (totalActiveStakeByIncrement < 1) {
|
|
161
173
|
totalActiveStakeByIncrement = 1;
|
|
162
174
|
}
|
|
@@ -252,6 +264,7 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
252
264
|
indicesToEject,
|
|
253
265
|
nextShufflingDecisionRoot,
|
|
254
266
|
nextShufflingActiveIndices,
|
|
267
|
+
asyncShufflingCalculation,
|
|
255
268
|
// to be updated in processEffectiveBalanceUpdates
|
|
256
269
|
nextEpochTotalActiveBalanceByIncrement: 0,
|
|
257
270
|
isActivePrevEpoch,
|
|
@@ -260,7 +273,7 @@ export function beforeProcessEpoch(state, opts) {
|
|
|
260
273
|
proposerIndices,
|
|
261
274
|
inclusionDelays,
|
|
262
275
|
flags,
|
|
263
|
-
|
|
276
|
+
isCompoundingValidatorArr,
|
|
264
277
|
// Will be assigned in processRewardsAndPenalties()
|
|
265
278
|
balances: undefined,
|
|
266
279
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochTransitionCache.js","sourceRoot":"","sources":["../../src/cache/epochTransitionCache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAC,MAAM,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"epochTransitionCache.js","sourceRoot":"","sources":["../../src/cache/epochTransitionCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
2
|
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
3
|
-
import {
|
|
4
|
-
import * as immutable from "immutable";
|
|
3
|
+
import { phase0 } from "@lodestar/types";
|
|
5
4
|
export type Index2PubkeyCache = PublicKey[];
|
|
6
|
-
/**
|
|
7
|
-
* OrderedMap preserves the order of entries in which they are `set()`.
|
|
8
|
-
* We assume `values()` yields validator indices in strictly increasing order
|
|
9
|
-
* as new validator indices are assigned in increasing order.
|
|
10
|
-
* EIP-6914 will break this assumption.
|
|
11
|
-
*/
|
|
12
|
-
export type UnfinalizedPubkeyIndexMap = immutable.Map<PubkeyHex, ValidatorIndex>;
|
|
13
|
-
export type PubkeyHex = string;
|
|
14
|
-
/**
|
|
15
|
-
* toHexString() creates hex strings via string concatenation, which are very memory inefficient.
|
|
16
|
-
* Memory benchmarks show that Buffer.toString("hex") produces strings with 10x less memory.
|
|
17
|
-
*
|
|
18
|
-
* Does not prefix to save memory, thus the prefix is removed from an already string representation.
|
|
19
|
-
*
|
|
20
|
-
* See https://github.com/ChainSafe/lodestar/issues/3446
|
|
21
|
-
*/
|
|
22
|
-
export declare function toMemoryEfficientHexStr(hex: Uint8Array | string): string;
|
|
23
|
-
/**
|
|
24
|
-
* A wrapper for calling immutable.js. To abstract the initialization of UnfinalizedPubkeyIndexMap
|
|
25
|
-
*/
|
|
26
|
-
export declare function newUnfinalizedPubkeyIndexMap(): UnfinalizedPubkeyIndexMap;
|
|
27
5
|
/**
|
|
28
6
|
* Checks the pubkey indices against a state and adds missing pubkeys
|
|
29
7
|
*
|
package/lib/cache/pubkeyCache.js
CHANGED
|
@@ -1,28 +1,4 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
|
-
import * as immutable from "immutable";
|
|
3
|
-
/**
|
|
4
|
-
* toHexString() creates hex strings via string concatenation, which are very memory inefficient.
|
|
5
|
-
* Memory benchmarks show that Buffer.toString("hex") produces strings with 10x less memory.
|
|
6
|
-
*
|
|
7
|
-
* Does not prefix to save memory, thus the prefix is removed from an already string representation.
|
|
8
|
-
*
|
|
9
|
-
* See https://github.com/ChainSafe/lodestar/issues/3446
|
|
10
|
-
*/
|
|
11
|
-
export function toMemoryEfficientHexStr(hex) {
|
|
12
|
-
if (typeof hex === "string") {
|
|
13
|
-
if (hex.startsWith("0x")) {
|
|
14
|
-
hex = hex.slice(2);
|
|
15
|
-
}
|
|
16
|
-
return hex;
|
|
17
|
-
}
|
|
18
|
-
return Buffer.from(hex.buffer, hex.byteOffset, hex.byteLength).toString("hex");
|
|
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
|
-
}
|
|
26
2
|
/**
|
|
27
3
|
* Checks the pubkey indices against a state and adds missing pubkeys
|
|
28
4
|
*
|
|
@@ -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;AAM1C;;;;;;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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { EFFECTIVE_BALANCE_INCREMENT, ForkSeq, HYSTERESIS_DOWNWARD_MULTIPLIER, HYSTERESIS_QUOTIENT, HYSTERESIS_UPWARD_MULTIPLIER, MAX_EFFECTIVE_BALANCE, TIMELY_TARGET_FLAG_INDEX, } from "@lodestar/params";
|
|
2
|
-
import { getMaxEffectiveBalance } from "../util/validator.js";
|
|
1
|
+
import { EFFECTIVE_BALANCE_INCREMENT, ForkSeq, HYSTERESIS_DOWNWARD_MULTIPLIER, HYSTERESIS_QUOTIENT, HYSTERESIS_UPWARD_MULTIPLIER, MAX_EFFECTIVE_BALANCE, MAX_EFFECTIVE_BALANCE_ELECTRA, MIN_ACTIVATION_BALANCE, TIMELY_TARGET_FLAG_INDEX, } from "@lodestar/params";
|
|
3
2
|
/** Same to https://github.com/ethereum/eth2.0-specs/blob/v1.1.0-alpha.5/specs/altair/beacon-chain.md#has_flag */
|
|
4
3
|
const TIMELY_TARGET = 1 << TIMELY_TARGET_FLAG_INDEX;
|
|
5
4
|
/**
|
|
@@ -27,7 +26,7 @@ export function processEffectiveBalanceUpdates(fork, state, cache) {
|
|
|
27
26
|
// and updated in processPendingDeposits() and processPendingConsolidations()
|
|
28
27
|
// so it's recycled here for performance.
|
|
29
28
|
const balances = cache.balances ?? state.balances.getAll();
|
|
30
|
-
const
|
|
29
|
+
const isCompoundingValidatorArr = cache.isCompoundingValidatorArr;
|
|
31
30
|
let numUpdate = 0;
|
|
32
31
|
for (let i = 0, len = balances.length; i < len; i++) {
|
|
33
32
|
const balance = balances[i];
|
|
@@ -40,7 +39,7 @@ export function processEffectiveBalanceUpdates(fork, state, cache) {
|
|
|
40
39
|
}
|
|
41
40
|
else {
|
|
42
41
|
// from electra, effectiveBalanceLimit is per validator
|
|
43
|
-
effectiveBalanceLimit =
|
|
42
|
+
effectiveBalanceLimit = isCompoundingValidatorArr[i] ? MAX_EFFECTIVE_BALANCE_ELECTRA : MIN_ACTIVATION_BALANCE;
|
|
44
43
|
}
|
|
45
44
|
if (
|
|
46
45
|
// Too big
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processEffectiveBalanceUpdates.js","sourceRoot":"","sources":["../../src/epoch/processEffectiveBalanceUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,OAAO,EACP,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"processEffectiveBalanceUpdates.js","sourceRoot":"","sources":["../../src/epoch/processEffectiveBalanceUpdates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FAR_FUTURE_EPOCH, ForkSeq, GENESIS_SLOT, MAX_PENDING_DEPOSITS_PER_EPOCH } from "@lodestar/params";
|
|
2
2
|
import { addValidatorToRegistry, isValidDepositSignature } from "../block/processDeposit.js";
|
|
3
3
|
import { increaseBalance } from "../util/balance.js";
|
|
4
|
+
import { hasCompoundingWithdrawalCredential, isValidatorKnown } from "../util/electra.js";
|
|
4
5
|
import { computeStartSlotAtEpoch } from "../util/epoch.js";
|
|
5
6
|
import { getActivationExitChurnLimit } from "../util/validator.js";
|
|
6
7
|
/**
|
|
@@ -41,7 +42,7 @@ export function processPendingDeposits(state, cache) {
|
|
|
41
42
|
let isValidatorExited = false;
|
|
42
43
|
let isValidatorWithdrawn = false;
|
|
43
44
|
const validatorIndex = state.epochCtx.getValidatorIndex(deposit.pubkey);
|
|
44
|
-
if (validatorIndex
|
|
45
|
+
if (isValidatorKnown(state, validatorIndex)) {
|
|
45
46
|
const validator = state.validators.getReadonly(validatorIndex);
|
|
46
47
|
isValidatorExited = validator.exitEpoch < FAR_FUTURE_EPOCH;
|
|
47
48
|
isValidatorWithdrawn = validator.withdrawableEpoch < nextEpoch;
|
|
@@ -85,10 +86,18 @@ function applyPendingDeposit(state, deposit, cache) {
|
|
|
85
86
|
const validatorIndex = state.epochCtx.getValidatorIndex(deposit.pubkey);
|
|
86
87
|
const { pubkey, withdrawalCredentials, amount, signature } = deposit;
|
|
87
88
|
const cachedBalances = cache.balances;
|
|
88
|
-
if (validatorIndex
|
|
89
|
+
if (!isValidatorKnown(state, validatorIndex)) {
|
|
89
90
|
// Verify the deposit signature (proof of possession) which is not checked by the deposit contract
|
|
90
91
|
if (isValidDepositSignature(state.config, pubkey, withdrawalCredentials, amount, signature)) {
|
|
91
92
|
addValidatorToRegistry(ForkSeq.electra, state, pubkey, withdrawalCredentials, amount);
|
|
93
|
+
const newValidatorIndex = state.validators.length - 1;
|
|
94
|
+
cache.isCompoundingValidatorArr[newValidatorIndex] = hasCompoundingWithdrawalCredential(withdrawalCredentials);
|
|
95
|
+
// set balance, so that the next deposit of same pubkey will increase the balance correctly
|
|
96
|
+
// this is to fix the double deposit issue found in mekong
|
|
97
|
+
// see https://github.com/ChainSafe/lodestar/pull/7255
|
|
98
|
+
if (cachedBalances) {
|
|
99
|
+
cachedBalances[newValidatorIndex] = amount;
|
|
100
|
+
}
|
|
92
101
|
}
|
|
93
102
|
}
|
|
94
103
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processPendingDeposits.js","sourceRoot":"","sources":["../../src/epoch/processPendingDeposits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,8BAA8B,EAAC,MAAM,kBAAkB,CAAC;AAEzG,OAAO,EAAC,sBAAsB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAE3F,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,2BAA2B,EAAC,MAAM,sBAAsB,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAA+B,EAAE,KAA2B;IACjG,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3C,MAAM,sBAAsB,GAAG,KAAK,CAAC,uBAAuB,GAAG,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnH,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAC9B,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE/E,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;QAC7D,+EAA+E;QAC/E;QACE,qBAAqB;QACrB,OAAO,CAAC,IAAI,GAAG,YAAY;YAC3B,yCAAyC;YACzC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,yBAAyB,EACxD,CAAC;YACD,MAAM;QACR,CAAC;QAED,mEAAmE;QACnE,IAAI,OAAO,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;YACjC,MAAM;QACR,CAAC;QAED,+FAA+F;QAC/F,IAAI,gBAAgB,IAAI,8BAA8B,EAAE,CAAC;YACvD,MAAM;QACR,CAAC;QAED,uBAAuB;QACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,oBAAoB,GAAG,KAAK,CAAC;QAEjC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,
|
|
1
|
+
{"version":3,"file":"processPendingDeposits.js","sourceRoot":"","sources":["../../src/epoch/processPendingDeposits.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -7,9 +7,8 @@ export type { BeaconStateTransitionMetrics } from "./metrics.js";
|
|
|
7
7
|
export type { CachedBeaconStatePhase0, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, CachedBeaconStateElectra, CachedBeaconStateAllForks, CachedBeaconStateExecutions, BeaconStatePhase0, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateElectra, BeaconStateAllForks, BeaconStateExecutions, } from "./types.js";
|
|
8
8
|
export { createCachedBeaconState, loadCachedBeaconState, type BeaconStateCache, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, } from "./cache/stateCache.js";
|
|
9
9
|
export { EpochCache, type EpochCacheImmutableData, createEmptyEpochCacheImmutableData, EpochCacheError, EpochCacheErrorCode, } from "./cache/epochCache.js";
|
|
10
|
-
export { toMemoryEfficientHexStr } from "./cache/pubkeyCache.js";
|
|
11
10
|
export { type EpochTransitionCache, beforeProcessEpoch } from "./cache/epochTransitionCache.js";
|
|
12
|
-
export { type Index2PubkeyCache
|
|
11
|
+
export { type Index2PubkeyCache } from "./cache/pubkeyCache.js";
|
|
13
12
|
export { type EffectiveBalanceIncrements, getEffectiveBalanceIncrementsZeroed, getEffectiveBalanceIncrementsWithLen, } from "./cache/effectiveBalanceIncrements.js";
|
|
14
13
|
export { isValidVoluntaryExit } from "./block/processVoluntaryExit.js";
|
|
15
14
|
export { isValidBlsToExecutionChange } from "./block/processBlsToExecutionChange.js";
|
package/lib/index.js
CHANGED
|
@@ -5,10 +5,7 @@ export * from "./signatureSets/index.js";
|
|
|
5
5
|
// Main state caches
|
|
6
6
|
export { createCachedBeaconState, loadCachedBeaconState, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, } from "./cache/stateCache.js";
|
|
7
7
|
export { EpochCache, createEmptyEpochCacheImmutableData, EpochCacheError, EpochCacheErrorCode, } from "./cache/epochCache.js";
|
|
8
|
-
export { toMemoryEfficientHexStr } from "./cache/pubkeyCache.js";
|
|
9
8
|
export { beforeProcessEpoch } from "./cache/epochTransitionCache.js";
|
|
10
|
-
// Aux data-structures
|
|
11
|
-
export { newUnfinalizedPubkeyIndexMap, } from "./cache/pubkeyCache.js";
|
|
12
9
|
export { getEffectiveBalanceIncrementsZeroed, getEffectiveBalanceIncrementsWithLen, } from "./cache/effectiveBalanceIncrements.js";
|
|
13
10
|
// BeaconChain validation
|
|
14
11
|
export { isValidVoluntaryExit } from "./block/processVoluntaryExit.js";
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AAwBzC,oBAAoB;AACpB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAErB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,UAAU,EAEV,kCAAkC,EAClC,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AAwBzC,oBAAoB;AACpB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAErB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,UAAU,EAEV,kCAAkC,EAClC,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAK9F,OAAO,EAEL,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,uCAAuC,CAAC;AAE/C,yBAAyB;AACzB,OAAO,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,sBAAsB,EAAE,mBAAmB,EAAyB,MAAM,yBAAyB,CAAC;AAE5G,qCAAqC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,6BAA6B;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC"}
|
package/lib/metrics.d.ts
CHANGED
|
@@ -34,10 +34,6 @@ export type BeaconStateTransitionMetrics = {
|
|
|
34
34
|
postStateValidatorsNodesPopulatedHit: Gauge;
|
|
35
35
|
registerValidatorStatuses: (currentEpoch: Epoch, inclusionDelays: number[], flags: number[], isActiveCurrEpoch: boolean[], isActivePrevEpoch: boolean[], balances?: number[]) => void;
|
|
36
36
|
};
|
|
37
|
-
export type EpochCacheMetrics = {
|
|
38
|
-
finalizedPubkeyDuplicateInsert: Gauge;
|
|
39
|
-
newUnFinalizedPubkey: Gauge;
|
|
40
|
-
};
|
|
41
37
|
export declare function onStateCloneMetrics(state: CachedBeaconStateAllForks, metrics: BeaconStateTransitionMetrics, source: StateCloneSource): void;
|
|
42
38
|
export declare function onPostStateMetrics(postState: CachedBeaconStateAllForks, metrics: BeaconStateTransitionMetrics): void;
|
|
43
39
|
//# sourceMappingURL=metrics.d.ts.map
|
package/lib/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,mBAAmB,CACjC,KAAgC,EAChC,OAAqC,EACrC,MAAwB;IAExB,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvD,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,iCAAiC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,kCAAkC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,oCAAoC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAoC,EAAE,OAAqC;IAC5G,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,oCAAoC,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,qCAAqC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,4FAA4F;AAC5F,wFAAwF;AACxF,SAAS,0BAA0B,CAAC,KAAgC;IAClE,yEAAyE;IACzE,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAgC;IAChE,yEAAyE;IACzE,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC"}
|
package/lib/util/electra.d.ts
CHANGED
|
@@ -4,4 +4,12 @@ export declare function hasCompoundingWithdrawalCredential(withdrawalCredentials
|
|
|
4
4
|
export declare function hasExecutionWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
|
|
5
5
|
export declare function switchToCompoundingValidator(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
6
6
|
export declare function queueExcessActiveBalance(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
7
|
+
/**
|
|
8
|
+
* Since we share pubkey2index, pubkey maybe added by other epoch transition but we don't have that validator in this state
|
|
9
|
+
*/
|
|
10
|
+
export declare function isPubkeyKnown(state: CachedBeaconStateElectra, pubkey: Uint8Array): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Since we share pubkey2index, validatorIndex maybe not null but we don't have that validator in this state
|
|
13
|
+
*/
|
|
14
|
+
export declare function isValidatorKnown(state: CachedBeaconStateElectra, index: ValidatorIndex | null): index is ValidatorIndex;
|
|
7
15
|
//# sourceMappingURL=electra.d.ts.map
|
package/lib/util/electra.js
CHANGED
|
@@ -36,4 +36,16 @@ export function queueExcessActiveBalance(state, index) {
|
|
|
36
36
|
state.pendingDeposits.push(pendingDeposit);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Since we share pubkey2index, pubkey maybe added by other epoch transition but we don't have that validator in this state
|
|
41
|
+
*/
|
|
42
|
+
export function isPubkeyKnown(state, pubkey) {
|
|
43
|
+
return isValidatorKnown(state, state.epochCtx.getValidatorIndex(pubkey));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Since we share pubkey2index, validatorIndex maybe not null but we don't have that validator in this state
|
|
47
|
+
*/
|
|
48
|
+
export function isValidatorKnown(state, index) {
|
|
49
|
+
return index !== null && index < state.validators.length;
|
|
50
|
+
}
|
|
39
51
|
//# sourceMappingURL=electra.js.map
|
package/lib/util/electra.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,kCAAkC,CAAC,qBAAiC;IAClF,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,qBAAiC;IAChF,OAAO,CACL,kCAAkC,CAAC,qBAAqB,CAAC,IAAI,2BAA2B,CAAC,qBAAqB,CAAC,CAChH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAA+B,EAAE,KAAqB;IACjG,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9C,mFAAmF;IACnF,mFAAmF;IACnF,uEAAuE;IACvE,MAAM,wBAAwB,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IACzE,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;IAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;IAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAA+B,EAAE,KAAqB;IAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,MAAM,EAAE,aAAa;YACrB,gEAAgE;YAChE,SAAS,EAAE,oBAAoB;YAC/B,iEAAiE;YACjE,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,kCAAkC,CAAC,qBAAiC;IAClF,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,qBAAiC;IAChF,OAAO,CACL,kCAAkC,CAAC,qBAAqB,CAAC,IAAI,2BAA2B,CAAC,qBAAqB,CAAC,CAChH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAA+B,EAAE,KAAqB;IACjG,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9C,mFAAmF;IACnF,mFAAmF;IACnF,uEAAuE;IACvE,MAAM,wBAAwB,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IACzE,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;IAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;IAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAA+B,EAAE,KAAqB;IAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,MAAM,EAAE,aAAa;YACrB,gEAAgE;YAChE,SAAS,EAAE,oBAAoB;YAC/B,iEAAiE;YACjE,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAA+B,EAAE,MAAkB;IAC/E,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA+B,EAC/B,KAA4B;IAE5B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3D,CAAC"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.24.0-dev.
|
|
14
|
+
"version": "1.24.0-dev.30c669b1f5",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -65,12 +65,11 @@
|
|
|
65
65
|
"@chainsafe/pubkey-index-map": "2.0.0",
|
|
66
66
|
"@chainsafe/ssz": "^0.18.0",
|
|
67
67
|
"@chainsafe/swap-or-not-shuffle": "^0.0.2",
|
|
68
|
-
"@lodestar/config": "1.24.0-dev.
|
|
69
|
-
"@lodestar/params": "1.24.0-dev.
|
|
70
|
-
"@lodestar/types": "1.24.0-dev.
|
|
71
|
-
"@lodestar/utils": "1.24.0-dev.
|
|
72
|
-
"bigint-buffer": "^1.1.5"
|
|
73
|
-
"immutable": "^4.3.2"
|
|
68
|
+
"@lodestar/config": "1.24.0-dev.30c669b1f5",
|
|
69
|
+
"@lodestar/params": "1.24.0-dev.30c669b1f5",
|
|
70
|
+
"@lodestar/types": "1.24.0-dev.30c669b1f5",
|
|
71
|
+
"@lodestar/utils": "1.24.0-dev.30c669b1f5",
|
|
72
|
+
"bigint-buffer": "^1.1.5"
|
|
74
73
|
},
|
|
75
74
|
"keywords": [
|
|
76
75
|
"ethereum",
|
|
@@ -78,5 +77,5 @@
|
|
|
78
77
|
"beacon",
|
|
79
78
|
"blockchain"
|
|
80
79
|
],
|
|
81
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "f21b7b65a847f01b11bf122a4564ec8dff1ec646"
|
|
82
81
|
}
|