@lodestar/state-transition 1.39.1 → 1.40.0-dev.059f489b0f

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 (252) hide show
  1. package/lib/block/index.d.ts +1 -0
  2. package/lib/block/index.d.ts.map +1 -1
  3. package/lib/block/index.js +1 -0
  4. package/lib/block/index.js.map +1 -1
  5. package/lib/block/isValidIndexedAttestation.d.ts +4 -5
  6. package/lib/block/isValidIndexedAttestation.d.ts.map +1 -1
  7. package/lib/block/isValidIndexedAttestation.js +9 -10
  8. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  9. package/lib/block/isValidIndexedPayloadAttestation.d.ts.map +1 -1
  10. package/lib/block/isValidIndexedPayloadAttestation.js +1 -1
  11. package/lib/block/isValidIndexedPayloadAttestation.js.map +1 -1
  12. package/lib/block/processAttestationPhase0.d.ts.map +1 -1
  13. package/lib/block/processAttestationPhase0.js +1 -1
  14. package/lib/block/processAttestationPhase0.js.map +1 -1
  15. package/lib/block/processAttestationsAltair.d.ts.map +1 -1
  16. package/lib/block/processAttestationsAltair.js +3 -4
  17. package/lib/block/processAttestationsAltair.js.map +1 -1
  18. package/lib/block/processAttesterSlashing.d.ts +3 -2
  19. package/lib/block/processAttesterSlashing.d.ts.map +1 -1
  20. package/lib/block/processAttesterSlashing.js +3 -3
  21. package/lib/block/processAttesterSlashing.js.map +1 -1
  22. package/lib/block/processBlockHeader.d.ts.map +1 -1
  23. package/lib/block/processBlockHeader.js +1 -2
  24. package/lib/block/processBlockHeader.js.map +1 -1
  25. package/lib/block/processBlsToExecutionChange.d.ts +3 -1
  26. package/lib/block/processBlsToExecutionChange.d.ts.map +1 -1
  27. package/lib/block/processBlsToExecutionChange.js +8 -13
  28. package/lib/block/processBlsToExecutionChange.js.map +1 -1
  29. package/lib/block/processConsolidationRequest.d.ts +1 -2
  30. package/lib/block/processConsolidationRequest.d.ts.map +1 -1
  31. package/lib/block/processConsolidationRequest.js +5 -4
  32. package/lib/block/processConsolidationRequest.js.map +1 -1
  33. package/lib/block/processDepositRequest.d.ts +8 -2
  34. package/lib/block/processDepositRequest.d.ts.map +1 -1
  35. package/lib/block/processDepositRequest.js +81 -8
  36. package/lib/block/processDepositRequest.js.map +1 -1
  37. package/lib/block/processExecutionPayload.d.ts.map +1 -1
  38. package/lib/block/processExecutionPayload.js +1 -2
  39. package/lib/block/processExecutionPayload.js.map +1 -1
  40. package/lib/block/processExecutionPayloadBid.d.ts.map +1 -1
  41. package/lib/block/processExecutionPayloadBid.js +17 -31
  42. package/lib/block/processExecutionPayloadBid.js.map +1 -1
  43. package/lib/block/processExecutionPayloadEnvelope.d.ts.map +1 -1
  44. package/lib/block/processExecutionPayloadEnvelope.js +27 -27
  45. package/lib/block/processExecutionPayloadEnvelope.js.map +1 -1
  46. package/lib/block/processOperations.js +2 -2
  47. package/lib/block/processOperations.js.map +1 -1
  48. package/lib/block/processPayloadAttestation.d.ts.map +1 -1
  49. package/lib/block/processPayloadAttestation.js +1 -1
  50. package/lib/block/processPayloadAttestation.js.map +1 -1
  51. package/lib/block/processProposerSlashing.d.ts +5 -2
  52. package/lib/block/processProposerSlashing.d.ts.map +1 -1
  53. package/lib/block/processProposerSlashing.js +8 -6
  54. package/lib/block/processProposerSlashing.js.map +1 -1
  55. package/lib/block/processSyncCommittee.d.ts +1 -2
  56. package/lib/block/processSyncCommittee.d.ts.map +1 -1
  57. package/lib/block/processSyncCommittee.js +6 -6
  58. package/lib/block/processSyncCommittee.js.map +1 -1
  59. package/lib/block/processVoluntaryExit.d.ts +1 -1
  60. package/lib/block/processVoluntaryExit.d.ts.map +1 -1
  61. package/lib/block/processVoluntaryExit.js +45 -3
  62. package/lib/block/processVoluntaryExit.js.map +1 -1
  63. package/lib/block/processWithdrawalRequest.js +1 -1
  64. package/lib/block/processWithdrawalRequest.js.map +1 -1
  65. package/lib/block/processWithdrawals.d.ts +1 -0
  66. package/lib/block/processWithdrawals.d.ts.map +1 -1
  67. package/lib/block/processWithdrawals.js +122 -68
  68. package/lib/block/processWithdrawals.js.map +1 -1
  69. package/lib/cache/epochCache.d.ts +8 -28
  70. package/lib/cache/epochCache.d.ts.map +1 -1
  71. package/lib/cache/epochCache.js +40 -180
  72. package/lib/cache/epochCache.js.map +1 -1
  73. package/lib/cache/epochTransitionCache.d.ts +5 -12
  74. package/lib/cache/epochTransitionCache.d.ts.map +1 -1
  75. package/lib/cache/epochTransitionCache.js +4 -14
  76. package/lib/cache/epochTransitionCache.js.map +1 -1
  77. package/lib/cache/stateCache.d.ts.map +1 -1
  78. package/lib/cache/stateCache.js +1 -2
  79. package/lib/cache/stateCache.js.map +1 -1
  80. package/lib/epoch/processBuilderPendingPayments.d.ts.map +1 -1
  81. package/lib/epoch/processBuilderPendingPayments.js +1 -4
  82. package/lib/epoch/processBuilderPendingPayments.js.map +1 -1
  83. package/lib/epoch/processPendingAttestations.d.ts.map +1 -1
  84. package/lib/epoch/processPendingAttestations.js +1 -1
  85. package/lib/epoch/processPendingAttestations.js.map +1 -1
  86. package/lib/epoch/processProposerLookahead.d.ts.map +1 -1
  87. package/lib/epoch/processProposerLookahead.js +3 -6
  88. package/lib/epoch/processProposerLookahead.js.map +1 -1
  89. package/lib/index.d.ts +1 -1
  90. package/lib/index.d.ts.map +1 -1
  91. package/lib/index.js +1 -1
  92. package/lib/index.js.map +1 -1
  93. package/lib/rewards/blockRewards.d.ts +2 -1
  94. package/lib/rewards/blockRewards.d.ts.map +1 -1
  95. package/lib/rewards/blockRewards.js +3 -2
  96. package/lib/rewards/blockRewards.js.map +1 -1
  97. package/lib/rewards/syncCommitteeRewards.d.ts.map +1 -1
  98. package/lib/rewards/syncCommitteeRewards.js +10 -11
  99. package/lib/rewards/syncCommitteeRewards.js.map +1 -1
  100. package/lib/signatureSets/attesterSlashings.d.ts +3 -4
  101. package/lib/signatureSets/attesterSlashings.d.ts.map +1 -1
  102. package/lib/signatureSets/attesterSlashings.js +6 -6
  103. package/lib/signatureSets/attesterSlashings.js.map +1 -1
  104. package/lib/signatureSets/blsToExecutionChange.d.ts +4 -5
  105. package/lib/signatureSets/blsToExecutionChange.d.ts.map +1 -1
  106. package/lib/signatureSets/blsToExecutionChange.js +2 -2
  107. package/lib/signatureSets/blsToExecutionChange.js.map +1 -1
  108. package/lib/signatureSets/executionPayloadBid.d.ts +4 -0
  109. package/lib/signatureSets/executionPayloadBid.d.ts.map +1 -0
  110. package/lib/signatureSets/executionPayloadBid.js +8 -0
  111. package/lib/signatureSets/executionPayloadBid.js.map +1 -0
  112. package/lib/signatureSets/executionPayloadEnvelope.d.ts +4 -0
  113. package/lib/signatureSets/executionPayloadEnvelope.d.ts.map +1 -0
  114. package/lib/signatureSets/executionPayloadEnvelope.js +8 -0
  115. package/lib/signatureSets/executionPayloadEnvelope.js.map +1 -0
  116. package/lib/signatureSets/index.d.ts +3 -2
  117. package/lib/signatureSets/index.d.ts.map +1 -1
  118. package/lib/signatureSets/index.js +10 -8
  119. package/lib/signatureSets/index.js.map +1 -1
  120. package/lib/signatureSets/indexedAttestation.d.ts +3 -4
  121. package/lib/signatureSets/indexedAttestation.d.ts.map +1 -1
  122. package/lib/signatureSets/indexedAttestation.js +6 -6
  123. package/lib/signatureSets/indexedAttestation.js.map +1 -1
  124. package/lib/signatureSets/indexedPayloadAttestation.d.ts +5 -4
  125. package/lib/signatureSets/indexedPayloadAttestation.d.ts.map +1 -1
  126. package/lib/signatureSets/indexedPayloadAttestation.js +3 -3
  127. package/lib/signatureSets/indexedPayloadAttestation.js.map +1 -1
  128. package/lib/signatureSets/proposer.d.ts +3 -3
  129. package/lib/signatureSets/proposer.d.ts.map +1 -1
  130. package/lib/signatureSets/proposer.js +12 -12
  131. package/lib/signatureSets/proposer.js.map +1 -1
  132. package/lib/signatureSets/proposerSlashings.d.ts +2 -3
  133. package/lib/signatureSets/proposerSlashings.d.ts.map +1 -1
  134. package/lib/signatureSets/proposerSlashings.js +6 -6
  135. package/lib/signatureSets/proposerSlashings.js.map +1 -1
  136. package/lib/signatureSets/randao.d.ts +1 -1
  137. package/lib/signatureSets/randao.d.ts.map +1 -1
  138. package/lib/signatureSets/randao.js +4 -4
  139. package/lib/signatureSets/randao.js.map +1 -1
  140. package/lib/signatureSets/voluntaryExits.d.ts +2 -2
  141. package/lib/signatureSets/voluntaryExits.d.ts.map +1 -1
  142. package/lib/signatureSets/voluntaryExits.js +6 -6
  143. package/lib/signatureSets/voluntaryExits.js.map +1 -1
  144. package/lib/slot/index.d.ts.map +1 -1
  145. package/lib/slot/index.js +1 -1
  146. package/lib/slot/index.js.map +1 -1
  147. package/lib/types.d.ts +1 -1
  148. package/lib/types.d.ts.map +1 -1
  149. package/lib/util/electra.d.ts.map +1 -1
  150. package/lib/util/electra.js +1 -2
  151. package/lib/util/electra.js.map +1 -1
  152. package/lib/util/epochShuffling.d.ts +1 -34
  153. package/lib/util/epochShuffling.d.ts.map +1 -1
  154. package/lib/util/epochShuffling.js +1 -1
  155. package/lib/util/epochShuffling.js.map +1 -1
  156. package/lib/util/gloas.d.ts +46 -5
  157. package/lib/util/gloas.d.ts.map +1 -1
  158. package/lib/util/gloas.js +92 -6
  159. package/lib/util/gloas.js.map +1 -1
  160. package/lib/util/index.d.ts +2 -2
  161. package/lib/util/index.d.ts.map +1 -1
  162. package/lib/util/index.js +2 -2
  163. package/lib/util/index.js.map +1 -1
  164. package/lib/util/interop.js +1 -1
  165. package/lib/util/interop.js.map +1 -1
  166. package/lib/util/loadState/findModifiedInactivityScores.d.ts +1 -1
  167. package/lib/util/loadState/findModifiedInactivityScores.d.ts.map +1 -1
  168. package/lib/util/loadState/findModifiedInactivityScores.js +3 -2
  169. package/lib/util/loadState/findModifiedInactivityScores.js.map +1 -1
  170. package/lib/util/loadState/findModifiedValidators.d.ts +2 -2
  171. package/lib/util/loadState/findModifiedValidators.d.ts.map +1 -1
  172. package/lib/util/loadState/findModifiedValidators.js +4 -3
  173. package/lib/util/loadState/findModifiedValidators.js.map +1 -1
  174. package/lib/util/loadState/loadValidator.d.ts.map +1 -1
  175. package/lib/util/loadState/loadValidator.js +3 -2
  176. package/lib/util/loadState/loadValidator.js.map +1 -1
  177. package/lib/util/shuffling.d.ts +58 -0
  178. package/lib/util/shuffling.d.ts.map +1 -0
  179. package/lib/util/shuffling.js +175 -0
  180. package/lib/util/shuffling.js.map +1 -0
  181. package/lib/util/signatureSets.d.ts +38 -5
  182. package/lib/util/signatureSets.d.ts.map +1 -1
  183. package/lib/util/signatureSets.js +48 -6
  184. package/lib/util/signatureSets.js.map +1 -1
  185. package/lib/util/validator.d.ts +6 -1
  186. package/lib/util/validator.d.ts.map +1 -1
  187. package/lib/util/validator.js +26 -16
  188. package/lib/util/validator.js.map +1 -1
  189. package/package.json +8 -8
  190. package/src/block/index.ts +1 -0
  191. package/src/block/isValidIndexedAttestation.ts +18 -12
  192. package/src/block/isValidIndexedPayloadAttestation.ts +4 -1
  193. package/src/block/processAttestationPhase0.ts +2 -1
  194. package/src/block/processAttestationsAltair.ts +3 -10
  195. package/src/block/processAttesterSlashing.ts +16 -4
  196. package/src/block/processBlockHeader.ts +1 -2
  197. package/src/block/processBlsToExecutionChange.ts +14 -16
  198. package/src/block/processConsolidationRequest.ts +5 -5
  199. package/src/block/processDepositRequest.ts +101 -8
  200. package/src/block/processExecutionPayload.ts +1 -2
  201. package/src/block/processExecutionPayloadBid.ts +21 -44
  202. package/src/block/processExecutionPayloadEnvelope.ts +35 -32
  203. package/src/block/processOperations.ts +2 -2
  204. package/src/block/processPayloadAttestation.ts +1 -1
  205. package/src/block/processProposerSlashing.ts +22 -12
  206. package/src/block/processSyncCommittee.ts +4 -7
  207. package/src/block/processVoluntaryExit.ts +60 -5
  208. package/src/block/processWithdrawalRequest.ts +1 -1
  209. package/src/block/processWithdrawals.ts +169 -72
  210. package/src/cache/epochCache.ts +52 -214
  211. package/src/cache/epochTransitionCache.ts +9 -34
  212. package/src/cache/stateCache.ts +1 -2
  213. package/src/epoch/processBuilderPendingPayments.ts +1 -5
  214. package/src/epoch/processPendingAttestations.ts +1 -1
  215. package/src/epoch/processProposerLookahead.ts +3 -7
  216. package/src/index.ts +0 -2
  217. package/src/rewards/blockRewards.ts +6 -3
  218. package/src/rewards/syncCommitteeRewards.ts +10 -13
  219. package/src/signatureSets/attesterSlashings.ts +3 -7
  220. package/src/signatureSets/blsToExecutionChange.ts +5 -6
  221. package/src/signatureSets/executionPayloadBid.ts +14 -0
  222. package/src/signatureSets/executionPayloadEnvelope.ts +13 -0
  223. package/src/signatureSets/index.ts +8 -9
  224. package/src/signatureSets/indexedAttestation.ts +2 -7
  225. package/src/signatureSets/indexedPayloadAttestation.ts +9 -7
  226. package/src/signatureSets/proposer.ts +8 -12
  227. package/src/signatureSets/proposerSlashings.ts +4 -7
  228. package/src/signatureSets/randao.ts +4 -8
  229. package/src/signatureSets/voluntaryExits.ts +5 -10
  230. package/src/slot/index.ts +1 -1
  231. package/src/types.ts +1 -0
  232. package/src/util/electra.ts +1 -4
  233. package/src/util/epochShuffling.ts +2 -43
  234. package/src/util/gloas.ts +117 -11
  235. package/src/util/index.ts +2 -2
  236. package/src/util/interop.ts +1 -1
  237. package/src/util/loadState/findModifiedInactivityScores.ts +4 -2
  238. package/src/util/loadState/findModifiedValidators.ts +4 -3
  239. package/src/util/loadState/loadValidator.ts +3 -2
  240. package/src/util/shuffling.ts +234 -0
  241. package/src/util/signatureSets.ts +84 -8
  242. package/src/util/validator.ts +31 -16
  243. package/lib/util/calculateCommitteeAssignments.d.ts +0 -12
  244. package/lib/util/calculateCommitteeAssignments.d.ts.map +0 -1
  245. package/lib/util/calculateCommitteeAssignments.js +0 -26
  246. package/lib/util/calculateCommitteeAssignments.js.map +0 -1
  247. package/lib/util/shufflingDecisionRoot.d.ts +0 -20
  248. package/lib/util/shufflingDecisionRoot.d.ts.map +0 -1
  249. package/lib/util/shufflingDecisionRoot.js +0 -76
  250. package/lib/util/shufflingDecisionRoot.js.map +0 -1
  251. package/src/util/calculateCommitteeAssignments.ts +0 -43
  252. package/src/util/shufflingDecisionRoot.ts +0 -81
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAS/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,2BAA2B,EAAE,kBAAkB,EAC/C,WAAW,EAAE,iBAAiB,EAC9B,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,IAAI,CAAC,EAAE;IACL,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACA,aAAa,EAAE,CA0CjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAS/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,2BAA2B,EAAE,kBAAkB,EAC/C,WAAW,EAAE,iBAAiB,EAC9B,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,IAAI,CAAC,EAAE;IACL,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACA,aAAa,EAAE,CAyCjB"}
@@ -9,6 +9,8 @@ import { getRandaoRevealSignatureSet } from "./randao.js";
9
9
  import { getVoluntaryExitsSignatureSets } from "./voluntaryExits.js";
