@lodestar/state-transition 1.46.0-dev.c50ba35799 → 1.46.0-dev.c65aaefd91

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 (217) hide show
  1. package/lib/block/externalData.js +2 -4
  2. package/lib/block/externalData.js.map +1 -1
  3. package/lib/block/index.js.map +1 -1
  4. package/lib/block/initiateValidatorExit.js.map +1 -1
  5. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  6. package/lib/block/isValidIndexedPayloadAttestation.js.map +1 -1
  7. package/lib/block/processAttestationPhase0.js.map +1 -1
  8. package/lib/block/processAttestations.js.map +1 -1
  9. package/lib/block/processAttestationsAltair.js.map +1 -1
  10. package/lib/block/processAttesterSlashing.js.map +1 -1
  11. package/lib/block/processBlobKzgCommitments.js.map +1 -1
  12. package/lib/block/processBlockHeader.js.map +1 -1
  13. package/lib/block/processBlsToExecutionChange.js.map +1 -1
  14. package/lib/block/processBuilderDepositRequest.js.map +1 -1
  15. package/lib/block/processBuilderExitRequest.js.map +1 -1
  16. package/lib/block/processConsolidationRequest.js.map +1 -1
  17. package/lib/block/processDeposit.js.map +1 -1
  18. package/lib/block/processDepositRequest.js.map +1 -1
  19. package/lib/block/processEth1Data.js.map +1 -1
  20. package/lib/block/processExecutionPayload.js.map +1 -1
  21. package/lib/block/processExecutionPayloadBid.d.ts +2 -2
  22. package/lib/block/processExecutionPayloadBid.d.ts.map +1 -1
  23. package/lib/block/processExecutionPayloadBid.js +8 -3
  24. package/lib/block/processExecutionPayloadBid.js.map +1 -1
  25. package/lib/block/processOperations.js.map +1 -1
  26. package/lib/block/processParentExecutionPayload.js.map +1 -1
  27. package/lib/block/processPayloadAttestation.js.map +1 -1
  28. package/lib/block/processProposerSlashing.js.map +1 -1
  29. package/lib/block/processRandao.js.map +1 -1
  30. package/lib/block/processSyncCommittee.js.map +1 -1
  31. package/lib/block/processVoluntaryExit.js +1 -2
  32. package/lib/block/processVoluntaryExit.js.map +1 -1
  33. package/lib/block/processWithdrawalRequest.js.map +1 -1
  34. package/lib/block/processWithdrawals.js.map +1 -1
  35. package/lib/block/slashValidator.js.map +1 -1
  36. package/lib/block/types.js +1 -2
  37. package/lib/block/types.js.map +1 -1
  38. package/lib/cache/effectiveBalanceIncrements.js.map +1 -1
  39. package/lib/cache/epochCache.js +1 -2
  40. package/lib/cache/epochCache.js.map +1 -1
  41. package/lib/cache/epochTransitionCache.js.map +1 -1
  42. package/lib/cache/pubkeyCache.js.map +1 -1
  43. package/lib/cache/rewardCache.js.map +1 -1
  44. package/lib/cache/stateCache.d.ts +2 -1
  45. package/lib/cache/stateCache.d.ts.map +1 -1
  46. package/lib/cache/stateCache.js.map +1 -1
  47. package/lib/cache/syncCommitteeCache.js.map +1 -1
  48. package/lib/cache/types.d.ts +1 -0
  49. package/lib/cache/types.d.ts.map +1 -1
  50. package/lib/epoch/computeUnrealizedCheckpoints.js.map +1 -1
  51. package/lib/epoch/getAttestationDeltas.js.map +1 -1
  52. package/lib/epoch/getRewardsAndPenalties.js.map +1 -1
  53. package/lib/epoch/index.js +1 -2
  54. package/lib/epoch/index.js.map +1 -1
  55. package/lib/epoch/processBuilderPendingPayments.js.map +1 -1
  56. package/lib/epoch/processEffectiveBalanceUpdates.js.map +1 -1
  57. package/lib/epoch/processEth1DataReset.js.map +1 -1
  58. package/lib/epoch/processHistoricalRootsUpdate.js.map +1 -1
  59. package/lib/epoch/processHistoricalSummariesUpdate.js.map +1 -1
  60. package/lib/epoch/processInactivityUpdates.js.map +1 -1
  61. package/lib/epoch/processJustificationAndFinalization.js.map +1 -1
  62. package/lib/epoch/processParticipationFlagUpdates.js.map +1 -1
  63. package/lib/epoch/processParticipationRecordUpdates.js.map +1 -1
  64. package/lib/epoch/processPendingAttestations.js.map +1 -1
  65. package/lib/epoch/processPendingConsolidations.js.map +1 -1
  66. package/lib/epoch/processPendingDeposits.js.map +1 -1
  67. package/lib/epoch/processProposerLookahead.js.map +1 -1
  68. package/lib/epoch/processPtcWindow.js.map +1 -1
  69. package/lib/epoch/processRandaoMixesReset.js.map +1 -1
  70. package/lib/epoch/processRegistryUpdates.js.map +1 -1
  71. package/lib/epoch/processRewardsAndPenalties.js.map +1 -1
  72. package/lib/epoch/processSlashings.js.map +1 -1
  73. package/lib/epoch/processSlashingsReset.js.map +1 -1
  74. package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
  75. package/lib/index.d.ts +2 -2
  76. package/lib/index.d.ts.map +1 -1
  77. package/lib/index.js +1 -1
  78. package/lib/index.js.map +1 -1
  79. package/lib/lightClient/proofs.js.map +1 -1
  80. package/lib/lightClient/spec/index.js.map +1 -1
  81. package/lib/lightClient/spec/isBetterUpdate.js.map +1 -1
  82. package/lib/lightClient/spec/processLightClientUpdate.js.map +1 -1
  83. package/lib/lightClient/spec/store.js.map +1 -1
  84. package/lib/lightClient/spec/utils.d.ts.map +1 -1
  85. package/lib/lightClient/spec/utils.js +6 -0
  86. package/lib/lightClient/spec/utils.js.map +1 -1
  87. package/lib/lightClient/spec/validateLightClientBootstrap.js.map +1 -1
  88. package/lib/lightClient/spec/validateLightClientUpdate.js.map +1 -1
  89. package/lib/metrics.d.ts.map +1 -1
  90. package/lib/metrics.js.map +1 -1
  91. package/lib/rewards/attestationsRewards.js.map +1 -1
  92. package/lib/rewards/blockRewards.js.map +1 -1
  93. package/lib/rewards/syncCommitteeRewards.js.map +1 -1
  94. package/lib/signatureSets/attesterSlashings.js.map +1 -1
  95. package/lib/signatureSets/blsToExecutionChange.js.map +1 -1
  96. package/lib/signatureSets/executionPayloadBid.d.ts +2 -2
  97. package/lib/signatureSets/executionPayloadBid.d.ts.map +1 -1
  98. package/lib/signatureSets/executionPayloadBid.js +7 -5
  99. package/lib/signatureSets/executionPayloadBid.js.map +1 -1
  100. package/lib/signatureSets/executionPayloadEnvelope.js.map +1 -1
  101. package/lib/signatureSets/index.js.map +1 -1
  102. package/lib/signatureSets/indexedAttestation.js.map +1 -1
  103. package/lib/signatureSets/indexedPayloadAttestation.js.map +1 -1
  104. package/lib/signatureSets/proposer.js.map +1 -1
  105. package/lib/signatureSets/proposerPreferences.js.map +1 -1
  106. package/lib/signatureSets/proposerSlashings.js.map +1 -1
  107. package/lib/signatureSets/randao.js.map +1 -1
  108. package/lib/signatureSets/voluntaryExits.js.map +1 -1
  109. package/lib/slot/index.d.ts +1 -0
  110. package/lib/slot/index.d.ts.map +1 -1
  111. package/lib/slot/index.js +1 -0
  112. package/lib/slot/index.js.map +1 -1
  113. package/lib/slot/upgradeStateToAltair.js.map +1 -1
  114. package/lib/slot/upgradeStateToBellatrix.js.map +1 -1
  115. package/lib/slot/upgradeStateToCapella.js.map +1 -1
  116. package/lib/slot/upgradeStateToDeneb.js.map +1 -1
  117. package/lib/slot/upgradeStateToElectra.js.map +1 -1
  118. package/lib/slot/upgradeStateToFulu.js.map +1 -1
  119. package/lib/slot/upgradeStateToGloas.js.map +1 -1
  120. package/lib/slot/upgradeStateToHeze.d.ts +7 -0
  121. package/lib/slot/upgradeStateToHeze.d.ts.map +1 -0
  122. package/lib/slot/upgradeStateToHeze.js +83 -0
  123. package/lib/slot/upgradeStateToHeze.js.map +1 -0
  124. package/lib/stateTransition.d.ts.map +1 -1
  125. package/lib/stateTransition.js +6 -5
  126. package/lib/stateTransition.js.map +1 -1
  127. package/lib/stateView/beaconStateView.js.map +1 -1
  128. package/lib/stateView/interface.d.ts +8 -3
  129. package/lib/stateView/interface.d.ts.map +1 -1
  130. package/lib/stateView/interface.js +4 -1
  131. package/lib/stateView/interface.js.map +1 -1
  132. package/lib/stateView/nativeBeaconStateView.js.map +1 -1
  133. package/lib/stateView/stateViewFactory.js.map +1 -1
  134. package/lib/testUtils/infura.js.map +1 -1
  135. package/lib/testUtils/interop.js.map +1 -1
  136. package/lib/testUtils/params.d.ts.map +1 -1
  137. package/lib/testUtils/state.js +1 -1
  138. package/lib/testUtils/state.js.map +1 -1
  139. package/lib/testUtils/testFileCache.js.map +1 -1
  140. package/lib/testUtils/util.d.ts +1 -1
  141. package/lib/testUtils/util.d.ts.map +1 -1
  142. package/lib/testUtils/util.js +2 -2
  143. package/lib/testUtils/util.js.map +1 -1
  144. package/lib/types.d.ts +2 -2
  145. package/lib/types.d.ts.map +1 -1
  146. package/lib/util/aggregator.js.map +1 -1
  147. package/lib/util/altair.js.map +1 -1
  148. package/lib/util/array.js.map +1 -1
  149. package/lib/util/attestation.js.map +1 -1
  150. package/lib/util/attesterStatus.js.map +1 -1
  151. package/lib/util/balance.js.map +1 -1
  152. package/lib/util/blindedBlock.js.map +1 -1
  153. package/lib/util/blockRoot.js.map +1 -1
  154. package/lib/util/capella.js.map +1 -1
  155. package/lib/util/clock.d.ts +6 -0
  156. package/lib/util/clock.d.ts.map +1 -1
  157. package/lib/util/clock.js +1 -2
  158. package/lib/util/clock.js.map +1 -1
  159. package/lib/util/computeAnchorCheckpoint.js.map +1 -1
  160. package/lib/util/deposit.d.ts.map +1 -1
  161. package/lib/util/deposit.js +10 -8
  162. package/lib/util/deposit.js.map +1 -1
  163. package/lib/util/domain.js.map +1 -1
  164. package/lib/util/electra.js.map +1 -1
  165. package/lib/util/epoch.js.map +1 -1
  166. package/lib/util/epochShuffling.js.map +1 -1
  167. package/lib/util/execution.js.map +1 -1
  168. package/lib/util/finality.js.map +1 -1
  169. package/lib/util/fulu.js.map +1 -1
  170. package/lib/util/genesis.d.ts.map +1 -1
  171. package/lib/util/genesis.js +7 -2
  172. package/lib/util/genesis.js.map +1 -1
  173. package/lib/util/gloas.js.map +1 -1
  174. package/lib/util/interop.js.map +1 -1
  175. package/lib/util/loadState/findModifiedInactivityScores.js.map +1 -1
  176. package/lib/util/loadState/findModifiedValidators.js.map +1 -1
  177. package/lib/util/loadState/loadState.js.map +1 -1
  178. package/lib/util/loadState/loadValidator.js.map +1 -1
  179. package/lib/util/pendingDepositsLookup.js.map +1 -1
  180. package/lib/util/rootCache.js.map +1 -1
  181. package/lib/util/seed.js.map +1 -1
  182. package/lib/util/shuffling.js +1 -2
  183. package/lib/util/shuffling.js.map +1 -1
  184. package/lib/util/signatureSets.js +1 -2
  185. package/lib/util/signatureSets.js.map +1 -1
  186. package/lib/util/signingRoot.js.map +1 -1
  187. package/lib/util/slot.js.map +1 -1
  188. package/lib/util/ssz.js.map +1 -1
  189. package/lib/util/sszBytes.js.map +1 -1
  190. package/lib/util/syncCommittee.js.map +1 -1
  191. package/lib/util/targetUnslashedBalance.js.map +1 -1
  192. package/lib/util/validator.d.ts +5 -0
  193. package/lib/util/validator.d.ts.map +1 -1
  194. package/lib/util/validator.js +9 -0
  195. package/lib/util/validator.js.map +1 -1
  196. package/lib/util/weakSubjectivity.d.ts +1 -0
  197. package/lib/util/weakSubjectivity.d.ts.map +1 -1
  198. package/lib/util/weakSubjectivity.js +20 -8
  199. package/lib/util/weakSubjectivity.js.map +1 -1
  200. package/package.json +9 -9
  201. package/src/block/processExecutionPayloadBid.ts +18 -8
  202. package/src/cache/stateCache.ts +2 -0
  203. package/src/cache/types.ts +1 -0
  204. package/src/index.ts +4 -0
  205. package/src/lightClient/spec/utils.ts +7 -0
  206. package/src/signatureSets/executionPayloadBid.ts +7 -9
  207. package/src/slot/index.ts +1 -0
  208. package/src/slot/upgradeStateToHeze.ts +91 -0
  209. package/src/stateTransition.ts +5 -0
  210. package/src/stateView/interface.ts +13 -2
  211. package/src/testUtils/state.ts +1 -1
  212. package/src/testUtils/util.ts +2 -2
  213. package/src/types.ts +2 -0
  214. package/src/util/deposit.ts +11 -9
  215. package/src/util/genesis.ts +8 -2
  216. package/src/util/validator.ts +17 -0
  217. package/src/util/weakSubjectivity.ts +61 -22
