@lodestar/state-transition 1.12.0-dev.55b3441d10 → 1.12.0-dev.5ff90ca73e

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.
Files changed (47) hide show
  1. package/lib/block/processExecutionPayload.d.ts +1 -2
  2. package/lib/block/processExecutionPayload.js +1 -30
  3. package/lib/block/processExecutionPayload.js.map +1 -1
  4. package/lib/cache/epochCache.d.ts +22 -2
  5. package/lib/cache/epochCache.js +40 -15
  6. package/lib/cache/epochCache.js.map +1 -1
  7. package/lib/cache/pubkeyCache.js +1 -1
  8. package/lib/cache/stateCache.d.ts +7 -0
  9. package/lib/cache/stateCache.js +30 -2
  10. package/lib/cache/stateCache.js.map +1 -1
  11. package/lib/cache/types.d.ts +3 -1
  12. package/lib/epoch/processRegistryUpdates.js +1 -1
  13. package/lib/epoch/processRegistryUpdates.js.map +1 -1
  14. package/lib/index.d.ts +8 -9
  15. package/lib/index.js +2 -3
  16. package/lib/index.js.map +1 -1
  17. package/lib/stateTransition.js +1 -1
  18. package/lib/stateTransition.js.map +1 -1
  19. package/lib/types.d.ts +3 -3
  20. package/lib/util/blindedBlock.d.ts +19 -1
  21. package/lib/util/blindedBlock.js +84 -1
  22. package/lib/util/blindedBlock.js.map +1 -1
  23. package/lib/util/epochShuffling.d.ts +2 -1
  24. package/lib/util/epochShuffling.js +7 -0
  25. package/lib/util/epochShuffling.js.map +1 -1
  26. package/lib/util/execution.d.ts +2 -0
  27. package/lib/util/execution.js +29 -0
  28. package/lib/util/execution.js.map +1 -1
  29. package/lib/util/loadState/findModifiedInactivityScores.d.ts +8 -0
  30. package/lib/util/loadState/findModifiedInactivityScores.js +27 -0
  31. package/lib/util/loadState/findModifiedInactivityScores.js.map +1 -0
  32. package/lib/util/loadState/findModifiedValidators.d.ts +10 -0
  33. package/lib/util/loadState/findModifiedValidators.js +26 -0
  34. package/lib/util/loadState/findModifiedValidators.js.map +1 -0
  35. package/lib/util/loadState/loadState.d.ts +17 -0
  36. package/lib/util/loadState/loadState.js +145 -0
  37. package/lib/util/loadState/loadState.js.map +1 -0
  38. package/lib/util/loadState/loadValidator.d.ts +9 -0
  39. package/lib/util/loadState/loadValidator.js +35 -0
  40. package/lib/util/loadState/loadValidator.js.map +1 -0
  41. package/lib/util/sszBytes.d.ts +24 -0
  42. package/lib/util/sszBytes.js +44 -0
  43. package/lib/util/sszBytes.js.map +1 -0
  44. package/lib/util/validator.d.ts +2 -0
  45. package/lib/util/validator.js +9 -0
  46. package/lib/util/validator.js.map +1 -1
  47. package/package.json +9 -8
@@ -2,6 +2,5 @@ import { allForks } from "@lodestar/types";
2
2
  import { ForkSeq } from "@lodestar/params";
3
3
  import { CachedBeaconStateBellatrix, CachedBeaconStateCapella } from "../types.js";
4
4
  import { BlockExternalData } from "./externalData.js";
5
- export declare function processExecutionPayload(fork: ForkSeq, state: CachedBeaconStateBellatrix | CachedBeaconStateCapella, body: allForks.FullOrBlindedBeaconBlockBody, externalData: BlockExternalData): void;
6
- export declare function executionPayloadToPayloadHeader(fork: ForkSeq, payload: allForks.ExecutionPayload): allForks.ExecutionPayloadHeader;
5
+ export declare function processExecutionPayload(fork: ForkSeq, state: CachedBeaconStateBellatrix | CachedBeaconStateCapella, body: allForks.FullOrBlindedBeaconBlockBody, externalData: Omit<BlockExternalData, "dataAvailableStatus">): void;
7
6
  //# sourceMappingURL=processExecutionPayload.d.ts.map
@@ -1,8 +1,7 @@
1
1
  import { toHexString, byteArrayEquals } from "@chainsafe/ssz";
2
- import { ssz } from "@lodestar/types";
3
2
  import { ForkSeq, MAX_BLOBS_PER_BLOCK } from "@lodestar/params";
4
3
  import { getRandaoMix } from "../util/index.js";
5
- import { isExecutionPayload, isMergeTransitionComplete, getFullOrBlindedPayloadFromBody } from "../util/execution.js";
4
+ import { isExecutionPayload, isMergeTransitionComplete, getFullOrBlindedPayloadFromBody, executionPayloadToPayloadHeader, } from "../util/execution.js";
6
5
  import { ExecutionPayloadStatus } from "./externalData.js";
