@lodestar/state-transition 1.43.0-dev.e341cdc614 → 1.43.0-dev.e3c96e7a79

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 (103) hide show
  1. package/lib/block/index.d.ts +2 -2
  2. package/lib/block/index.d.ts.map +1 -1
  3. package/lib/block/index.js +11 -4
  4. package/lib/block/index.js.map +1 -1
  5. package/lib/block/processConsolidationRequest.d.ts.map +1 -1
  6. package/lib/block/processConsolidationRequest.js +2 -1
  7. package/lib/block/processConsolidationRequest.js.map +1 -1
  8. package/lib/block/processParentExecutionPayload.d.ts +20 -0
  9. package/lib/block/processParentExecutionPayload.d.ts.map +1 -0
  10. package/lib/block/processParentExecutionPayload.js +100 -0
  11. package/lib/block/processParentExecutionPayload.js.map +1 -0
  12. package/lib/block/processWithdrawals.d.ts.map +1 -1
  13. package/lib/block/processWithdrawals.js +10 -4
  14. package/lib/block/processWithdrawals.js.map +1 -1
  15. package/lib/cache/epochCache.d.ts +3 -1
  16. package/lib/cache/epochCache.d.ts.map +1 -1
  17. package/lib/cache/epochCache.js +33 -15
  18. package/lib/cache/epochCache.js.map +1 -1
  19. package/lib/cache/epochTransitionCache.d.ts +5 -0
  20. package/lib/cache/epochTransitionCache.d.ts.map +1 -1
  21. package/lib/cache/epochTransitionCache.js +1 -0
  22. package/lib/cache/epochTransitionCache.js.map +1 -1
  23. package/lib/epoch/index.d.ts +3 -1
  24. package/lib/epoch/index.d.ts.map +1 -1
  25. package/lib/epoch/index.js +8 -1
  26. package/lib/epoch/index.js.map +1 -1
  27. package/lib/epoch/processPendingDeposits.d.ts.map +1 -1
  28. package/lib/epoch/processPendingDeposits.js +4 -2
  29. package/lib/epoch/processPendingDeposits.js.map +1 -1
  30. package/lib/epoch/processPtcWindow.d.ts +11 -0
  31. package/lib/epoch/processPtcWindow.d.ts.map +1 -0
  32. package/lib/epoch/processPtcWindow.js +28 -0
  33. package/lib/epoch/processPtcWindow.js.map +1 -0
  34. package/lib/signatureSets/executionPayloadEnvelope.js +1 -1
  35. package/lib/signatureSets/executionPayloadEnvelope.js.map +1 -1
  36. package/lib/signatureSets/index.d.ts +1 -0
  37. package/lib/signatureSets/index.d.ts.map +1 -1
  38. package/lib/signatureSets/index.js +1 -0
  39. package/lib/signatureSets/index.js.map +1 -1
  40. package/lib/signatureSets/proposerPreferences.d.ts +4 -0
  41. package/lib/signatureSets/proposerPreferences.d.ts.map +1 -0
  42. package/lib/signatureSets/proposerPreferences.js +8 -0
  43. package/lib/signatureSets/proposerPreferences.js.map +1 -0
  44. package/lib/slot/upgradeStateToElectra.d.ts.map +1 -1
  45. package/lib/slot/upgradeStateToElectra.js +2 -2
  46. package/lib/slot/upgradeStateToElectra.js.map +1 -1
  47. package/lib/slot/upgradeStateToGloas.d.ts.map +1 -1
  48. package/lib/slot/upgradeStateToGloas.js +3 -1
  49. package/lib/slot/upgradeStateToGloas.js.map +1 -1
  50. package/lib/stateTransition.js +1 -1
  51. package/lib/stateTransition.js.map +1 -1
  52. package/lib/stateView/beaconStateView.d.ts +13 -11
  53. package/lib/stateView/beaconStateView.d.ts.map +1 -1
  54. package/lib/stateView/beaconStateView.js +48 -35
  55. package/lib/stateView/beaconStateView.js.map +1 -1
  56. package/lib/stateView/interface.d.ts +21 -11
  57. package/lib/stateView/interface.d.ts.map +1 -1
  58. package/lib/stateView/interface.js.map +1 -1
  59. package/lib/util/computeAnchorCheckpoint.d.ts +1 -1
  60. package/lib/util/computeAnchorCheckpoint.d.ts.map +1 -1
  61. package/lib/util/computeAnchorCheckpoint.js +6 -19
  62. package/lib/util/computeAnchorCheckpoint.js.map +1 -1
  63. package/lib/util/epoch.d.ts.map +1 -1
  64. package/lib/util/epoch.js +6 -4
  65. package/lib/util/epoch.js.map +1 -1
  66. package/lib/util/gloas.d.ts +7 -3
  67. package/lib/util/gloas.d.ts.map +1 -1
  68. package/lib/util/gloas.js +25 -3
  69. package/lib/util/gloas.js.map +1 -1
  70. package/lib/util/loadState/loadState.js +4 -4
  71. package/lib/util/loadState/loadState.js.map +1 -1
  72. package/lib/util/validator.d.ts +14 -2
  73. package/lib/util/validator.d.ts.map +1 -1
  74. package/lib/util/validator.js +24 -2
  75. package/lib/util/validator.js.map +1 -1
  76. package/package.json +8 -8
  77. package/src/block/index.ts +12 -4
  78. package/src/block/processConsolidationRequest.ts +2 -1
  79. package/src/block/processParentExecutionPayload.ts +116 -0
  80. package/src/block/processWithdrawals.ts +12 -4
  81. package/src/cache/epochCache.ts +35 -33
  82. package/src/cache/epochTransitionCache.ts +7 -0
  83. package/src/epoch/index.ts +9 -0
  84. package/src/epoch/processPendingDeposits.ts +5 -2
  85. package/src/epoch/processPtcWindow.ts +38 -0
  86. package/src/signatureSets/executionPayloadEnvelope.ts +1 -1
  87. package/src/signatureSets/index.ts +1 -0
  88. package/src/signatureSets/proposerPreferences.ts +12 -0
  89. package/src/slot/upgradeStateToElectra.ts +4 -2
  90. package/src/slot/upgradeStateToGloas.ts +5 -1
  91. package/src/stateTransition.ts +1 -1
  92. package/src/stateView/beaconStateView.ts +57 -48
  93. package/src/stateView/interface.ts +28 -14
  94. package/src/util/computeAnchorCheckpoint.ts +6 -19
  95. package/src/util/epoch.ts +13 -4
  96. package/src/util/gloas.ts +46 -4
  97. package/src/util/loadState/loadState.ts +4 -4
  98. package/src/util/validator.ts +42 -2
  99. package/lib/block/processExecutionPayloadEnvelope.d.ts +0 -9
  100. package/lib/block/processExecutionPayloadEnvelope.d.ts.map +0 -1
  101. package/lib/block/processExecutionPayloadEnvelope.js +0 -106
  102. package/lib/block/processExecutionPayloadEnvelope.js.map +0 -1
  103. package/src/block/processExecutionPayloadEnvelope.ts +0 -175