@@ -1,10 +1,10 @@
1
- import { EFFECTIVE_BALANCE_INCREMENT, MAX_DEPOSITS, MAX_EFFECTIVE_BALANCE, SLOTS_PER_EPOCH, isForkPostElectra, } from "@lodestar/params";
1
+ import { EFFECTIVE_BALANCE_INCREMENT, ForkSeq, MAX_DEPOSITS, MAX_EFFECTIVE_BALANCE, SLOTS_PER_EPOCH, isForkPostElectra, isForkPostGloas, } from "@lodestar/params";
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { toRootHex } from "@lodestar/utils";
4
4
  import { ZERO_HASH } from "../constants/constants.js";
5
5
  import { computeCheckpointEpochAtStateSlot, computeEpochAtSlot, getCurrentEpoch } from "./epoch.js";
6
6
  import { getCurrentSlot } from "./slot.js";
7
- import { getActiveValidatorIndices, getBalanceChurnLimit, getBalanceChurnLimitFromCache, getChurnLimit, } from "./validator.js";
7
+ import { getActivationChurnLimit, getActiveValidatorIndices, getBalanceChurnLimit, getBalanceChurnLimitFromCache, getChurnLimit, getConsolidationChurnLimit, getExitChurnLimit, getGloasChurnLimits, } from "./validator.js";
8
8
  export const ETH_TO_GWEI = 10 ** 9;
