@lodestar/state-transition 1.38.0-dev.bc1fed4d3d → 1.38.0-dev.ebc352f211

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 (191) hide show
  1. package/lib/block/index.d.ts +4 -1
  2. package/lib/block/index.d.ts.map +1 -1
  3. package/lib/block/index.js +18 -9
  4. package/lib/block/index.js.map +1 -1
  5. package/lib/block/isValidIndexedAttestation.d.ts +3 -2
  6. package/lib/block/isValidIndexedAttestation.d.ts.map +1 -1
  7. package/lib/block/isValidIndexedAttestation.js +4 -4
  8. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  9. package/lib/block/isValidIndexedPayloadAttestation.d.ts +4 -0
  10. package/lib/block/isValidIndexedPayloadAttestation.d.ts.map +1 -0
  11. package/lib/block/isValidIndexedPayloadAttestation.js +14 -0
  12. package/lib/block/isValidIndexedPayloadAttestation.js.map +1 -0
  13. package/lib/block/processAttestationPhase0.d.ts.map +1 -1
  14. package/lib/block/processAttestationPhase0.js +7 -2
  15. package/lib/block/processAttestationPhase0.js.map +1 -1
  16. package/lib/block/processAttestationsAltair.d.ts +3 -3
  17. package/lib/block/processAttestationsAltair.d.ts.map +1 -1
  18. package/lib/block/processAttestationsAltair.js +47 -5
  19. package/lib/block/processAttestationsAltair.js.map +1 -1
  20. package/lib/block/processAttesterSlashing.d.ts +2 -1
  21. package/lib/block/processAttesterSlashing.d.ts.map +1 -1
  22. package/lib/block/processAttesterSlashing.js +5 -4
  23. package/lib/block/processAttesterSlashing.js.map +1 -1
  24. package/lib/block/processConsolidationRequest.d.ts +3 -2
  25. package/lib/block/processConsolidationRequest.d.ts.map +1 -1
  26. package/lib/block/processConsolidationRequest.js +2 -2
  27. package/lib/block/processConsolidationRequest.js.map +1 -1
  28. package/lib/block/processDepositRequest.d.ts +2 -2
  29. package/lib/block/processDepositRequest.d.ts.map +1 -1
  30. package/lib/block/processDepositRequest.js.map +1 -1
  31. package/lib/block/processExecutionPayload.d.ts.map +1 -1
  32. package/lib/block/processExecutionPayload.js +4 -6
  33. package/lib/block/processExecutionPayload.js.map +1 -1
  34. package/lib/block/processExecutionPayloadBid.d.ts +5 -0
  35. package/lib/block/processExecutionPayloadBid.d.ts.map +1 -0
  36. package/lib/block/processExecutionPayloadBid.js +89 -0
  37. package/lib/block/processExecutionPayloadBid.js.map +1 -0
  38. package/lib/block/processExecutionPayloadEnvelope.d.ts +4 -0
  39. package/lib/block/processExecutionPayloadEnvelope.d.ts.map +1 -0
  40. package/lib/block/processExecutionPayloadEnvelope.js +118 -0
  41. package/lib/block/processExecutionPayloadEnvelope.js.map +1 -0
  42. package/lib/block/processOperations.d.ts.map +1 -1
  43. package/lib/block/processOperations.js +8 -2
  44. package/lib/block/processOperations.js.map +1 -1
  45. package/lib/block/processPayloadAttestation.d.ts +4 -0
  46. package/lib/block/processPayloadAttestation.d.ts.map +1 -0
  47. package/lib/block/processPayloadAttestation.js +16 -0
  48. package/lib/block/processPayloadAttestation.js.map +1 -0
  49. package/lib/block/processProposerSlashing.d.ts.map +1 -1
  50. package/lib/block/processProposerSlashing.js +17 -2
  51. package/lib/block/processProposerSlashing.js.map +1 -1
  52. package/lib/block/processRandao.js +1 -1
  53. package/lib/block/processRandao.js.map +1 -1
  54. package/lib/block/processSyncCommittee.d.ts +2 -1
  55. package/lib/block/processSyncCommittee.d.ts.map +1 -1
  56. package/lib/block/processSyncCommittee.js +3 -4
  57. package/lib/block/processSyncCommittee.js.map +1 -1
  58. package/lib/block/processVoluntaryExit.js +2 -2
  59. package/lib/block/processVoluntaryExit.js.map +1 -1
  60. package/lib/block/processWithdrawalRequest.d.ts +2 -2
  61. package/lib/block/processWithdrawalRequest.d.ts.map +1 -1
  62. package/lib/block/processWithdrawalRequest.js +1 -1
  63. package/lib/block/processWithdrawalRequest.js.map +1 -1
  64. package/lib/block/processWithdrawals.d.ts +4 -3
  65. package/lib/block/processWithdrawals.d.ts.map +1 -1
  66. package/lib/block/processWithdrawals.js +89 -19
  67. package/lib/block/processWithdrawals.js.map +1 -1
  68. package/lib/cache/epochCache.d.ts +5 -1
  69. package/lib/cache/epochCache.d.ts.map +1 -1
  70. package/lib/cache/epochCache.js +34 -1
  71. package/lib/cache/epochCache.js.map +1 -1
  72. package/lib/epoch/index.d.ts +4 -2
  73. package/lib/epoch/index.d.ts.map +1 -1
  74. package/lib/epoch/index.js +10 -1
  75. package/lib/epoch/index.js.map +1 -1
  76. package/lib/epoch/processBuilderPendingPayments.d.ts +6 -0
  77. package/lib/epoch/processBuilderPendingPayments.d.ts.map +1 -0
  78. package/lib/epoch/processBuilderPendingPayments.js +28 -0
  79. package/lib/epoch/processBuilderPendingPayments.js.map +1 -0
  80. package/lib/index.d.ts +1 -1
  81. package/lib/index.d.ts.map +1 -1
  82. package/lib/index.js.map +1 -1
  83. package/lib/signatureSets/attesterSlashings.d.ts +4 -3
  84. package/lib/signatureSets/attesterSlashings.d.ts.map +1 -1
  85. package/lib/signatureSets/attesterSlashings.js +6 -6
  86. package/lib/signatureSets/attesterSlashings.js.map +1 -1
  87. package/lib/signatureSets/index.d.ts +3 -1
  88. package/lib/signatureSets/index.d.ts.map +1 -1
  89. package/lib/signatureSets/index.js +9 -8
  90. package/lib/signatureSets/index.js.map +1 -1
  91. package/lib/signatureSets/indexedAttestation.d.ts +4 -3
  92. package/lib/signatureSets/indexedAttestation.d.ts.map +1 -1
  93. package/lib/signatureSets/indexedAttestation.js +6 -6
  94. package/lib/signatureSets/indexedAttestation.js.map +1 -1
  95. package/lib/signatureSets/indexedPayloadAttestation.d.ts +6 -0
  96. package/lib/signatureSets/indexedPayloadAttestation.d.ts.map +1 -0
  97. package/lib/signatureSets/indexedPayloadAttestation.js +11 -0
  98. package/lib/signatureSets/indexedPayloadAttestation.js.map +1 -0
  99. package/lib/signatureSets/proposer.d.ts +5 -4
  100. package/lib/signatureSets/proposer.d.ts.map +1 -1
  101. package/lib/signatureSets/proposer.js +12 -12
  102. package/lib/signatureSets/proposer.js.map +1 -1
  103. package/lib/signatureSets/proposerSlashings.d.ts +3 -2
  104. package/lib/signatureSets/proposerSlashings.d.ts.map +1 -1
  105. package/lib/signatureSets/proposerSlashings.js +4 -5
  106. package/lib/signatureSets/proposerSlashings.js.map +1 -1
  107. package/lib/signatureSets/randao.d.ts +3 -2
  108. package/lib/signatureSets/randao.d.ts.map +1 -1
  109. package/lib/signatureSets/randao.js +4 -5
  110. package/lib/signatureSets/randao.js.map +1 -1
  111. package/lib/signatureSets/voluntaryExits.d.ts +4 -3
  112. package/lib/signatureSets/voluntaryExits.d.ts.map +1 -1
  113. package/lib/signatureSets/voluntaryExits.js +6 -7
  114. package/lib/signatureSets/voluntaryExits.js.map +1 -1
  115. package/lib/slot/index.d.ts +2 -1
  116. package/lib/slot/index.d.ts.map +1 -1
  117. package/lib/slot/index.js +6 -2
  118. package/lib/slot/index.js.map +1 -1
  119. package/lib/slot/upgradeStateToAltair.js +1 -1
  120. package/lib/slot/upgradeStateToAltair.js.map +1 -1
  121. package/lib/slot/upgradeStateToGloas.d.ts +0 -1
  122. package/lib/slot/upgradeStateToGloas.d.ts.map +1 -1
  123. package/lib/slot/upgradeStateToGloas.js +47 -5
  124. package/lib/slot/upgradeStateToGloas.js.map +1 -1
  125. package/lib/stateTransition.js +5 -4
  126. package/lib/stateTransition.js.map +1 -1
  127. package/lib/util/electra.d.ts +5 -5
  128. package/lib/util/electra.d.ts.map +1 -1
  129. package/lib/util/electra.js +2 -1
  130. package/lib/util/electra.js.map +1 -1
  131. package/lib/util/epoch.d.ts +3 -3
  132. package/lib/util/epoch.d.ts.map +1 -1
  133. package/lib/util/epoch.js.map +1 -1
  134. package/lib/util/execution.d.ts +1 -16
  135. package/lib/util/execution.d.ts.map +1 -1
  136. package/lib/util/execution.js +1 -44
  137. package/lib/util/execution.js.map +1 -1
  138. package/lib/util/gloas.d.ts +11 -0
  139. package/lib/util/gloas.d.ts.map +1 -0
  140. package/lib/util/gloas.js +35 -0
  141. package/lib/util/gloas.js.map +1 -0
  142. package/lib/util/seed.d.ts +5 -1
  143. package/lib/util/seed.d.ts.map +1 -1
  144. package/lib/util/seed.js +33 -1
  145. package/lib/util/seed.js.map +1 -1
  146. package/lib/util/validator.d.ts +2 -2
  147. package/lib/util/validator.d.ts.map +1 -1
  148. package/lib/util/validator.js +14 -1
  149. package/lib/util/validator.js.map +1 -1
  150. package/package.json +6 -6
  151. package/src/block/index.ts +32 -15
  152. package/src/block/isValidIndexedAttestation.ts +5 -2
  153. package/src/block/isValidIndexedPayloadAttestation.ts +23 -0
  154. package/src/block/processAttestationPhase0.ts +13 -2
  155. package/src/block/processAttestationsAltair.ts +63 -6
  156. package/src/block/processAttesterSlashing.ts +6 -3
  157. package/src/block/processConsolidationRequest.ts +6 -5
  158. package/src/block/processDepositRequest.ts +5 -2
  159. package/src/block/processExecutionPayload.ts +8 -14
  160. package/src/block/processExecutionPayloadBid.ts +120 -0
  161. package/src/block/processExecutionPayloadEnvelope.ts +181 -0
  162. package/src/block/processOperations.ts +16 -4
  163. package/src/block/processPayloadAttestation.ts +25 -0
  164. package/src/block/processProposerSlashing.ts +25 -4
  165. package/src/block/processRandao.ts +1 -1
  166. package/src/block/processSyncCommittee.ts +4 -3
  167. package/src/block/processVoluntaryExit.ts +2 -2
  168. package/src/block/processWithdrawalRequest.ts +4 -4
  169. package/src/block/processWithdrawals.ts +118 -27
  170. package/src/cache/epochCache.ts +58 -1
  171. package/src/epoch/index.ts +12 -0
  172. package/src/epoch/processBuilderPendingPayments.ts +31 -0
  173. package/src/index.ts +2 -0
  174. package/src/signatureSets/attesterSlashings.ts +7 -3
  175. package/src/signatureSets/index.ts +10 -6
  176. package/src/signatureSets/indexedAttestation.ts +14 -3
  177. package/src/signatureSets/indexedPayloadAttestation.ts +24 -0
  178. package/src/signatureSets/proposer.ts +13 -7
  179. package/src/signatureSets/proposerSlashings.ts +5 -3
  180. package/src/signatureSets/randao.ts +13 -5
  181. package/src/signatureSets/voluntaryExits.ts +7 -4
  182. package/src/slot/index.ts +11 -3
  183. package/src/slot/upgradeStateToAltair.ts +2 -1
  184. package/src/slot/upgradeStateToGloas.ts +49 -5
  185. package/src/stateTransition.ts +5 -5
  186. package/src/util/electra.ts +15 -6
  187. package/src/util/epoch.ts +6 -3
  188. package/src/util/execution.ts +0 -60
  189. package/src/util/gloas.ts +58 -0
  190. package/src/util/seed.ts +57 -1
  191. package/src/util/validator.ts +21 -2