@@ -1 +1 @@
1
- {"version":3,"file":"epoch.js","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epoch.js","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { BuilderIndex, Epoch, ValidatorIndex, gloas } from "@lodestar/types";
2
2
  import { AttestationData } from "@lodestar/types/phase0";
3
- import { IBeaconStateViewGloas } from "../stateView/interface.js";
4
- import { CachedBeaconStateGloas } from "../types.js";
3
+ import { CachedBeaconStateFulu, CachedBeaconStateGloas } from "../types.js";
5
4
  import { RootCache } from "./rootCache.js";
6
5
  export declare function isBuilderWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
7
6
  export declare function getBuilderPaymentQuorumThreshold(state: CachedBeaconStateGloas): number;
@@ -49,5 +48,10 @@ export declare function initiateBuilderExit(state: CachedBeaconStateGloas, build
49
48
  export declare function findBuilderIndexByPubkey(state: CachedBeaconStateGloas, pubkey: Uint8Array): BuilderIndex | null;
50
49
  export declare function isAttestationSameSlot(state: CachedBeaconStateGloas, data: AttestationData): boolean;
51
50
  export declare function isAttestationSameSlotRootCache(rootCache: RootCache, data: AttestationData): boolean;
52
- export declare function isParentBlockFull(state: CachedBeaconStateGloas | IBeaconStateViewGloas): boolean;
51
+ export declare function initializePtcWindow(state: CachedBeaconStateFulu): Uint32Array[];
52
+ export declare function getPtcWindowEpochCacheData(state: CachedBeaconStateGloas): {
53
+ previousPayloadTimelinessCommittees: Uint32Array[];
54
+ payloadTimelinessCommittees: Uint32Array[];
55
+ nextPayloadTimelinessCommittees: Uint32Array[];
56
+ };
53
57
  //# sourceMappingURL=gloas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAG9F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAGhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAEtF;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,GACzB,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAWnG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAO/G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,qBAAqB,GAAG,OAAO,CAEhG"}
1
+ {"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAI1E,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAIzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAG9F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAGhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAEtF;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,GACzB,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAWnG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAO/G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,WAAW,EAAE,CAqB/E;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,GAAG;IACzE,mCAAmC,EAAE,WAAW,EAAE,CAAC;IACnD,2BAA2B,EAAE,WAAW,EAAE,CAAC;IAC3C,+BAA+B,EAAE,WAAW,EAAE,CAAC;CAChD,CAaA"}
package/lib/util/gloas.js CHANGED
@@ -1,7 +1,10 @@
1
- import { BUILDER_INDEX_FLAG, BUILDER_PAYMENT_THRESHOLD_DENOMINATOR, BUILDER_PAYMENT_THRESHOLD_NUMERATOR, BUILDER_WITHDRAWAL_PREFIX, EFFECTIVE_BALANCE_INCREMENT, FAR_FUTURE_EPOCH, MIN_DEPOSIT_AMOUNT, SLOTS_PER_EPOCH, } from "@lodestar/params";
1
+ import { BUILDER_INDEX_FLAG, BUILDER_PAYMENT_THRESHOLD_DENOMINATOR, BUILDER_PAYMENT_THRESHOLD_NUMERATOR, BUILDER_WITHDRAWAL_PREFIX, EFFECTIVE_BALANCE_INCREMENT, FAR_FUTURE_EPOCH, MIN_DEPOSIT_AMOUNT, MIN_SEED_LOOKAHEAD, PTC_SIZE, SLOTS_PER_EPOCH, } from "@lodestar/params";
2
2
  import { byteArrayEquals } from "@lodestar/utils";
3
3
  import { getBlockRootAtSlot } from "./blockRoot.js";
4
4
  import { computeEpochAtSlot } from "./epoch.js";
5
+ import { computeEpochShuffling } from "./epochShuffling.js";
6
+ import { computePayloadTimelinessCommitteesForEpoch } from "./seed.js";
7
+ import { getActiveValidatorIndices } from "./validator.js";
5
8
  export function isBuilderWithdrawalCredential(withdrawalCredentials) {
6
9
  return withdrawalCredentials[0] === BUILDER_WITHDRAWAL_PREFIX;
7
10
  }
@@ -122,7 +125,26 @@ export function isAttestationSameSlotRootCache(rootCache, data) {
122
125
  const isCurrentBlockRoot = !byteArrayEquals(data.beaconBlockRoot, rootCache.getBlockRootAtSlot(data.slot - 1));
123
126
  return isMatchingBlockRoot && isCurrentBlockRoot;
124
127
  }
125
- export function isParentBlockFull(state) {
126
- return byteArrayEquals(state.latestExecutionPayloadBid.blockHash, state.latestBlockHash);
128
+ export function initializePtcWindow(state) {
129
+ const ptcWindow = Array.from({ length: SLOTS_PER_EPOCH }, () => new Uint32Array(PTC_SIZE));
130
+ const currentEpoch = state.epochCtx.epoch;
131
+ for (let epochOffset = 0; epochOffset <= MIN_SEED_LOOKAHEAD; epochOffset++) {
132
+ const epoch = currentEpoch + epochOffset;
133
+ const shuffling = state.epochCtx.getShufflingAtEpochOrNull(epoch) ??
134
+ computeEpochShuffling(state, getActiveValidatorIndices(state, epoch), epoch);
135
+ ptcWindow.push(...computePayloadTimelinessCommitteesForEpoch(state, epoch, shuffling.committees, state.epochCtx.effectiveBalanceIncrements));
136
+ }
137
+ return ptcWindow;
138
+ }
139
+ export function getPtcWindowEpochCacheData(state) {
140
+ const toUint32Arrays = (views) => views.map((v) => Uint32Array.from(v.getAll()));
141
+ const previousPtcWindow = state.ptcWindow.getReadonlyByRange(0, SLOTS_PER_EPOCH);
142
+ const currentPtcWindow = state.ptcWindow.getReadonlyByRange(SLOTS_PER_EPOCH, SLOTS_PER_EPOCH);
143
+ const nextPtcWindow = state.ptcWindow.getReadonlyByRange(2 * SLOTS_PER_EPOCH, SLOTS_PER_EPOCH);
144
+ return {
145
+ previousPayloadTimelinessCommittees: toUint32Arrays(previousPtcWindow),
146
+ payloadTimelinessCommittees: toUint32Arrays(currentPtcWindow),
147
+ nextPayloadTimelinessCommittees: toUint32Arrays(nextPtcWindow),
148
+ };
127
149
  }
128
150
  //# sourceMappingURL=gloas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
@@ -73,8 +73,8 @@ export function loadStateAndValidators(chainForkConfig, stateBytes) {
73
73
  * Sco0 Sco1 Sco2 Sco3a
74
74
  */
75
75
  function loadInactivityScores(migratedState, seedState, inactivityScoresBytes) {
76
- // migratedState starts with the same inactivityScores to seed state
77
- migratedState.inactivityScores = seedState.inactivityScores.clone();
76
+ // true = do not transfer cache
77
+ migratedState.inactivityScores = seedState.inactivityScores.clone(true);
78
78
  const oldValidator = migratedState.inactivityScores.length;
79
79
  // UintNum64 = 8 bytes
80
80
  const newValidator = inactivityScoresBytes.length / 8;
@@ -135,8 +135,8 @@ function loadValidators(migratedState, seedState, newValidatorsBytes, seedStateV
135
135
  const newValidatorCount = Math.floor(newValidatorsBytes.length / VALIDATOR_BYTES_SIZE);
136
136
  const isMoreValidator = newValidatorCount >= seedValidatorCount;
137
137
  const minValidatorCount = Math.min(seedValidatorCount, newValidatorCount);
138
- // migrated state starts with the same validators to seed state
139
- migratedState.validators = seedState.validators.clone();
138
+ // true = do not transfer cache
139
+ migratedState.validators = seedState.validators.clone(true);
140
140
  // 80% of validators serialization time comes from memory allocation
141
141
  // seedStateValidatorsBytes is an optimization at beacon-node side to avoid memory allocation here
142
142
  const seedValidatorsBytes = seedStateValidatorsBytes ?? seedState.validators.serialize();
@@ -1 +1 @@
1
- {"version":3,"file":"loadState.js","sourceRoot":"","sources":["../../../src/util/loadState/loadState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadState.js","sourceRoot":"","sources":["../../../src/util/loadState/loadState.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export declare function isSlashableValidator(validator: phase0.Validator, epoch:
16
16
  * NAIVE - SLOW CODE 🐢
17
17
  */
18
18
  export declare function getActiveValidatorIndices(state: BeaconStateAllForks, epoch: Epoch): Uint32Array;
19
- export declare function getActivationChurnLimit(config: ChainForkConfig, fork: ForkSeq, activeValidatorCount: number): number;
19
+ export declare function getValidatorActivationChurnLimit(config: ChainForkConfig, fork: ForkSeq, activeValidatorCount: number): number;
20
20
  export declare function getChurnLimit(config: ChainForkConfig, activeValidatorCount: number): number;
21
21
  /**
22
22
  * Get combined churn limit of activation-exit and consolidation
@@ -24,7 +24,19 @@ export declare function getChurnLimit(config: ChainForkConfig, activeValidatorCo
24
24
  export declare function getBalanceChurnLimit(totalActiveBalanceIncrements: number, churnLimitQuotient: number, minPerEpochChurnLimit: number): number;
25
25
  export declare function getBalanceChurnLimitFromCache(epochCtx: EpochCache): number;
26
26
  export declare function getActivationExitChurnLimit(epochCtx: EpochCache): number;
27
- export declare function getConsolidationChurnLimit(epochCtx: EpochCache): number;
27
+ /**
28
+ * https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-get_activation_churn_limit
29
+ */
30
+ export declare function getActivationChurnLimit(epochCtx: EpochCache): number;
31
+ /**
32
+ * https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-get_exit_churn_limit
33
+ */
34
+ export declare function getExitChurnLimit(epochCtx: EpochCache): number;
35
+ /**
36
+ * Spec (electra): get_consolidation_churn_limit (uses combined balance churn minus activation+exit churn)
37
+ * Spec (gloas): get_consolidation_churn_limit (independent quotient, no MIN floor)
38
+ */
39
+ export declare function getConsolidationChurnLimit(fork: ForkSeq, epochCtx: EpochCache): number;
28
40
  export declare function getMaxEffectiveBalance(withdrawalCredentials: Uint8Array): number;
29
41
  /**
30
42
  * Check if validator is partially withdrawable.
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/util/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAEL,OAAO,EAIR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAC,mBAAmB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,UAAU,EAAC,MAAM,aAAa,CAAC;AAI9G;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAEpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAW/F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAKpH;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,4BAA4B,EAAE,MAAM,EACpC,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,MAAM,CAQR;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAM1E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAExE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAEvE;AAED,wBAAgB,sBAAsB,CAAC,qBAAqB,EAAE,UAAU,GAAG,MAAM,CAMhF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAsBrH;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,cAAc,EAAE,cAAc,GAC7B,MAAM,CASR"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/util/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAEL,OAAO,EAIR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAC,mBAAmB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,UAAU,EAAC,MAAM,aAAa,CAAC;AAI9G;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAEpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAW/F;AAGD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,OAAO,EACb,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAKR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,4BAA4B,EAAE,MAAM,EACpC,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,MAAM,CAQR;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAM1E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAExE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAOpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAM9D;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,CAUtF;AAED,wBAAgB,sBAAsB,CAAC,qBAAqB,EAAE,UAAU,GAAG,MAAM,CAMhF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAsBrH;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,cAAc,EAAE,cAAc,GAC7B,MAAM,CASR"}
@@ -29,7 +29,8 @@ export function getActiveValidatorIndices(state, epoch) {
29
29
  }
30
30
  return new Uint32Array(indices);
31
31
  }
32
- export function getActivationChurnLimit(config, fork, activeValidatorCount) {
32
+ // Deneb fork upgrade only
33
+ export function getValidatorActivationChurnLimit(config, fork, activeValidatorCount) {
33
34
  if (fork >= ForkSeq.deneb) {
34
35
  return Math.min(config.MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT, getChurnLimit(config, activeValidatorCount));
35
36
  }
@@ -52,7 +53,28 @@ export function getBalanceChurnLimitFromCache(epochCtx) {
52
53
  export function getActivationExitChurnLimit(epochCtx) {
53
54
  return Math.min(epochCtx.config.MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT, getBalanceChurnLimitFromCache(epochCtx));
54
55
  }
55
- export function getConsolidationChurnLimit(epochCtx) {
56
+ /**
57
+ * https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-get_activation_churn_limit
58
+ */
59
+ export function getActivationChurnLimit(epochCtx) {
60
+ const churn = getBalanceChurnLimit(epochCtx.totalActiveBalanceIncrements, epochCtx.config.CHURN_LIMIT_QUOTIENT_GLOAS, epochCtx.config.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA);
61
+ return Math.min(epochCtx.config.MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT_GLOAS, churn);
62
+ }
63
+ /**
64
+ * https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-get_exit_churn_limit
65
+ */
66
+ export function getExitChurnLimit(epochCtx) {
67
+ return getBalanceChurnLimit(epochCtx.totalActiveBalanceIncrements, epochCtx.config.CHURN_LIMIT_QUOTIENT_GLOAS, epochCtx.config.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA);
68
+ }
69
+ /**
70
+ * Spec (electra): get_consolidation_churn_limit (uses combined balance churn minus activation+exit churn)
71
+ * Spec (gloas): get_consolidation_churn_limit (independent quotient, no MIN floor)
72
+ */
73
+ export function getConsolidationChurnLimit(fork, epochCtx) {
74
+ if (fork >= ForkSeq.gloas) {
75
+ // No MIN floor — pass 0 so getBalanceChurnLimit's max(churn, min) is a no-op.
76
+ return getBalanceChurnLimit(epochCtx.totalActiveBalanceIncrements, epochCtx.config.CONSOLIDATION_CHURN_LIMIT_QUOTIENT, 0);
77
+ }
56
78
  return getBalanceChurnLimitFromCache(epochCtx) - getActivationExitChurnLimit(epochCtx);
57
79
  }
58
80
  export function getMaxEffectiveBalance(withdrawalCredentials) {
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/util/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/util/validator.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.43.0-dev.e341cdc614",
14
+ "version": "1.43.0-dev.e3c96e7a79",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -65,16 +65,16 @@
65
65
  "@chainsafe/persistent-merkle-tree": "^1.2.1",
66
66
  "@chainsafe/persistent-ts": "^1.0.0",
67
67
  "@chainsafe/pubkey-index-map": "^3.0.0",
68
- "@chainsafe/ssz": "^1.2.2",
68
+ "@chainsafe/ssz": "^1.4.0",
69
69
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
70
- "@lodestar/config": "^1.43.0-dev.e341cdc614",
71
- "@lodestar/params": "^1.43.0-dev.e341cdc614",
72
- "@lodestar/types": "^1.43.0-dev.e341cdc614",
73
- "@lodestar/utils": "^1.43.0-dev.e341cdc614",
70
+ "@lodestar/config": "^1.43.0-dev.e3c96e7a79",
71
+ "@lodestar/params": "^1.43.0-dev.e3c96e7a79",
72
+ "@lodestar/types": "^1.43.0-dev.e3c96e7a79",
73
+ "@lodestar/utils": "^1.43.0-dev.e3c96e7a79",
74
74
  "@vekexasia/bigint-buffer2": "^1.1.1"
75
75
  },
76
76
  "devDependencies": {
77
- "@lodestar/api": "^1.43.0-dev.e341cdc614"
77
+ "@lodestar/api": "^1.43.0-dev.e3c96e7a79"
78
78
  },
79
79
  "keywords": [
80
80
  "ethereum",
@@ -82,5 +82,5 @@
82
82
  "beacon",
83
83
  "blockchain"
84
84
  ],
85
- "gitHead": "befc1d1fc43563f7092cc69715eb472fdc5701b6"
85
+ "gitHead": "5d4e250663c0eed1aca56cf5f4c63c1712e189aa"
86
86
  }
@@ -14,8 +14,8 @@ import {processBlockHeader} from "./processBlockHeader.js";
14
14
  import {processEth1Data} from "./processEth1Data.js";
15
15
  import {processExecutionPayload} from "./processExecutionPayload.js";
16
16
  import {processExecutionPayloadBid} from "./processExecutionPayloadBid.js";
17
- import {processExecutionPayloadEnvelope} from "./processExecutionPayloadEnvelope.js";
18
17
  import {processOperations} from "./processOperations.js";
18
+ import {processParentExecutionPayload} from "./processParentExecutionPayload.js";
19
19
  import {processPayloadAttestation} from "./processPayloadAttestation.js";
20
20
  import {processRandao} from "./processRandao.js";
21
21
  import {processSyncAggregate} from "./processSyncCommittee.js";
@@ -32,7 +32,7 @@ export {
32
32
  processWithdrawals,
33
33
  processExecutionPayloadBid,
34
34
  processPayloadAttestation,
35
- processExecutionPayloadEnvelope,
35
+ processParentExecutionPayload,
36
36
  };
37
37
 
38
38
  export * from "./externalData.js";
@@ -51,10 +51,16 @@ export function processBlock(
51
51
  ): void {
52
52
  const {verifySignatures = true} = opts ?? {};
53
53
 
54
+ // Apply the parent's deferred payload effects before everything else. Must run before
55
+ // processBlockHeader and processExecutionPayloadBid so subsequent steps see the updated state.
56
+ if (fork >= ForkSeq.gloas) {
57
+ processParentExecutionPayload(state as CachedBeaconStateGloas, block as BeaconBlock<ForkPostGloas>);
58
+ }
59
+
54
60
  processBlockHeader(state, block);
55
61
 
56
62
  if (fork >= ForkSeq.gloas) {
57
- // After gloas, processWithdrawals does not take a payload parameter
63
+ // Parent payload's execution requests were already applied by processParentExecutionPayload above
58
64
  processWithdrawals(fork, state as CachedBeaconStateGloas);
59
65
  } else if (fork >= ForkSeq.capella) {
60
66
  const fullOrBlindedPayload = getFullOrBlindedPayload(block);
@@ -67,7 +73,9 @@ export function processBlock(
67
73
 
68
74
  // The call to the process_execution_payload must happen before the call to the process_randao as the former depends
69
75
  // on the randao_mix computed with the reveal of the previous block.
70
- // TODO GLOAS: We call processExecutionPayload somewhere else post-gloas
76
+ // Post-gloas: process_execution_payload is not part of block processing. The parent's payload
77
+ // effects are applied earlier via processParentExecutionPayload, and each execution payload is
78
+ // verified out-of-band via verifyExecutionPayloadEnvelope when it arrives.
71
79
  if (
72
80
  fork < ForkSeq.gloas &&
73
81
  fork >= ForkSeq.bellatrix &&
@@ -46,7 +46,8 @@ export function processConsolidationRequest(
46
46
  }
47
47
 
48
48
  // If there is too little available consolidation churn limit, consolidation requests are ignored
49
- if (getConsolidationChurnLimit(state.epochCtx) <= MIN_ACTIVATION_BALANCE) {
49
+ const fork = state.config.getForkSeq(state.slot);
50
+ if (getConsolidationChurnLimit(fork, state.epochCtx) <= MIN_ACTIVATION_BALANCE) {
50
51
  return;
51
52
  }
52
53
 
@@ -0,0 +1,116 @@
1
+ import {ForkPostGloas, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT} from "@lodestar/params";
2
+ import {BeaconBlock, electra, ssz} from "@lodestar/types";
3
+ import {byteArrayEquals, toRootHex} from "@lodestar/utils";
4
+ import {CachedBeaconStateGloas} from "../types.js";
5
+ import {computeEpochAtSlot} from "../util/epoch.js";
6
+ import {processConsolidationRequest} from "./processConsolidationRequest.js";
7
+ import {getPendingValidatorPubkeys, processDepositRequest} from "./processDepositRequest.js";
8
+ import {processWithdrawalRequest} from "./processWithdrawalRequest.js";
9
+
10
+ /**
11
+ * Process parent execution payload effects as the first step of processBlock.
12
+ *
13
+ * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-process_parent_execution_payload
14
+ */
15
+ export function processParentExecutionPayload(state: CachedBeaconStateGloas, block: BeaconBlock<ForkPostGloas>): void {
16
+ const bid = block.body.signedExecutionPayloadBid.message;
17
+ const parentBid = state.latestExecutionPayloadBid;
18
+ const requests = block.body.parentExecutionRequests;
19
+
20
+ const isParentBlockFull = byteArrayEquals(bid.parentBlockHash, parentBid.blockHash);
21
+ if (!isParentBlockFull) {
22
+ // Parent was EMPTY -- no execution requests expected
23
+ assertEmptyExecutionRequests(requests);
24
+ return;
25
+ }
26
+
27
+ // Parent was FULL -- verify the bid commitment and apply the payload
28
+ const requestsRoot = ssz.electra.ExecutionRequests.hashTreeRoot(requests);
29
+ if (!byteArrayEquals(requestsRoot, parentBid.executionRequestsRoot)) {
30
+ throw new Error(
31
+ `Parent execution requests root mismatch actual=${toRootHex(requestsRoot)} expected=${toRootHex(parentBid.executionRequestsRoot)}`
32
+ );
33
+ }
34
+
35
+ applyParentExecutionPayload(state, requests);
36
+ }
37
+
38
+ /**
39
+ * Process the parent's execution requests, queue the builder payment, update payload availability,
40
+ * and update the latest block hash.
41
+ *
42
+ * Called from processParentExecutionPayload during block processing, and from the validator during
43
+ * block production before computing withdrawals.
44
+ *
45
+ * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-apply_parent_execution_payload
46
+ */
47
+ export function applyParentExecutionPayload(state: CachedBeaconStateGloas, requests: electra.ExecutionRequests): void {
48
+ const fork = state.config.getForkSeq(state.slot);
49
+ const parentBid = state.latestExecutionPayloadBid;
50
+ const parentSlot = parentBid.slot;
51
+ const parentEpoch = computeEpochAtSlot(parentSlot);
52
+ const currentEpoch = computeEpochAtSlot(state.slot);
53
+
54
+ // Process execution requests from parent's payload. The execution
55
+ // requests are processed at state.slot (child's slot), not the parent's slot.
56
+ if (requests.deposits.length > 0) {
57
+ const pendingValidatorPubkeys = getPendingValidatorPubkeys(state.config, state);
58
+ for (const deposit of requests.deposits) {
59
+ processDepositRequest(fork, state, deposit, pendingValidatorPubkeys);
60
+ }
61
+ }
62
+
63
+ for (const withdrawal of requests.withdrawals) {
64
+ processWithdrawalRequest(fork, state, withdrawal);
65
+ }
66
+
67
+ for (const consolidation of requests.consolidations) {
68
+ processConsolidationRequest(state, consolidation);
69
+ }
70
+
71
+ // Settle the builder payment
72
+ if (parentEpoch === currentEpoch) {
73
+ settleBuilderPayment(state, SLOTS_PER_EPOCH + (parentSlot % SLOTS_PER_EPOCH));
74
+ } else if (parentEpoch === currentEpoch - 1) {
75
+ settleBuilderPayment(state, parentSlot % SLOTS_PER_EPOCH);
76
+ } else if (parentBid.value > 0) {
77
+ // Parent is older than the previous epoch, its payment entry has been evicted from
78
+ // builder_pending_payments. Append the withdrawal directly.
79
+ state.builderPendingWithdrawals.push(
80
+ ssz.gloas.BuilderPendingWithdrawal.toViewDU({
81
+ feeRecipient: parentBid.feeRecipient,
82
+ amount: parentBid.value,
83
+ builderIndex: parentBid.builderIndex,
84
+ })
85
+ );
86
+ }
87
+
88
+ // Update parent payload availability and latest block hash
89
+ state.executionPayloadAvailability.set(parentSlot % SLOTS_PER_HISTORICAL_ROOT, true);
90
+ state.latestBlockHash = parentBid.blockHash;
91
+ }
92
+
93
+ /**
94
+ * Settle a builder payment at the given index: move its withdrawal (if any) to the
95
+ * pending withdrawals list and clear the payment slot.
96
+ *
97
+ * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-settle_builder_payment
98
+ */
99
+ function settleBuilderPayment(state: CachedBeaconStateGloas, paymentIndex: number): void {
100
+ if (paymentIndex >= state.builderPendingPayments.length) {
101
+ throw new Error(
102
+ `Invalid builder payment index paymentIndex=${paymentIndex} limit=${state.builderPendingPayments.length}`
103
+ );
104
+ }
105
+ const payment = state.builderPendingPayments.get(paymentIndex).clone();
106
+ if (payment.withdrawal.amount > 0) {
107
+ state.builderPendingWithdrawals.push(payment.withdrawal);
108
+ }
109
+ state.builderPendingPayments.set(paymentIndex, ssz.gloas.BuilderPendingPayment.defaultViewDU());
110
+ }
111
+
112
+ function assertEmptyExecutionRequests(requests: electra.ExecutionRequests): void {
113
+ if (requests.deposits.length !== 0 || requests.withdrawals.length !== 0 || requests.consolidations.length !== 0) {
114
+ throw new Error("Parent execution requests must be empty when parent block is EMPTY");
115
+ }
116
+ }
@@ -15,7 +15,6 @@ import {
15
15
  convertBuilderIndexToValidatorIndex,
16
16
  convertValidatorIndexToBuilderIndex,
17
17
  isBuilderIndex,
18
- isParentBlockFull,
19
18
  } from "../util/gloas.js";
20
19
  import {
21
20
  decreaseBalance,
@@ -32,8 +31,15 @@ export function processWithdrawals(
32
31
  payload?: capella.FullOrBlindedExecutionPayload
33
32
  ): void {
34
33
  // Return early if the parent block is empty
35
- if (fork >= ForkSeq.gloas && !isParentBlockFull(state as CachedBeaconStateGloas)) {
36
- return;
34
+ if (fork >= ForkSeq.gloas) {
35
+ const stateGloas = state as CachedBeaconStateGloas;
36
+ const isParentBlockEmpty = !byteArrayEquals(
37
+ stateGloas.latestBlockHash,
38
+ stateGloas.latestExecutionPayloadBid.blockHash
39
+ );
40
+ if (isParentBlockEmpty) {
41
+ return;
42
+ }
37
43
  }
38
44
 
39
45
  // processedBuilderWithdrawalsCount is withdrawals coming from builder payment since gloas (EIP-7732)
@@ -48,7 +54,9 @@ export function processWithdrawals(
48
54
  } = getExpectedWithdrawals(fork, state);
49
55
  const numWithdrawals = expectedWithdrawals.length;
50
56
 
51
- // After gloas, withdrawals are verified later in processExecutionPayloadEnvelope
57
+ // Pre-gloas verifies the payload's withdrawals against expectedWithdrawals here.
58
+ // Post-gloas, the payload arrives later as an envelope and that consistency check
59
+ // happens in verifyExecutionPayloadEnvelope against state.payloadExpectedWithdrawals.
52
60
  if (fork < ForkSeq.gloas) {
53
61
  if (payload === undefined) {
54
62
  throw Error("payload is required for pre-gloas processWithdrawals");