9
9
  const SAFETY_DECAY = 10;
10
10
  /**
@@ -25,9 +25,11 @@ export function getLatestWeakSubjectivityCheckpointEpoch(config, state) {
25
25
  export function computeWeakSubjectivityPeriodCachedState(config, state) {
26
26
  const activeValidatorCount = state.epochCtx.currentShuffling.activeIndices.length;
27
27
  const fork = config.getForkName(state.slot);
28
- return isForkPostElectra(fork)
29
- ? computeWeakSubjectivityPeriodFromConstituentsElectra(state.epochCtx.totalActiveBalanceIncrements, getBalanceChurnLimitFromCache(state.epochCtx), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY)
30
- : computeWeakSubjectivityPeriodFromConstituentsPhase0(activeValidatorCount, state.epochCtx.totalActiveBalanceIncrements, getChurnLimit(config, activeValidatorCount), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY);
28
+ return isForkPostGloas(fork)
29
+ ? computeWeakSubjectivityPeriodFromConstituentsGloas(state.epochCtx.totalActiveBalanceIncrements, getExitChurnLimit(state.epochCtx), getActivationChurnLimit(state.epochCtx), getConsolidationChurnLimit(ForkSeq.gloas, state.epochCtx), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY)
30
+ : isForkPostElectra(fork)
31
+ ? computeWeakSubjectivityPeriodFromConstituentsElectra(state.epochCtx.totalActiveBalanceIncrements, getBalanceChurnLimitFromCache(state.epochCtx), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY)
32
+ : computeWeakSubjectivityPeriodFromConstituentsPhase0(activeValidatorCount, state.epochCtx.totalActiveBalanceIncrements, getChurnLimit(config, activeValidatorCount), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY);
31
33
  }
32
34
  /**
33
35
  * Same to computeWeakSubjectivityPeriodCachedState but for normal state
@@ -44,9 +46,12 @@ export function computeWeakSubjectivityPeriod(config, state) {
44
46
  if (totalActiveBalanceIncrements <= 1) {
45
47
  totalActiveBalanceIncrements = 1;
46
48
  }
47
- return isForkPostElectra(fork)
48
- ? computeWeakSubjectivityPeriodFromConstituentsElectra(totalActiveBalanceIncrements, getBalanceChurnLimit(totalActiveBalanceIncrements, config.CHURN_LIMIT_QUOTIENT, config.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY)
49
- : computeWeakSubjectivityPeriodFromConstituentsPhase0(activeIndices.length, totalActiveBalanceIncrements, getChurnLimit(config, activeIndices.length), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY);
49
+ const churnLimitsGloas = getGloasChurnLimits(config, totalActiveBalanceIncrements);
50
+ return isForkPostGloas(fork)
51
+ ? computeWeakSubjectivityPeriodFromConstituentsGloas(totalActiveBalanceIncrements, churnLimitsGloas.exit, churnLimitsGloas.activation, churnLimitsGloas.consolidation, config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY)
52
+ : isForkPostElectra(fork)
53
+ ? computeWeakSubjectivityPeriodFromConstituentsElectra(totalActiveBalanceIncrements, getBalanceChurnLimit(totalActiveBalanceIncrements, config.CHURN_LIMIT_QUOTIENT, config.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY)
54
+ : computeWeakSubjectivityPeriodFromConstituentsPhase0(activeIndices.length, totalActiveBalanceIncrements, getChurnLimit(config, activeIndices.length), config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY);
50
55
  }
51
56
  export function computeWeakSubjectivityPeriodFromConstituentsPhase0(activeValidatorCount, totalBalanceByIncrement, churnLimit, minWithdrawabilityDelay) {
52
57
  const N = activeValidatorCount;
@@ -79,6 +84,13 @@ balanceChurnLimit, minWithdrawabilityDelay) {
79
84
  const epochsForValidatorSetChurn = Math.floor(((SAFETY_DECAY * t) / (2 * delta * 100)) * EFFECTIVE_BALANCE_INCREMENT);
80
85
  return minWithdrawabilityDelay + epochsForValidatorSetChurn;
81
86
  }
87
+ export function computeWeakSubjectivityPeriodFromConstituentsGloas(totalBalanceByIncrement, exitChurnLimit, activationChurnLimit, consolidationChurnLimit, minWithdrawabilityDelay) {
88
+ // Keep t as increment for now. Multiply final result by EFFECTIVE_BALANCE_INCREMENT
89
+ const t = totalBalanceByIncrement;
90
+ const delta = Math.floor((2 * exitChurnLimit) / 3) + Math.floor(activationChurnLimit / 3) + consolidationChurnLimit;
91
+ const epochsForValidatorSetChurn = Math.floor(((SAFETY_DECAY * t) / (2 * delta * 100)) * EFFECTIVE_BALANCE_INCREMENT);
92
+ return minWithdrawabilityDelay + epochsForValidatorSetChurn;
93
+ }
82
94
  export function getLatestBlockRoot(state) {
83
95
  const header = ssz.phase0.BeaconBlockHeader.clone(state.latestBlockHeader);
84
96
  if (ssz.Root.equals(header.stateRoot, ZERO_HASH)) {
@@ -1 +1 @@
1
- {"version":3,"file":"weakSubjectivity.js","sourceRoot":"","sources":["../../src/util/weakSubjectivity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"weakSubjectivity.js","sourceRoot":"","sources":["../../src/util/weakSubjectivity.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.46.0-dev.c50ba35799",
14
+ "version": "1.46.0-dev.c65aaefd91",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -52,11 +52,11 @@
52
52
  ],
53
53
  "scripts": {
54
54
  "clean": "rm -rf lib && rm -f *.tsbuildinfo",
55
- "build": "tsgo -p tsconfig.build.json",
55
+ "build": "tsc -p tsconfig.build.json",
56
56
  "build:watch": "pnpm run build --watch",
57
57
  "build:release": "pnpm clean && pnpm build",
58
58
  "check-build": "node -e \"(async function() { await import('./lib/index.js') })()\"",
59
- "check-types": "tsgo",
59
+ "check-types": "tsc",
60
60
  "lint": "biome check src/ test/",
61
61
  "lint:fix": "pnpm run lint --write",
62
62
  "test": "pnpm test:unit",
@@ -71,14 +71,14 @@
71
71
  "@chainsafe/pubkey-index-map": "^3.0.0",
72
72
  "@chainsafe/ssz": "^1.6.2",
73
73
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
74
- "@lodestar/config": "^1.46.0-dev.c50ba35799",
75
- "@lodestar/params": "^1.46.0-dev.c50ba35799",
76
- "@lodestar/types": "^1.46.0-dev.c50ba35799",
77
- "@lodestar/utils": "^1.46.0-dev.c50ba35799",
74
+ "@lodestar/config": "^1.46.0-dev.c65aaefd91",
75
+ "@lodestar/params": "^1.46.0-dev.c65aaefd91",
76
+ "@lodestar/types": "^1.46.0-dev.c65aaefd91",
77
+ "@lodestar/utils": "^1.46.0-dev.c65aaefd91",
78
78
  "@vekexasia/bigint-buffer2": "^1.1.1"
79
79
  },
80
80
  "devDependencies": {
81
- "@lodestar/api": "^1.46.0-dev.c50ba35799"
81
+ "@lodestar/api": "^1.46.0-dev.c65aaefd91"
82
82
  },
83
83
  "keywords": [
84
84
  "ethereum",
@@ -86,5 +86,5 @@
86
86
  "beacon",
87
87
  "blockchain"
88
88
  ],
89
- "gitHead": "97847b9263113e96c2b10b7af4a0b7504666b46c"
89
+ "gitHead": "eb0aef9fe231dfdfa3ebd0ffdb467bb7f383f4f4"
90
90
  }
@@ -1,15 +1,21 @@
1
1
  import {PublicKey, Signature, verify} from "@chainsafe/blst";
2
- import {BUILDER_INDEX_SELF_BUILD, GENESIS_SLOT, PAYLOAD_BUILDER_VERSION, SLOTS_PER_EPOCH} from "@lodestar/params";
3
- import {Slot, gloas, ssz} from "@lodestar/types";
2
+ import {
3
+ BUILDER_INDEX_SELF_BUILD,
4
+ ForkSeq,
5
+ GENESIS_SLOT,
6
+ PAYLOAD_BUILDER_VERSION,
7
+ SLOTS_PER_EPOCH,
8
+ } from "@lodestar/params";
9
+ import {Slot, gloas, heze, ssz} from "@lodestar/types";
4
10
  import {byteArrayEquals, toHex, toRootHex} from "@lodestar/utils";
5
11
  import {G2_POINT_AT_INFINITY} from "../constants/constants.js";
6
12
  import {getExecutionPayloadBidSigningRoot} from "../signatureSets/executionPayloadBid.js";
7
- import {CachedBeaconStateGloas} from "../types.js";
13
+ import {CachedBeaconStateGloas, CachedBeaconStateHeze} from "../types.js";
8
14
  import {canBuilderCoverBid, isActiveBuilder} from "../util/gloas.js";
9
15
  import {getBlockRootAtSlot, getCurrentEpoch, getRandaoMix} from "../util/index.js";
10
16
 
11
17
  export function processExecutionPayloadBid(
12
- state: CachedBeaconStateGloas,
18
+ state: CachedBeaconStateGloas | CachedBeaconStateHeze,
13
19
  signedBid: gloas.SignedExecutionPayloadBid
14
20
  ): Slot {
15
21
  const bid = signedBid.message;
@@ -41,7 +47,7 @@ export function processExecutionPayloadBid(
41
47
  }
42
48
 
43
49
  // Verify that the builder has funds to cover the bid
44
- if (!canBuilderCoverBid(state, builderIndex, amount)) {
50
+ if (!canBuilderCoverBid(state as CachedBeaconStateGloas, builderIndex, amount)) {
45
51
  throw Error(`Invalid execution payload bid: builder ${builderIndex} has insufficient balance`);
46
52
  }
47
53
 
@@ -100,17 +106,21 @@ export function processExecutionPayloadBid(
100
106
  }
101
107
 
102
108
  const parentSlot = state.latestExecutionPayloadBid.slot;
103
- state.latestExecutionPayloadBid = ssz.gloas.ExecutionPayloadBid.toViewDU(bid);
109
+ if (state.config.getForkSeq(state.slot) >= ForkSeq.heze) {
110
+ state.latestExecutionPayloadBid = ssz.heze.ExecutionPayloadBid.toViewDU(bid as heze.ExecutionPayloadBid);
111
+ } else {
112
+ state.latestExecutionPayloadBid = ssz.gloas.ExecutionPayloadBid.toViewDU(bid);
113
+ }
104
114
 
105
115
  return parentSlot;
106
116
  }
107
117
 
108
118
  function verifyExecutionPayloadBidSignature(
109
- state: CachedBeaconStateGloas,
119
+ state: CachedBeaconStateGloas | CachedBeaconStateHeze,
110
120
  pubkey: Uint8Array,
111
121
  signedBid: gloas.SignedExecutionPayloadBid
112
122
  ): boolean {
113
- const signingRoot = getExecutionPayloadBidSigningRoot(state.config, state.slot, signedBid.message);
123
+ const signingRoot = getExecutionPayloadBidSigningRoot(state.config, signedBid.message);
114
124
 
115
125
  try {
116
126
  const publicKey = PublicKey.fromBytes(pubkey);
@@ -13,6 +13,7 @@ import {
13
13
  BeaconStateExecutions,
14
14
  BeaconStateFulu,
15
15
  BeaconStateGloas,
16
+ BeaconStateHeze,
16
17
  BeaconStatePhase0,
17
18
  } from "./types.js";
18
19
 
@@ -137,6 +138,7 @@ export type CachedBeaconStateDeneb = CachedBeaconState<BeaconStateDeneb>;
137
138
  export type CachedBeaconStateElectra = CachedBeaconState<BeaconStateElectra>;
138
139
  export type CachedBeaconStateFulu = CachedBeaconState<BeaconStateFulu>;
139
140
  export type CachedBeaconStateGloas = CachedBeaconState<BeaconStateGloas>;
141
+ export type CachedBeaconStateHeze = CachedBeaconState<BeaconStateHeze>;
140
142
 
141
143
  export type CachedBeaconStateAllForks = CachedBeaconState<BeaconStateAllForks>;
142
144
  export type CachedBeaconStateExecutions = CachedBeaconState<BeaconStateExecutions>;
@@ -11,6 +11,7 @@ export type BeaconStateDeneb = CompositeViewDU<SSZTypesFor<ForkName.deneb, "Beac
11
11
  export type BeaconStateElectra = CompositeViewDU<SSZTypesFor<ForkName.electra, "BeaconState">>;
12
12
  export type BeaconStateFulu = CompositeViewDU<SSZTypesFor<ForkName.fulu, "BeaconState">>;
13
13
  export type BeaconStateGloas = CompositeViewDU<SSZTypesFor<ForkName.gloas, "BeaconState">>;
14
+ export type BeaconStateHeze = CompositeViewDU<SSZTypesFor<ForkName.heze, "BeaconState">>;
14
15
 
15
16
  export type BeaconStateAllForks = CompositeViewDU<SSZTypesFor<ForkAll, "BeaconState">>;
16
17
  export type BeaconStateExecutions = CompositeViewDU<SSZTypesFor<ForkPostBellatrix & ForkPreGloas, "BeaconState">>;
package/src/index.ts CHANGED
@@ -52,6 +52,7 @@ export {
52
52
  type IBeaconStateViewElectra,
53
53
  type IBeaconStateViewFulu,
54
54
  type IBeaconStateViewGloas,
55
+ type IBeaconStateViewHeze,
55
56
  isStatePostAltair,
56
57
  isStatePostBellatrix,
57
58
  isStatePostCapella,
@@ -59,6 +60,7 @@ export {
59
60
  isStatePostElectra,
60
61
  isStatePostFulu,
61
62
  isStatePostGloas,
63
+ isStatePostHeze,
62
64
  } from "./stateView/interface.js";
63
65
  export {createBeaconStateView, createBeaconStateViewForHistoricalRegen} from "./stateView/stateViewFactory.js";
64
66
  export type {
@@ -71,6 +73,7 @@ export type {
71
73
  BeaconStateExecutions,
72
74
  BeaconStateFulu,
73
75
  BeaconStateGloas,
76
+ BeaconStateHeze,
74
77
  // Non-cached states
75
78
  BeaconStatePhase0,
76
79
  CachedBeaconStateAllForks,
@@ -82,6 +85,7 @@ export type {
82
85
  CachedBeaconStateExecutions,
83
86
  CachedBeaconStateFulu,
84
87
  CachedBeaconStateGloas,
88
+ CachedBeaconStateHeze,
85
89
  CachedBeaconStatePhase0,
86
90
  } from "./types.js";
87
91
  export * from "./util/index.js";
@@ -263,6 +263,7 @@ export function upgradeLightClientHeader(
263
263
  // Break if no further upgrades is required else fall through
264
264
  if (ForkSeq[targetFork] <= ForkSeq.fulu) break;
265
265
 
266
+ // biome-ignore lint/suspicious/noFallthroughSwitchClause: We need fall-through behavior here
266
267
  case ForkName.gloas:
267
268
  if (isGloasLightClientHeader(upgradedHeader)) {
268
269
  break;
@@ -272,6 +273,12 @@ export function upgradeLightClientHeader(
272
273
 
273
274
  // Break if no further upgrades is required else fall through
274
275
  if (ForkSeq[targetFork] <= ForkSeq.gloas) break;
276
+
277
+ case ForkName.heze:
278
+ // No changes to LightClientHeader in Heze
279
+
280
+ // Break if no further upgrades is required else fall through
281
+ if (ForkSeq[targetFork] <= ForkSeq.heze) break;
275
282
  }
276
283
  return upgradedHeader;
277
284
  }
@@ -1,14 +1,12 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
- import {DOMAIN_BEACON_BUILDER} from "@lodestar/params";
3
- import {Slot, gloas, ssz} from "@lodestar/types";
2
+ import {DOMAIN_BEACON_BUILDER, isForkPostGloas} from "@lodestar/params";
3
+ import {ExecutionPayloadBid, ssz, sszTypesFor} from "@lodestar/types";
4
4
  import {computeSigningRoot} from "../util/index.js";
5
5
 
6
- export function getExecutionPayloadBidSigningRoot(
7
- config: BeaconConfig,
8
- stateSlot: Slot,
9
- bid: gloas.ExecutionPayloadBid
10
- ): Uint8Array {
11
- const domain = config.getDomain(stateSlot, DOMAIN_BEACON_BUILDER);
6
+ export function getExecutionPayloadBidSigningRoot(config: BeaconConfig, bid: ExecutionPayloadBid): Uint8Array {
7
+ const fork = config.getForkName(bid.slot);
8
+ const domain = config.getDomain(bid.slot, DOMAIN_BEACON_BUILDER);
9
+ const sszType = isForkPostGloas(fork) ? sszTypesFor(fork).ExecutionPayloadBid : ssz.gloas.ExecutionPayloadBid;
12
10
 
13
- return computeSigningRoot(ssz.gloas.ExecutionPayloadBid, bid, domain);
11
+ return computeSigningRoot(sszType, bid, domain);
14
12
  }
package/src/slot/index.ts CHANGED
@@ -10,6 +10,7 @@ export {upgradeStateToDeneb} from "./upgradeStateToDeneb.js";
10
10
  export {upgradeStateToElectra} from "./upgradeStateToElectra.js";
11
11
  export {upgradeStateToFulu} from "./upgradeStateToFulu.js";
12
12
  export {upgradeStateToGloas} from "./upgradeStateToGloas.js";
13
+ export {upgradeStateToHeze} from "./upgradeStateToHeze.js";
13
14
 
14
15
  /**
15
16
  * Dial state to next slot. Common for all forks
@@ -0,0 +1,91 @@
1
+ import {ssz} from "@lodestar/types";
2
+ import {getCachedBeaconState} from "../cache/stateCache.js";
3
+ import {CachedBeaconStateGloas, CachedBeaconStateHeze} from "../types.js";
4
+
5
+ /**
6
+ * Upgrade a state from Gloas to Heze.
7
+ * Spec: heze/fork.md `upgrade_to_heze`.
8
+ */
9
+ export function upgradeStateToHeze(stateGloas: CachedBeaconStateGloas): CachedBeaconStateHeze {
10
+ const {config} = stateGloas;
11
+
12
+ ssz.gloas.BeaconState.commitViewDU(stateGloas);
13
+ const stateHezeCloned = stateGloas;
14
+
15
+ const stateHezeView = ssz.heze.BeaconState.defaultViewDU();
16
+
17
+ stateHezeView.genesisTime = stateHezeCloned.genesisTime;
18
+ stateHezeView.genesisValidatorsRoot = stateHezeCloned.genesisValidatorsRoot;
19
+ stateHezeView.slot = stateHezeCloned.slot;
20
+ stateHezeView.fork = ssz.phase0.Fork.toViewDU({
21
+ previousVersion: stateGloas.fork.currentVersion,
22
+ currentVersion: config.HEZE_FORK_VERSION,
23
+ epoch: stateGloas.epochCtx.epoch,
24
+ });
25
+ stateHezeView.latestBlockHeader = stateHezeCloned.latestBlockHeader;
26
+ stateHezeView.blockRoots = stateHezeCloned.blockRoots;
27
+ stateHezeView.stateRoots = stateHezeCloned.stateRoots;
28
+ stateHezeView.historicalRoots = stateHezeCloned.historicalRoots;
29
+ stateHezeView.eth1Data = stateHezeCloned.eth1Data;
30
+ stateHezeView.eth1DataVotes = stateHezeCloned.eth1DataVotes;
31
+ stateHezeView.eth1DepositIndex = stateHezeCloned.eth1DepositIndex;
32
+ stateHezeView.validators = stateHezeCloned.validators;
33
+ stateHezeView.balances = stateHezeCloned.balances;
34
+ stateHezeView.randaoMixes = stateHezeCloned.randaoMixes;
35
+ stateHezeView.slashings = stateHezeCloned.slashings;
36
+ stateHezeView.previousEpochParticipation = stateHezeCloned.previousEpochParticipation;
37
+ stateHezeView.currentEpochParticipation = stateHezeCloned.currentEpochParticipation;
38
+ stateHezeView.justificationBits = stateHezeCloned.justificationBits;
39
+ stateHezeView.previousJustifiedCheckpoint = stateHezeCloned.previousJustifiedCheckpoint;
40
+ stateHezeView.currentJustifiedCheckpoint = stateHezeCloned.currentJustifiedCheckpoint;
41
+ stateHezeView.finalizedCheckpoint = stateHezeCloned.finalizedCheckpoint;
42
+ stateHezeView.inactivityScores = stateHezeCloned.inactivityScores;
43
+ stateHezeView.currentSyncCommittee = stateHezeCloned.currentSyncCommittee;
44
+ stateHezeView.nextSyncCommittee = stateHezeCloned.nextSyncCommittee;
45
+ stateHezeView.latestBlockHash = stateHezeCloned.latestBlockHash;
46
+ stateHezeView.nextWithdrawalIndex = stateHezeCloned.nextWithdrawalIndex;
47
+ stateHezeView.nextWithdrawalValidatorIndex = stateHezeCloned.nextWithdrawalValidatorIndex;
48
+ stateHezeView.historicalSummaries = stateHezeCloned.historicalSummaries;
49
+ stateHezeView.depositRequestsStartIndex = stateHezeCloned.depositRequestsStartIndex;
50
+ stateHezeView.depositBalanceToConsume = stateHezeCloned.depositBalanceToConsume;
51
+ stateHezeView.exitBalanceToConsume = stateHezeCloned.exitBalanceToConsume;
52
+ stateHezeView.earliestExitEpoch = stateHezeCloned.earliestExitEpoch;
53
+ stateHezeView.consolidationBalanceToConsume = stateHezeCloned.consolidationBalanceToConsume;
54
+ stateHezeView.earliestConsolidationEpoch = stateHezeCloned.earliestConsolidationEpoch;
55
+ stateHezeView.pendingDeposits = stateHezeCloned.pendingDeposits;
56
+ stateHezeView.pendingPartialWithdrawals = stateHezeCloned.pendingPartialWithdrawals;
57
+ stateHezeView.pendingConsolidations = stateHezeCloned.pendingConsolidations;
58
+ stateHezeView.proposerLookahead = stateHezeCloned.proposerLookahead;
59
+ stateHezeView.builders = stateHezeCloned.builders;
60
+ stateHezeView.nextWithdrawalBuilderIndex = stateHezeCloned.nextWithdrawalBuilderIndex;
61
+ stateHezeView.executionPayloadAvailability = stateHezeCloned.executionPayloadAvailability;
62
+ stateHezeView.builderPendingPayments = stateHezeCloned.builderPendingPayments;
63
+ stateHezeView.builderPendingWithdrawals = stateHezeCloned.builderPendingWithdrawals;
64
+
65
+ // [Modified in Heze:EIP7805] inclusion_list_bits = Bitvector[INCLUSION_LIST_COMMITTEE_SIZE]() (default zero)
66
+ const oldBid = stateHezeCloned.latestExecutionPayloadBid;
67
+ const newBid = ssz.heze.ExecutionPayloadBid.defaultViewDU();
68
+ newBid.parentBlockHash = oldBid.parentBlockHash;
69
+ newBid.parentBlockRoot = oldBid.parentBlockRoot;
70
+ newBid.blockHash = oldBid.blockHash;
71
+ newBid.prevRandao = oldBid.prevRandao;
72
+ newBid.feeRecipient = oldBid.feeRecipient;
73
+ newBid.gasLimit = oldBid.gasLimit;
74
+ newBid.builderIndex = oldBid.builderIndex;
75
+ newBid.slot = oldBid.slot;
76
+ newBid.value = oldBid.value;
77
+ newBid.executionPayment = oldBid.executionPayment;
78
+ newBid.blobKzgCommitments = oldBid.blobKzgCommitments;
79
+ newBid.executionRequestsRoot = oldBid.executionRequestsRoot;
80
+ stateHezeView.latestExecutionPayloadBid = newBid;
81
+
82
+ stateHezeView.payloadExpectedWithdrawals = stateHezeCloned.payloadExpectedWithdrawals;
83
+ stateHezeView.ptcWindow = stateHezeCloned.ptcWindow;
84
+
85
+ const stateHeze = getCachedBeaconState(stateHezeView, stateGloas);
86
+ stateHeze.commit();
87
+ // biome-ignore lint/complexity/useLiteralKeys: It is a protected attribute
88
+ stateHeze["clearCache"]();
89
+
90
+ return stateHeze;
91
+ }
@@ -16,6 +16,7 @@ import {
16
16
  upgradeStateToDeneb,
17
17
  upgradeStateToElectra,
18
18
  upgradeStateToGloas,
19
+ upgradeStateToHeze,
19
20
  } from "./slot/index.js";
