@lodestar/state-transition 1.42.0-dev.53cbf74b3b → 1.42.0-dev.57ea00d5ae

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.
@@ -1,6 +1,6 @@
1
1
  import { PublicKey, SecretKey } from "@chainsafe/blst";
2
2
  import { Slot, phase0 } from "@lodestar/types";
3
- import { BeaconStateAltair, CachedBeaconStateAllForks, CachedBeaconStateAltair, CachedBeaconStatePhase0 } from "../types.js";
3
+ import { BeaconStateAltair, BeaconStateElectra, CachedBeaconStateAllForks, CachedBeaconStateAltair, CachedBeaconStateElectra, CachedBeaconStatePhase0 } from "../types.js";
4
4
  /**
5
5
  * Number of validators in prater is 210000 as of May 2021
6
6
  */
@@ -35,10 +35,22 @@ export declare function generatePerfTestCachedStateAltair(opts?: {
35
35
  goBackOneSlot: boolean;
36
36
  vc?: number;
37
37
  }): CachedBeaconStateAltair;
38
+ /**
39
+ * Warning: This function has side effects on the cached state
40
+ * The order in which the caches are populated is important and can cause stable tests to fail.
41
+ */
42
+ export declare function generatePerfTestCachedStateElectra(opts?: {
43
+ goBackOneSlot: boolean;
44
+ vc?: number;
45
+ }): CachedBeaconStateElectra;
38
46
  /**
39
47
  * This is generated from Medalla state 756416
40
48
  */
41
49
  export declare function generatePerformanceStateAltair(pubkeysArg?: Uint8Array[]): BeaconStateAltair;
50
+ /**
51
+ * This is generated from the same performance state as Altair, upgraded to Electra fields.
52
+ */
53
+ export declare function generatePerformanceStateElectra(pubkeysArg?: Uint8Array[]): BeaconStateElectra;
42
54
  /**
43
55
  * This is generated from Medalla block 756417
44
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAcrD,OAAO,EAAc,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAW/D,OAAO,EACL,iBAAiB,EAEjB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAarB;;GAEG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,WAAW,sBAAgC,CAAC;AAKzD,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,wBAAgB,UAAU,CAAC,EAAE,SAAgB;;;;EAK5C;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAEvE;AAED,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAQ7E;AAaD,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,GAAG,uBAAuB,CA0F1G;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CASpF;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,uBAAuB,CA0B1B;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAoC3F;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAAC,iBAAiB,CAgBzE;AA2ED,wBAAgB,2CAA2C,CAAC,EAC1D,EAAE,EACF,IAAI,EACL,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;CACZ,GAAG,yBAAyB,CAoD5B"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAcrD,OAAO,EAAc,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAW/D,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAElB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAgBrB;;GAEG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,WAAW,sBAAgC,CAAC;AAKzD,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,wBAAgB,UAAU,CAAC,EAAE,SAAgB;;;;EAK5C;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAEvE;AAED,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAQ7E;AAaD,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,GAAG,uBAAuB,CA2F1G;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CASpF;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,uBAAuB,CAiC1B;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,CAAC,EAAE;IACxD,aAAa,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,wBAAwB,CAqC3B;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,iBAAiB,CA0C3F;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAiD7F;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAAC,iBAAiB,CAgBzE;AA2ED,wBAAgB,2CAA2C,CAAC,EAC1D,EAAE,EACF,IAAI,EACL,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;CACZ,GAAG,yBAAyB,CAoD5B"}
@@ -16,6 +16,9 @@ let phase0SignedBlock = null;
16
16
  let altairState = null;
17
17
  let altairCachedState23637 = null;
18
18
  let altairCachedState23638 = null;
19
+ let electraState = null;
20
+ let electraCachedState23637 = null;
21
+ let electraCachedState23638 = null;
19
22
  /**
20
23
  * Number of validators in prater is 210000 as of May 2021
21
24
  */
@@ -52,10 +55,10 @@ export function getSecretKeyFromIndexCached(validatorIndex) {
52
55
  }
53
56
  return sk;
54
57
  }