10
10
  export * from "./attesterSlashings.js";
11
11
  export * from "./blsToExecutionChange.js";
12
+ export * from "./executionPayloadBid.js";
13
+ export * from "./executionPayloadEnvelope.js";
12
14
  export * from "./indexedAttestation.js";
13
15
  export * from "./indexedPayloadAttestation.js";
14
16
  export * from "./proposer.js";
@@ -19,22 +21,22 @@ export * from "./voluntaryExits.js";
19
21
  * Includes all signatures on the block (except the deposit signatures) for verification.
20
22
  * Deposits are not included because they can legally have invalid signatures.
21
23
  */
22
- export function getBlockSignatureSets(config, index2pubkey, currentSyncCommitteeIndexed, signedBlock, indexedAttestations, opts) {
24
+ export function getBlockSignatureSets(config, currentSyncCommitteeIndexed, signedBlock, indexedAttestations, opts) {
23
25
  // fork based validations
24
26
  const fork = config.getForkSeq(signedBlock.message.slot);
25
27
  const signatureSets = [
26
- getRandaoRevealSignatureSet(config, index2pubkey, signedBlock.message),
27
- ...getProposerSlashingsSignatureSets(config, index2pubkey, signedBlock),
28
- ...getAttesterSlashingsSignatureSets(config, index2pubkey, signedBlock),
29
- ...getAttestationsSignatureSets(config, index2pubkey, signedBlock, indexedAttestations),
30
- ...getVoluntaryExitsSignatureSets(config, index2pubkey, signedBlock),
28
+ getRandaoRevealSignatureSet(config, signedBlock.message),
29
+ ...getProposerSlashingsSignatureSets(config, signedBlock),
30
+ ...getAttesterSlashingsSignatureSets(config, signedBlock),
31
+ ...getAttestationsSignatureSets(config, signedBlock, indexedAttestations),
32
+ ...getVoluntaryExitsSignatureSets(config, signedBlock),
31
33
  ];
32
34
  if (!opts?.skipProposerSignature) {
33
- signatureSets.push(getBlockProposerSignatureSet(config, index2pubkey, signedBlock));
35
+ signatureSets.push(getBlockProposerSignatureSet(config, signedBlock));
34
36
  }
35
37
  // Only after altair fork, validate tSyncCommitteeSignature
36
38
  if (fork >= ForkSeq.altair) {
37
- const syncCommitteeSignatureSet = getSyncCommitteeSignatureSet(config, index2pubkey, currentSyncCommitteeIndexed, signedBlock.message);
39
+ const syncCommitteeSignatureSet = getSyncCommitteeSignatureSet(config, currentSyncCommitteeIndexed, signedBlock.message);
38
40
  // There may be no participants in this syncCommitteeSignature, so it must not be validated
39
41
  if (syncCommitteeSignatureSet) {
40
42
  signatureSets.push(syncCommitteeSignatureSet);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAI9E,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,oCAAoC,EAAC,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,qBAAqB,CAAC;AAEnE,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAoB,EACpB,YAA+B,EAC/B,2BAA+C,EAC/C,WAA8B,EAC9B,mBAAyC,EACzC,IAGC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG;QACpB,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC;QACtE,GAAG,iCAAiC,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC;QACvE,GAAG,iCAAiC,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC;QACvE,GAAG,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAC;QACvF,GAAG,8BAA8B,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC;KACrE,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,2DAA2D;IAC3D,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,yBAAyB,GAAG,4BAA4B,CAC5D,MAAM,EACN,YAAY,EACZ,2BAA2B,EAC1B,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,MAAM,EACN,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":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,oCAAoC,EAAC,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,qBAAqB,CAAC;AAEnE,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAoB,EACpB,2BAA+C,EAC/C,WAA8B,EAC9B,mBAAyC,EACzC,IAGC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG;QACpB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;QACxD,GAAG,iCAAiC,CAAC,MAAM,EAAE,WAAW,CAAC;QACzD,GAAG,iCAAiC,CAAC,MAAM,EAAE,WAAW,CAAC;QACzD,GAAG,4BAA4B,CAAC,MAAM,EAAE,WAAW,EAAE,mBAAmB,CAAC;QACzE,GAAG,8BAA8B,CAAC,MAAM,EAAE,WAAW,CAAC;KACvD,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,2DAA2D;IAC3D,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,yBAAyB,GAAG,4BAA4B,CAC5D,MAAM,EACN,2BAA2B,EAC1B,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,MAAM,EACN,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,9 +1,8 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
2
  import { IndexedAttestation, SignedBeaconBlock, Slot, phase0 } from "@lodestar/types";
3
- import { Index2PubkeyCache } from "../cache/pubkeyCache.js";
4
3
  import { ISignatureSet } from "../util/index.js";
5
4
  export declare function getAttestationDataSigningRoot(config: BeaconConfig, stateSlot: Slot, data: phase0.AttestationData): Uint8Array;
6
- export declare function getAttestationWithIndicesSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, attestation: Pick<phase0.Attestation, "data" | "signature">, attestingIndices: number[]): ISignatureSet;
7
- export declare function getIndexedAttestationSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, indexedAttestation: IndexedAttestation): ISignatureSet;
8
- export declare function getAttestationsSignatureSets(config: BeaconConfig, index2pubkey: Index2PubkeyCache, signedBlock: SignedBeaconBlock, indexedAttestations: IndexedAttestation[]): ISignatureSet[];
5
+ export declare function getAttestationWithIndicesSignatureSet(config: BeaconConfig, stateSlot: Slot, attestation: Pick<phase0.Attestation, "data" | "signature">, attestingIndices: number[]): ISignatureSet;
6
+ export declare function getIndexedAttestationSignatureSet(config: BeaconConfig, stateSlot: Slot, indexedAttestation: IndexedAttestation): ISignatureSet;
7
+ export declare function getAttestationsSignatureSets(config: BeaconConfig, signedBlock: SignedBeaconBlock, indexedAttestations: IndexedAttestation[]): ISignatureSet[];
9
8
  //# sourceMappingURL=indexedAttestation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexedAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,aAAa,EAId,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,IAAI,EAAE,MAAM,CAAC,eAAe,GAC3B,UAAU,CAKZ;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,EAC3D,gBAAgB,EAAE,MAAM,EAAE,GACzB,aAAa,CAMf;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,kBAAkB,EAAE,kBAAkB,GACrC,aAAa,CAQf;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,iBAAiB,EAC9B,mBAAmB,EAAE,kBAAkB,EAAE,GACxC,aAAa,EAAE,CAYjB"}
1
+ {"version":3,"file":"indexedAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACzF,OAAO,EACL,aAAa,EAId,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,IAAI,EAAE,MAAM,CAAC,eAAe,GAC3B,UAAU,CAKZ;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,EAC3D,gBAAgB,EAAE,MAAM,EAAE,GACzB,aAAa,CAMf;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,kBAAkB,EAAE,kBAAkB,GACrC,aAAa,CAOf;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,iBAAiB,EAC9B,mBAAmB,EAAE,kBAAkB,EAAE,GACxC,aAAa,EAAE,CAYjB"}
@@ -6,19 +6,19 @@ export function getAttestationDataSigningRoot(config, stateSlot, data) {
6
6
  const domain = config.getDomain(stateSlot, DOMAIN_BEACON_ATTESTER, messageSlot);
7
7
  return computeSigningRoot(ssz.phase0.AttestationData, data, domain);
8
8
  }
9
- export function getAttestationWithIndicesSignatureSet(config, index2pubkey, stateSlot, attestation, attestingIndices) {
10
- return createAggregateSignatureSetFromComponents(attestingIndices.map((i) => index2pubkey[i]), getAttestationDataSigningRoot(config, stateSlot, attestation.data), attestation.signature);
9
+ export function getAttestationWithIndicesSignatureSet(config, stateSlot, attestation, attestingIndices) {
10
+ return createAggregateSignatureSetFromComponents(attestingIndices, getAttestationDataSigningRoot(config, stateSlot, attestation.data), attestation.signature);
11
11
  }
12
- export function getIndexedAttestationSignatureSet(config, index2pubkey, stateSlot, indexedAttestation) {
13
- return getAttestationWithIndicesSignatureSet(config, index2pubkey, stateSlot, indexedAttestation, indexedAttestation.attestingIndices);
12
+ export function getIndexedAttestationSignatureSet(config, stateSlot, indexedAttestation) {
13
+ return getAttestationWithIndicesSignatureSet(config, stateSlot, indexedAttestation, indexedAttestation.attestingIndices);
14
14
  }
15
- export function getAttestationsSignatureSets(config, index2pubkey, signedBlock, indexedAttestations) {
15
+ export function getAttestationsSignatureSets(config, signedBlock, indexedAttestations) {
16
16
  if (indexedAttestations.length !== signedBlock.message.body.attestations.length) {
17
17
  throw Error(`Indexed attestations length mismatch: got ${indexedAttestations.length}, expected ${signedBlock.message.body.attestations.length}`);
18
18
  }
19
19
  // the getDomain() api requires the state slot as 1st param, however it's the same to block.slot in state-transition
20
20
  // and the same epoch when we verify blocks in batch in beacon-node. So we can safely use block.slot here.
21
21
  const blockSlot = signedBlock.message.slot;
22
- return indexedAttestations.map((indexedAttestation) => getIndexedAttestationSignatureSet(config, index2pubkey, blockSlot, indexedAttestation));
22
+ return indexedAttestations.map((indexedAttestation) => getIndexedAttestationSignatureSet(config, blockSlot, indexedAttestation));
23
23
  }
24
24
  //# sourceMappingURL=indexedAttestation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexedAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAsD,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,yCAAyC,GAC1C,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,SAAe,EACf,IAA4B;IAE5B,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;IAEhF,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,WAA2D,EAC3D,gBAA0B;IAE1B,OAAO,yCAAyC,CAC9C,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC5C,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,EAClE,WAAW,CAAC,SAAS,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,kBAAsC;IAEtC,OAAO,qCAAqC,CAC1C,MAAM,EACN,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,kBAAkB,CAAC,gBAAgB,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,YAA+B,EAC/B,WAA8B,EAC9B,mBAAyC;IAEzC,IAAI,mBAAmB,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAChF,MAAM,KAAK,CACT,6CAA6C,mBAAmB,CAAC,MAAM,cAAc,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CACpI,CAAC;IACJ,CAAC;IACD,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CACpD,iCAAiC,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC,CACvF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"indexedAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAsD,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,yCAAyC,GAC1C,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,SAAe,EACf,IAA4B;IAE5B,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC;IAEhF,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,MAAoB,EACpB,SAAe,EACf,WAA2D,EAC3D,gBAA0B;IAE1B,OAAO,yCAAyC,CAC9C,gBAAgB,EAChB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,EAClE,WAAW,CAAC,SAAS,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,MAAoB,EACpB,SAAe,EACf,kBAAsC;IAEtC,OAAO,qCAAqC,CAC1C,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,kBAAkB,CAAC,gBAAgB,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,WAA8B,EAC9B,mBAAyC;IAEzC,IAAI,mBAAmB,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAChF,MAAM,KAAK,CACT,6CAA6C,mBAAmB,CAAC,MAAM,cAAc,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CACpI,CAAC;IACJ,CAAC;IACD,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CACpD,iCAAiC,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,CAAC,CACzE,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
- import { gloas } from "@lodestar/types";
2
- import { CachedBeaconStateGloas } from "../types.ts";
3
- import { ISignatureSet } from "../util/index.ts";
1
+ import { BeaconConfig } from "@lodestar/config";
2
+ import { Slot, gloas } from "@lodestar/types";
3
+ import { CachedBeaconStateGloas } from "../types.js";
4
+ import { ISignatureSet } from "../util/index.js";
4
5
  export declare function getIndexedPayloadAttestationSignatureSet(state: CachedBeaconStateGloas, indexedPayloadAttestation: gloas.IndexedPayloadAttestation): ISignatureSet;
5
- export declare function getPayloadAttestationDataSigningRoot(state: CachedBeaconStateGloas, data: gloas.PayloadAttestationData): Uint8Array;
6
+ export declare function getPayloadAttestationDataSigningRoot(config: BeaconConfig, stateSlot: Slot, data: gloas.PayloadAttestationData): Uint8Array;
6
7
  //# sourceMappingURL=indexedPayloadAttestation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexedPayloadAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AACnD,OAAO,EAAC,aAAa,EAAgE,MAAM,kBAAkB,CAAC;AAE9G,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,sBAAsB,EAC7B,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,aAAa,CAMf;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE,KAAK,CAAC,sBAAsB,GACjC,UAAU,CAIZ"}
1
+ {"version":3,"file":"indexedPayloadAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,IAAI,EAAE,KAAK,EAAM,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AACnD,OAAO,EAAC,aAAa,EAAgE,MAAM,kBAAkB,CAAC;AAE9G,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,sBAAsB,EAC7B,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,aAAa,CAMf;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,IAAI,EAAE,KAAK,CAAC,sBAAsB,GACjC,UAAU,CAIZ"}
@@ -2,10 +2,10 @@ import { DOMAIN_PTC_ATTESTER } from "@lodestar/params";
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { computeSigningRoot, createAggregateSignatureSetFromComponents } from "../util/index.js";
4
4
  export function getIndexedPayloadAttestationSignatureSet(state, indexedPayloadAttestation) {
5
- return createAggregateSignatureSetFromComponents(indexedPayloadAttestation.attestingIndices.map((i) => state.epochCtx.index2pubkey[i]), getPayloadAttestationDataSigningRoot(state, indexedPayloadAttestation.data), indexedPayloadAttestation.signature);
5
+ return createAggregateSignatureSetFromComponents(indexedPayloadAttestation.attestingIndices, getPayloadAttestationDataSigningRoot(state.config, state.slot, indexedPayloadAttestation.data), indexedPayloadAttestation.signature);
6
6
  }
7
- export function getPayloadAttestationDataSigningRoot(state, data) {
8
- const domain = state.config.getDomain(state.slot, DOMAIN_PTC_ATTESTER);
7
+ export function getPayloadAttestationDataSigningRoot(config, stateSlot, data) {
8
+ const domain = config.getDomain(stateSlot, DOMAIN_PTC_ATTESTER);
9
9
  return computeSigningRoot(ssz.gloas.PayloadAttestationData, data, domain);
10
10
  }
11
11
  //# sourceMappingURL=indexedPayloadAttestation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexedPayloadAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAQ,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAgB,kBAAkB,EAAE,yCAAyC,EAAC,MAAM,kBAAkB,CAAC;AAE9G,MAAM,UAAU,wCAAwC,CACtD,KAA6B,EAC7B,yBAA0D;IAE1D,OAAO,yCAAyC,CAC9C,yBAAyB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACrF,oCAAoC,CAAC,KAAK,EAAE,yBAAyB,CAAC,IAAI,CAAC,EAC3E,yBAAyB,CAAC,SAAS,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,KAA6B,EAC7B,IAAkC;IAElC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAEvE,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"indexedPayloadAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAc,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAgB,kBAAkB,EAAE,yCAAyC,EAAC,MAAM,kBAAkB,CAAC;AAE9G,MAAM,UAAU,wCAAwC,CACtD,KAA6B,EAC7B,yBAA0D;IAE1D,OAAO,yCAAyC,CAC9C,yBAAyB,CAAC,gBAAgB,EAC1C,oCAAoC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,CAAC,EAC9F,yBAAyB,CAAC,SAAS,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,MAAoB,EACpB,SAAe,EACf,IAAkC;IAElC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAEhE,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC"}
@@ -3,7 +3,7 @@ import { SignedBeaconBlock, SignedBlindedBeaconBlock, Slot, phase0 } from "@lode
3
3
  import { Index2PubkeyCache } from "../cache/pubkeyCache.js";
4
4
  import { ISignatureSet } from "../util/signatureSets.js";
5
5
  export declare function verifyProposerSignature(config: BeaconConfig, index2pubkey: Index2PubkeyCache, signedBlock: SignedBeaconBlock | SignedBlindedBeaconBlock): boolean;
6
- export declare function getBlockProposerSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, signedBlock: SignedBeaconBlock | SignedBlindedBeaconBlock): ISignatureSet;
7
- export declare function getBlockHeaderProposerSignatureSetByParentStateSlot(config: BeaconConfig, index2pubkey: Index2PubkeyCache, parentStateSlot: Slot, signedBlockHeader: phase0.SignedBeaconBlockHeader): ISignatureSet;
8
- export declare function getBlockHeaderProposerSignatureSetByHeaderSlot(config: BeaconConfig, index2pubkey: Index2PubkeyCache, signedBlockHeader: phase0.SignedBeaconBlockHeader): ISignatureSet;
6
+ export declare function getBlockProposerSignatureSet(config: BeaconConfig, signedBlock: SignedBeaconBlock | SignedBlindedBeaconBlock): ISignatureSet;
7
+ export declare function getBlockHeaderProposerSignatureSetByParentStateSlot(config: BeaconConfig, parentStateSlot: Slot, signedBlockHeader: phase0.SignedBeaconBlockHeader): ISignatureSet;
8
+ export declare function getBlockHeaderProposerSignatureSetByHeaderSlot(config: BeaconConfig, signedBlockHeader: phase0.SignedBeaconBlockHeader): ISignatureSet;
9
9
  //# sourceMappingURL=proposer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proposer.d.ts","sourceRoot":"","sources":["../../src/signatureSets/proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAwB,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrH,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,aAAa,EAAuC,MAAM,0BAA0B,CAAC;AAE7F,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,iBAAiB,GAAG,wBAAwB,GACxD,OAAO,CAGT;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,iBAAiB,GAAG,wBAAwB,GACxD,aAAa,CAgBf;AAED,wBAAgB,mDAAmD,CACjE,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,eAAe,EAAE,IAAI,EACrB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,iBAGlD;AAED,wBAAgB,8CAA8C,CAC5D,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,iBAGlD"}
1
+ {"version":3,"file":"proposer.d.ts","sourceRoot":"","sources":["../../src/signatureSets/proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAwB,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrH,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,aAAa,EAAuC,MAAM,0BAA0B,CAAC;AAE7F,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,iBAAiB,GAAG,wBAAwB,GACxD,OAAO,CAGT;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,iBAAiB,GAAG,wBAAwB,GACxD,aAAa,CAgBf;AAED,wBAAgB,mDAAmD,CACjE,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,IAAI,EACrB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,iBAGlD;AAED,wBAAgB,8CAA8C,CAC5D,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,iBAGlD"}
@@ -3,10 +3,10 @@ import { isBlindedBeaconBlock, ssz } from "@lodestar/types";
3
3
  import { computeSigningRoot } from "../util/index.js";
4
4
  import { SignatureSetType, verifySignatureSet } from "../util/signatureSets.js";
5
5
  export function verifyProposerSignature(config, index2pubkey, signedBlock) {
6
- const signatureSet = getBlockProposerSignatureSet(config, index2pubkey, signedBlock);
7
- return verifySignatureSet(signatureSet);
6
+ const signatureSet = getBlockProposerSignatureSet(config, signedBlock);
7
+ return verifySignatureSet(signatureSet, index2pubkey);
8
8
  }
9
- export function getBlockProposerSignatureSet(config, index2pubkey, signedBlock) {
9
+ export function getBlockProposerSignatureSet(config, signedBlock) {
10
10
  // the getDomain() api requires the state slot as 1st param, however it's the same to block.slot in state-transition
11
11
  // and the same epoch when we verify blocks in batch in beacon-node. So we can safely use block.slot here.
12
12
  const blockSlot = signedBlock.message.slot;
@@ -15,23 +15,23 @@ export function getBlockProposerSignatureSet(config, index2pubkey, signedBlock)
15
15
  ? config.getPostBellatrixForkTypes(signedBlock.message.slot).BlindedBeaconBlock
16
16
  : config.getForkTypes(signedBlock.message.slot).BeaconBlock;
17
17
  return {
18
- type: SignatureSetType.single,
19
- pubkey: index2pubkey[signedBlock.message.proposerIndex],
18
+ type: SignatureSetType.indexed,
19
+ index: signedBlock.message.proposerIndex,
20
20
  signingRoot: computeSigningRoot(blockType, signedBlock.message, domain),
21
21
  signature: signedBlock.signature,
22
22
  };
23
23
  }
24
- export function getBlockHeaderProposerSignatureSetByParentStateSlot(config, index2pubkey, parentStateSlot, signedBlockHeader) {
25
- return getBlockHeaderProposerSignatureSet(config, index2pubkey, signedBlockHeader, parentStateSlot);
24
+ export function getBlockHeaderProposerSignatureSetByParentStateSlot(config, parentStateSlot, signedBlockHeader) {
25
+ return getBlockHeaderProposerSignatureSet(config, signedBlockHeader, parentStateSlot);
26
26
  }
27
- export function getBlockHeaderProposerSignatureSetByHeaderSlot(config, index2pubkey, signedBlockHeader) {
28
- return getBlockHeaderProposerSignatureSet(config, index2pubkey, signedBlockHeader, signedBlockHeader.message.slot);
27
+ export function getBlockHeaderProposerSignatureSetByHeaderSlot(config, signedBlockHeader) {
28
+ return getBlockHeaderProposerSignatureSet(config, signedBlockHeader, signedBlockHeader.message.slot);
29
29
  }
30
- function getBlockHeaderProposerSignatureSet(config, index2pubkey, signedBlockHeader, domainSlot) {
30
+ function getBlockHeaderProposerSignatureSet(config, signedBlockHeader, domainSlot) {
31
31
  const domain = config.getDomain(domainSlot, DOMAIN_BEACON_PROPOSER, signedBlockHeader.message.slot);
32
32
  return {
33
- type: SignatureSetType.single,
34
- pubkey: index2pubkey[signedBlockHeader.message.proposerIndex],
33
+ type: SignatureSetType.indexed,
34
+ index: signedBlockHeader.message.proposerIndex,
35
35
  signingRoot: computeSigningRoot(ssz.phase0.BeaconBlockHeader, signedBlockHeader.message, domain),
36
36
  signature: signedBlockHeader.signature,
37
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"proposer.js","sourceRoot":"","sources":["../../src/signatureSets/proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAoD,oBAAoB,EAAU,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAErH,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAE7F,MAAM,UAAU,uBAAuB,CACrC,MAAoB,EACpB,YAA+B,EAC/B,WAAyD;IAEzD,MAAM,YAAY,GAAG,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACrF,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,YAA+B,EAC/B,WAAyD;IAEzD,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC;QACzD,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,kBAAkB;QAC/E,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;QACvD,WAAW,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;QACvE,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mDAAmD,CACjE,MAAoB,EACpB,YAA+B,EAC/B,eAAqB,EACrB,iBAAiD;IAEjD,OAAO,kCAAkC,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,8CAA8C,CAC5D,MAAoB,EACpB,YAA+B,EAC/B,iBAAiD;IAEjD,OAAO,kCAAkC,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrH,CAAC;AAED,SAAS,kCAAkC,CACzC,MAAoB,EACpB,YAA+B,EAC/B,iBAAiD,EACjD,UAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpG,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7D,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC;QAChG,SAAS,EAAE,iBAAiB,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"proposer.js","sourceRoot":"","sources":["../../src/signatureSets/proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAoD,oBAAoB,EAAU,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAErH,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAE7F,MAAM,UAAU,uBAAuB,CACrC,MAAoB,EACpB,YAA+B,EAC/B,WAAyD;IAEzD,MAAM,YAAY,GAAG,4BAA4B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvE,OAAO,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,WAAyD;IAEzD,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC;QACzD,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,kBAAkB;QAC/E,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa;QACxC,WAAW,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;QACvE,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mDAAmD,CACjE,MAAoB,EACpB,eAAqB,EACrB,iBAAiD;IAEjD,OAAO,kCAAkC,CAAC,MAAM,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,8CAA8C,CAC5D,MAAoB,EACpB,iBAAiD;IAEjD,OAAO,kCAAkC,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,kCAAkC,CACzC,MAAoB,EACpB,iBAAiD,EACjD,UAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpG,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,aAAa;QAC9C,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC;QAChG,SAAS,EAAE,iBAAiB,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
2
  import { SignedBeaconBlock, Slot, phase0 } from "@lodestar/types";
3
- import { Index2PubkeyCache } from "../cache/pubkeyCache.js";
4
3
  import { ISignatureSet } from "../util/index.js";
5
4
  /**
6
5
  * Extract signatures to allow validating all block signatures at once
7
6
  */
8
- export declare function getProposerSlashingSignatureSets(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, proposerSlashing: phase0.ProposerSlashing): ISignatureSet[];
9
- export declare function getProposerSlashingsSignatureSets(config: BeaconConfig, index2pubkey: Index2PubkeyCache, signedBlock: SignedBeaconBlock): ISignatureSet[];
7
+ export declare function getProposerSlashingSignatureSets(config: BeaconConfig, stateSlot: Slot, proposerSlashing: phase0.ProposerSlashing): ISignatureSet[];
8
+ export declare function getProposerSlashingsSignatureSets(config: BeaconConfig, signedBlock: SignedBeaconBlock): ISignatureSet[];
10
9
  //# sourceMappingURL=proposerSlashings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proposerSlashings.d.ts","sourceRoot":"","sources":["../../src/signatureSets/proposerSlashings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAuC,MAAM,kBAAkB,CAAC;AAErF;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,GACxC,aAAa,EAAE,CAejB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,iBAAiB,GAC7B,aAAa,EAAE,CAOjB"}
1
+ {"version":3,"file":"proposerSlashings.d.ts","sourceRoot":"","sources":["../../src/signatureSets/proposerSlashings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAC,aAAa,EAAuC,MAAM,kBAAkB,CAAC;AAErF;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,GACxC,aAAa,EAAE,CAejB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,iBAAiB,GAC7B,aAAa,EAAE,CAOjB"}
@@ -4,24 +4,24 @@ import { SignatureSetType, computeSigningRoot } from "../util/index.js";
4
4
  /**
5
5
  * Extract signatures to allow validating all block signatures at once
6
6
  */
7
- export function getProposerSlashingSignatureSets(config, index2pubkey, stateSlot, proposerSlashing) {
8
- const pubkey = index2pubkey[proposerSlashing.signedHeader1.message.proposerIndex];
7
+ export function getProposerSlashingSignatureSets(config, stateSlot, proposerSlashing) {
8
+ const proposerIndex = proposerSlashing.signedHeader1.message.proposerIndex;
9
9
  // In state transition, ProposerSlashing headers are only partially validated. Their slot could be higher than the
10
10
  // clock and the slashing would still be valid. Must use bigint variants to hash correctly to all possible values
11
11
  return [proposerSlashing.signedHeader1, proposerSlashing.signedHeader2].map((signedHeader) => {
12
12
  const domain = config.getDomain(stateSlot, DOMAIN_BEACON_PROPOSER, Number(signedHeader.message.slot));
13
13
  return {
14
- type: SignatureSetType.single,
15
- pubkey,
14
+ type: SignatureSetType.indexed,
15
+ index: proposerIndex,
16
16
  signingRoot: computeSigningRoot(ssz.phase0.BeaconBlockHeaderBigint, signedHeader.message, domain),
17
17
  signature: signedHeader.signature,
18
18
  };
19
19
  });
20
20
  }
21
- export function getProposerSlashingsSignatureSets(config, index2pubkey, signedBlock) {
21
+ export function getProposerSlashingsSignatureSets(config, signedBlock) {
22
22
  // the getDomain() api requires the state slot as 1st param, however it's the same to block.slot in state-transition
23
23
  // and the same epoch when we verify blocks in batch in beacon-node. So we can safely use block.slot here.
24
24
  const blockSlot = signedBlock.message.slot;
25
- return signedBlock.message.body.proposerSlashings.flatMap((proposerSlashing) => getProposerSlashingSignatureSets(config, index2pubkey, blockSlot, proposerSlashing));
25
+ return signedBlock.message.body.proposerSlashings.flatMap((proposerSlashing) => getProposerSlashingSignatureSets(config, blockSlot, proposerSlashing));
26
26
  }
27
27
  //# sourceMappingURL=proposerSlashings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proposerSlashings.js","sourceRoot":"","sources":["../../src/signatureSets/proposerSlashings.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAkC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErF;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,gBAAyC;IAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAElF,kHAAkH;IAClH,iHAAiH;IACjH,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAiB,EAAE;QAC1G,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAc,CAAC,CAAC,CAAC;QAEhH,OAAO;YACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;YAC7B,MAAM;YACN,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;YACjG,SAAS,EAAE,YAAY,CAAC,SAAS;SAClC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,MAAoB,EACpB,YAA+B,EAC/B,WAA8B;IAE9B,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAC7E,gCAAgC,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,CAAC,CACpF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"proposerSlashings.js","sourceRoot":"","sources":["../../src/signatureSets/proposerSlashings.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAkC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErF;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,SAAe,EACf,gBAAyC;IAEzC,MAAM,aAAa,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC;IAE3E,kHAAkH;IAClH,iHAAiH;IACjH,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAiB,EAAE;QAC1G,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAc,CAAC,CAAC,CAAC;QAEhH,OAAO;YACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;YAC9B,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;YACjG,SAAS,EAAE,YAAY,CAAC,SAAS;SAClC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,MAAoB,EACpB,WAA8B;IAE9B,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAC7E,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CACtE,CAAC;AACJ,CAAC"}
@@ -6,5 +6,5 @@ export declare function verifyRandaoSignature(config: BeaconConfig, index2pubkey
6
6
  /**
7
7
  * Extract signatures to allow validating all block signatures at once
8
8
  */
9
- export declare function getRandaoRevealSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, block: BeaconBlock): ISignatureSet;
9
+ export declare function getRandaoRevealSignatureSet(config: BeaconConfig, block: BeaconBlock): ISignatureSet;
10
10
  //# sourceMappingURL=randao.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"randao.d.ts","sourceRoot":"","sources":["../../src/signatureSets/randao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAM,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,aAAa,EAKd,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,WAAW,GACjB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,WAAW,GACjB,aAAa,CAaf"}
1
+ {"version":3,"file":"randao.d.ts","sourceRoot":"","sources":["../../src/signatureSets/randao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAM,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,aAAa,EAKd,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,WAAW,GACjB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,GAAG,aAAa,CAanG"}
@@ -2,20 +2,20 @@ import { DOMAIN_RANDAO } from "@lodestar/params";
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { SignatureSetType, computeEpochAtSlot, computeSigningRoot, verifySignatureSet, } from "../util/index.js";
4
4
  export function verifyRandaoSignature(config, index2pubkey, block) {
5
- return verifySignatureSet(getRandaoRevealSignatureSet(config, index2pubkey, block));
5
+ return verifySignatureSet(getRandaoRevealSignatureSet(config, block), index2pubkey);
6
6
  }
7
7
  /**
8
8
  * Extract signatures to allow validating all block signatures at once
9
9
  */
10
- export function getRandaoRevealSignatureSet(config, index2pubkey, block) {
10
+ export function getRandaoRevealSignatureSet(config, block) {
11
11
  // should not get epoch from epochCtx
12
12
  const epoch = computeEpochAtSlot(block.slot);
13
13
  // the getDomain() api requires the state slot as 1st param, however it's the same to block.slot in state-transition
14
14
  // and the same epoch when we verify blocks in batch in beacon-node. So we can safely use block.slot here.
15
15
  const domain = config.getDomain(block.slot, DOMAIN_RANDAO, block.slot);
16
16
  return {
17
- type: SignatureSetType.single,
18
- pubkey: index2pubkey[block.proposerIndex],
17
+ type: SignatureSetType.indexed,
18
+ index: block.proposerIndex,
19
19
  signingRoot: computeSigningRoot(ssz.Epoch, epoch, domain),
20
20
  signature: block.body.randaoReveal,
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"randao.js","sourceRoot":"","sources":["../../src/signatureSets/randao.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAc,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,qBAAqB,CACnC,MAAoB,EACpB,YAA+B,EAC/B,KAAkB;IAElB,OAAO,kBAAkB,CAAC,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAoB,EACpB,YAA+B,EAC/B,KAAkB;IAElB,qCAAqC;IACrC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvE,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC;QACzC,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;QACzD,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"randao.js","sourceRoot":"","sources":["../../src/signatureSets/randao.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAc,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,qBAAqB,CACnC,MAAoB,EACpB,YAA+B,EAC/B,KAAkB;IAElB,OAAO,kBAAkB,CAAC,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAoB,EAAE,KAAkB;IAClF,qCAAqC;IACrC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvE,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,KAAK,CAAC,aAAa;QAC1B,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;QACzD,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY;KACnC,CAAC;AACJ,CAAC"}
@@ -6,6 +6,6 @@ export declare function verifyVoluntaryExitSignature(config: BeaconConfig, index
6
6
  /**
7
7
  * Extract signatures to allow validating all block signatures at once
8
8
  */
9
- export declare function getVoluntaryExitSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, signedVoluntaryExit: phase0.SignedVoluntaryExit): ISignatureSet;
10
- export declare function getVoluntaryExitsSignatureSets(config: BeaconConfig, index2pubkey: Index2PubkeyCache, signedBlock: SignedBeaconBlock): ISignatureSet[];
9
+ export declare function getVoluntaryExitSignatureSet(config: BeaconConfig, stateSlot: Slot, signedVoluntaryExit: phase0.SignedVoluntaryExit): ISignatureSet;
10
+ export declare function getVoluntaryExitsSignatureSets(config: BeaconConfig, signedBlock: SignedBeaconBlock): ISignatureSet[];
11
11
  //# sourceMappingURL=voluntaryExits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"voluntaryExits.d.ts","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,aAAa,EAKd,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,aAAa,CAUf;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,iBAAiB,GAC7B,aAAa,EAAE,CAOjB"}
1
+ {"version":3,"file":"voluntaryExits.d.ts","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,aAAa,EAKd,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,aAAa,CAUf;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,GAAG,aAAa,EAAE,CAOpH"}
@@ -1,25 +1,25 @@
1
1
  import { ssz } from "@lodestar/types";
2
2
  import { SignatureSetType, computeSigningRoot, computeStartSlotAtEpoch, verifySignatureSet, } from "../util/index.js";
3
3
  export function verifyVoluntaryExitSignature(config, index2pubkey, stateSlot, signedVoluntaryExit) {
4
- return verifySignatureSet(getVoluntaryExitSignatureSet(config, index2pubkey, stateSlot, signedVoluntaryExit));
4
+ return verifySignatureSet(getVoluntaryExitSignatureSet(config, stateSlot, signedVoluntaryExit), index2pubkey);
5
5
  }
6
6
  /**
7
7
  * Extract signatures to allow validating all block signatures at once
8
8
  */
9
- export function getVoluntaryExitSignatureSet(config, index2pubkey, stateSlot, signedVoluntaryExit) {
9
+ export function getVoluntaryExitSignatureSet(config, stateSlot, signedVoluntaryExit) {
10
10
  const messageSlot = computeStartSlotAtEpoch(signedVoluntaryExit.message.epoch);
11
11
  const domain = config.getDomainForVoluntaryExit(stateSlot, messageSlot);
12
12
  return {
13
- type: SignatureSetType.single,
14
- pubkey: index2pubkey[signedVoluntaryExit.message.validatorIndex],
13
+ type: SignatureSetType.indexed,
14
+ index: signedVoluntaryExit.message.validatorIndex,
15
15
  signingRoot: computeSigningRoot(ssz.phase0.VoluntaryExit, signedVoluntaryExit.message, domain),
16
16
  signature: signedVoluntaryExit.signature,
17
17
  };
18
18
  }
19
- export function getVoluntaryExitsSignatureSets(config, index2pubkey, signedBlock) {
19
+ export function getVoluntaryExitsSignatureSets(config, signedBlock) {
20
20
  // the getDomain() api requires the state slot as 1st param, however it's the same to block.slot in state-transition
21
21
  // and the same epoch when we verify blocks in batch in beacon-node. So we can safely use block.slot here.
22
22
  const blockSlot = signedBlock.message.slot;
23
- return signedBlock.message.body.voluntaryExits.map((voluntaryExit) => getVoluntaryExitSignatureSet(config, index2pubkey, blockSlot, voluntaryExit));
23
+ return signedBlock.message.body.voluntaryExits.map((voluntaryExit) => getVoluntaryExitSignatureSet(config, blockSlot, voluntaryExit));
24
24
  }
25
25
  //# sourceMappingURL=voluntaryExits.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"voluntaryExits.js","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,mBAA+C;IAE/C,OAAO,kBAAkB,CAAC,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAChH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,mBAA+C;IAE/C,MAAM,WAAW,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAExE,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;QAChE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;QAC9F,SAAS,EAAE,mBAAmB,CAAC,SAAS;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,MAAoB,EACpB,YAA+B,EAC/B,WAA8B;IAE9B,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CACnE,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC,CAC7E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"voluntaryExits.js","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,YAA+B,EAC/B,SAAe,EACf,mBAA+C;IAE/C,OAAO,kBAAkB,CAAC,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,CAAC;AAChH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,SAAe,EACf,mBAA+C;IAE/C,MAAM,WAAW,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAExE,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc;QACjD,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;QAC9F,SAAS,EAAE,mBAAmB,CAAC,SAAS;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,MAAoB,EAAE,WAA8B;IACjG,oHAAoH;IACpH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CACnE,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAC/D,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/slot/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAA4B,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAC,yBAAyB,EAAyB,MAAM,aAAa,CAAC;AAE9E,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,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAuBjF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/slot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAA4B,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EAAC,yBAAyB,EAAyB,MAAM,aAAa,CAAC;AAE9E,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,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAuBjF"}
package/lib/slot/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { byteArrayEquals } from "@chainsafe/ssz";
2
1
  import { ForkSeq, SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
2
+ import { byteArrayEquals } from "@lodestar/utils";
3
3
  import { ZERO_HASH } from "../constants/index.js";
4
4
  export { upgradeStateToAltair } from "./upgradeStateToAltair.js";
5
5
  export { upgradeStateToBellatrix } from "./upgradeStateToBellatrix.js";
@@ -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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAChD,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"}
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
3
  export type { CachedBeaconStateAllForks, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, CachedBeaconStateElectra, CachedBeaconStateExecutions, CachedBeaconStateFulu, CachedBeaconStateGloas, CachedBeaconStatePhase0, } from "./cache/stateCache.js";
4
- export type { BeaconStateAllForks, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateElectra, BeaconStateExecutions, BeaconStateFulu, BeaconStateGloas, BeaconStatePhase0, } from "./cache/types.js";
4
+ export type { BeaconStateAllForks, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateElectra, BeaconStateExecutions, BeaconStateFulu, BeaconStateGloas, BeaconStatePhase0, ShufflingGetter, } from "./cache/types.js";
5
5
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EACV,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EACV,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -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,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"}
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;AAG7E,wBAAgB,kCAAkC,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAE7F;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,9 +2,8 @@ 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";
6
5
  export function hasCompoundingWithdrawalCredential(withdrawalCredentials) {
7
- return (withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX || hasBuilderWithdrawalCredential(withdrawalCredentials));
6
+ return withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX;
8
7
  }
9
8
  export function hasExecutionWithdrawalCredential(withdrawalCredentials) {
10
9
  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;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
+ {"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,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,40 +1,6 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
2
  import { Epoch, RootHex, ValidatorIndex } from "@lodestar/types";
3
- import { GaugeExtra, Logger, NoLabels } from "@lodestar/utils";
4
3
  import { BeaconStateAllForks } from "../types.js";
5
- export interface ShufflingBuildProps {
6
- state: BeaconStateAllForks;
7
- activeIndices: Uint32Array;
8
- }
9
- export interface PublicShufflingCacheMetrics {
10
- shufflingCache: {
11
- nextShufflingNotOnEpochCache: GaugeExtra<NoLabels>;
12
- };
13
- }
14
- export interface IShufflingCache {
15
- metrics: PublicShufflingCacheMetrics | null;
16
- logger: Logger | null;
17
- /**
18
- * Gets a cached shuffling via the epoch and decision root. If the state and
19
- * activeIndices are passed and a shuffling is not available it will be built
20
- * synchronously. If the state is not passed and the shuffling is not available
21
- * nothing will be returned.
22
- *
23
- * NOTE: If a shuffling is already queued and not calculated it will build and resolve
24
- * the promise but the already queued build will happen at some later time
25
- */
26
- getSync<T extends ShufflingBuildProps | undefined>(epoch: Epoch, decisionRoot: RootHex, buildProps?: T): T extends ShufflingBuildProps ? EpochShuffling : EpochShuffling | null;
27
- /**
28
- * Gets a cached shuffling via the epoch and decision root. Returns a promise
29
- * for the shuffling if it hs not calculated yet. Returns null if a build has
30
- * not been queued nor a shuffling was calculated.
31
- */
32
- get(epoch: Epoch, decisionRoot: RootHex): Promise<EpochShuffling | null>;
33
- /**
34
- * Queue asynchronous build for an EpochShuffling
35
- */
36
- build(epoch: Epoch, decisionRoot: RootHex, state: BeaconStateAllForks, activeIndices: Uint32Array): void;
37
- }
38
4
  /**
39
5
  * Readonly interface for EpochShuffling.
40
6
  */
@@ -72,6 +38,7 @@ export type EpochShuffling = {
72
38
  export declare function computeCommitteeCount(activeValidatorCount: number): number;
73
39
  export declare function computeEpochShuffling(state: BeaconStateAllForks, activeIndices: Uint32Array, epoch: Epoch): EpochShuffling;
74
40
  export declare function computeEpochShufflingAsync(state: BeaconStateAllForks, activeIndices: Uint32Array, epoch: Epoch): Promise<EpochShuffling>;
41
+ export declare function calculateDecisionRoot(state: BeaconStateAllForks, epoch: Epoch): RootHex;
75
42
  /**
76
43
  * Get the shuffling decision block root for the given epoch of given state
77
44
  * - Special case close to genesis block, return the genesis block root
@@ -1 +1 @@
1
- {"version":3,"file":"epochShuffling.d.ts","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAoB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAMhD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,aAAa,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE;QACd,4BAA4B,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;KACpD,CAAC;CACH;AACD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC5C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,CAAC,SAAS,mBAAmB,GAAG,SAAS,EAC/C,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,CAAC,GACb,CAAC,SAAS,mBAAmB,GAAG,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;IAE1E;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEzE;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1G;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,WAAW,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;;;;;;OAOG;IACH,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;IAE5B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAI1E;AA2BD,wBAAgB,qBAAqB,CAEnC,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,cAAc,CAWhB;AAED,wBAAsB,0BAA0B,CAE9C,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,CAAC,CAWzB;AAOD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAIT"}
1
+ {"version":3,"file":"epochShuffling.d.ts","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAMhD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,WAAW,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,WAAW,CAAC;IAEvB;;;;;;;OAOG;IACH,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;IAE5B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAI1E;AA2BD,wBAAgB,qBAAqB,CAEnC,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,cAAc,CAWhB;AAED,wBAAsB,0BAA0B,CAE9C,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,WAAW,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAGvF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,KAAK,GACX,OAAO,CAIT"}
@@ -59,7 +59,7 @@ state, activeIndices, epoch) {
59
59
  committeesPerSlot: committees[0].length,
60
60
  };
61
61
  }
62
- function calculateDecisionRoot(state, epoch) {
62
+ export function calculateDecisionRoot(state, epoch) {
63
63
  const pivotSlot = computeStartSlotAtEpoch(epoch - 1) - 1;
64
64
  return toRootHex(getBlockRootAtSlot(state, pivotSlot));
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"epochShuffling.js","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epochShuffling.js","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"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"}