package/lib/slot/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { byteArrayEquals } from "@chainsafe/ssz";
2
- import { SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
2
+ import { ForkSeq, SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
3
3
  import { ZERO_HASH } from "../constants/index.js";
4
4
  export { upgradeStateToAltair } from "./upgradeStateToAltair.js";
5
5
  export { upgradeStateToBellatrix } from "./upgradeStateToBellatrix.js";
@@ -11,7 +11,7 @@ export { upgradeStateToGloas } from "./upgradeStateToGloas.js";
11
11
  /**
12
12
  * Dial state to next slot. Common for all forks
13
13
  */
14
- export function processSlot(state) {
14
+ export function processSlot(fork, state) {
15
15
  // Cache state root
16
16
  // Note: .hashTreeRoot() automatically commits() pending changes
17
17
  const previousStateRoot = state.hashTreeRoot();
@@ -24,5 +24,9 @@ export function processSlot(state) {
24
24
  // Note: .hashTreeRoot() automatically commits() pending changes
25
25
  const previousBlockRoot = state.latestBlockHeader.hashTreeRoot();
26
26
  state.blockRoots.set(state.slot % SLOTS_PER_HISTORICAL_ROOT, previousBlockRoot);
27
+ if (fork >= ForkSeq.gloas) {
28
+ // Unset the next payload availability
29
+ state.executionPayloadAvailability.set((state.slot + 1) % SLOTS_PER_HISTORICAL_ROOT, false);
30
+ }
27
31
  }
28
32
  //# sourceMappingURL=index.js.map
@@ -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;AAC3D,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAGhD,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;AACjE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,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,OAAO,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAGhD,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;AACjE,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,KAAgC;IACzE,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;IAEhF,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,sCAAsC;QACrC,KAAgC,CAAC,4BAA4B,CAAC,GAAG,CAChE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,yBAAyB,EAC5C,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -102,7 +102,7 @@ function translateParticipation(state, pendingAttesations) {
102
102
  const epochParticipation = state.previousEpochParticipation;
103
103
  for (const attestation of pendingAttesations.getAllReadonly()) {
104
104
  const data = attestation.data;
105
- const attestationFlags = getAttestationParticipationStatus(ForkSeq.altair, data, attestation.inclusionDelay, epochCtx.epoch, rootCache);
105
+ const attestationFlags = getAttestationParticipationStatus(ForkSeq.altair, data, attestation.inclusionDelay, epochCtx.epoch, rootCache, null);
106
106
  const committeeIndices = epochCtx.getBeaconCommittee(data.slot, data.index);
107
107
  const attestingIndices = attestation.aggregationBits.intersectValues(committeeIndices);
108
108
  for (const index of attestingIndices) {
@@ -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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"}
@@ -1,7 +1,6 @@
1
1
  import { CachedBeaconStateFulu, CachedBeaconStateGloas } from "../types.js";
2
2
  /**
3
3
  * Upgrade a state from Fulu to Gloas.
4
- * TODO GLOAS: Implement this
5
4
  */
6
5
  export declare function upgradeStateToGloas(stateFulu: CachedBeaconStateFulu): CachedBeaconStateGloas;
7
6
  //# sourceMappingURL=upgradeStateToGloas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,sBAAsB,CAoB5F"}
1
+ {"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,sBAAsB,CAgE5F"}
@@ -1,19 +1,61 @@
1
+ import { SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
1
2
  import { ssz } from "@lodestar/types";
2
3
  import { getCachedBeaconState } from "../cache/stateCache.js";
3
4
  /**
4
5
  * Upgrade a state from Fulu to Gloas.
5
- * TODO GLOAS: Implement this
6
6
  */
7
7
  export function upgradeStateToGloas(stateFulu) {
8
8
  const { config } = stateFulu;
9
- const stateFuluNode = ssz.fulu.BeaconState.commitViewDU(stateFulu);
10
- const stateGloasView = ssz.gloas.BeaconState.getViewDU(stateFuluNode);
11
- const stateGloas = getCachedBeaconState(stateGloasView, stateFulu);
12
- stateGloas.fork = ssz.phase0.Fork.toViewDU({
9
+ ssz.fulu.BeaconState.commitViewDU(stateFulu);
10
+ const stateGloasCloned = stateFulu;
11
+ const stateGloasView = ssz.gloas.BeaconState.defaultViewDU();
12
+ stateGloasView.genesisTime = stateGloasCloned.genesisTime;
13
+ stateGloasView.genesisValidatorsRoot = stateGloasCloned.genesisValidatorsRoot;
14
+ stateGloasView.slot = stateGloasCloned.slot;
15
+ stateGloasView.fork = ssz.phase0.Fork.toViewDU({
13
16
  previousVersion: stateFulu.fork.currentVersion,
14
17
  currentVersion: config.GLOAS_FORK_VERSION,
15
18
  epoch: stateFulu.epochCtx.epoch,
16
19
  });
20
+ stateGloasView.latestBlockHeader = stateGloasCloned.latestBlockHeader;
21
+ stateGloasView.blockRoots = stateGloasCloned.blockRoots;
22
+ stateGloasView.stateRoots = stateGloasCloned.stateRoots;
23
+ stateGloasView.historicalRoots = stateGloasCloned.historicalRoots;
24
+ stateGloasView.eth1Data = stateGloasCloned.eth1Data;
25
+ stateGloasView.eth1DataVotes = stateGloasCloned.eth1DataVotes;
26
+ stateGloasView.eth1DepositIndex = stateGloasCloned.eth1DepositIndex;
27
+ stateGloasView.validators = stateGloasCloned.validators;
28
+ stateGloasView.balances = stateGloasCloned.balances;
29
+ stateGloasView.randaoMixes = stateGloasCloned.randaoMixes;
30
+ stateGloasView.slashings = stateGloasCloned.slashings;
31
+ stateGloasView.previousEpochParticipation = stateGloasCloned.previousEpochParticipation;
32
+ stateGloasView.currentEpochParticipation = stateGloasCloned.currentEpochParticipation;
33
+ stateGloasView.justificationBits = stateGloasCloned.justificationBits;
34
+ stateGloasView.previousJustifiedCheckpoint = stateGloasCloned.previousJustifiedCheckpoint;
35
+ stateGloasView.currentJustifiedCheckpoint = stateGloasCloned.currentJustifiedCheckpoint;
36
+ stateGloasView.finalizedCheckpoint = stateGloasCloned.finalizedCheckpoint;
37
+ stateGloasView.inactivityScores = stateGloasCloned.inactivityScores;
38
+ stateGloasView.currentSyncCommittee = stateGloasCloned.currentSyncCommittee;
39
+ stateGloasView.nextSyncCommittee = stateGloasCloned.nextSyncCommittee;
40
+ stateGloasView.latestExecutionPayloadBid.blockHash = stateFulu.latestExecutionPayloadHeader.blockHash;
41
+ stateGloasView.nextWithdrawalIndex = stateGloasCloned.nextWithdrawalIndex;
42
+ stateGloasView.nextWithdrawalValidatorIndex = stateGloasCloned.nextWithdrawalValidatorIndex;
43
+ stateGloasView.historicalSummaries = stateGloasCloned.historicalSummaries;
44
+ stateGloasView.depositRequestsStartIndex = stateGloasCloned.depositRequestsStartIndex;
45
+ stateGloasView.depositBalanceToConsume = stateGloasCloned.depositBalanceToConsume;
46
+ stateGloasView.exitBalanceToConsume = stateGloasCloned.exitBalanceToConsume;
47
+ stateGloasView.earliestExitEpoch = stateGloasCloned.earliestExitEpoch;
48
+ stateGloasView.consolidationBalanceToConsume = stateGloasCloned.consolidationBalanceToConsume;
49
+ stateGloasView.earliestConsolidationEpoch = stateGloasCloned.earliestConsolidationEpoch;
50
+ stateGloasView.pendingDeposits = stateGloasCloned.pendingDeposits;
51
+ stateGloasView.pendingPartialWithdrawals = stateGloasCloned.pendingPartialWithdrawals;
52
+ stateGloasView.pendingConsolidations = stateGloasCloned.pendingConsolidations;
53
+ stateGloasView.proposerLookahead = stateGloasCloned.proposerLookahead;
54
+ for (let i = 0; i < SLOTS_PER_HISTORICAL_ROOT; i++) {
55
+ stateGloasView.executionPayloadAvailability.set(i, true);
56
+ }
57
+ stateGloasView.latestBlockHash = stateFulu.latestExecutionPayloadHeader.blockHash;
58
+ const stateGloas = getCachedBeaconState(stateGloasView, stateFulu);
17
59
  stateGloas.commit();
18
60
  // Clear cache to ensure the cache of fulu fields is not used by new gloas fields
19
61
  // biome-ignore lint/complexity/useLiteralKeys: It is a protected attribute
@@ -1 +1 @@
1
- {"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAgC;IAClE,MAAM,EAAC,MAAM,EAAC,GAAG,SAAS,CAAC;IAE3B,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAEtE,MAAM,UAAU,GAAG,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAEnE,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc;QAC9C,cAAc,EAAE,MAAM,CAAC,kBAAkB;QACzC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;KAChC,CAAC,CAAC;IAEH,UAAU,CAAC,MAAM,EAAE,CAAC;IACpB,iFAAiF;IACjF,2EAA2E;IAC3E,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;IAE3B,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,7 @@ export function stateTransition(state, signedBlock, options = {
52
52
  // Includes state upgrades
53
53
  postState = processSlotsWithTransientCache(postState, blockSlot, options, { metrics, validatorMonitor });
54
54
  // Verify proposer signature only
55
- if (verifyProposer && !verifyProposerSignature(postState, signedBlock)) {
55
+ if (verifyProposer && !verifyProposerSignature(postState.epochCtx.index2pubkey, postState, signedBlock)) {
56
56
  throw new Error("Invalid block signature");
57
57
  }
58
58
  // Process block
@@ -127,11 +127,12 @@ function processSlotsWithTransientCache(postState, slot, epochTransitionCacheOpt
127
127
  throw Error(`Too old slot ${slot}, current=${postState.slot}`);
128
128
  }
129
129
  while (postState.slot < slot) {
130
- processSlot(postState);
130
+ const fork = postState.config.getForkSeq(postState.slot);
131
+ processSlot(fork, postState);
131
132
  // Process epoch on the first slot of the next epoch
133
+ // We use `fork` because at fork boundary we don't want to process
134
+ // "next fork" epoch before upgrading state
132
135
  if ((postState.slot + 1) % SLOTS_PER_EPOCH === 0) {
133
- // At fork boundary we don't want to process "next fork" epoch before upgrading state
134
- const fork = postState.config.getForkSeq(postState.slot);
135
136
  const epochTransitionTimer = metrics?.epochTransitionTime.startTimer();
136
137
  let epochTransitionCache;
137
138
  {
@@ -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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"}
@@ -1,15 +1,15 @@
1
1
  import { ValidatorIndex } from "@lodestar/types";
2
- import { CachedBeaconStateElectra } from "../types.js";
2
+ import { CachedBeaconStateElectra, CachedBeaconStateGloas } from "../types.js";
3
3
  export declare function hasCompoundingWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
4
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;
5
+ export declare function switchToCompoundingValidator(state: CachedBeaconStateElectra | CachedBeaconStateGloas, index: ValidatorIndex): void;
6
+ export declare function queueExcessActiveBalance(state: CachedBeaconStateElectra | CachedBeaconStateGloas, index: ValidatorIndex): void;
7
7
  /**
8
8
  * Since we share pubkey2index, pubkey maybe added by other epoch transition but we don't have that validator in this state
9
9
  */
10
- export declare function isPubkeyKnown(state: CachedBeaconStateElectra, pubkey: Uint8Array): boolean;
10
+ export declare function isPubkeyKnown(state: CachedBeaconStateElectra | CachedBeaconStateGloas, pubkey: Uint8Array): boolean;
11
11
  /**
12
12
  * Since we share pubkey2index, validatorIndex maybe not null but we don't have that validator in this state
13
13
  */
14
- export declare function isValidatorKnown(state: CachedBeaconStateElectra, index: ValidatorIndex | null): index is ValidatorIndex;
14
+ export declare function isValidatorKnown(state: CachedBeaconStateElectra | CachedBeaconStateGloas, index: ValidatorIndex | null): index is ValidatorIndex;
15
15
  //# sourceMappingURL=electra.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"electra.d.ts","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AAGrD,wBAAgB,kCAAkC,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAE7F;AAED,wBAAgB,gCAAgC,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAI3F;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAczG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAkBrG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAE1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,cAAc,GAAG,IAAI,GAC3B,KAAK,IAAI,cAAc,CAEzB"}
1
+ {"version":3,"file":"electra.d.ts","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAI7E,wBAAgB,kCAAkC,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAI7F;AAED,wBAAgB,gCAAgC,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAI3F;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,KAAK,EAAE,cAAc,GACpB,IAAI,CAcN;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,KAAK,EAAE,cAAc,GACpB,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEnH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,KAAK,EAAE,cAAc,GAAG,IAAI,GAC3B,KAAK,IAAI,cAAc,CAEzB"}
@@ -2,8 +2,9 @@ import { COMPOUNDING_WITHDRAWAL_PREFIX, GENESIS_SLOT, MIN_ACTIVATION_BALANCE } f
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { G2_POINT_AT_INFINITY } from "../constants/constants.js";
4
4
  import { hasEth1WithdrawalCredential } from "./capella.js";
5
+ import { hasBuilderWithdrawalCredential } from "./gloas.js";
5
6
  export function hasCompoundingWithdrawalCredential(withdrawalCredentials) {
6
- return withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX;
7
+ return (withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX || hasBuilderWithdrawalCredential(withdrawalCredentials));
7
8
  }
8
9
  export function hasExecutionWithdrawalCredential(withdrawalCredentials) {
9
10
  return (hasCompoundingWithdrawalCredential(withdrawalCredentials) || hasEth1WithdrawalCredential(withdrawalCredentials));
@@ -1 +1 @@
1
- {"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,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,mFAAmF;IACnF,mFAAmF;IACnF,uEAAuE;IACvE,MAAM,wBAAwB,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAC9D,SAAS,CAAC,qBAAqB,EAC/B,CAAC,EACD,SAAS,CAAC,qBAAqB,CAAC,MAAM,CACvC,CAAC;IACF,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;IAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;IAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,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,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,MAAM,EAAE,aAAa;YACrB,gEAAgE;YAChE,SAAS,EAAE,oBAAoB;YAC/B,iEAAiE;YACjE,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAA+B,EAAE,MAAkB;IAC/E,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA+B,EAC/B,KAA4B;IAE5B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;AACzD,OAAO,EAAC,8BAA8B,EAAC,MAAM,YAAY,CAAC;AAE1D,MAAM,UAAU,kCAAkC,CAAC,qBAAiC;IAClF,OAAO,CACL,qBAAqB,CAAC,CAAC,CAAC,KAAK,6BAA6B,IAAI,8BAA8B,CAAC,qBAAqB,CAAC,CACpH,CAAC;AACJ,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,CAC1C,KAAwD,EACxD,KAAqB;IAErB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9C,mFAAmF;IACnF,mFAAmF;IACnF,uEAAuE;IACvE,MAAM,wBAAwB,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAC9D,SAAS,CAAC,qBAAqB,EAC/B,CAAC,EACD,SAAS,CAAC,qBAAqB,CAAC,MAAM,CACvC,CAAC;IACF,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;IAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;IAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAwD,EACxD,KAAqB;IAErB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,MAAM,EAAE,aAAa;YACrB,gEAAgE;YAChE,SAAS,EAAE,oBAAoB;YAC/B,iEAAiE;YACjE,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAwD,EAAE,MAAkB;IACxG,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAwD,EACxD,KAA4B;IAE5B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconState, Epoch, Gwei, Slot, SyncPeriod } from "@lodestar/types";
2
- import { CachedBeaconStateElectra } from "../types.js";
2
+ import { CachedBeaconStateElectra, CachedBeaconStateGloas } from "../types.js";
3
3
  /**
4
4
  * Return the epoch number at the given slot.
5
5
  */
@@ -23,8 +23,8 @@ export declare function computeEndSlotAtEpoch(epoch: Epoch): Slot;
23
23
  * Return the epoch at which an activation or exit triggered in ``epoch`` takes effect.
24
24
  */
25
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;
26
+ export declare function computeExitEpochAndUpdateChurn(state: CachedBeaconStateElectra | CachedBeaconStateGloas, exitBalance: Gwei): number;
27
+ export declare function computeConsolidationEpochAndUpdateChurn(state: CachedBeaconStateElectra | CachedBeaconStateGloas, consolidationBalance: Gwei): number;
28
28
  /**
29
29
  * Return the current epoch of the given state.
30
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"epoch.d.ts","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AAGrD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAEnE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE9D;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,IAAI,GAAG,MAAM,CAqBzG;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,wBAAwB,EAC/B,oBAAoB,EAAE,IAAI,GACzB,MAAM,CA0BR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,CAMxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAE9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAEjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEtD"}
1
+ {"version":3,"file":"epoch.d.ts","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAG7E;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAEnE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE9D;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,WAAW,EAAE,IAAI,GAChB,MAAM,CAqBR;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,oBAAoB,EAAE,IAAI,GACzB,MAAM,CA0BR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,CAMxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAE9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAEjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"epoch.js","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epoch.js","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,6 @@
1
1
  import { ForkName, ForkPostBellatrix, ForkPreGloas, ForkSeq } from "@lodestar/params";
2
- import { BeaconBlock, BeaconBlockBody, BlindedBeaconBlock, BlindedBeaconBlockBody, ExecutionPayload, ExecutionPayloadHeader, bellatrix, capella } from "@lodestar/types";
2
+ import { BeaconBlock, BeaconBlockBody, BlindedBeaconBlockBody, ExecutionPayload, ExecutionPayloadHeader, capella } from "@lodestar/types";
3
3
  import { BeaconStateAllForks, BeaconStateCapella, BeaconStateExecutions, CachedBeaconStateAllForks, CachedBeaconStateExecutions } from "../types.js";
4
- /**
5
- * Execution enabled = merge is done.
6
- * When (A) state has execution data OR (B) block has execution data
7
- */
8
- export declare function isExecutionEnabled(state: BeaconStateExecutions, block: BeaconBlock | BlindedBeaconBlock): boolean;
9
- /**
10
- * Merge block is the SINGLE block that transitions from POW to POS.
11
- * state has no execution data AND this block has execution data
12
- */
13
- export declare function isMergeTransitionBlock(state: BeaconStateExecutions, body: bellatrix.BeaconBlockBody): boolean;
14
- /**
15
- * Merge is complete when the state includes execution layer data:
16
- * state.latestExecutionPayloadHeader NOT EMPTY
17
- */
18
- export declare function isMergeTransitionComplete(state: BeaconStateExecutions): boolean;
19
4
  /** Type guard for bellatrix.BeaconState */
20
5
  export declare function isExecutionStateType(state: BeaconStateAllForks): state is BeaconStateExecutions;
21
6
  /** Type guard for capella.BeaconState */
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,OAAO,EAKR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EAEnB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,WAAW,GAAG,kBAAkB,GAAG,OAAO,CAoBjH;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,CAAC,eAAe,GAAG,OAAO,CAK7G;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAc/E;AAED,2CAA2C;AAC3C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,qBAAqB,CAE/F;AAED,yCAAyC;AACzC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,kBAAkB,CAK1F;AAED,iDAAiD;AACjD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,yBAAyB,GAAG,KAAK,IAAI,2BAA2B,CAEjH;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,eAAe,GACzB,SAAS,IAAI,eAAe,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB,GAAG,sBAAsB,CAErG;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,eAAe,GAAG,sBAAsB,GAC7C,gBAAgB,GAAG,sBAAsB,CAU3C;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,GACjD,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAK1F;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,CAAC,6BAA6B,GAC7C,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAE3C;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,CAuChH"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EAEtB,OAAO,EAIR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,2CAA2C;AAC3C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,qBAAqB,CAE/F;AAED,yCAAyC;AACzC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,kBAAkB,CAK1F;AAED,iDAAiD;AACjD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,yBAAyB,GAAG,KAAK,IAAI,2BAA2B,CAEjH;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,eAAe,GACzB,SAAS,IAAI,eAAe,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB,GAAG,sBAAsB,CAErG;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,eAAe,GAAG,sBAAsB,GAC7C,gBAAgB,GAAG,sBAAsB,CAU3C;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,GACjD,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAK1F;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,CAAC,6BAA6B,GAC7C,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAE3C;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,CAuChH"}
@@ -1,48 +1,5 @@
1
1
  import { ForkSeq } from "@lodestar/params";
2
- import { isBlindedBeaconBlockBody, isExecutionPayload, ssz, } from "@lodestar/types";
3
- /**
4
- * Execution enabled = merge is done.
5
- * When (A) state has execution data OR (B) block has execution data
6
- */
7
- export function isExecutionEnabled(state, block) {
8
- if (isMergeTransitionComplete(state)) {
9
- return true;
10
- }
11
- // Throws if not post-bellatrix block. A fork-guard in isExecutionEnabled() prevents this from happening
12
- const payload = getFullOrBlindedPayload(block);
13
- // Note: spec says to check all payload is zero-ed. However a state-root cannot be zero for any non-empty payload
14
- // TODO: Consider comparing with the payload root if this assumption is not correct.
15
- // return !byteArrayEquals(payload.stateRoot, ZERO_HASH);
16
- // UPDATE: stateRoot comparision should have been enough with zero hash, but spec tests were failing
17
- // Revisit this later to fix specs and make this efficient
18
- return isExecutionPayload(payload)
19
- ? !ssz.bellatrix.ExecutionPayload.equals(payload, ssz.bellatrix.ExecutionPayload.defaultValue())
20
- : !ssz.bellatrix.ExecutionPayloadHeader.equals(state.latestExecutionPayloadHeader,
21
- // TODO: Performance
22
- ssz.bellatrix.ExecutionPayloadHeader.defaultValue());
23
- }
24
- /**
25
- * Merge block is the SINGLE block that transitions from POW to POS.
26
- * state has no execution data AND this block has execution data
27
- */
28
- export function isMergeTransitionBlock(state, body) {
29
- return (!isMergeTransitionComplete(state) &&
30
- !ssz.bellatrix.ExecutionPayload.equals(body.executionPayload, ssz.bellatrix.ExecutionPayload.defaultValue()));
31
- }
32
- /**
33
- * Merge is complete when the state includes execution layer data:
34
- * state.latestExecutionPayloadHeader NOT EMPTY
35
- */
36
- export function isMergeTransitionComplete(state) {
37
- if (!isCapellaStateType(state)) {
38
- return !ssz.bellatrix.ExecutionPayloadHeader.equals(state.latestExecutionPayloadHeader,
39
- // TODO: Performance
40
- ssz.bellatrix.ExecutionPayloadHeader.defaultValue());
41
- }
42
- return !ssz.capella.ExecutionPayloadHeader.equals(state.latestExecutionPayloadHeader,
43
- // TODO: Performance
44
- ssz.capella.ExecutionPayloadHeader.defaultValue());
45
- }
2
+ import { isBlindedBeaconBlockBody, ssz, } from "@lodestar/types";
46
3
  /** Type guard for bellatrix.BeaconState */
47
4
  export function isExecutionStateType(state) {
48
5
  return state.latestExecutionPayloadHeader !== undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { gloas } from "@lodestar/types";
2
+ import { AttestationData } from "@lodestar/types/phase0";
3
+ import { CachedBeaconStateGloas } from "../types.ts";
4
+ import { RootCache } from "./rootCache.ts";
5
+ export declare function hasBuilderWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
6
+ export declare function getBuilderPaymentQuorumThreshold(state: CachedBeaconStateGloas): number;
7
+ export declare function isBuilderPaymentWithdrawable(state: CachedBeaconStateGloas, withdrawal: gloas.BuilderPendingWithdrawal): boolean;
8
+ export declare function isAttestationSameSlot(state: CachedBeaconStateGloas, data: AttestationData): boolean;
9
+ export declare function isAttestationSameSlotRootCache(rootCache: RootCache, data: AttestationData): boolean;
10
+ export declare function isParentBlockFull(state: CachedBeaconStateGloas): boolean;
11
+ //# sourceMappingURL=gloas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,wBAAgB,8BAA8B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAEzF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,sBAAsB,EAC7B,UAAU,EAAE,KAAK,CAAC,wBAAwB,GACzC,OAAO,CAKT;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAExE"}
@@ -0,0 +1,35 @@
1
+ import { byteArrayEquals } from "@chainsafe/ssz";
2
+ import { BUILDER_PAYMENT_THRESHOLD_DENOMINATOR, BUILDER_PAYMENT_THRESHOLD_NUMERATOR, BUILDER_WITHDRAWAL_PREFIX, EFFECTIVE_BALANCE_INCREMENT, SLOTS_PER_EPOCH, } from "@lodestar/params";
3
+ import { getBlockRootAtSlot } from "./blockRoot.js";
4
+ import { computeEpochAtSlot } from "./epoch.js";
5
+ export function hasBuilderWithdrawalCredential(withdrawalCredentials) {
6
+ return withdrawalCredentials[0] === BUILDER_WITHDRAWAL_PREFIX;
7
+ }
8
+ export function getBuilderPaymentQuorumThreshold(state) {
9
+ const quorum = Math.floor((state.epochCtx.totalActiveBalanceIncrements * EFFECTIVE_BALANCE_INCREMENT) / SLOTS_PER_EPOCH) *
10
+ BUILDER_PAYMENT_THRESHOLD_NUMERATOR;
11
+ return Math.floor(quorum / BUILDER_PAYMENT_THRESHOLD_DENOMINATOR);
12
+ }
13
+ export function isBuilderPaymentWithdrawable(state, withdrawal) {
14
+ const builder = state.validators.getReadonly(withdrawal.builderIndex);
15
+ const currentEpoch = computeEpochAtSlot(state.slot);
16
+ return builder.withdrawableEpoch >= currentEpoch || !builder.slashed;
17
+ }
18
+ export function isAttestationSameSlot(state, data) {
19
+ if (data.slot === 0)
20
+ return true;
21
+ const isMatchingBlockRoot = byteArrayEquals(data.beaconBlockRoot, getBlockRootAtSlot(state, data.slot));
22
+ const isCurrentBlockRoot = !byteArrayEquals(data.beaconBlockRoot, getBlockRootAtSlot(state, data.slot - 1));
23
+ return isMatchingBlockRoot && isCurrentBlockRoot;
24
+ }
25
+ export function isAttestationSameSlotRootCache(rootCache, data) {
26
+ if (data.slot === 0)
27
+ return true;
28
+ const isMatchingBlockRoot = byteArrayEquals(data.beaconBlockRoot, rootCache.getBlockRootAtSlot(data.slot));
29
+ const isCurrentBlockRoot = !byteArrayEquals(data.beaconBlockRoot, rootCache.getBlockRootAtSlot(data.slot - 1));
30
+ return isMatchingBlockRoot && isCurrentBlockRoot;
31
+ }
32
+ export function isParentBlockFull(state) {
33
+ return byteArrayEquals(state.latestExecutionPayloadBid.blockHash, state.latestBlockHash);
34
+ }
35
+ //# sourceMappingURL=gloas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,qCAAqC,EACrC,mCAAmC,EACnC,yBAAyB,EACzB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAG9C,MAAM,UAAU,8BAA8B,CAAC,qBAAiC;IAC9E,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAK,yBAAyB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAA6B;IAC5E,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,4BAA4B,GAAG,2BAA2B,CAAC,GAAG,eAAe,CAAC;QACzG,mCAAmC,CAAC;IAEtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,qCAAqC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAA6B,EAC7B,UAA0C;IAE1C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpD,OAAO,OAAO,CAAC,iBAAiB,IAAI,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA6B,EAAE,IAAqB;IACxF,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxG,MAAM,kBAAkB,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5G,OAAO,mBAAmB,IAAI,kBAAkB,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,SAAoB,EAAE,IAAqB;IACxF,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3G,MAAM,kBAAkB,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAE/G,OAAO,mBAAmB,IAAI,kBAAkB,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,OAAO,eAAe,CAAC,KAAK,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;AAC3F,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { ForkSeq } from "@lodestar/params";
2
2
  import { Bytes32, DomainType, Epoch, ValidatorIndex } from "@lodestar/types";
3
3
  import { EffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
4
- import { BeaconStateAllForks, CachedBeaconStateAllForks } from "../types.js";
4
+ import { BeaconStateAllForks, BeaconStateGloas, CachedBeaconStateAllForks } from "../types.js";
5
5
  /**
6
6
  * Compute proposer indices for an epoch
7
7
  */
@@ -46,6 +46,10 @@ export declare function naiveGetNextSyncCommitteeIndices(fork: ForkSeq, state: B
46
46
  * In the worse case scenario, this could be >1000x speedup according to the perf test.
47
47
  */
48
48
  export declare function getNextSyncCommitteeIndices(fork: ForkSeq, state: BeaconStateAllForks, activeValidatorIndices: Uint32Array, effectiveBalanceIncrements: EffectiveBalanceIncrements): Uint32Array;
49
+ export declare function naiveGetPayloadTimlinessCommitteeIndices(state: BeaconStateGloas, shuffling: {
50
+ committees: Uint32Array[][];
51
+ }, effectiveBalanceIncrements: EffectiveBalanceIncrements, epoch: Epoch): ValidatorIndex[][];
52
+ export declare function naiveComputePayloadTimelinessCommitteeIndices(effectiveBalanceIncrements: EffectiveBalanceIncrements, indices: ArrayLike<ValidatorIndex>, seed: Uint8Array): ValidatorIndex[];
49
53
  /**
50
54
  * Return the shuffled validator index corresponding to ``seed`` (and ``index_count``).
51
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,OAAO,EAOR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAG3E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACrD,0BAA0B,EAAE,0BAA0B,GACrD,MAAM,EAAE,CAeV;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAwChB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,UAAU,GACf,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,SAAS,EAAE;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACvC,KAAK,EAAE,KAAK,GACX,cAAc,EAAE,CAgBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,SAAS,CAAC,cAAc,CAAC,EACjD,0BAA0B,EAAE,0BAA0B,GACrD,cAAc,EAAE,CAkDlB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,WAAW,EACnC,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,CAwBb;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAiB7F;AAED,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAExD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,sBAAsB,CA8DnG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE9E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAIpG"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,OAAO,EAQR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,gBAAgB,EAAE,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAG7F;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACrD,0BAA0B,EAAE,0BAA0B,GACrD,MAAM,EAAE,CAeV;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAwChB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,UAAU,GACf,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,SAAS,EAAE;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACvC,KAAK,EAAE,KAAK,GACX,cAAc,EAAE,CAgBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,SAAS,CAAC,cAAc,CAAC,EACjD,0BAA0B,EAAE,0BAA0B,GACrD,cAAc,EAAE,CAkDlB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,WAAW,EACnC,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,CAwBb;AAED,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE;IAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAA;CAAC,EACxC,0BAA0B,EAAE,0BAA0B,EACtD,KAAK,EAAE,KAAK,GACX,cAAc,EAAE,EAAE,CAgBpB;AAED,wBAAgB,6CAA6C,CAC3D,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,EAAE,CAyBlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAiB7F;AAED,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAExD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,sBAAsB,CA8DnG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE9E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAIpG"}
package/lib/util/seed.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { digest } from "@chainsafe/as-sha256";
2
2
  import { computeProposerIndex as nativeComputeProposerIndex, computeSyncCommitteeIndices as nativeComputeSyncCommitteeIndices, } from "@chainsafe/swap-or-not-shuffle";
3
- import { DOMAIN_BEACON_PROPOSER, DOMAIN_SYNC_COMMITTEE, EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, MAX_EFFECTIVE_BALANCE, MAX_EFFECTIVE_BALANCE_ELECTRA, MIN_SEED_LOOKAHEAD, SHUFFLE_ROUND_COUNT, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SIZE, } from "@lodestar/params";
3
+ import { DOMAIN_BEACON_PROPOSER, DOMAIN_PTC_ATTESTER, DOMAIN_SYNC_COMMITTEE, EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, MAX_EFFECTIVE_BALANCE, MAX_EFFECTIVE_BALANCE_ELECTRA, MIN_SEED_LOOKAHEAD, PTC_SIZE, SHUFFLE_ROUND_COUNT, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SIZE, } from "@lodestar/params";
4
4
  import { assert, bytesToBigInt, bytesToInt, intToBytes } from "@lodestar/utils";
5
5
  import { computeEpochAtSlot, computeStartSlotAtEpoch } from "./epoch.js";
6
6
  /**
@@ -163,6 +163,38 @@ export function getNextSyncCommitteeIndices(fork, state, activeValidatorIndices,
163
163
  const seed = getSeed(state, epoch, DOMAIN_SYNC_COMMITTEE);
164
164
  return nativeComputeSyncCommitteeIndices(seed, activeValidatorIndices, effectiveBalanceIncrements, randByteCount, SYNC_COMMITTEE_SIZE, maxEffectiveBalance, EFFECTIVE_BALANCE_INCREMENT, SHUFFLE_ROUND_COUNT);
165
165
  }
166
+ export function naiveGetPayloadTimlinessCommitteeIndices(state, shuffling, effectiveBalanceIncrements, epoch) {
167
+ const epochSeed = getSeed(state, epoch, DOMAIN_PTC_ATTESTER);
168
+ const startSlot = computeStartSlotAtEpoch(epoch);
169
+ const committeeIndices = [];
170
+ for (let slot = startSlot; slot < startSlot + SLOTS_PER_EPOCH; slot++) {
171
+ const slotCommittees = shuffling.committees[slot % SLOTS_PER_EPOCH];
172
+ const indices = naiveComputePayloadTimelinessCommitteeIndices(effectiveBalanceIncrements, slotCommittees.flatMap((c) => Array.from(c)), digest(Buffer.concat([epochSeed, intToBytes(slot, 8)])));
173
+ committeeIndices.push(indices);
174
+ }
175
+ return committeeIndices;
176
+ }
177
+ export function naiveComputePayloadTimelinessCommitteeIndices(effectiveBalanceIncrements, indices, seed) {
178
+ if (indices.length === 0) {
179
+ throw Error("Validator indices must not be empty");
180
+ }
181
+ const result = [];
182
+ const MAX_RANDOM_VALUE = 2 ** 16 - 1;
183
+ const MAX_EFFECTIVE_BALANCE_INCREMENT = MAX_EFFECTIVE_BALANCE_ELECTRA / EFFECTIVE_BALANCE_INCREMENT;
184
+ let i = 0;
185
+ while (result.length < PTC_SIZE) {
186
+ const candidateIndex = indices[i % indices.length];
187
+ const randomBytes = digest(Buffer.concat([seed, intToBytes(Math.floor(i / 16), 8, "le")]));
188
+ const offset = (i % 16) * 2;
189
+ const randomValue = bytesToInt(randomBytes.subarray(offset, offset + 2));
190
+ const effectiveBalanceIncrement = effectiveBalanceIncrements[candidateIndex];
191
+ if (effectiveBalanceIncrement * MAX_RANDOM_VALUE >= MAX_EFFECTIVE_BALANCE_INCREMENT * randomValue) {
192
+ result.push(candidateIndex);
193
+ }
194
+ i += 1;
195
+ }
196
+ return result;
197
+ }
166
198
  /**
167
199
  * Return the shuffled validator index corresponding to ``seed`` (and ``index_count``).
168
200
  *