55
- function getPubkeyCaches({ pubkeysMod }) {
58
+ function getPubkeyCaches({ pubkeysMod }, vc = numValidators) {
56
59
  // Manually sync pubkeys to prevent doing BLS opts 110_000 times
57
60
  const pubkeyCache = createPubkeyCache();
58
- for (let i = 0; i < numValidators; i++) {
61
+ for (let i = 0; i < vc; i++) {
59
62
  const pubkey = pubkeysMod[i % keypairsMod];
60
63
  pubkeyCache.set(i, pubkey);
61
64
  }
@@ -134,7 +137,8 @@ export function generatePerfTestCachedStatePhase0(opts) {
134
137
  phase0CachedState23638.slot += 1;
135
138
  }
136
139
  const resultingState = opts?.goBackOneSlot ? phase0CachedState23637 : phase0CachedState23638;
137
- return resultingState.clone();
140
+ // Use dontTransferCache to preserve the global cache for subsequent callers
141
+ return resultingState.clone(true);
138
142
  }
139
143
  export function cachedStateAltairPopulateCaches(state) {
140
144
  // Populate caches
@@ -151,31 +155,85 @@ export function cachedStateAltairPopulateCaches(state) {
151
155
  * The order in which the caches are populated is important and can cause stable tests to fail.
152
156
  */
153
157
  export function generatePerfTestCachedStateAltair(opts) {
154
- const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys(opts?.vc);
155
- const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj });
158
+ const vc = opts?.vc ?? numValidators;
159
+ const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys(vc);
160
+ const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj }, vc);
156
161
  const altairConfig = createChainForkConfig({ ALTAIR_FORK_EPOCH: 0 });
157
162
  const origState = generatePerformanceStateAltair(pubkeys);
158
- if (!altairCachedState23637) {
159
- const state = origState.clone();
163
+ // For non-default vc, generate fresh without caching to avoid accumulating large states in memory
164
+ const isDefaultVc = vc === numValidators;
165
+ let cachedState23637 = isDefaultVc ? altairCachedState23637 : null;
166
+ if (!cachedState23637) {
167
+ const state = origState.clone(true);
160
168
  state.slot -= 1;
161
- altairCachedState23637 = createCachedBeaconState(state, {
169
+ cachedState23637 = createCachedBeaconState(state, {
162
170
  config: createBeaconConfig(altairConfig, state.genesisValidatorsRoot),
163
171
  pubkeyCache,
164
172
  });
173
+ if (isDefaultVc)
174
+ altairCachedState23637 = cachedState23637;
175
+ }
176
+ let cachedState23638 = isDefaultVc ? altairCachedState23638 : null;
177
+ if (!cachedState23638) {
178
+ cachedState23638 = processSlots(cachedState23637, cachedState23637.slot + 1);
179
+ cachedState23638.slot += 1;
180
+ if (isDefaultVc)
181
+ altairCachedState23638 = cachedState23638;
182
+ }
183
+ const resultingState = opts?.goBackOneSlot ? cachedState23637 : cachedState23638;
184
+ // Use dontTransferCache to preserve the global cache for subsequent callers
185
+ return resultingState.clone(true);
186
+ }
187
+ /**
188
+ * Warning: This function has side effects on the cached state
189
+ * The order in which the caches are populated is important and can cause stable tests to fail.
190
+ */
191
+ export function generatePerfTestCachedStateElectra(opts) {
192
+ const vc = opts?.vc ?? numValidators;
193
+ const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys(vc);
194
+ const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj }, vc);
195
+ const electraConfig = createChainForkConfig({
196
+ ALTAIR_FORK_EPOCH: 0,
197
+ BELLATRIX_FORK_EPOCH: 0,
198
+ CAPELLA_FORK_EPOCH: 0,
199
+ DENEB_FORK_EPOCH: 0,
200
+ ELECTRA_FORK_EPOCH: 0,
201
+ });
202
+ const origState = generatePerformanceStateElectra(pubkeys);
203
+ // For non-default vc, generate fresh without caching to avoid accumulating large states in memory
204
+ const isDefaultVc = vc === numValidators;
205
+ let cachedState23637 = isDefaultVc ? electraCachedState23637 : null;
206
+ if (!cachedState23637) {
207
+ const state = origState.clone(true);
208
+ state.slot -= 1;
209
+ cachedState23637 = createCachedBeaconState(state, {
210
+ config: createBeaconConfig(electraConfig, state.genesisValidatorsRoot),
211
+ pubkeyCache,
212
+ });
213
+ if (isDefaultVc)
214
+ electraCachedState23637 = cachedState23637;
165
215
  }
166
- if (!altairCachedState23638) {
167
- altairCachedState23638 = processSlots(altairCachedState23637, altairCachedState23637.slot + 1);
168
- altairCachedState23638.slot += 1;
216
+ let cachedState23638 = isDefaultVc ? electraCachedState23638 : null;
217
+ if (!cachedState23638) {
218
+ cachedState23638 = processSlots(cachedState23637, cachedState23637.slot + 1);
219
+ cachedState23638.slot += 1;
220
+ if (isDefaultVc)
221
+ electraCachedState23638 = cachedState23638;
169
222
  }
170
- const resultingState = opts?.goBackOneSlot ? altairCachedState23637 : altairCachedState23638;
171
- return resultingState.clone();
223
+ const resultingState = opts?.goBackOneSlot ? cachedState23637 : cachedState23638;
224
+ // Use dontTransferCache to preserve the global cache for subsequent callers
225
+ return resultingState.clone(true);
172
226
  }
173
227
  /**
174
228
  * This is generated from Medalla state 756416
175
229
  */
176
230
  export function generatePerformanceStateAltair(pubkeysArg) {
177
- if (!altairState) {
178
- const pubkeys = pubkeysArg || getPubkeys().pubkeys;
231
+ const pubkeys = pubkeysArg || getPubkeys().pubkeys;
232
+ const vc = pubkeys.length;
233
+ const isDefaultVc = vc === numValidators;
234
+ // Only use cached state for default vc to avoid accumulating large states in memory
235
+ let cached = isDefaultVc ? altairState : null;
236
+ if (!cached) {
179
237
  const statePhase0 = buildPerformanceStatePhase0(pubkeys);
180
238
  const state = statePhase0;
181
239
  state.previousEpochParticipation = newFilledArray(pubkeys.length, 0b111);
@@ -185,19 +243,66 @@ export function generatePerformanceStateAltair(pubkeysArg) {
185
243
  state.currentSyncCommittee = ssz.altair.SyncCommittee.defaultValue();
186
244
  state.nextSyncCommittee = state.currentSyncCommittee;
187
245
  // Now the state is fully populated to convert to ViewDU
188
- altairState = ssz.altair.BeaconState.toViewDU(state);
246
+ cached = ssz.altair.BeaconState.toViewDU(state);
189
247
  // Now set correct syncCommittees
190
248
  const epoch = computeEpochAtSlot(state.slot);
191
- const activeValidatorIndices = getActiveValidatorIndices(altairState, epoch);
192
- const effectiveBalanceIncrements = getEffectiveBalanceIncrements(altairState);
193
- const { syncCommittee } = getNextSyncCommittee(ForkSeq.altair, altairState, activeValidatorIndices, effectiveBalanceIncrements);
249
+ const activeValidatorIndices = getActiveValidatorIndices(cached, epoch);
250
+ const effectiveBalanceIncrements = getEffectiveBalanceIncrements(cached);
251
+ const { syncCommittee } = getNextSyncCommittee(ForkSeq.altair, cached, activeValidatorIndices, effectiveBalanceIncrements);
194
252
  state.currentSyncCommittee = syncCommittee;
195
253
  state.nextSyncCommittee = syncCommittee;
196
- altairState = ssz.altair.BeaconState.toViewDU(state);
254
+ cached = ssz.altair.BeaconState.toViewDU(state);
197
255
  // cache roots
198
- altairState.hashTreeRoot();
256
+ cached.hashTreeRoot();
257
+ if (isDefaultVc)
258
+ altairState = cached;
259
+ }
260
+ // Use dontTransferCache to preserve the global cache for subsequent callers
261
+ return cached.clone(true);
262
+ }
263
+ /**
264
+ * This is generated from the same performance state as Altair, upgraded to Electra fields.
265
+ */
266
+ export function generatePerformanceStateElectra(pubkeysArg) {
267
+ const pubkeys = pubkeysArg || getPubkeys().pubkeys;
268
+ const vc = pubkeys.length;
269
+ const isDefaultVc = vc === numValidators;
270
+ // Only use cached state for default vc to avoid accumulating large states in memory
271
+ let cached = isDefaultVc ? electraState : null;
272
+ if (!cached) {
273
+ const electraConfig = createChainForkConfig({
274
+ ALTAIR_FORK_EPOCH: 0,
275
+ BELLATRIX_FORK_EPOCH: 0,
276
+ CAPELLA_FORK_EPOCH: 0,
277
+ DENEB_FORK_EPOCH: 0,
278
+ ELECTRA_FORK_EPOCH: 0,
279
+ });
280
+ const state = ssz.electra.BeaconState.defaultValue();
281
+ Object.assign(state, buildPerformanceStatePhase0(pubkeys));
282
+ state.fork.previousVersion = electraConfig.DENEB_FORK_VERSION;
283
+ state.fork.currentVersion = electraConfig.ELECTRA_FORK_VERSION;
284
+ state.fork.epoch = electraConfig.ELECTRA_FORK_EPOCH;
285
+ state.previousEpochParticipation = newFilledArray(pubkeys.length, 0b111);
286
+ state.currentEpochParticipation = state.previousEpochParticipation;
287
+ state.inactivityScores = Array.from({ length: pubkeys.length }, (_, i) => i % 2);
288
+ state.currentSyncCommittee = ssz.altair.SyncCommittee.defaultValue();
289
+ state.nextSyncCommittee = state.currentSyncCommittee;
290
+ state.latestExecutionPayloadHeader = ssz.electra.ExecutionPayloadHeader.defaultValue();
291
+ state.depositRequestsStartIndex = 2023n;
292
+ cached = ssz.electra.BeaconState.toViewDU(state);
293
+ const epoch = computeEpochAtSlot(state.slot);
294
+ const activeValidatorIndices = getActiveValidatorIndices(cached, epoch);
295
+ const effectiveBalanceIncrements = getEffectiveBalanceIncrements(cached);
296
+ const { syncCommittee } = getNextSyncCommittee(ForkSeq.electra, cached, activeValidatorIndices, effectiveBalanceIncrements);
297
+ state.currentSyncCommittee = syncCommittee;
298
+ state.nextSyncCommittee = syncCommittee;
299
+ cached = ssz.electra.BeaconState.toViewDU(state);
300
+ cached.hashTreeRoot();
301
+ if (isDefaultVc)
302
+ electraState = cached;
199
303
  }
200
- return altairState.clone();
304
+ // Use dontTransferCache to preserve the global cache for subsequent callers
305
+ return cached.clone(true);
201
306
  }
202
307
  /**
203
308
  * This is generated from Medalla block 756417
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"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"}
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.42.0-dev.53cbf74b3b",
14
+ "version": "1.42.0-dev.57ea00d5ae",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -67,14 +67,14 @@
67
67
  "@chainsafe/pubkey-index-map": "^3.0.0",
68
68
  "@chainsafe/ssz": "^1.2.2",
69
69
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
70
- "@lodestar/config": "^1.42.0-dev.53cbf74b3b",
71
- "@lodestar/params": "^1.42.0-dev.53cbf74b3b",
72
- "@lodestar/types": "^1.42.0-dev.53cbf74b3b",
73
- "@lodestar/utils": "^1.42.0-dev.53cbf74b3b",
70
+ "@lodestar/config": "^1.42.0-dev.57ea00d5ae",
71
+ "@lodestar/params": "^1.42.0-dev.57ea00d5ae",
72
+ "@lodestar/types": "^1.42.0-dev.57ea00d5ae",
73
+ "@lodestar/utils": "^1.42.0-dev.57ea00d5ae",
74
74
  "@vekexasia/bigint-buffer2": "^1.1.1"
75
75
  },
76
76
  "devDependencies": {
77
- "@lodestar/api": "^1.42.0-dev.53cbf74b3b"
77
+ "@lodestar/api": "^1.42.0-dev.57ea00d5ae"
78
78
  },
79
79
  "keywords": [
80
80
  "ethereum",
@@ -82,5 +82,5 @@
82
82
  "beacon",
83
83
  "blockchain"
84
84
  ],
85
- "gitHead": "87fcd26cc926e720b5c358ea77e1fb3a93c0cc16"
85
+ "gitHead": "cfb841164ae774b8d66eadca55431b3671e2de70"
86
86
  }
@@ -25,9 +25,11 @@ import {
25
25
  } from "../index.js";
26
26
  import {
27
27
  BeaconStateAltair,
28
+ BeaconStateElectra,
28
29
  BeaconStatePhase0,
29
30
  CachedBeaconStateAllForks,
30
31
  CachedBeaconStateAltair,
32
+ CachedBeaconStateElectra,
31
33
  CachedBeaconStatePhase0,
32
34
  } from "../types.js";
33
35
  import {getNextSyncCommittee} from "../util/syncCommittee.js";
@@ -41,6 +43,9 @@ let phase0SignedBlock: phase0.SignedBeaconBlock | null = null;
41
43
  let altairState: BeaconStateAltair | null = null;
42
44
  let altairCachedState23637: CachedBeaconStateAltair | null = null;
43
45
  let altairCachedState23638: CachedBeaconStateAltair | null = null;
46
+ let electraState: BeaconStateElectra | null = null;
47
+ let electraCachedState23637: CachedBeaconStateElectra | null = null;
48
+ let electraCachedState23638: CachedBeaconStateElectra | null = null;
44
49
 
45
50
  /**
46
51
  * Number of validators in prater is 210000 as of May 2021
@@ -84,10 +89,10 @@ export function getSecretKeyFromIndexCached(validatorIndex: number): SecretKey {
84
89
  return sk;
85
90
  }
86
91
 
87
- function getPubkeyCaches({pubkeysMod}: ReturnType<typeof getPubkeys>) {
92
+ function getPubkeyCaches({pubkeysMod}: ReturnType<typeof getPubkeys>, vc = numValidators) {
88
93
  // Manually sync pubkeys to prevent doing BLS opts 110_000 times
89
94
  const pubkeyCache = createPubkeyCache();
90
- for (let i = 0; i < numValidators; i++) {
95
+ for (let i = 0; i < vc; i++) {
91
96
  const pubkey = pubkeysMod[i % keypairsMod];
92
97
  pubkeyCache.set(i, pubkey);
93
98
  }
@@ -184,7 +189,8 @@ export function generatePerfTestCachedStatePhase0(opts?: {goBackOneSlot: boolean
184
189
  }
185
190
  const resultingState = opts?.goBackOneSlot ? phase0CachedState23637 : phase0CachedState23638;
186
191
 
187
- return resultingState.clone();
192
+ // Use dontTransferCache to preserve the global cache for subsequent callers
193
+ return resultingState.clone(true);
188
194
  }
189
195
 
190
196
  export function cachedStateAltairPopulateCaches(state: CachedBeaconStateAltair): void {
@@ -206,39 +212,96 @@ export function generatePerfTestCachedStateAltair(opts?: {
206
212
  goBackOneSlot: boolean;
207
213
  vc?: number;
208
214
  }): CachedBeaconStateAltair {
209
- const {pubkeys, pubkeysMod, pubkeysModObj} = getPubkeys(opts?.vc);
210
- const {pubkeyCache} = getPubkeyCaches({pubkeys, pubkeysMod, pubkeysModObj});
215
+ const vc = opts?.vc ?? numValidators;
216
+ const {pubkeys, pubkeysMod, pubkeysModObj} = getPubkeys(vc);
217
+ const {pubkeyCache} = getPubkeyCaches({pubkeys, pubkeysMod, pubkeysModObj}, vc);
211
218
 
212
219
  const altairConfig = createChainForkConfig({ALTAIR_FORK_EPOCH: 0});
213
220
 
214
221
  const origState = generatePerformanceStateAltair(pubkeys);
215
222
 
216
- if (!altairCachedState23637) {
217
- const state = origState.clone();
223
+ // For non-default vc, generate fresh without caching to avoid accumulating large states in memory
224
+ const isDefaultVc = vc === numValidators;
225
+ let cachedState23637 = isDefaultVc ? altairCachedState23637 : null;
226
+ if (!cachedState23637) {
227
+ const state = origState.clone(true);
218
228
  state.slot -= 1;
219
- altairCachedState23637 = createCachedBeaconState(state, {
229
+ cachedState23637 = createCachedBeaconState(state, {
220
230
  config: createBeaconConfig(altairConfig, state.genesisValidatorsRoot),
221
231
  pubkeyCache,
222
232
  });
233
+ if (isDefaultVc) altairCachedState23637 = cachedState23637;
223
234
  }
224
- if (!altairCachedState23638) {
225
- altairCachedState23638 = processSlots(
226
- altairCachedState23637,
227
- altairCachedState23637.slot + 1
228
- ) as CachedBeaconStateAltair;
229
- altairCachedState23638.slot += 1;
235
+
236
+ let cachedState23638 = isDefaultVc ? altairCachedState23638 : null;
237
+ if (!cachedState23638) {
238
+ cachedState23638 = processSlots(cachedState23637, cachedState23637.slot + 1) as CachedBeaconStateAltair;
239
+ cachedState23638.slot += 1;
240
+ if (isDefaultVc) altairCachedState23638 = cachedState23638;
230
241
  }
231
- const resultingState = opts?.goBackOneSlot ? altairCachedState23637 : altairCachedState23638;
232
242
 
233
- return resultingState.clone();
243
+ const resultingState = opts?.goBackOneSlot ? cachedState23637 : cachedState23638;
244
+
245
+ // Use dontTransferCache to preserve the global cache for subsequent callers
246
+ return resultingState.clone(true);
247
+ }
248
+
249
+ /**
250
+ * Warning: This function has side effects on the cached state
251
+ * The order in which the caches are populated is important and can cause stable tests to fail.
252
+ */
253
+ export function generatePerfTestCachedStateElectra(opts?: {
254
+ goBackOneSlot: boolean;
255
+ vc?: number;
256
+ }): CachedBeaconStateElectra {
257
+ const vc = opts?.vc ?? numValidators;
258
+ const {pubkeys, pubkeysMod, pubkeysModObj} = getPubkeys(vc);
259
+ const {pubkeyCache} = getPubkeyCaches({pubkeys, pubkeysMod, pubkeysModObj}, vc);
260
+
261
+ const electraConfig = createChainForkConfig({
262
+ ALTAIR_FORK_EPOCH: 0,
263
+ BELLATRIX_FORK_EPOCH: 0,
264
+ CAPELLA_FORK_EPOCH: 0,
265
+ DENEB_FORK_EPOCH: 0,
266
+ ELECTRA_FORK_EPOCH: 0,
267
+ });
268
+
269
+ const origState = generatePerformanceStateElectra(pubkeys);
270
+
271
+ // For non-default vc, generate fresh without caching to avoid accumulating large states in memory
272
+ const isDefaultVc = vc === numValidators;
273
+ let cachedState23637 = isDefaultVc ? electraCachedState23637 : null;
274
+ if (!cachedState23637) {
275
+ const state = origState.clone(true);
276
+ state.slot -= 1;
277
+ cachedState23637 = createCachedBeaconState(state, {
278
+ config: createBeaconConfig(electraConfig, state.genesisValidatorsRoot),
279
+ pubkeyCache,
280
+ });
281
+ if (isDefaultVc) electraCachedState23637 = cachedState23637;
282
+ }
283
+ let cachedState23638 = isDefaultVc ? electraCachedState23638 : null;
284
+ if (!cachedState23638) {
285
+ cachedState23638 = processSlots(cachedState23637, cachedState23637.slot + 1) as CachedBeaconStateElectra;
286
+ cachedState23638.slot += 1;
287
+ if (isDefaultVc) electraCachedState23638 = cachedState23638;
288
+ }
289
+ const resultingState = opts?.goBackOneSlot ? cachedState23637 : cachedState23638;
290
+
291
+ // Use dontTransferCache to preserve the global cache for subsequent callers
292
+ return resultingState.clone(true);
234
293
  }
235
294
 
236
295
  /**
237
296
  * This is generated from Medalla state 756416
238
297
  */
239
298
  export function generatePerformanceStateAltair(pubkeysArg?: Uint8Array[]): BeaconStateAltair {
240
- if (!altairState) {
241
- const pubkeys = pubkeysArg || getPubkeys().pubkeys;
299
+ const pubkeys = pubkeysArg || getPubkeys().pubkeys;
300
+ const vc = pubkeys.length;
301
+ const isDefaultVc = vc === numValidators;
302
+ // Only use cached state for default vc to avoid accumulating large states in memory
303
+ let cached = isDefaultVc ? altairState : null;
304
+ if (!cached) {
242
305
  const statePhase0 = buildPerformanceStatePhase0(pubkeys);
243
306
  const state = statePhase0 as BeaconState as BeaconState<ForkName.altair>;
244
307
 
@@ -251,27 +314,83 @@ export function generatePerformanceStateAltair(pubkeysArg?: Uint8Array[]): Beaco
251
314
  state.nextSyncCommittee = state.currentSyncCommittee;
252
315
 
253
316
  // Now the state is fully populated to convert to ViewDU
254
- altairState = ssz.altair.BeaconState.toViewDU(state);
317
+ cached = ssz.altair.BeaconState.toViewDU(state);
255
318
 
256
319
  // Now set correct syncCommittees
257
320
  const epoch = computeEpochAtSlot(state.slot);
258
- const activeValidatorIndices = getActiveValidatorIndices(altairState, epoch);
321
+ const activeValidatorIndices = getActiveValidatorIndices(cached, epoch);
259
322
 
260
- const effectiveBalanceIncrements = getEffectiveBalanceIncrements(altairState);
323
+ const effectiveBalanceIncrements = getEffectiveBalanceIncrements(cached);
261
324
  const {syncCommittee} = getNextSyncCommittee(
262
325
  ForkSeq.altair,
263
- altairState,
326
+ cached,
264
327
  activeValidatorIndices,
265
328
  effectiveBalanceIncrements
266
329
  );
267
330
  state.currentSyncCommittee = syncCommittee;
268
331
  state.nextSyncCommittee = syncCommittee;
269
332
 
270
- altairState = ssz.altair.BeaconState.toViewDU(state);
333
+ cached = ssz.altair.BeaconState.toViewDU(state);
271
334
  // cache roots
272
- altairState.hashTreeRoot();
335
+ cached.hashTreeRoot();
336
+ if (isDefaultVc) altairState = cached;
337
+ }
338
+ // Use dontTransferCache to preserve the global cache for subsequent callers
339
+ return cached.clone(true);
340
+ }
341
+
342
+ /**
343
+ * This is generated from the same performance state as Altair, upgraded to Electra fields.
344
+ */
345
+ export function generatePerformanceStateElectra(pubkeysArg?: Uint8Array[]): BeaconStateElectra {
346
+ const pubkeys = pubkeysArg || getPubkeys().pubkeys;
347
+ const vc = pubkeys.length;
348
+ const isDefaultVc = vc === numValidators;
349
+ // Only use cached state for default vc to avoid accumulating large states in memory
350
+ let cached = isDefaultVc ? electraState : null;
351
+ if (!cached) {
352
+ const electraConfig = createChainForkConfig({
353
+ ALTAIR_FORK_EPOCH: 0,
354
+ BELLATRIX_FORK_EPOCH: 0,
355
+ CAPELLA_FORK_EPOCH: 0,
356
+ DENEB_FORK_EPOCH: 0,
357
+ ELECTRA_FORK_EPOCH: 0,
358
+ });
359
+ const state = ssz.electra.BeaconState.defaultValue();
360
+
361
+ Object.assign(state, buildPerformanceStatePhase0(pubkeys));
362
+
363
+ state.fork.previousVersion = electraConfig.DENEB_FORK_VERSION;
364
+ state.fork.currentVersion = electraConfig.ELECTRA_FORK_VERSION;
365
+ state.fork.epoch = electraConfig.ELECTRA_FORK_EPOCH;
366
+ state.previousEpochParticipation = newFilledArray(pubkeys.length, 0b111);
367
+ state.currentEpochParticipation = state.previousEpochParticipation;
368
+ state.inactivityScores = Array.from({length: pubkeys.length}, (_, i) => i % 2);
369
+ state.currentSyncCommittee = ssz.altair.SyncCommittee.defaultValue();
370
+ state.nextSyncCommittee = state.currentSyncCommittee;
371
+ state.latestExecutionPayloadHeader = ssz.electra.ExecutionPayloadHeader.defaultValue();
372
+ state.depositRequestsStartIndex = 2023n;
373
+
374
+ cached = ssz.electra.BeaconState.toViewDU(state);
375
+
376
+ const epoch = computeEpochAtSlot(state.slot);
377
+ const activeValidatorIndices = getActiveValidatorIndices(cached, epoch);
378
+ const effectiveBalanceIncrements = getEffectiveBalanceIncrements(cached);
379
+ const {syncCommittee} = getNextSyncCommittee(
380
+ ForkSeq.electra,
381
+ cached,
382
+ activeValidatorIndices,
383
+ effectiveBalanceIncrements
384
+ );
385
+ state.currentSyncCommittee = syncCommittee;
386
+ state.nextSyncCommittee = syncCommittee;
387
+
388
+ cached = ssz.electra.BeaconState.toViewDU(state);
389
+ cached.hashTreeRoot();
390
+ if (isDefaultVc) electraState = cached;
273
391
  }
274
- return altairState.clone();
392
+ // Use dontTransferCache to preserve the global cache for subsequent callers
393
+ return cached.clone(true);
275
394
  }
276
395
 
277
396
  /**