@lodestar/state-transition 1.22.0-dev.9c62011986 → 1.22.0-dev.9f4bf50408

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 (146) hide show
  1. package/LICENSE +201 -165
  2. package/lib/block/index.js +1 -1
  3. package/lib/block/index.js.map +1 -1
  4. package/lib/block/initiateValidatorExit.d.ts +2 -1
  5. package/lib/block/initiateValidatorExit.js +21 -13
  6. package/lib/block/initiateValidatorExit.js.map +1 -1
  7. package/lib/block/isValidIndexedAttestation.js +5 -2
  8. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  9. package/lib/block/processAttestationPhase0.d.ts +2 -2
  10. package/lib/block/processAttestationPhase0.js +33 -11
  11. package/lib/block/processAttestationPhase0.js.map +1 -1
  12. package/lib/block/processAttestations.d.ts +2 -2
  13. package/lib/block/processAttestations.js.map +1 -1
  14. package/lib/block/processAttestationsAltair.d.ts +2 -2
  15. package/lib/block/processAttestationsAltair.js +3 -3
  16. package/lib/block/processAttestationsAltair.js.map +1 -1
  17. package/lib/block/processBlockHeader.js +3 -2
  18. package/lib/block/processBlockHeader.js.map +1 -1
  19. package/lib/block/processBlsToExecutionChange.js +3 -2
  20. package/lib/block/processBlsToExecutionChange.js.map +1 -1
  21. package/lib/block/processConsolidationRequest.d.ts +4 -0
  22. package/lib/block/processConsolidationRequest.js +55 -0
  23. package/lib/block/processConsolidationRequest.js.map +1 -0
  24. package/lib/block/processDeposit.d.ts +8 -0
  25. package/lib/block/processDeposit.js +94 -54
  26. package/lib/block/processDeposit.js.map +1 -1
  27. package/lib/block/processDepositRequest.d.ts +5 -0
  28. package/lib/block/processDepositRequest.js +9 -0
  29. package/lib/block/processDepositRequest.js.map +1 -0
  30. package/lib/block/processExecutionPayload.js +4 -3
  31. package/lib/block/processExecutionPayload.js.map +1 -1
  32. package/lib/block/processOperations.d.ts +4 -1
  33. package/lib/block/processOperations.js +21 -4
  34. package/lib/block/processOperations.js.map +1 -1
  35. package/lib/block/processVoluntaryExit.d.ts +2 -1
  36. package/lib/block/processVoluntaryExit.js +16 -6
  37. package/lib/block/processVoluntaryExit.js.map +1 -1
  38. package/lib/block/processWithdrawalRequest.d.ts +5 -0
  39. package/lib/block/processWithdrawalRequest.js +67 -0
  40. package/lib/block/processWithdrawalRequest.js.map +1 -0
  41. package/lib/block/processWithdrawals.d.ts +5 -3
  42. package/lib/block/processWithdrawals.js +70 -17
  43. package/lib/block/processWithdrawals.js.map +1 -1
  44. package/lib/block/slashValidator.js +9 -5
  45. package/lib/block/slashValidator.js.map +1 -1
  46. package/lib/cache/effectiveBalanceIncrements.d.ts +3 -4
  47. package/lib/cache/effectiveBalanceIncrements.js +5 -5
  48. package/lib/cache/effectiveBalanceIncrements.js.map +1 -1
  49. package/lib/cache/epochCache.d.ts +66 -8
  50. package/lib/cache/epochCache.js +185 -22
  51. package/lib/cache/epochCache.js.map +1 -1
  52. package/lib/cache/epochTransitionCache.d.ts +12 -2
  53. package/lib/cache/epochTransitionCache.js +6 -3
  54. package/lib/cache/epochTransitionCache.js.map +1 -1
  55. package/lib/cache/pubkeyCache.d.ts +23 -3
  56. package/lib/cache/pubkeyCache.js +8 -1
  57. package/lib/cache/pubkeyCache.js.map +1 -1
  58. package/lib/cache/stateCache.d.ts +4 -2
  59. package/lib/cache/stateCache.js +2 -1
  60. package/lib/cache/stateCache.js.map +1 -1
  61. package/lib/cache/syncCommitteeCache.js +2 -2
  62. package/lib/cache/syncCommitteeCache.js.map +1 -1
  63. package/lib/cache/types.d.ts +1 -0
  64. package/lib/epoch/index.d.ts +6 -2
  65. package/lib/epoch/index.js +27 -5
  66. package/lib/epoch/index.js.map +1 -1
  67. package/lib/epoch/processEffectiveBalanceUpdates.d.ts +4 -1
  68. package/lib/epoch/processEffectiveBalanceUpdates.js +25 -6
  69. package/lib/epoch/processEffectiveBalanceUpdates.js.map +1 -1
  70. package/lib/epoch/processPendingBalanceDeposits.d.ts +12 -0
  71. package/lib/epoch/processPendingBalanceDeposits.js +68 -0
  72. package/lib/epoch/processPendingBalanceDeposits.js.map +1 -0
  73. package/lib/epoch/processPendingConsolidations.d.ts +16 -0
  74. package/lib/epoch/processPendingConsolidations.js +49 -0
  75. package/lib/epoch/processPendingConsolidations.js.map +1 -0
  76. package/lib/epoch/processRegistryUpdates.d.ts +2 -1
  77. package/lib/epoch/processRegistryUpdates.js +6 -3
  78. package/lib/epoch/processRegistryUpdates.js.map +1 -1
  79. package/lib/epoch/processRewardsAndPenalties.js +2 -1
  80. package/lib/epoch/processRewardsAndPenalties.js.map +1 -1
  81. package/lib/epoch/processSyncCommitteeUpdates.d.ts +2 -1
  82. package/lib/epoch/processSyncCommitteeUpdates.js +4 -3
  83. package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
  84. package/lib/index.d.ts +2 -2
  85. package/lib/index.js +1 -1
  86. package/lib/index.js.map +1 -1
  87. package/lib/metrics.d.ts +5 -0
  88. package/lib/metrics.js.map +1 -1
  89. package/lib/signatureSets/attesterSlashings.d.ts +3 -3
  90. package/lib/signatureSets/attesterSlashings.js +1 -2
  91. package/lib/signatureSets/attesterSlashings.js.map +1 -1
  92. package/lib/signatureSets/index.js +2 -2
  93. package/lib/signatureSets/index.js.map +1 -1
  94. package/lib/signatureSets/indexedAttestation.js +2 -1
  95. package/lib/signatureSets/indexedAttestation.js.map +1 -1
  96. package/lib/slot/index.d.ts +1 -0
  97. package/lib/slot/index.js +1 -0
  98. package/lib/slot/index.js.map +1 -1
  99. package/lib/slot/upgradeStateToAltair.js +1 -1
  100. package/lib/slot/upgradeStateToAltair.js.map +1 -1
  101. package/lib/slot/upgradeStateToElectra.d.ts +8 -0
  102. package/lib/slot/upgradeStateToElectra.js +138 -0
  103. package/lib/slot/upgradeStateToElectra.js.map +1 -0
  104. package/lib/stateTransition.d.ts +1 -0
  105. package/lib/stateTransition.js +12 -8
  106. package/lib/stateTransition.js.map +1 -1
  107. package/lib/types.d.ts +2 -2
  108. package/lib/util/balance.js +2 -2
  109. package/lib/util/balance.js.map +1 -1
  110. package/lib/util/deposit.d.ts +4 -0
  111. package/lib/util/deposit.js +22 -0
  112. package/lib/util/deposit.js.map +1 -0
  113. package/lib/util/electra.d.ts +8 -0
  114. package/lib/util/electra.js +47 -0
  115. package/lib/util/electra.js.map +1 -0
  116. package/lib/util/epoch.d.ts +4 -1
  117. package/lib/util/epoch.js +37 -0
  118. package/lib/util/epoch.js.map +1 -1
  119. package/lib/util/epochShuffling.js +2 -3
  120. package/lib/util/epochShuffling.js.map +1 -1
  121. package/lib/util/execution.js +8 -0
  122. package/lib/util/execution.js.map +1 -1
  123. package/lib/util/genesis.d.ts +1 -1
  124. package/lib/util/genesis.js +30 -9
  125. package/lib/util/genesis.js.map +1 -1
  126. package/lib/util/index.d.ts +3 -0
  127. package/lib/util/index.js +3 -0
  128. package/lib/util/index.js.map +1 -1
  129. package/lib/util/loadState/index.d.ts +1 -1
  130. package/lib/util/loadState/index.js +1 -1
  131. package/lib/util/loadState/index.js.map +1 -1
  132. package/lib/util/loadState/loadState.d.ts +7 -0
  133. package/lib/util/loadState/loadState.js +15 -0
  134. package/lib/util/loadState/loadState.js.map +1 -1
  135. package/lib/util/seed.d.ts +4 -3
  136. package/lib/util/seed.js +11 -10
  137. package/lib/util/seed.js.map +1 -1
  138. package/lib/util/syncCommittee.d.ts +2 -1
  139. package/lib/util/syncCommittee.js +2 -2
  140. package/lib/util/syncCommittee.js.map +1 -1
  141. package/lib/util/validator.d.ts +10 -1
  142. package/lib/util/validator.js +35 -1
  143. package/lib/util/validator.js.map +1 -1
  144. package/lib/util/weakSubjectivity.js +2 -2
  145. package/lib/util/weakSubjectivity.js.map +1 -1
  146. package/package.json +9 -8