20
21
  import {upgradeStateToFulu} from "./slot/upgradeStateToFulu.js";
21
22
  import {
@@ -26,6 +27,7 @@ import {
26
27
  CachedBeaconStateDeneb,
27
28
  CachedBeaconStateElectra,
28
29
  CachedBeaconStateFulu,
30
+ CachedBeaconStateGloas,
29
31
  CachedBeaconStatePhase0,
30
32
  } from "./types.js";
31
33
  import {computeEpochAtSlot} from "./util/index.js";
@@ -278,6 +280,9 @@ function processSlotsWithTransientCache(
278
280
  if (stateEpoch === config.GLOAS_FORK_EPOCH) {
279
281
  postState = upgradeStateToGloas(postState as CachedBeaconStateFulu) as CachedBeaconStateAllForks;
280
282
  }
283
+ if (stateEpoch === config.HEZE_FORK_EPOCH) {
284
+ postState = upgradeStateToHeze(postState as CachedBeaconStateGloas) as CachedBeaconStateAllForks;
285
+ }
281
286
 
282
287
  {
283
288
  const timer = metrics?.epochTransitionStepTime.startTimer({step: EpochTransitionStep.finalProcessEpoch});
@@ -9,6 +9,7 @@ import {
9
9
  ForkPostElectra,
10
10
  ForkPostFulu,
11
11
  ForkPostGloas,
12
+ ForkPostHeze,
12
13
  isForkPostAltair,
13
14
  isForkPostBellatrix,
14
15
  isForkPostCapella,
@@ -16,6 +17,7 @@ import {
16
17
  isForkPostElectra,
17
18
  isForkPostFulu,
18
19
  isForkPostGloas,
20
+ isForkPostHeze,
19
21
  } from "@lodestar/params";
20
22
  import {
21
23
  BeaconBlock,
@@ -267,14 +269,19 @@ export interface IBeaconStateViewGloas extends IBeaconStateViewFulu {
267
269
  withParentPayloadApplied(executionRequests: gloas.ExecutionRequests): IBeaconStateViewGloas;
268
270
  }
269
271
 
272
+ /** Heze+ state fields — use isStatePostHeze() guard */
273
+ export interface IBeaconStateViewHeze extends IBeaconStateViewGloas {
274
+ forkName: ForkPostHeze;
275
+ }
276
+
270
277
  /**
271
278
  * Type constraint for the concrete BeaconStateView class.
272
- * Requires all fields from the latest fork interface (IBeaconStateViewGloas) but keeps
279
+ * Requires all fields from the latest fork interface (IBeaconStateViewHeze) but keeps
273
280
  * forkName as ForkName since the class wraps any fork's state.
274
281
  * Sub-interfaces retain their narrowed forkName discriminants for caller-side type guards.
275
282
  */
276
283
  export type IBeaconStateViewLatestFork = Omit<
277
- IBeaconStateViewGloas,
284
+ IBeaconStateViewHeze,
278
285
  "forkName" | "latestExecutionPayloadHeader" | "payloadBlockNumber"
279
286
  > & {
280
287
  forkName: ForkName;
@@ -337,3 +344,7 @@ export function isStatePostFulu(state: IBeaconStateView): state is IBeaconStateV
337
344
  export function isStatePostGloas(state: IBeaconStateView): state is IBeaconStateViewGloas {
338
345
  return isForkPostGloas(state.forkName);
339
346
  }
347
+
348
+ export function isStatePostHeze(state: IBeaconStateView): state is IBeaconStateViewHeze {
349
+ return isForkPostHeze(state.forkName);
350
+ }
@@ -54,7 +54,7 @@ export function generateState(opts?: TestBeaconState): BeaconStatePhase0 {
54
54
  eth1Data: {
55
55
  depositRoot: Buffer.alloc(32),
56
56
  blockHash: Buffer.alloc(32),
57
- depositCount: 0,
57
+ depositCount: 0n,
58
58
  },
59
59
  eth1DataVotes: [],
60
60
  eth1DepositIndex: 0,
@@ -437,13 +437,13 @@ function buildPerformanceStatePhase0(pubkeysArg?: Uint8Array[]): phase0.BeaconSt
437
437
  historicalRoots: [],
438
438
  // Eth1
439
439
  eth1Data: {
440
- depositCount: pubkeys.length,
440
+ depositCount: BigInt(pubkeys.length),
441
441
  depositRoot: fromHexString("0xcb1f89a924cfd31224823db5a41b1643f10faa7aedf231f1e28887f6ee98c047"),
442
442
  blockHash: fromHexString("0x701fb2869ce16d0f1d14f6705725adb0dec6799da29006dfc6fff83960298f21"),
443
443
  },
444
444
  // minus one so that inserting 1 from block works
445
445
  eth1DataVotes: newFilledArray(EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH - 1, {
446
- depositCount: 1,
446
+ depositCount: 1n,
447
447
  depositRoot: Buffer.alloc(32, 1),
448
448
  blockHash: Buffer.alloc(32, 1),
449
449
  }),
package/src/types.ts CHANGED
@@ -10,6 +10,7 @@ export type {
10
10
  CachedBeaconStateExecutions,
11
11
  CachedBeaconStateFulu,
12
12
  CachedBeaconStateGloas,
13
+ CachedBeaconStateHeze,
13
14
  CachedBeaconStatePhase0,
14
15
  } from "./cache/stateCache.js";
15
16
  export type {
@@ -22,6 +23,7 @@ export type {
22
23
  BeaconStateExecutions,
23
24
  BeaconStateFulu,
24
25
  BeaconStateGloas,
26
+ BeaconStateHeze,
25
27
  BeaconStatePhase0,
26
28
  ShufflingGetter,
27
29
  } from "./cache/types.js";
@@ -4,19 +4,21 @@ import {CachedBeaconStateAllForks, CachedBeaconStateElectra} from "../types.js";
4
4
 
5
5
  export function getEth1DepositCount(state: CachedBeaconStateAllForks, eth1Data?: phase0.Eth1Data): UintNum64 {
6
6
  const eth1DataToUse = eth1Data ?? state.eth1Data;
7
+ // Proposer can set any value, use in bigint until the result is bounded by MAX_DEPOSITS
8
+ const depositCount = eth1DataToUse.depositCount;
9
+ const eth1DepositIndex = BigInt(state.eth1DepositIndex);
10
+ const maxDeposits = BigInt(MAX_DEPOSITS);
7
11
  if (state.config.getForkSeq(state.slot) >= ForkSeq.electra) {
8
12
  const electraState = state as CachedBeaconStateElectra;
9
- // eth1DataIndexLimit = min(UintNum64, UintBn64) can be safely casted as UintNum64
10
- // since the result lies within upper and lower bound of UintNum64
11
- const eth1DataIndexLimit: UintNum64 =
12
- eth1DataToUse.depositCount < electraState.depositRequestsStartIndex
13
- ? eth1DataToUse.depositCount
14
- : Number(electraState.depositRequestsStartIndex);
13
+ const eth1DataIndexLimit =
14
+ depositCount < electraState.depositRequestsStartIndex ? depositCount : electraState.depositRequestsStartIndex;
15
15
 
16
- if (state.eth1DepositIndex < eth1DataIndexLimit) {
17
- return Math.min(MAX_DEPOSITS, eth1DataIndexLimit - state.eth1DepositIndex);
16
+ if (eth1DepositIndex < eth1DataIndexLimit) {
17
+ const available = eth1DataIndexLimit - eth1DepositIndex;
18
+ return Number(available < maxDeposits ? available : maxDeposits);
18
19
  }
19
20
  return 0;
20
21
  }
21
- return Math.min(MAX_DEPOSITS, eth1DataToUse.depositCount - state.eth1DepositIndex);
22
+ const available = depositCount - eth1DepositIndex;
23
+ return Number(available < maxDeposits ? available : maxDeposits);
22
24
  }
@@ -139,7 +139,7 @@ export function applyDeposits(
139
139
  const fullDepositDataRootArr = fullDepositDataRootList ? fullDepositDataRootList.getAllReadonlyValues() : null;
140
140
 
141
141
  if (fullDepositDataRootArr) {
142
- const depositCount = state.eth1Data.depositCount;
142
+ const depositCount = Number(state.eth1Data.depositCount);
143
143
  for (let index = 0; index < depositCount; index++) {
144
144
  depositDataRootList.push(fullDepositDataRootArr[index]);
145
145
  }
@@ -160,7 +160,7 @@ export function applyDeposits(
160
160
  );
161
161
  }
162
162
 
163
- state.eth1Data.depositCount += 1;
163
+ state.eth1Data.depositCount += 1n;
164
164
 
165
165
  const fork = config.getForkSeq(GENESIS_SLOT);
166
166
  processDeposit(fork, state, deposit);
@@ -334,6 +334,12 @@ export function initializeBeaconStateFromEth1(
334
334
  stateGloas.fork.currentVersion = config.GLOAS_FORK_VERSION;
335
335
  }
336
336
 
337
+ if (fork >= ForkSeq.heze) {
338
+ const stateHeze = state as CompositeViewDU<typeof ssz.heze.BeaconState>;
339
+ stateHeze.fork.previousVersion = config.HEZE_FORK_VERSION;
340
+ stateHeze.fork.currentVersion = config.HEZE_FORK_VERSION;
341
+ }
342
+
337
343
  state.commit();
338
344
 
339
345
  return state;
@@ -128,6 +128,23 @@ export function getConsolidationChurnLimit(fork: ForkSeq, epochCtx: EpochCache):
128
128
  return getBalanceChurnLimitFromCache(epochCtx) - getActivationExitChurnLimit(epochCtx);
129
129
  }
130
130
 
131
+ // NOTE: duplicates the quotient/min choices in get{Exit,Activation,Consolidation}ChurnLimit.
132
+ export function getGloasChurnLimits(
133
+ config: ChainForkConfig,
134
+ totalActiveBalanceIncrements: number
135
+ ): {exit: number; activation: number; consolidation: number} {
136
+ const exit = getBalanceChurnLimit(
137
+ totalActiveBalanceIncrements,
138
+ config.CHURN_LIMIT_QUOTIENT_GLOAS,
139
+ config.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA
140
+ );
141
+ return {
142
+ exit,
143
+ activation: Math.min(config.MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT_GLOAS, exit),
144
+ consolidation: getBalanceChurnLimit(totalActiveBalanceIncrements, config.CONSOLIDATION_CHURN_LIMIT_QUOTIENT, 0),
145
+ };
146
+ }
147
+
131
148
  export function getMaxEffectiveBalance(withdrawalCredentials: Uint8Array): number {
132
149
  // Compounding withdrawal credential only available since Electra
133
150
  if (hasCompoundingWithdrawalCredential(withdrawalCredentials)) {