7
6
  export function processExecutionPayload(fork, state, body, externalData) {
8
7
  const payload = getFullOrBlindedPayloadFromBody(body);
@@ -58,32 +57,4 @@ export function processExecutionPayload(fork, state, body, externalData) {
58
57
  .getExecutionForkTypes(state.slot)
59
58
  .ExecutionPayloadHeader.toViewDU(payloadHeader);
60
59
  }
61
- export function executionPayloadToPayloadHeader(fork, payload) {
62
- const transactionsRoot = ssz.bellatrix.Transactions.hashTreeRoot(payload.transactions);
63
- const bellatrixPayloadFields = {
64
- parentHash: payload.parentHash,
65
- feeRecipient: payload.feeRecipient,
66
- stateRoot: payload.stateRoot,
67
- receiptsRoot: payload.receiptsRoot,
68
- logsBloom: payload.logsBloom,
69
- prevRandao: payload.prevRandao,
70
- blockNumber: payload.blockNumber,
71
- gasLimit: payload.gasLimit,
72
- gasUsed: payload.gasUsed,
73
- timestamp: payload.timestamp,
74
- extraData: payload.extraData,
75
- baseFeePerGas: payload.baseFeePerGas,
76
- blockHash: payload.blockHash,
77
- transactionsRoot,
78
- };
79
- if (fork >= ForkSeq.capella) {
80
- bellatrixPayloadFields.withdrawalsRoot = ssz.capella.Withdrawals.hashTreeRoot(payload.withdrawals);
81
- }
82
- if (fork >= ForkSeq.deneb) {
83
- // https://github.com/ethereum/consensus-specs/blob/dev/specs/eip4844/beacon-chain.md#process_execution_payload
84
- bellatrixPayloadFields.blobGasUsed = payload.blobGasUsed;
85
- bellatrixPayloadFields.excessBlobGas = payload.excessBlobGas;
86
- }
87
- return bellatrixPayloadFields;
88
- }
89
60
  //# sourceMappingURL=processExecutionPayload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processExecutionPayload.js","sourceRoot":"","sources":["../../src/block/processExecutionPayload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processExecutionPayload.js","sourceRoot":"","sources":["../../src/block/processExecutionPayload.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { LodestarError } from "@lodestar/utils";
4
4
  import { EpochShuffling } from "../util/epochShuffling.js";
5
5
  import { EffectiveBalanceIncrements } from "./effectiveBalanceIncrements.js";
6
6
  import { Index2PubkeyCache, PubkeyIndexMap } from "./pubkeyCache.js";
7
- import { BeaconStateAllForks } from "./types.js";
7
+ import { BeaconStateAllForks, ShufflingGetter } from "./types.js";
8
8
  import { SyncCommitteeCache } from "./syncCommitteeCache.js";
9
9
  /** `= PROPOSER_WEIGHT / (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT)` */
10
10
  export declare const PROPOSER_WEIGHT_FACTOR: number;
@@ -16,6 +16,7 @@ export type EpochCacheImmutableData = {
16
16
  export type EpochCacheOpts = {
17
17
  skipSyncCommitteeCache?: boolean;
18
18
  skipSyncPubkeys?: boolean;
19
+ shufflingGetter?: ShufflingGetter;
19
20
  };
20
21
  /** Defers computing proposers by persisting only the seed, and dropping it once indexes are computed */
21
22
  type ProposersDeferred = {
@@ -111,6 +112,10 @@ export declare class EpochCache {
111
112
  * change through the epoch. It's used in initiateValidatorExit(). Must be update after changing active indexes.
112
113
  */
113
114
  churnLimit: number;
115
+ /**
116
+ * Fork limited actual activationChurnLimit
117
+ */
118
+ activationChurnLimit: number;
114
119
  /**
115
120
  * Closest epoch with available churn for validators to exit at. May be updated every block as validators are
116
121
  * initiateValidatorExit(). This value may vary on each fork of the state.
@@ -165,6 +170,7 @@ export declare class EpochCache {
165
170
  baseRewardPerIncrement: number;
166
171
  totalActiveBalanceIncrements: number;
167
172
  churnLimit: number;
173
+ activationChurnLimit: number;
168
174
  exitQueueEpoch: Epoch;
169
175
  exitQueueChurn: number;
170
176
  currentTargetUnslashedBalanceIncrements: number;
@@ -290,12 +296,26 @@ type AttesterDuty = {
290
296
  slot: Slot;
291
297
  };
292
298
  export declare enum EpochCacheErrorCode {
293
- COMMITTEE_INDEX_OUT_OF_RANGE = "EPOCH_CONTEXT_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE"
299
+ COMMITTEE_INDEX_OUT_OF_RANGE = "EPOCH_CONTEXT_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE",
300
+ COMMITTEE_EPOCH_OUT_OF_RANGE = "EPOCH_CONTEXT_ERROR_COMMITTEE_EPOCH_OUT_OF_RANGE",
301
+ NO_SYNC_COMMITTEE = "EPOCH_CONTEXT_ERROR_NO_SYNC_COMMITTEE",
302
+ PROPOSER_EPOCH_MISMATCH = "EPOCH_CONTEXT_ERROR_PROPOSER_EPOCH_MISMATCH"
294
303
  }
295
304
  type EpochCacheErrorType = {
296
305
  code: EpochCacheErrorCode.COMMITTEE_INDEX_OUT_OF_RANGE;
297
306
  index: number;
298
307
  maxIndex: number;
308
+ } | {
309
+ code: EpochCacheErrorCode.COMMITTEE_EPOCH_OUT_OF_RANGE;
310
+ requestedEpoch: Epoch;
311
+ currentEpoch: Epoch;
312
+ } | {
313
+ code: EpochCacheErrorCode.NO_SYNC_COMMITTEE;
314
+ epoch: Epoch;
315
+ } | {
316
+ code: EpochCacheErrorCode.PROPOSER_EPOCH_MISMATCH;
317
+ requestedEpoch: Epoch;
318
+ currentEpoch: Epoch;
299
319
  };
300
320
  export declare class EpochCacheError extends LodestarError<EpochCacheErrorType> {
301
321
  }
@@ -3,8 +3,8 @@ import bls from "@chainsafe/bls";
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
5
  import { LodestarError } from "@lodestar/utils";
6
- import { computeActivationExitEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, getChurnLimit, isActiveValidator, isAggregatorFromCommitteeLength, computeSyncPeriodAtEpoch, getSeed, computeProposers, } from "../util/index.js";
7
- import { computeEpochShuffling } from "../util/epochShuffling.js";
6
+ import { computeActivationExitEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, getChurnLimit, isActiveValidator, isAggregatorFromCommitteeLength, computeSyncPeriodAtEpoch, getSeed, computeProposers, getActivationChurnLimit, } from "../util/index.js";
7
+ import { computeEpochShuffling, getShufflingDecisionBlock } from "../util/epochShuffling.js";
8
8
  import { computeBaseRewardPerIncrement, computeSyncParticipantReward } from "../util/syncCommittee.js";
9
9
  import { sumTargetUnslashedBalanceIncrements } from "../util/targetUnslashedBalance.js";
10
10
  import { getEffectiveBalanceIncrementsWithLen } from "./effectiveBalanceIncrements.js";
@@ -51,6 +51,7 @@ export class EpochCache {
51
51
  this.baseRewardPerIncrement = data.baseRewardPerIncrement;
52
52
  this.totalActiveBalanceIncrements = data.totalActiveBalanceIncrements;
53
53
  this.churnLimit = data.churnLimit;
54
+ this.activationChurnLimit = data.activationChurnLimit;
54
55
  this.exitQueueEpoch = data.exitQueueEpoch;
55
56
  this.exitQueueChurn = data.exitQueueChurn;
56
57
  this.currentTargetUnslashedBalanceIncrements = data.currentTargetUnslashedBalanceIncrements;
@@ -85,19 +86,29 @@ export class EpochCache {
85
86
  const previousActiveIndices = [];
86
87
  const currentActiveIndices = [];
87
88
  const nextActiveIndices = [];
89
+ // BeaconChain could provide a shuffling cache to avoid re-computing shuffling every epoch
90
+ // in that case, we don't need to compute shufflings again
91
+ const previousShufflingDecisionBlock = getShufflingDecisionBlock(state, previousEpoch);
92
+ const cachedPreviousShuffling = opts?.shufflingGetter?.(previousEpoch, previousShufflingDecisionBlock);
93
+ const currentShufflingDecisionBlock = getShufflingDecisionBlock(state, currentEpoch);
94
+ const cachedCurrentShuffling = opts?.shufflingGetter?.(currentEpoch, currentShufflingDecisionBlock);
95
+ const nextShufflingDecisionBlock = getShufflingDecisionBlock(state, nextEpoch);
96
+ const cachedNextShuffling = opts?.shufflingGetter?.(nextEpoch, nextShufflingDecisionBlock);
88
97
  for (let i = 0; i < validatorCount; i++) {
89
98
  const validator = validators[i];
90
99
  // Note: Not usable for fork-choice balances since in-active validators are not zero'ed
91
100
  effectiveBalanceIncrements[i] = Math.floor(validator.effectiveBalance / EFFECTIVE_BALANCE_INCREMENT);
92
- if (isActiveValidator(validator, previousEpoch)) {
101
+ // we only need to track active indices for previous, current and next epoch if we have to compute shufflings
102
+ // skip doing that if we already have cached shufflings
103
+ if (cachedPreviousShuffling == null && isActiveValidator(validator, previousEpoch)) {
93
104
  previousActiveIndices.push(i);
94
105
  }
95
- if (isActiveValidator(validator, currentEpoch)) {
106
+ if (cachedCurrentShuffling == null && isActiveValidator(validator, currentEpoch)) {
96
107
  currentActiveIndices.push(i);
97
108
  // We track totalActiveBalanceIncrements as ETH to fit total network balance in a JS number (53 bits)
98
109
  totalActiveBalanceIncrements += effectiveBalanceIncrements[i];
99
110
  }
100
- if (isActiveValidator(validator, nextEpoch)) {
111
+ if (cachedNextShuffling == null && isActiveValidator(validator, nextEpoch)) {
101
112
  nextActiveIndices.push(i);
102
113
  }
103
114
  const { exitEpoch } = validator;
@@ -119,11 +130,10 @@ export class EpochCache {
119
130
  else if (totalActiveBalanceIncrements >= Number.MAX_SAFE_INTEGER) {
120
131
  throw Error("totalActiveBalanceIncrements >= Number.MAX_SAFE_INTEGER. MAX_EFFECTIVE_BALANCE is too low.");
121
132
  }
122
- const currentShuffling = computeEpochShuffling(state, currentActiveIndices, currentEpoch);
123
- const previousShuffling = isGenesis
124
- ? currentShuffling
125
- : computeEpochShuffling(state, previousActiveIndices, previousEpoch);
126
- const nextShuffling = computeEpochShuffling(state, nextActiveIndices, nextEpoch);
133
+ const currentShuffling = cachedCurrentShuffling ?? computeEpochShuffling(state, currentActiveIndices, currentEpoch);
134
+ const previousShuffling = cachedPreviousShuffling ??
135
+ (isGenesis ? currentShuffling : computeEpochShuffling(state, previousActiveIndices, previousEpoch));
136
+ const nextShuffling = cachedNextShuffling ?? computeEpochShuffling(state, nextActiveIndices, nextEpoch);
127
137
  const currentProposerSeed = getSeed(state, currentEpoch, DOMAIN_BEACON_PROPOSER);
128
138
  // Allow to create CachedBeaconState for empty states, or no active validators
129
139
  const proposers = currentShuffling.activeIndices.length > 0
@@ -163,10 +173,11 @@ export class EpochCache {
163
173
  // ```
164
174
  // So the returned value of is_active_validator(epoch) is guaranteed to not change during `MAX_SEED_LOOKAHEAD` epochs.
165
175
  //
166
- // activeIndices size is dependant on the state epoch. The epoch is advanced after running the epoch transition, and
176
+ // activeIndices size is dependent on the state epoch. The epoch is advanced after running the epoch transition, and
167
177
  // the first block of the epoch process_block() call. So churnLimit must be computed at the end of the before epoch
168
178
  // transition and the result is valid until the end of the next epoch transition
169
179
  const churnLimit = getChurnLimit(config, currentShuffling.activeIndices.length);
180
+ const activationChurnLimit = getActivationChurnLimit(config, config.getForkSeq(state.slot), currentShuffling.activeIndices.length);
170
181
  if (exitQueueChurn >= churnLimit) {
171
182
  exitQueueEpoch += 1;
172
183
  exitQueueChurn = 0;
@@ -197,6 +208,7 @@ export class EpochCache {
197
208
  baseRewardPerIncrement,
198
209
  totalActiveBalanceIncrements,
199
210
  churnLimit,
211
+ activationChurnLimit,
200
212
  exitQueueEpoch,
201
213
  exitQueueChurn,
202
214
  previousTargetUnslashedBalanceIncrements,
@@ -235,6 +247,7 @@ export class EpochCache {
235
247
  baseRewardPerIncrement: this.baseRewardPerIncrement,
236
248
  totalActiveBalanceIncrements: this.totalActiveBalanceIncrements,
237
249
  churnLimit: this.churnLimit,
250
+ activationChurnLimit: this.activationChurnLimit,
238
251
  exitQueueEpoch: this.exitQueueEpoch,
239
252
  exitQueueChurn: this.exitQueueChurn,
240
253
  previousTargetUnslashedBalanceIncrements: this.previousTargetUnslashedBalanceIncrements,
@@ -274,10 +287,11 @@ export class EpochCache {
274
287
  // ```
275
288
  // So the returned value of is_active_validator(epoch) is guaranteed to not change during `MAX_SEED_LOOKAHEAD` epochs.
276
289
  //
277
- // activeIndices size is dependant on the state epoch. The epoch is advanced after running the epoch transition, and
290
+ // activeIndices size is dependent on the state epoch. The epoch is advanced after running the epoch transition, and
278
291
  // the first block of the epoch process_block() call. So churnLimit must be computed at the end of the before epoch
279
292
  // transition and the result is valid until the end of the next epoch transition
280
293
  this.churnLimit = getChurnLimit(this.config, this.currentShuffling.activeIndices.length);
294
+ this.activationChurnLimit = getActivationChurnLimit(this.config, this.config.getForkSeq(state.slot), this.currentShuffling.activeIndices.length);
281
295
  // Maybe advance exitQueueEpoch at the end of the epoch if there haven't been any exists for a while
282
296
  const exitQueueEpoch = computeActivationExitEpoch(currEpoch);
283
297
  if (exitQueueEpoch > this.exitQueueEpoch) {
@@ -335,7 +349,11 @@ export class EpochCache {
335
349
  getBeaconProposer(slot) {
336
350
  const epoch = computeEpochAtSlot(slot);
337
351
  if (epoch !== this.currentShuffling.epoch) {
338
- throw new Error(`Requesting beacon proposer for different epoch current shuffling: ${epoch} != ${this.currentShuffling.epoch}`);
352
+ throw new EpochCacheError({
353
+ code: EpochCacheErrorCode.PROPOSER_EPOCH_MISMATCH,
354
+ currentEpoch: this.currentShuffling.epoch,
355
+ requestedEpoch: epoch,
356
+ });
339
357
  }
340
358
  return this.proposers[slot % SLOTS_PER_EPOCH];
341
359
  }
@@ -472,7 +490,11 @@ export class EpochCache {
472
490
  getShufflingAtEpoch(epoch) {
473
491
  const shuffling = this.getShufflingAtEpochOrNull(epoch);
474
492
  if (shuffling === null) {
475
- throw new Error(`Requesting slot committee out of range epoch: ${epoch} current: ${this.currentShuffling.epoch}`);
493
+ throw new EpochCacheError({
494
+ code: EpochCacheErrorCode.COMMITTEE_EPOCH_OUT_OF_RANGE,
495
+ currentEpoch: this.currentShuffling.epoch,
496
+ requestedEpoch: epoch,
497
+ });
476
498
  }
477
499
  return shuffling;
478
500
  }
@@ -511,7 +533,7 @@ export class EpochCache {
511
533
  case this.syncPeriod + 1:
512
534
  return this.nextSyncCommitteeIndexed;
513
535
  default:
514
- throw new Error(`No sync committee for epoch ${epoch}`);
536
+ throw new EpochCacheError({ code: EpochCacheErrorCode.NO_SYNC_COMMITTEE, epoch });
515
537
  }
516
538
  }
517
539
  /** On processSyncCommitteeUpdates rotate next to current and set nextSyncCommitteeIndexed */
@@ -541,6 +563,9 @@ function getEffectiveBalanceIncrementsByteLen(validatorCount) {
541
563
  export var EpochCacheErrorCode;
542
564
  (function (EpochCacheErrorCode) {
543
565
  EpochCacheErrorCode["COMMITTEE_INDEX_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE";
566
+ EpochCacheErrorCode["COMMITTEE_EPOCH_OUT_OF_RANGE"] = "EPOCH_CONTEXT_ERROR_COMMITTEE_EPOCH_OUT_OF_RANGE";
567
+ EpochCacheErrorCode["NO_SYNC_COMMITTEE"] = "EPOCH_CONTEXT_ERROR_NO_SYNC_COMMITTEE";
568
+ EpochCacheErrorCode["PROPOSER_EPOCH_MISMATCH"] = "EPOCH_CONTEXT_ERROR_PROPOSER_EPOCH_MISMATCH";
544
569
  })(EpochCacheErrorCode || (EpochCacheErrorCode = {}));
545
570
  export class EpochCacheError extends LodestarError {
546
571
  }
@@ -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,7 +1,7 @@
1
1
  import { CoordType } from "@chainsafe/bls/types";
2
2
  import bls from "@chainsafe/bls";
3
3
  /**
4
- * toHexString() creates hex strings via string concatenation, which are very memory inneficient.
4
+ * toHexString() creates hex strings via string concatenation, which are very memory inefficient.
5
5
  * Memory benchmarks show that Buffer.toString("hex") produces strings with 10x less memory.
6
6
  *
7
7
  * Does not prefix to save memory, thus the prefix is removed from an already string representation.
@@ -115,6 +115,13 @@ export type CachedBeaconStateExecutions = CachedBeaconState<BeaconStateExecution
115
115
  * Create CachedBeaconState computing a new EpochCache instance
116
116
  */
117
117
  export declare function createCachedBeaconState<T extends BeaconStateAllForks>(state: T, immutableData: EpochCacheImmutableData, opts?: EpochCacheOpts): T & BeaconStateCache;
118
+ /**
119
+ * Create a CachedBeaconState given a cached seed state and state bytes
120
+ * This guarantees that the returned state shares the same tree with the seed state
121
+ * Check loadState() api for more details
122
+ * TODO: after EIP-6110 need to provide a pivotValidatorIndex to decide which comes to finalized validators cache, which comes to unfinalized cache
123
+ */
124
+ export declare function loadUnfinalizedCachedBeaconState<T extends BeaconStateAllForks & BeaconStateCache>(cachedSeedState: T, stateBytes: Uint8Array, opts?: EpochCacheOpts): T;
118
125
  /**
119
126
  * Attach an already computed BeaconStateCache to a BeaconState object
120
127
  */
@@ -1,15 +1,43 @@
1
+ import bls from "@chainsafe/bls";
2
+ import { CoordType } from "@chainsafe/blst";
3
+ import { loadState } from "../util/loadState/loadState.js";
1
4
  import { EpochCache } from "./epochCache.js";
2
5
  /**
3
6
  * Create CachedBeaconState computing a new EpochCache instance
4
7
  */
5
8
  export function createCachedBeaconState(state, immutableData, opts) {
6
- return getCachedBeaconState(state, {
9
+ const epochCache = EpochCache.createFromState(state, immutableData, opts);
10
+ const cachedState = getCachedBeaconState(state, {
7
11
  config: immutableData.config,
8
- epochCtx: EpochCache.createFromState(state, immutableData, opts),
12
+ epochCtx: epochCache,
9
13
  clonedCount: 0,
10
14
  clonedCountWithTransferCache: 0,
11
15
  createdWithTransferCache: false,
12
16
  });
17
+ return cachedState;
18
+ }
19
+ /**
20
+ * Create a CachedBeaconState given a cached seed state and state bytes
21
+ * This guarantees that the returned state shares the same tree with the seed state
22
+ * Check loadState() api for more details
23
+ * TODO: after EIP-6110 need to provide a pivotValidatorIndex to decide which comes to finalized validators cache, which comes to unfinalized cache
24
+ */
25
+ export function loadUnfinalizedCachedBeaconState(cachedSeedState, stateBytes, opts) {
26
+ const { state: migratedState, modifiedValidators } = loadState(cachedSeedState.config, cachedSeedState, stateBytes);
27
+ const { pubkey2index, index2pubkey } = cachedSeedState.epochCtx;
28
+ // Get the validators sub tree once for all the loop
29
+ const validators = migratedState.validators;
30
+ for (const validatorIndex of modifiedValidators) {
31
+ const validator = validators.getReadonly(validatorIndex);
32
+ const pubkey = validator.pubkey;
33
+ pubkey2index.set(pubkey, validatorIndex);
34
+ index2pubkey[validatorIndex] = bls.PublicKey.fromBytes(pubkey, CoordType.jacobian);
35
+ }
36
+ return createCachedBeaconState(migratedState, {
37
+ config: cachedSeedState.config,
38
+ pubkey2index,
39
+ index2pubkey,
40
+ }, { ...(opts ?? {}), ...{ skipSyncPubkeys: true } });
13
41
  }
14
42
  /**
15
43
  * Attach an already computed BeaconStateCache to a BeaconState object
@@ -1 +1 @@
1
- {"version":3,"file":"stateCache.js","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAA0C,MAAM,iBAAiB,CAAC;AAkIpF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAQ,EACR,aAAsC,EACtC,IAAqB;IAErB,OAAO,oBAAoB,CAAC,KAAK,EAAE;QACjC,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;QAChE,WAAW,EAAE,CAAC;QACd,4BAA4B,EAAE,CAAC;QAC/B,wBAAwB,EAAE,KAAK;KAChC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAQ,EACR,KAAuB;IAEvB,MAAM,WAAW,GAAG,KAA6B,CAAC;IAClD,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAClC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACrC,WAAuC,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACxE,WAAuC,CAAC,4BAA4B,GAAG,KAAK,CAAC,4BAA4B,CAAC;IAC1G,WAAuC,CAAC,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,CAAC;IAEnG,8CAA8C;IAC9C,gFAAgF;IAChF,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAExD,SAAS,KAAK,CAA6B,iBAA2B;QACpE,MAAM,YAAY,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAEpD,oFAAoF;QACnF,IAAgC,CAAC,WAAW,EAAE,CAAC;QAEhD,IAAI,CAAC,iBAAiB,EAAE;YACrB,IAAgC,CAAC,4BAA4B,EAAE,CAAC;SAClE;QAED,OAAO,oBAAoB,CAAC,YAAY,EAAE;YACxC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC/B,WAAW,EAAE,CAAC;YACd,4BAA4B,EAAE,CAAC;YAC/B,wBAAwB,EAAE,CAAC,iBAAiB;SAC7C,CAAyB,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,KAAK,GAAG,KAA2B,CAAC;IAEhD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAiC;IAEjC,OAAQ,KAA8B,CAAC,QAAQ,KAAK,SAAS,CAAC;AAChE,CAAC;AAED,oFAAoF;AACpF,4FAA4F;AAC5F,wFAAwF;AACxF,MAAM,UAAU,+BAA+B,CAAC,KAAgC;IAC9E,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAgC;IAC5E,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"stateCache.js","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { CompositeViewDU } from "@chainsafe/ssz";
2
- import { ssz } from "@lodestar/types";
2
+ import { Epoch, RootHex, ssz } from "@lodestar/types";
3
+ import { EpochShuffling } from "../util/epochShuffling.js";
3
4
  export type BeaconStatePhase0 = CompositeViewDU<typeof ssz.phase0.BeaconState>;
4
5
  export type BeaconStateAltair = CompositeViewDU<typeof ssz.altair.BeaconState>;
5
6
  export type BeaconStateBellatrix = CompositeViewDU<typeof ssz.bellatrix.BeaconState>;
@@ -7,4 +8,5 @@ export type BeaconStateCapella = CompositeViewDU<typeof ssz.capella.BeaconState>
7
8
  export type BeaconStateDeneb = CompositeViewDU<typeof ssz.deneb.BeaconState>;
8
9
  export type BeaconStateAllForks = BeaconStatePhase0 | BeaconStateAltair | BeaconStateBellatrix | BeaconStateCapella | BeaconStateDeneb;
9
10
  export type BeaconStateExecutions = BeaconStateBellatrix | BeaconStateCapella | BeaconStateDeneb;
11
+ export type ShufflingGetter = (shufflingEpoch: Epoch, dependentRoot: RootHex) => EpochShuffling | null;
10
12
  //# sourceMappingURL=types.d.ts.map
@@ -31,7 +31,7 @@ export function processRegistryUpdates(state, cache) {
31
31
  }
32
32
  const finalityEpoch = state.finalizedCheckpoint.epoch;
33
33
  // dequeue validators for activation up to churn limit
34
- for (const index of cache.indicesEligibleForActivation.slice(0, epochCtx.churnLimit)) {
34
+ for (const index of cache.indicesEligibleForActivation.slice(0, epochCtx.activationChurnLimit)) {
35
35
  const validator = validators.get(index);
36
36
  // placement in queue is finalized
37
37
  if (validator.activationEligibilityEpoch > finalityEpoch) {
@@ -1 +1 @@
1
- {"version":3,"file":"processRegistryUpdates.js","sourceRoot":"","sources":["../../src/epoch/processRegistryUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAGxD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAgC,EAAE,KAA2B;IAClG,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;IAEzB,oDAAoD;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAEpC,mFAAmF;IAEnF,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE;QACxC,kDAAkD;QAClD,0EAA0E;QAC1E,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;KACrD;IAED,mCAAmC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,iCAAiC,EAAE;QAC3D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,0BAA0B,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;KACvE;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACtD,sDAAsD;IACtD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,kCAAkC;QAClC,IAAI,SAAS,CAAC,0BAA0B,GAAG,aAAa,EAAE;YACxD,iGAAiG;YACjG,kFAAkF;YAClF,iHAAiH;YACjH,sEAAsE;YACtE,MAAM;SACP;QACD,SAAS,CAAC,eAAe,GAAG,0BAA0B,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC5E;AACH,CAAC"}
1
+ {"version":3,"file":"processRegistryUpdates.js","sourceRoot":"","sources":["../../src/epoch/processRegistryUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAGxD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAgC,EAAE,KAA2B;IAClG,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;IAEzB,oDAAoD;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAEpC,mFAAmF;IAEnF,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE;QACxC,kDAAkD;QAClD,0EAA0E;QAC1E,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;KACrD;IAED,mCAAmC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,iCAAiC,EAAE;QAC3D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,0BAA0B,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;KACvE;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACtD,sDAAsD;IACtD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAAE;QAC9F,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,kCAAkC;QAClC,IAAI,SAAS,CAAC,0BAA0B,GAAG,aAAa,EAAE;YACxD,iGAAiG;YACjG,kFAAkF;YAClF,iHAAiH;YACjH,sEAAsE;YACtE,MAAM;SACP;QACD,SAAS,CAAC,eAAe,GAAG,0BAA0B,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC5E;AACH,CAAC"}
package/lib/index.d.ts CHANGED
@@ -2,19 +2,18 @@ export * from "./stateTransition.js";
2
2
  export * from "./constants/index.js";
3
3
  export * from "./util/index.js";
4
4
  export * from "./signatureSets/index.js";
5
- export { BeaconStateTransitionMetrics } from "./metrics.js";
6
- export { CachedBeaconStatePhase0, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, CachedBeaconStateAllForks, CachedBeaconStateExecutions, BeaconStatePhase0, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateAllForks, BeaconStateExecutions, } from "./types.js";
7
- export { createCachedBeaconState, BeaconStateCache, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, } from "./cache/stateCache.js";
8
- export { EpochCache, EpochCacheImmutableData, createEmptyEpochCacheImmutableData } from "./cache/epochCache.js";
9
- export { EpochTransitionCache, beforeProcessEpoch } from "./cache/epochTransitionCache.js";
10
- export { PubkeyIndexMap, Index2PubkeyCache } from "./cache/pubkeyCache.js";
11
- export { EffectiveBalanceIncrements, getEffectiveBalanceIncrementsZeroed, getEffectiveBalanceIncrementsWithLen, } from "./cache/effectiveBalanceIncrements.js";
5
+ export type { BeaconStateTransitionMetrics } from "./metrics.js";
6
+ export type { CachedBeaconStatePhase0, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, CachedBeaconStateAllForks, CachedBeaconStateExecutions, BeaconStatePhase0, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateAllForks, BeaconStateExecutions, } from "./types.js";
7
+ export { createCachedBeaconState, loadUnfinalizedCachedBeaconState, type BeaconStateCache, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, } from "./cache/stateCache.js";
8
+ export { EpochCache, type EpochCacheImmutableData, createEmptyEpochCacheImmutableData, EpochCacheError, EpochCacheErrorCode, } from "./cache/epochCache.js";
9
+ export { type EpochTransitionCache, beforeProcessEpoch } from "./cache/epochTransitionCache.js";
10
+ export { PubkeyIndexMap, type Index2PubkeyCache } from "./cache/pubkeyCache.js";
11
+ export { type EffectiveBalanceIncrements, getEffectiveBalanceIncrementsZeroed, getEffectiveBalanceIncrementsWithLen, } from "./cache/effectiveBalanceIncrements.js";
12
12
  export { isValidVoluntaryExit } from "./block/processVoluntaryExit.js";
13
13
  export { isValidBlsToExecutionChange } from "./block/processBlsToExecutionChange.js";
14
14
  export { assertValidProposerSlashing } from "./block/processProposerSlashing.js";
15
15
  export { assertValidAttesterSlashing } from "./block/processAttesterSlashing.js";
16
- export { ExecutionPayloadStatus, DataAvailableStatus, BlockExternalData } from "./block/externalData.js";
16
+ export { ExecutionPayloadStatus, DataAvailableStatus, type BlockExternalData } from "./block/externalData.js";
17
17
  export { becomesNewEth1Data } from "./block/processEth1Data.js";
18
18
  export { getExpectedWithdrawals } from "./block/processWithdrawals.js";
19
- export { executionPayloadToPayloadHeader } from "./block/processExecutionPayload.js";
20
19
  //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -3,8 +3,8 @@ export * from "./constants/index.js";
3
3
  export * from "./util/index.js";
4
4
  export * from "./signatureSets/index.js";
5
5
  // Main state caches
6
- export { createCachedBeaconState, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, } from "./cache/stateCache.js";
7
- export { EpochCache, createEmptyEpochCacheImmutableData } from "./cache/epochCache.js";
6
+ export { createCachedBeaconState, loadUnfinalizedCachedBeaconState, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, } from "./cache/stateCache.js";
7
+ export { EpochCache, createEmptyEpochCacheImmutableData, EpochCacheError, EpochCacheErrorCode, } from "./cache/epochCache.js";
8
8
  export { beforeProcessEpoch } from "./cache/epochTransitionCache.js";
9
9
  // Aux data-structures
10
10
  export { PubkeyIndexMap } from "./cache/pubkeyCache.js";
@@ -19,5 +19,4 @@ export { ExecutionPayloadStatus, DataAvailableStatus } from "./block/externalDat
19
19
  export { becomesNewEth1Data } from "./block/processEth1Data.js";
20
20
  // Withdrawals for new blocks
21
21
  export { getExpectedWithdrawals } from "./block/processWithdrawals.js";
22
- export { executionPayloadToPayloadHeader } from "./block/processExecutionPayload.js";
23
22
  //# sourceMappingURL=index.js.map
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;AAqBzC,oBAAoB;AACpB,OAAO,EACL,uBAAuB,EAEvB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,UAAU,EAA2B,kCAAkC,EAAC,MAAM,uBAAuB,CAAC;AAC9G,OAAO,EAAuB,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAEzF,sBAAsB;AACtB,OAAO,EAAC,cAAc,EAAoB,MAAM,wBAAwB,CAAC;AAEzE,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,EAAoB,MAAM,yBAAyB,CAAC;AAEvG,qCAAqC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,6BAA6B;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,+BAA+B,EAAC,MAAM,oCAAoC,CAAC"}
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;AAqBzC,oBAAoB;AACpB,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAEhC,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;AAE9F,sBAAsB;AACtB,OAAO,EAAC,cAAc,EAAyB,MAAM,wBAAwB,CAAC;AAE9E,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"}
@@ -13,7 +13,7 @@ import { DataAvailableStatus, ExecutionPayloadStatus } from "./block/externalDat
13
13
  * Implementation Note: follows the optimizations in protolambda's eth2fastspec (https://github.com/protolambda/eth2fastspec)
14
14
  */
15
15
  export function stateTransition(state, signedBlock, options = {
16
- // TODO DENEB: Review what default values make sense
16
+ // Assume default to be valid and available
17
17
  executionPayloadStatus: ExecutionPayloadStatus.valid,
18
18
  dataAvailableStatus: DataAvailableStatus.available,
19
19
  }, metrics) {
@@ -1 +1 @@
1
- {"version":3,"file":"stateTransition.js","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateTransition.js","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { EpochCache } from "./cache/epochCache.js";
2
- export { EpochTransitionCache } from "./cache/epochTransitionCache.js";
3
- export { CachedBeaconStateAllForks, CachedBeaconStateExecutions, CachedBeaconStatePhase0, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, } from "./cache/stateCache.js";
4
- export { BeaconStateAllForks, BeaconStateExecutions, BeaconStatePhase0, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, } from "./cache/types.js";
2
+ export type { EpochTransitionCache } from "./cache/epochTransitionCache.js";
3
+ export type { CachedBeaconStateAllForks, CachedBeaconStateExecutions, CachedBeaconStatePhase0, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, } from "./cache/stateCache.js";
4
+ export type { BeaconStateAllForks, BeaconStateExecutions, BeaconStatePhase0, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, } from "./cache/types.js";
5
5
  //# sourceMappingURL=types.d.ts.map
@@ -1,6 +1,24 @@
1
1
  import { ChainForkConfig } from "@lodestar/config";
2
- import { allForks, phase0, Root } from "@lodestar/types";
2
+ import { allForks, phase0, Root, deneb } from "@lodestar/types";
3
+ type ParsedSignedBlindedBlockOrContents = {
4
+ signedBlindedBlock: allForks.SignedBlindedBeaconBlock;
5
+ signedBlindedBlobSidecars: deneb.SignedBlindedBlobSidecars | null;
6
+ };
3
7
  export declare function blindedOrFullBlockHashTreeRoot(config: ChainForkConfig, blindedOrFull: allForks.FullOrBlindedBeaconBlock): Root;
4
8
  export declare function blindedOrFullBlobSidecarHashTreeRoot(config: ChainForkConfig, blindedOrFull: allForks.FullOrBlindedBlobSidecar): Root;
5
9
  export declare function blindedOrFullBlockToHeader(config: ChainForkConfig, blindedOrFull: allForks.FullOrBlindedBeaconBlock): phase0.BeaconBlockHeader;
10
+ export declare function beaconBlockToBlinded(config: ChainForkConfig, block: allForks.AllForksExecution["BeaconBlock"]): allForks.BlindedBeaconBlock;
11
+ export declare function blobSidecarsToBlinded(blobSidecars: deneb.BlobSidecars): deneb.BlindedBlobSidecars;
12
+ export declare function signedBlindedBlockToFull(signedBlindedBlock: allForks.SignedBlindedBeaconBlock, executionPayload: allForks.ExecutionPayload | null): allForks.SignedBeaconBlock;
13
+ export declare function signedBlindedBlobSidecarsToFull(signedBlindedBlobSidecars: deneb.SignedBlindedBlobSidecars, blobs: deneb.Blobs): deneb.SignedBlobSidecars;
14
+ export declare function parseSignedBlindedBlockOrContents(signedBlindedBlockOrContents: allForks.SignedBlindedBeaconBlockOrContents): ParsedSignedBlindedBlockOrContents;
15
+ export declare function parseExecutionPayloadAndBlobsBundle(data: allForks.ExecutionPayload | allForks.ExecutionPayloadAndBlobsBundle): {
16
+ executionPayload: allForks.ExecutionPayload;
17
+ blobsBundle: deneb.BlobsBundle | null;
18
+ };
19
+ export declare function reconstructFullBlockOrContents({ signedBlindedBlock, signedBlindedBlobSidecars }: ParsedSignedBlindedBlockOrContents, { executionPayload, blobs }: {
20
+ executionPayload: allForks.ExecutionPayload | null;
21
+ blobs: deneb.Blobs | null;
22
+ }): allForks.SignedBeaconBlockOrContents;
23
+ export {};
6
24
  //# sourceMappingURL=blindedBlock.d.ts.map