package/lib/index.js CHANGED
@@ -7,7 +7,7 @@ export { createCachedBeaconState, loadCachedBeaconState, isCachedBeaconState, is
7
7
  export { EpochCache, createEmptyEpochCacheImmutableData, EpochCacheError, EpochCacheErrorCode, } from "./cache/epochCache.js";
8
8
  export { beforeProcessEpoch } from "./cache/epochTransitionCache.js";
9
9
  // Aux data-structures
10
- export { PubkeyIndexMap } from "./cache/pubkeyCache.js";
10
+ export { PubkeyIndexMap, newUnfinalizedPubkeyIndexMap, } from "./cache/pubkeyCache.js";
11
11
  export { getEffectiveBalanceIncrementsZeroed, getEffectiveBalanceIncrementsWithLen, } from "./cache/effectiveBalanceIncrements.js";
12
12
  // BeaconChain validation
13
13
  export { isValidVoluntaryExit } from "./block/processVoluntaryExit.js";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AAsBzC,oBAAoB;AACpB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAErB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,UAAU,EAEV,kCAAkC,EAClC,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;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;AAErE,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,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;AAwBzC,oBAAoB;AACpB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAErB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,UAAU,EAEV,kCAAkC,EAClC,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAE9F,sBAAsB;AACtB,OAAO,EACL,cAAc,EAGd,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAEL,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,uCAAuC,CAAC;AAE/C,yBAAyB;AACzB,OAAO,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,sBAAsB,EAAE,mBAAmB,EAAyB,MAAM,yBAAyB,CAAC;AAE5G,qCAAqC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,6BAA6B;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC"}
package/lib/metrics.d.ts CHANGED
@@ -14,6 +14,7 @@ export type BeaconStateTransitionMetrics = {
14
14
  stateHashTreeRootTime: Histogram<{
15
15
  source: StateHashTreeRootSource;
16
16
  }>;
17
+ numEffectiveBalanceUpdates: Gauge;
17
18
  preStateBalancesNodesPopulatedMiss: Gauge<{
18
19
  source: StateCloneSource;
19
20
  }>;
@@ -33,6 +34,10 @@ export type BeaconStateTransitionMetrics = {
33
34
  postStateValidatorsNodesPopulatedHit: Gauge;
34
35
  registerValidatorStatuses: (currentEpoch: Epoch, inclusionDelays: number[], flags: number[], isActiveCurrEpoch: boolean[], isActivePrevEpoch: boolean[], balances?: number[]) => void;
35
36
  };
37
+ export type EpochCacheMetrics = {
38
+ finalizedPubkeyDuplicateInsert: Gauge;
39
+ newUnFinalizedPubkey: Gauge;
40
+ };
36
41
  export declare function onStateCloneMetrics(state: CachedBeaconStateAllForks, metrics: BeaconStateTransitionMetrics, source: StateCloneSource): void;
37
42
  export declare function onPostStateMetrics(postState: CachedBeaconStateAllForks, metrics: BeaconStateTransitionMetrics): void;
38
43
  //# sourceMappingURL=metrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,mBAAmB,CACjC,KAAgC,EAChC,OAAqC,EACrC,MAAwB;IAExB,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvD,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,iCAAiC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,kCAAkC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,oCAAoC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAoC,EAAE,OAAqC;IAC5G,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,oCAAoC,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,qCAAqC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,4FAA4F;AAC5F,wFAAwF;AACxF,SAAS,0BAA0B,CAAC,KAAgC;IAClE,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAgC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAsCA,MAAM,UAAU,mBAAmB,CACjC,KAAgC,EAChC,OAAqC,EACrC,MAAwB;IAExB,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvD,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,iCAAiC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,kCAAkC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,oCAAoC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAoC,EAAE,OAAqC;IAC5G,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,oCAAoC,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,qCAAqC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,4FAA4F;AAC5F,wFAAwF;AACxF,SAAS,0BAA0B,CAAC,KAAgC;IAClE,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAgC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC"}
@@ -1,9 +1,9 @@
1
- import { SignedBeaconBlock, phase0 } from "@lodestar/types";
1
+ import { SignedBeaconBlock, AttesterSlashing, IndexedAttestationBigint } from "@lodestar/types";
2
2
  import { ISignatureSet } from "../util/index.js";
3
3
  import { CachedBeaconStateAllForks } from "../types.js";
4
4
  /** Get signature sets from all AttesterSlashing objects in a block */
5
5
  export declare function getAttesterSlashingsSignatureSets(state: CachedBeaconStateAllForks, signedBlock: SignedBeaconBlock): ISignatureSet[];
6
6
  /** Get signature sets from a single AttesterSlashing object */
7
- export declare function getAttesterSlashingSignatureSets(state: CachedBeaconStateAllForks, attesterSlashing: phase0.AttesterSlashing): ISignatureSet[];
8
- export declare function getIndexedAttestationBigintSignatureSet(state: CachedBeaconStateAllForks, indexedAttestation: phase0.IndexedAttestationBigint): ISignatureSet;
7
+ export declare function getAttesterSlashingSignatureSets(state: CachedBeaconStateAllForks, attesterSlashing: AttesterSlashing): ISignatureSet[];
8
+ export declare function getIndexedAttestationBigintSignatureSet(state: CachedBeaconStateAllForks, indexedAttestation: IndexedAttestationBigint): ISignatureSet;
9
9
  //# sourceMappingURL=attesterSlashings.d.ts.map
@@ -12,12 +12,11 @@ export function getAttesterSlashingSignatureSets(state, attesterSlashing) {
12
12
  return [attesterSlashing.attestation1, attesterSlashing.attestation2].map((attestation) => getIndexedAttestationBigintSignatureSet(state, attestation));
13
13
  }
14
14
  export function getIndexedAttestationBigintSignatureSet(state, indexedAttestation) {
15
- const { index2pubkey } = state.epochCtx;
16
15
  const slot = computeStartSlotAtEpoch(Number(indexedAttestation.data.target.epoch));
17
16
  const domain = state.config.getDomain(state.slot, DOMAIN_BEACON_ATTESTER, slot);
18
17
  return {
19
18
  type: SignatureSetType.aggregate,
20
- pubkeys: indexedAttestation.attestingIndices.map((i) => index2pubkey[i]),
19
+ pubkeys: indexedAttestation.attestingIndices.map((i) => state.epochCtx.index2pubkey[i]),
21
20
  signingRoot: computeSigningRoot(ssz.phase0.AttestationDataBigint, indexedAttestation.data, domain),
22
21
  signature: indexedAttestation.signature,
23
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"attesterSlashings.js","sourceRoot":"","sources":["../../src/signatureSets/attesterSlashings.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAiB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAG9G,sEAAsE;AACtE,MAAM,UAAU,iCAAiC,CAC/C,KAAgC,EAChC,WAA8B;IAE9B,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB;SAC9C,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,gCAAgC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SACpF,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gCAAgC,CAC9C,KAAgC,EAChC,gBAAyC;IAEzC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACxF,uCAAuC,CAAC,KAAK,EAAE,WAAW,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,KAAgC,EAChC,kBAAmD;IAEnD,MAAM,EAAC,YAAY,EAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtC,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAEhF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;QAClG,SAAS,EAAE,kBAAkB,CAAC,SAAS;KACxC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"attesterSlashings.js","sourceRoot":"","sources":["../../src/signatureSets/attesterSlashings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,GAAG,EAA6C,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAiB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAG9G,sEAAsE;AACtE,MAAM,UAAU,iCAAiC,CAC/C,KAAgC,EAChC,WAA8B;IAE9B,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB;SAC9C,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,gCAAgC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SACpF,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gCAAgC,CAC9C,KAAgC,EAChC,gBAAkC;IAElC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACxF,uCAAuC,CAAC,KAAK,EAAE,WAAW,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,KAAgC,EAChC,kBAA4C;IAE5C,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAEhF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvF,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;QAClG,SAAS,EAAE,kBAAkB,CAAC,SAAS;KACxC,CAAC;AACJ,CAAC"}
@@ -19,6 +19,8 @@ export * from "./blsToExecutionChange.js";
19
19
  * Deposits are not included because they can legally have invalid signatures.
20
20
  */
21
21
  export function getBlockSignatureSets(state, signedBlock, opts) {
22
+ // fork based validations
23
+ const fork = state.config.getForkSeq(signedBlock.message.slot);
22
24
  const signatureSets = [
23
25
  getRandaoRevealSignatureSet(state, signedBlock.message),
24
26
  ...getProposerSlashingsSignatureSets(state, signedBlock),
@@ -29,8 +31,6 @@ export function getBlockSignatureSets(state, signedBlock, opts) {
29
31
  if (!opts?.skipProposerSignature) {
30
32
  signatureSets.push(getBlockProposerSignatureSet(state, signedBlock));
31
33
  }
32
- // fork based validations
33
- const fork = state.config.getForkSeq(signedBlock.message.slot);
34
34
  // Only after altair fork, validate tSyncCommitteeSignature
35
35
  if (fork >= ForkSeq.altair) {
36
36
  const syncCommitteeSignatureSet = getSyncCommitteeSignatureSet(state, signedBlock.message);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAC,oCAAoC,EAAC,MAAM,2BAA2B,CAAC;AAE/E,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAgC,EAChC,WAA8B,EAC9B,IAGC;IAED,MAAM,aAAa,GAAG;QACpB,2BAA2B,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;QACvD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,4BAA4B,CAAC,KAAK,EAAE,WAAW,CAAC;QACnD,GAAG,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC;KACtD,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D,2DAA2D;IAC3D,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,yBAAyB,GAAG,4BAA4B,CAC5D,KAAgC,EAC/B,WAAwC,CAAC,OAAO,CAClD,CAAC;QACF,2FAA2F;QAC3F,IAAI,yBAAyB,EAAE,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,iCAAiC,GAAG,oCAAoC,CAC5E,KAAK,CAAC,MAAM,EACZ,WAAwC,CACzC,CAAC;QACF,IAAI,iCAAiC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAC,oCAAoC,EAAC,MAAM,2BAA2B,CAAC;AAE/E,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAgC,EAChC,WAA8B,EAC9B,IAGC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D,MAAM,aAAa,GAAG;QACpB,2BAA2B,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;QACvD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,4BAA4B,CAAC,KAAK,EAAE,WAAW,CAAC;QACnD,GAAG,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC;KACtD,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,2DAA2D;IAC3D,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,yBAAyB,GAAG,4BAA4B,CAC5D,KAAgC,EAC/B,WAAwC,CAAC,OAAO,CAClD,CAAC;QACF,2FAA2F;QAC3F,IAAI,yBAAyB,EAAE,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,iCAAiC,GAAG,oCAAoC,CAC5E,KAAK,CAAC,MAAM,EACZ,WAAwC,CACzC,CAAC;QACF,IAAI,iCAAiC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -13,6 +13,7 @@ export function getIndexedAttestationSignatureSet(state, indexedAttestation) {
13
13
  return getAttestationWithIndicesSignatureSet(state, indexedAttestation, indexedAttestation.attestingIndices);
14
14
  }
15
15
  export function getAttestationsSignatureSets(state, signedBlock) {
16
- return signedBlock.message.body.attestations.map((attestation) => getIndexedAttestationSignatureSet(state, state.epochCtx.getIndexedAttestation(attestation)));
16
+ // TODO: figure how to get attesting indices of an attestation once per block processing
17
+ return signedBlock.message.body.attestations.map((attestation) => getIndexedAttestationSignatureSet(state, state.epochCtx.getIndexedAttestation(state.config.getForkSeq(signedBlock.message.slot), attestation)));
17
18
  }
18
19
  //# sourceMappingURL=indexedAttestation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexedAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAA4B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,yCAAyC,GAE1C,MAAM,kBAAkB,CAAC;AAG1B,MAAM,UAAU,6BAA6B,CAC3C,KAAgC,EAChC,IAA4B;IAE5B,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAEhF,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,KAAgC,EAChC,WAA2D,EAC3D,gBAA0B;IAE1B,OAAO,yCAAyC,CAC9C,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC3D,6BAA6B,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACtD,WAAW,CAAC,SAAS,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,KAAgC,EAChC,kBAA6C;IAE7C,OAAO,qCAAqC,CAAC,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAgC,EAChC,WAA8B;IAE9B,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC/D,iCAAiC,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAC5F,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"indexedAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAA4B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,yCAAyC,GAE1C,MAAM,kBAAkB,CAAC;AAG1B,MAAM,UAAU,6BAA6B,CAC3C,KAAgC,EAChC,IAA4B;IAE5B,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAEhF,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,KAAgC,EAChC,WAA2D,EAC3D,gBAA0B;IAE1B,OAAO,yCAAyC,CAC9C,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC3D,6BAA6B,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACtD,WAAW,CAAC,SAAS,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,KAAgC,EAChC,kBAA6C;IAE7C,OAAO,qCAAqC,CAAC,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAgC,EAChC,WAA8B;IAE9B,wFAAwF;IACxF,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC/D,iCAAiC,CAC/B,KAAK,EACL,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CACrG,CACF,CAAC;AACJ,CAAC"}
@@ -3,6 +3,7 @@ export { upgradeStateToAltair } from "./upgradeStateToAltair.js";
3
3
  export { upgradeStateToBellatrix } from "./upgradeStateToBellatrix.js";
4
4
  export { upgradeStateToCapella } from "./upgradeStateToCapella.js";
5
5
  export { upgradeStateToDeneb } from "./upgradeStateToDeneb.js";
6
+ export { upgradeStateToElectra } from "./upgradeStateToElectra.js";
6
7
  /**
7
8
  * Dial state to next slot. Common for all forks
8
9
  */
package/lib/slot/index.js CHANGED
@@ -5,6 +5,7 @@ export { upgradeStateToAltair } from "./upgradeStateToAltair.js";
5
5
  export { upgradeStateToBellatrix } from "./upgradeStateToBellatrix.js";
6
6
  export { upgradeStateToCapella } from "./upgradeStateToCapella.js";
7
7
  export { upgradeStateToDeneb } from "./upgradeStateToDeneb.js";
8
+ export { upgradeStateToElectra } from "./upgradeStateToElectra.js";
8
9
  /**
9
10
  * Dial state to next slot. Common for all forks
10
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgC;IAC1D,mBAAmB;IACnB,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAC/C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;IAEhF,uCAAuC;IACvC,IAAI,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,iBAAiB,CAAC,SAAS,GAAG,iBAAiB,CAAC;IACxD,CAAC;IAED,mBAAmB;IACnB,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;IACjE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgC;IAC1D,mBAAmB;IACnB,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAC/C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;IAEhF,uCAAuC;IACvC,IAAI,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,iBAAiB,CAAC,SAAS,GAAG,iBAAiB,CAAC;IACxD,CAAC;IAED,mBAAmB;IACnB,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;IACjE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;AAClF,CAAC"}
@@ -60,7 +60,7 @@ export function upgradeStateToAltair(statePhase0) {
60
60
  // Cloned instance with same immutable Node
61
61
  stateAltair.currentEpochParticipation = ssz.altair.EpochParticipation.getViewDU(emptyEpochParticipationNode);
62
62
  stateAltair.inactivityScores = ssz.altair.InactivityScores.toViewDU(newZeroedArray(validatorCount));
63
- const { syncCommittee, indices } = getNextSyncCommittee(stateAltair, stateAltair.epochCtx.nextShuffling.activeIndices, stateAltair.epochCtx.effectiveBalanceIncrements);
63
+ const { syncCommittee, indices } = getNextSyncCommittee(ForkSeq.altair, stateAltair, stateAltair.epochCtx.nextShuffling.activeIndices, stateAltair.epochCtx.effectiveBalanceIncrements);
64
64
  const syncCommitteeView = ssz.altair.SyncCommittee.toViewDU(syncCommittee);
65
65
  stateAltair.currentSyncCommittee = syncCommitteeView;
66
66
  stateAltair.nextSyncCommittee = syncCommitteeView;
@@ -1 +1 @@
1
- {"version":3,"file":"upgradeStateToAltair.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToAltair.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgradeStateToAltair.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToAltair.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CachedBeaconStateDeneb } from "../types.js";
2
+ import { CachedBeaconStateElectra } from "../cache/stateCache.js";
3
+ /**
4
+ * Upgrade a state from Deneb to Electra.
5
+ */
6
+ export declare function upgradeStateToElectra(stateDeneb: CachedBeaconStateDeneb): CachedBeaconStateElectra;
7
+ export declare function upgradeStateToElectraOriginal(stateDeneb: CachedBeaconStateDeneb): CachedBeaconStateElectra;
8
+ //# sourceMappingURL=upgradeStateToElectra.d.ts.map
@@ -0,0 +1,138 @@
1
+ import { ssz } from "@lodestar/types";
2
+ import { FAR_FUTURE_EPOCH, UNSET_DEPOSIT_REQUESTS_START_INDEX } from "@lodestar/params";
3
+ import { getCachedBeaconState } from "../cache/stateCache.js";
4
+ import { hasCompoundingWithdrawalCredential, queueEntireBalanceAndResetValidator, queueExcessActiveBalance, } from "../util/electra.js";
5
+ import { computeActivationExitEpoch } from "../util/epoch.js";
6
+ import { getActivationExitChurnLimit, getConsolidationChurnLimit } from "../util/validator.js";
7
+ /**
8
+ * Upgrade a state from Deneb to Electra.
9
+ */
10
+ export function upgradeStateToElectra(stateDeneb) {
11
+ const { config } = stateDeneb;
12
+ ssz.deneb.BeaconState.commitViewDU(stateDeneb);
13
+ const stateElectraCloned = stateDeneb;
14
+ const stateElectraView = ssz.electra.BeaconState.defaultViewDU();
15
+ stateElectraView.genesisTime = stateElectraCloned.genesisTime;
16
+ stateElectraView.genesisValidatorsRoot = stateElectraCloned.genesisValidatorsRoot;
17
+ stateElectraView.slot = stateElectraCloned.slot;
18
+ stateElectraView.fork = ssz.phase0.Fork.toViewDU({
19
+ previousVersion: stateDeneb.fork.currentVersion,
20
+ currentVersion: config.ELECTRA_FORK_VERSION,
21
+ epoch: stateDeneb.epochCtx.epoch,
22
+ });
23
+ stateElectraView.latestBlockHeader = stateElectraCloned.latestBlockHeader;
24
+ stateElectraView.blockRoots = stateElectraCloned.blockRoots;
25
+ stateElectraView.stateRoots = stateElectraCloned.stateRoots;
26
+ stateElectraView.historicalRoots = stateElectraCloned.historicalRoots;
27
+ stateElectraView.eth1Data = stateElectraCloned.eth1Data;
28
+ stateElectraView.eth1DataVotes = stateElectraCloned.eth1DataVotes;
29
+ stateElectraView.eth1DepositIndex = stateElectraCloned.eth1DepositIndex;
30
+ stateElectraView.validators = stateElectraCloned.validators;
31
+ stateElectraView.balances = stateElectraCloned.balances;
32
+ stateElectraView.randaoMixes = stateElectraCloned.randaoMixes;
33
+ stateElectraView.slashings = stateElectraCloned.slashings;
34
+ stateElectraView.previousEpochParticipation = stateElectraCloned.previousEpochParticipation;
35
+ stateElectraView.currentEpochParticipation = stateElectraCloned.currentEpochParticipation;
36
+ stateElectraView.justificationBits = stateElectraCloned.justificationBits;
37
+ stateElectraView.previousJustifiedCheckpoint = stateElectraCloned.previousJustifiedCheckpoint;
38
+ stateElectraView.currentJustifiedCheckpoint = stateElectraCloned.currentJustifiedCheckpoint;
39
+ stateElectraView.finalizedCheckpoint = stateElectraCloned.finalizedCheckpoint;
40
+ stateElectraView.inactivityScores = stateElectraCloned.inactivityScores;
41
+ stateElectraView.currentSyncCommittee = stateElectraCloned.currentSyncCommittee;
42
+ stateElectraView.nextSyncCommittee = stateElectraCloned.nextSyncCommittee;
43
+ stateElectraView.latestExecutionPayloadHeader = ssz.electra.BeaconState.fields.latestExecutionPayloadHeader.toViewDU({
44
+ ...stateElectraCloned.latestExecutionPayloadHeader.toValue(),
45
+ depositRequestsRoot: ssz.Root.defaultValue(),
46
+ withdrawalRequestsRoot: ssz.Root.defaultValue(),
47
+ consolidationRequestsRoot: ssz.Root.defaultValue(),
48
+ });
49
+ stateElectraView.nextWithdrawalIndex = stateDeneb.nextWithdrawalIndex;
50
+ stateElectraView.nextWithdrawalValidatorIndex = stateDeneb.nextWithdrawalValidatorIndex;
51
+ stateElectraView.historicalSummaries = stateElectraCloned.historicalSummaries;
52
+ // latestExecutionPayloadHeader's depositRequestsRoot and withdrawalRequestsRoot set to zeros by default
53
+ // default value of depositRequestsStartIndex is UNSET_DEPOSIT_REQUESTS_START_INDEX
54
+ stateElectraView.depositRequestsStartIndex = UNSET_DEPOSIT_REQUESTS_START_INDEX;
55
+ stateElectraView.depositBalanceToConsume = BigInt(0);
56
+ stateElectraView.exitBalanceToConsume = BigInt(0);
57
+ const validatorsArr = stateElectraView.validators.getAllReadonly();
58
+ const exitEpochs = [];
59
+ // [EIP-7251]: add validators that are not yet active to pending balance deposits
60
+ const preActivation = [];
61
+ for (let validatorIndex = 0; validatorIndex < validatorsArr.length; validatorIndex++) {
62
+ const { activationEpoch, exitEpoch } = validatorsArr[validatorIndex];
63
+ if (activationEpoch === FAR_FUTURE_EPOCH) {
64
+ preActivation.push(validatorIndex);
65
+ }
66
+ if (exitEpoch !== FAR_FUTURE_EPOCH) {
67
+ exitEpochs.push(exitEpoch);
68
+ }
69
+ }
70
+ const currentEpochPre = stateDeneb.epochCtx.epoch;
71
+ if (exitEpochs.length === 0) {
72
+ exitEpochs.push(currentEpochPre);
73
+ }
74
+ stateElectraView.earliestExitEpoch = Math.max(...exitEpochs) + 1;
75
+ stateElectraView.consolidationBalanceToConsume = BigInt(0);
76
+ stateElectraView.earliestConsolidationEpoch = computeActivationExitEpoch(currentEpochPre);
77
+ // stateElectraView.pendingBalanceDeposits = ssz.electra.PendingBalanceDeposits.defaultViewDU();
78
+ // pendingBalanceDeposits, pendingPartialWithdrawals, pendingConsolidations are default values
79
+ // TODO-electra: can we improve this?
80
+ stateElectraView.commit();
81
+ const tmpElectraState = getCachedBeaconState(stateElectraView, stateDeneb);
82
+ stateElectraView.exitBalanceToConsume = BigInt(getActivationExitChurnLimit(tmpElectraState.epochCtx));
83
+ stateElectraView.consolidationBalanceToConsume = BigInt(getConsolidationChurnLimit(tmpElectraState.epochCtx));
84
+ preActivation.sort((i0, i1) => {
85
+ const res = validatorsArr[i0].activationEligibilityEpoch - validatorsArr[i1].activationEligibilityEpoch;
86
+ return res !== 0 ? res : i0 - i1;
87
+ });
88
+ for (const validatorIndex of preActivation) {
89
+ queueEntireBalanceAndResetValidator(stateElectraView, validatorIndex);
90
+ }
91
+ for (let i = 0; i < validatorsArr.length; i++) {
92
+ const validator = validatorsArr[i];
93
+ // [EIP-7251]: Ensure early adopters of compounding credentials go through the activation churn
94
+ const withdrawalCredential = validator.withdrawalCredentials;
95
+ if (hasCompoundingWithdrawalCredential(withdrawalCredential)) {
96
+ queueExcessActiveBalance(stateElectraView, i);
97
+ }
98
+ }
99
+ const stateElectra = getCachedBeaconState(stateElectraView, stateDeneb);
100
+ // Commit new added fields ViewDU to the root node
101
+ stateElectra.commit();
102
+ // Clear cache to ensure the cache of deneb fields is not used by new ELECTRA fields
103
+ stateElectra["clearCache"]();
104
+ return stateElectra;
105
+ }
106
+ export function upgradeStateToElectraOriginal(stateDeneb) {
107
+ const { config } = stateDeneb;
108
+ const stateElectraNode = ssz.deneb.BeaconState.commitViewDU(stateDeneb);
109
+ const stateElectraView = ssz.electra.BeaconState.getViewDU(stateElectraNode);
110
+ const stateElectra = getCachedBeaconState(stateElectraView, stateDeneb);
111
+ stateElectra.fork = ssz.phase0.Fork.toViewDU({
112
+ previousVersion: stateDeneb.fork.currentVersion,
113
+ currentVersion: config.ELECTRA_FORK_VERSION,
114
+ epoch: stateDeneb.epochCtx.epoch,
115
+ });
116
+ // latestExecutionPayloadHeader's depositRequestsRoot and withdrawalRequestsRoot set to zeros by default
117
+ // default value of depositRequestsStartIndex is UNSET_DEPOSIT_REQUESTS_START_INDEX
118
+ stateElectra.depositRequestsStartIndex = UNSET_DEPOSIT_REQUESTS_START_INDEX;
119
+ const validatorsArr = stateElectra.validators.getAllReadonly();
120
+ for (let i = 0; i < validatorsArr.length; i++) {
121
+ const validator = validatorsArr[i];
122
+ // [EIP-7251]: add validators that are not yet active to pending balance deposits
123
+ if (validator.activationEligibilityEpoch === FAR_FUTURE_EPOCH) {
124
+ queueEntireBalanceAndResetValidator(stateElectra, i);
125
+ }
126
+ // [EIP-7251]: Ensure early adopters of compounding credentials go through the activation churn
127
+ const withdrawalCredential = validator.withdrawalCredentials;
128
+ if (hasCompoundingWithdrawalCredential(withdrawalCredential)) {
129
+ queueExcessActiveBalance(stateElectra, i);
130
+ }
131
+ }
132
+ // Commit new added fields ViewDU to the root node
133
+ stateElectra.commit();
134
+ // Clear cache to ensure the cache of deneb fields is not used by new ELECTRA fields
135
+ stateElectra["clearCache"]();
136
+ return stateElectra;
137
+ }
138
+ //# sourceMappingURL=upgradeStateToElectra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradeStateToElectra.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToElectra.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ export declare enum StateHashTreeRootSource {
25
25
  blockTransition = "block_transition",
26
26
  prepareNextSlot = "prepare_next_slot",
27
27
  prepareNextEpoch = "prepare_next_epoch",
28
+ regenState = "regen_state",
28
29
  computeNewStateRoot = "compute_new_state_root"
29
30
  }
30
31
  /**
@@ -1,11 +1,11 @@
1
- import { toHexString } from "@chainsafe/ssz";
2
1
  import { ssz } from "@lodestar/types";
3
2
  import { SLOTS_PER_EPOCH } from "@lodestar/params";
3
+ import { toRootHex } from "@lodestar/utils";
4
4
  import { onPostStateMetrics, onStateCloneMetrics } from "./metrics.js";
5
5
  import { beforeProcessEpoch } from "./cache/epochTransitionCache.js";
6
6
  import { computeEpochAtSlot } from "./util/index.js";
7
7
  import { verifyProposerSignature } from "./signatureSets/index.js";
8
- import { processSlot, upgradeStateToAltair, upgradeStateToBellatrix, upgradeStateToCapella, upgradeStateToDeneb, } from "./slot/index.js";
8
+ import { processSlot, upgradeStateToAltair, upgradeStateToBellatrix, upgradeStateToCapella, upgradeStateToDeneb, upgradeStateToElectra, } from "./slot/index.js";
9
9
  import { processBlock } from "./block/index.js";
10
10
  import { EpochTransitionStep, processEpoch } from "./epoch/index.js";
11
11
  import { DataAvailableStatus, ExecutionPayloadStatus } from "./block/externalData.js";
@@ -26,6 +26,7 @@ export var StateHashTreeRootSource;
26
26
  StateHashTreeRootSource["blockTransition"] = "block_transition";
27
27
  StateHashTreeRootSource["prepareNextSlot"] = "prepare_next_slot";
28
28
  StateHashTreeRootSource["prepareNextEpoch"] = "prepare_next_epoch";
29
+ StateHashTreeRootSource["regenState"] = "regen_state";
29
30
  StateHashTreeRootSource["computeNewStateRoot"] = "compute_new_state_root";
30
31
  })(StateHashTreeRootSource || (StateHashTreeRootSource = {}));
31
32
  /**
@@ -76,7 +77,7 @@ export function stateTransition(state, signedBlock, options = {
76
77
  const stateRoot = postState.hashTreeRoot();
77
78
  hashTreeRootTimer?.();
78
79
  if (!ssz.Root.equals(block.stateRoot, stateRoot)) {
79
- throw new Error(`Invalid state root at slot ${block.slot}, expected=${toHexString(block.stateRoot)}, actual=${toHexString(stateRoot)}`);
80
+ throw new Error(`Invalid state root at slot ${block.slot}, expected=${toRootHex(block.stateRoot)}, actual=${toRootHex(stateRoot)}`);
80
81
  }
81
82
  }
82
83
  return postState;
@@ -139,19 +140,22 @@ function processSlotsWithTransientCache(postState, slot, epochTransitionCacheOpt
139
140
  // Note: time only on success. Include beforeProcessEpoch, processEpoch, afterProcessEpoch, commit
140
141
  epochTransitionTimer?.();
141
142
  // Upgrade state if exactly at epoch boundary
142
- const stateSlot = computeEpochAtSlot(postState.slot);
143
- if (stateSlot === config.ALTAIR_FORK_EPOCH) {
143
+ const stateEpoch = computeEpochAtSlot(postState.slot);
144
+ if (stateEpoch === config.ALTAIR_FORK_EPOCH) {
144
145
  postState = upgradeStateToAltair(postState);
145
146
  }
146
- if (stateSlot === config.BELLATRIX_FORK_EPOCH) {
147
+ if (stateEpoch === config.BELLATRIX_FORK_EPOCH) {
147
148
  postState = upgradeStateToBellatrix(postState);
148
149
  }
149
- if (stateSlot === config.CAPELLA_FORK_EPOCH) {
150
+ if (stateEpoch === config.CAPELLA_FORK_EPOCH) {
150
151
  postState = upgradeStateToCapella(postState);
151
152
  }
152
- if (stateSlot === config.DENEB_FORK_EPOCH) {
153
+ if (stateEpoch === config.DENEB_FORK_EPOCH) {
153
154
  postState = upgradeStateToDeneb(postState);
154
155
  }
156
+ if (stateEpoch === config.ELECTRA_FORK_EPOCH) {
157
+ postState = upgradeStateToElectra(postState);
158
+ }
155
159
  }
156
160
  else {
157
161
  postState.slot++;
@@ -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
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";
3
+ export type { CachedBeaconStateAllForks, CachedBeaconStateExecutions, CachedBeaconStatePhase0, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, CachedBeaconStateElectra, } from "./cache/stateCache.js";
4
+ export type { BeaconStateAllForks, BeaconStateExecutions, BeaconStatePhase0, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateElectra, } from "./cache/types.js";
5
5
  //# sourceMappingURL=types.d.ts.map
@@ -44,8 +44,8 @@ export function getEffectiveBalanceIncrementsZeroInactive(justifiedState) {
44
44
  const validatorCount = justifiedState.validators.length;
45
45
  const { effectiveBalanceIncrements } = justifiedState.epochCtx;
46
46
  // Slice up to `validatorCount` since it won't be mutated, nor accessed beyond `validatorCount`
47
- // NOTE: Force to use Uint8Array.slice (copy) instead of Buffer.call (not copy)
48
- const effectiveBalanceIncrementsZeroInactive = Uint8Array.prototype.slice.call(effectiveBalanceIncrements, 0, validatorCount);
47
+ // NOTE: Force to use Uint16Array.slice (copy) instead of Buffer.call (not copy)
48
+ const effectiveBalanceIncrementsZeroInactive = Uint16Array.prototype.slice.call(effectiveBalanceIncrements, 0, validatorCount);
49
49
  const validators = justifiedState.validators.getAllReadonly();
50
50
  let j = 0;
51
51
  for (let i = 0; i < validatorCount; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/util/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAC,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAK1C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAA0B,EAAE,OAAyB;IACnF,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtB,yDAAyD;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,KAAK,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAA0B,EAAE,KAAqB,EAAE,KAAa;IAC9F,oBAAoB;IACpB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAA0B,EAAE,KAAqB,EAAE,KAAa;IAC9F,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,yEAAyE;IACzE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yCAAyC,CACvD,cAAyC;IAEzC,MAAM,EAAC,aAAa,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACjE,+EAA+E;IAC/E,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;IACxD,MAAM,EAAC,0BAA0B,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IAC7D,+FAA+F;IAC/F,+EAA+E;IAC/E,MAAM,sCAAsC,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAC5E,0BAA0B,EAC1B,CAAC,EACD,cAAc,CACf,CAAC;IAEF,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,mBAAmB;YACnB,CAAC,EAAE,CAAC;YACJ,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1B,oBAAoB;gBACpB,sCAAsC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,sCAAsC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,sCAAsC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/util/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAC,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAK1C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAA0B,EAAE,OAAyB;IACnF,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtB,yDAAyD;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,KAAK,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAA0B,EAAE,KAAqB,EAAE,KAAa;IAC9F,oBAAoB;IACpB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAA0B,EAAE,KAAqB,EAAE,KAAa;IAC9F,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,yEAAyE;IACzE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yCAAyC,CACvD,cAAyC;IAEzC,MAAM,EAAC,aAAa,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACjE,+EAA+E;IAC/E,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;IACxD,MAAM,EAAC,0BAA0B,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IAC7D,+FAA+F;IAC/F,gFAAgF;IAChF,MAAM,sCAAsC,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAC7E,0BAA0B,EAC1B,CAAC,EACD,cAAc,CACf,CAAC;IAEF,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,mBAAmB;YACnB,CAAC,EAAE,CAAC;YACJ,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1B,oBAAoB;gBACpB,sCAAsC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,sCAAsC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,sCAAsC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { UintNum64, phase0 } from "@lodestar/types";
2
+ import { CachedBeaconStateAllForks } from "../types.js";
3
+ export declare function getEth1DepositCount(state: CachedBeaconStateAllForks, eth1Data?: phase0.Eth1Data): UintNum64;
4
+ //# sourceMappingURL=deposit.d.ts.map
@@ -0,0 +1,22 @@
1
+ import { ForkSeq, MAX_DEPOSITS } from "@lodestar/params";
2
+ export function getEth1DepositCount(state, eth1Data) {
3
+ const eth1DataToUse = eth1Data ?? state.eth1Data;
4
+ if (state.config.getForkSeq(state.slot) >= ForkSeq.electra) {
5
+ const electraState = state;
6
+ // eth1DataIndexLimit = min(UintNum64, UintBn64) can be safely casted as UintNum64
7
+ // since the result lies within upper and lower bound of UintNum64
8
+ const eth1DataIndexLimit = eth1DataToUse.depositCount < electraState.depositRequestsStartIndex
9
+ ? eth1DataToUse.depositCount
10
+ : Number(electraState.depositRequestsStartIndex);
11
+ if (state.eth1DepositIndex < eth1DataIndexLimit) {
12
+ return Math.min(MAX_DEPOSITS, eth1DataIndexLimit - state.eth1DepositIndex);
13
+ }
14
+ else {
15
+ return 0;
16
+ }
17
+ }
18
+ else {
19
+ return Math.min(MAX_DEPOSITS, eth1DataToUse.depositCount - state.eth1DepositIndex);
20
+ }
21
+ }
22
+ //# sourceMappingURL=deposit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/util/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAIvD,MAAM,UAAU,mBAAmB,CAAC,KAAgC,EAAE,QAA0B;IAC9F,MAAM,aAAa,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,KAAiC,CAAC;QACvD,kFAAkF;QAClF,kEAAkE;QAClE,MAAM,kBAAkB,GACtB,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,yBAAyB;YACjE,CAAC,CAAC,aAAa,CAAC,YAAY;YAC5B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;QAErD,IAAI,KAAK,CAAC,gBAAgB,GAAG,kBAAkB,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ValidatorIndex } from "@lodestar/types";
2
+ import { CachedBeaconStateElectra } from "../types.js";
3
+ export declare function hasCompoundingWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
4
+ export declare function hasExecutionWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
5
+ export declare function switchToCompoundingValidator(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
6
+ export declare function queueExcessActiveBalance(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
7
+ export declare function queueEntireBalanceAndResetValidator(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
8
+ //# sourceMappingURL=electra.d.ts.map
@@ -0,0 +1,47 @@
1
+ import { COMPOUNDING_WITHDRAWAL_PREFIX, FAR_FUTURE_EPOCH, MIN_ACTIVATION_BALANCE } from "@lodestar/params";
2
+ import { ssz } from "@lodestar/types";
3
+ import { hasEth1WithdrawalCredential } from "./capella.js";
4
+ export function hasCompoundingWithdrawalCredential(withdrawalCredentials) {
5
+ return withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX;
6
+ }
7
+ export function hasExecutionWithdrawalCredential(withdrawalCredentials) {
8
+ return (hasCompoundingWithdrawalCredential(withdrawalCredentials) || hasEth1WithdrawalCredential(withdrawalCredentials));
9
+ }
10
+ export function switchToCompoundingValidator(state, index) {
11
+ const validator = state.validators.get(index);
12
+ if (hasEth1WithdrawalCredential(validator.withdrawalCredentials)) {
13
+ // directly modifying the byte leads to ssz missing the modification resulting into
14
+ // wrong root compute, although slicing can be avoided but anyway this is not going
15
+ // to be a hot path so its better to clean slice and avoid side effects
16
+ const newWithdrawalCredentials = validator.withdrawalCredentials.slice();
17
+ newWithdrawalCredentials[0] = COMPOUNDING_WITHDRAWAL_PREFIX;
18
+ validator.withdrawalCredentials = newWithdrawalCredentials;
19
+ queueExcessActiveBalance(state, index);
20
+ }
21
+ }
22
+ export function queueExcessActiveBalance(state, index) {
23
+ const balance = state.balances.get(index);
24
+ if (balance > MIN_ACTIVATION_BALANCE) {
25
+ const excessBalance = balance - MIN_ACTIVATION_BALANCE;
26
+ state.balances.set(index, MIN_ACTIVATION_BALANCE);
27
+ const pendingBalanceDeposit = ssz.electra.PendingBalanceDeposit.toViewDU({
28
+ index,
29
+ amount: BigInt(excessBalance),
30
+ });
31
+ state.pendingBalanceDeposits.push(pendingBalanceDeposit);
32
+ }
33
+ }
34
+ export function queueEntireBalanceAndResetValidator(state, index) {
35
+ const balance = state.balances.get(index);
36
+ state.balances.set(index, 0);
37
+ const validator = state.validators.get(index);
38
+ validator.effectiveBalance = 0;
39
+ state.epochCtx.effectiveBalanceIncrementsSet(index, 0);
40
+ validator.activationEligibilityEpoch = FAR_FUTURE_EPOCH;
41
+ const pendingBalanceDeposit = ssz.electra.PendingBalanceDeposit.toViewDU({
42
+ index,
43
+ amount: BigInt(balance),
44
+ });
45
+ state.pendingBalanceDeposits.push(pendingBalanceDeposit);
46
+ }
47
+ //# sourceMappingURL=electra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,gBAAgB,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,kCAAkC,CAAC,qBAAiC;IAClF,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,qBAAiC;IAChF,OAAO,CACL,kCAAkC,CAAC,qBAAqB,CAAC,IAAI,2BAA2B,CAAC,qBAAqB,CAAC,CAChH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAA+B,EAAE,KAAqB;IACjG,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,2BAA2B,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACjE,mFAAmF;QACnF,mFAAmF;QACnF,uEAAuE;QACvE,MAAM,wBAAwB,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACzE,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;QAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;QAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAA+B,EAAE,KAAqB;IAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YACvE,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAA+B,EAAE,KAAqB;IACxG,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9C,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC/B,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,0BAA0B,GAAG,gBAAgB,CAAC;IAExD,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QACvE,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;KACxB,CAAC,CAAC;IACH,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,4 +1,5 @@
1
- import { BeaconState, Epoch, Slot, SyncPeriod } from "@lodestar/types";
1
+ import { BeaconState, Epoch, Slot, SyncPeriod, Gwei } from "@lodestar/types";
2
+ import { CachedBeaconStateElectra } from "../types.js";
2
3
  /**
3
4
  * Return the epoch number at the given slot.
4
5
  */
@@ -22,6 +23,8 @@ export declare function computeEndSlotAtEpoch(epoch: Epoch): Slot;
22
23
  * Return the epoch at which an activation or exit triggered in ``epoch`` takes effect.
23
24
  */
24
25
  export declare function computeActivationExitEpoch(epoch: Epoch): Epoch;
26
+ export declare function computeExitEpochAndUpdateChurn(state: CachedBeaconStateElectra, exitBalance: Gwei): number;
27
+ export declare function computeConsolidationEpochAndUpdateChurn(state: CachedBeaconStateElectra, consolidationBalance: Gwei): number;
25
28
  /**
26
29
  * Return the current epoch of the given state.
27
30
  */