@lodestar/beacon-node 1.40.0-dev.c975f70481 → 1.40.0-dev.cfd894719f

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 (334) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +8 -18
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/debug/index.d.ts +1 -1
  5. package/lib/api/impl/debug/index.d.ts.map +1 -1
  6. package/lib/api/impl/debug/index.js +3 -6
  7. package/lib/api/impl/debug/index.js.map +1 -1
  8. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  9. package/lib/api/impl/lodestar/index.js +5 -2
  10. package/lib/api/impl/lodestar/index.js.map +1 -1
  11. package/lib/api/impl/validator/index.d.ts.map +1 -1
  12. package/lib/api/impl/validator/index.js +9 -8
  13. package/lib/api/impl/validator/index.js.map +1 -1
  14. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  15. package/lib/chain/archiveStore/utils/archiveBlocks.js +4 -0
  16. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  17. package/lib/chain/blocks/blockInput/blockInput.d.ts +2 -0
  18. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  19. package/lib/chain/blocks/blockInput/blockInput.js +6 -0
  20. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  21. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  22. package/lib/chain/blocks/importBlock.js +2 -6
  23. package/lib/chain/blocks/importBlock.js.map +1 -1
  24. package/lib/chain/blocks/index.d.ts.map +1 -1
  25. package/lib/chain/blocks/index.js +0 -14
  26. package/lib/chain/blocks/index.js.map +1 -1
  27. package/lib/chain/blocks/types.d.ts +0 -2
  28. package/lib/chain/blocks/types.d.ts.map +1 -1
  29. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  30. package/lib/chain/blocks/verifyBlock.js +1 -8
  31. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  32. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  33. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  34. package/lib/chain/blocks/verifyBlocksSignatures.js +2 -2
  35. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  36. package/lib/chain/blocks/writeBlockInputToDb.d.ts +1 -4
  37. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  38. package/lib/chain/blocks/writeBlockInputToDb.js +20 -28
  39. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  40. package/lib/chain/bls/multithread/index.d.ts +3 -1
  41. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  42. package/lib/chain/bls/multithread/index.js +5 -3
  43. package/lib/chain/bls/multithread/index.js.map +1 -1
  44. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  45. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  46. package/lib/chain/bls/multithread/jobItem.js +2 -2
  47. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  48. package/lib/chain/bls/singleThread.d.ts +4 -2
  49. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  50. package/lib/chain/bls/singleThread.js +4 -2
  51. package/lib/chain/bls/singleThread.js.map +1 -1
  52. package/lib/chain/bls/utils.d.ts +2 -2
  53. package/lib/chain/bls/utils.d.ts.map +1 -1
  54. package/lib/chain/bls/utils.js +9 -6
  55. package/lib/chain/bls/utils.js.map +1 -1
  56. package/lib/chain/chain.d.ts +21 -4
  57. package/lib/chain/chain.d.ts.map +1 -1
  58. package/lib/chain/chain.js +180 -15
  59. package/lib/chain/chain.js.map +1 -1
  60. package/lib/chain/errors/attestationError.d.ts +14 -1
  61. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  62. package/lib/chain/errors/attestationError.js +8 -0
  63. package/lib/chain/errors/attestationError.js.map +1 -1
  64. package/lib/chain/errors/executionPayloadBid.d.ts +48 -0
  65. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -0
  66. package/lib/chain/errors/executionPayloadBid.js +15 -0
  67. package/lib/chain/errors/executionPayloadBid.js.map +1 -0
  68. package/lib/chain/errors/executionPayloadEnvelope.d.ts +48 -0
  69. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -0
  70. package/lib/chain/errors/executionPayloadEnvelope.js +16 -0
  71. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -0
  72. package/lib/chain/errors/index.d.ts +3 -0
  73. package/lib/chain/errors/index.d.ts.map +1 -1
  74. package/lib/chain/errors/index.js +3 -0
  75. package/lib/chain/errors/index.js.map +1 -1
  76. package/lib/chain/errors/payloadAttestation.d.ts +34 -0
  77. package/lib/chain/errors/payloadAttestation.d.ts.map +1 -0
  78. package/lib/chain/errors/payloadAttestation.js +13 -0
  79. package/lib/chain/errors/payloadAttestation.js.map +1 -0
  80. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  81. package/lib/chain/forkChoice/index.js +18 -0
  82. package/lib/chain/forkChoice/index.js.map +1 -1
  83. package/lib/chain/interface.d.ts +21 -3
  84. package/lib/chain/interface.d.ts.map +1 -1
  85. package/lib/chain/interface.js.map +1 -1
  86. package/lib/chain/opPools/executionPayloadBidPool.d.ts +21 -0
  87. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -0
  88. package/lib/chain/opPools/executionPayloadBidPool.js +57 -0
  89. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -0
  90. package/lib/chain/opPools/index.d.ts +2 -0
  91. package/lib/chain/opPools/index.d.ts.map +1 -1
  92. package/lib/chain/opPools/index.js +2 -0
  93. package/lib/chain/opPools/index.js.map +1 -1
  94. package/lib/chain/opPools/payloadAttestationPool.d.ts +24 -0
  95. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -0
  96. package/lib/chain/opPools/payloadAttestationPool.js +109 -0
  97. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -0
  98. package/lib/chain/prepareNextSlot.js +6 -4
  99. package/lib/chain/prepareNextSlot.js.map +1 -1
  100. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  101. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  102. package/lib/chain/produceBlock/produceBlockBody.js +5 -3
  103. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  104. package/lib/chain/regen/interface.d.ts +3 -8
  105. package/lib/chain/regen/interface.d.ts.map +1 -1
  106. package/lib/chain/regen/interface.js +1 -1
  107. package/lib/chain/regen/interface.js.map +1 -1
  108. package/lib/chain/regen/queued.d.ts +1 -2
  109. package/lib/chain/regen/queued.d.ts.map +1 -1
  110. package/lib/chain/regen/queued.js +2 -16
  111. package/lib/chain/regen/queued.js.map +1 -1
  112. package/lib/chain/regen/regen.d.ts +3 -7
  113. package/lib/chain/regen/regen.d.ts.map +1 -1
  114. package/lib/chain/regen/regen.js +3 -16
  115. package/lib/chain/regen/regen.js.map +1 -1
  116. package/lib/chain/seenCache/index.d.ts +3 -1
  117. package/lib/chain/seenCache/index.d.ts.map +1 -1
  118. package/lib/chain/seenCache/index.js +3 -1
  119. package/lib/chain/seenCache/index.js.map +1 -1
  120. package/lib/chain/seenCache/seenAttesters.d.ts +5 -0
  121. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  122. package/lib/chain/seenCache/seenAttesters.js +5 -0
  123. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  124. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts +12 -0
  125. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -0
  126. package/lib/chain/seenCache/seenExecutionPayloadBids.js +30 -0
  127. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -0
  128. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +15 -0
  129. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -0
  130. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +28 -0
  131. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -0
  132. package/lib/chain/validation/aggregateAndProof.js +35 -14
  133. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  134. package/lib/chain/validation/attestation.d.ts +2 -2
  135. package/lib/chain/validation/attestation.d.ts.map +1 -1
  136. package/lib/chain/validation/attestation.js +27 -8
  137. package/lib/chain/validation/attestation.js.map +1 -1
  138. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  139. package/lib/chain/validation/attesterSlashing.js +1 -1
  140. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  141. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  142. package/lib/chain/validation/blobSidecar.js +3 -3
  143. package/lib/chain/validation/blobSidecar.js.map +1 -1
  144. package/lib/chain/validation/block.d.ts.map +1 -1
  145. package/lib/chain/validation/block.js +5 -4
  146. package/lib/chain/validation/block.js.map +1 -1
  147. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  148. package/lib/chain/validation/dataColumnSidecar.js +3 -3
  149. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  150. package/lib/chain/validation/executionPayloadBid.d.ts +5 -0
  151. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -0
  152. package/lib/chain/validation/executionPayloadBid.js +103 -0
  153. package/lib/chain/validation/executionPayloadBid.js.map +1 -0
  154. package/lib/chain/validation/executionPayloadEnvelope.d.ts +5 -0
  155. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -0
  156. package/lib/chain/validation/executionPayloadEnvelope.js +89 -0
  157. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -0
  158. package/lib/chain/validation/payloadAttestationMessage.d.ts +9 -0
  159. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -0
  160. package/lib/chain/validation/payloadAttestationMessage.js +72 -0
  161. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -0
  162. package/lib/chain/validation/proposerSlashing.js +1 -1
  163. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  164. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -3
  165. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -1
  166. package/lib/chain/validation/signatureSets/aggregateAndProof.js +8 -3
  167. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  168. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  169. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  170. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -3
  171. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  172. package/lib/chain/validation/signatureSets/selectionProof.d.ts +2 -3
  173. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -1
  174. package/lib/chain/validation/signatureSets/selectionProof.js +8 -3
  175. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  176. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  177. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  178. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  179. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  180. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +1 -2
  181. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  182. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  183. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  184. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  185. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  186. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +3 -3
  187. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  188. package/lib/chain/validation/syncCommittee.js +1 -1
  189. package/lib/chain/validation/syncCommittee.js.map +1 -1
  190. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  191. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -5
  192. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  193. package/lib/chain/validation/voluntaryExit.js +1 -1
  194. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  195. package/lib/chain/validatorMonitor.d.ts +2 -0
  196. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  197. package/lib/chain/validatorMonitor.js +42 -3
  198. package/lib/chain/validatorMonitor.js.map +1 -1
  199. package/lib/db/repositories/checkpointState.js +0 -1
  200. package/lib/db/repositories/checkpointState.js.map +1 -1
  201. package/lib/metrics/metrics/lodestar.d.ts +27 -0
  202. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  203. package/lib/metrics/metrics/lodestar.js +64 -0
  204. package/lib/metrics/metrics/lodestar.js.map +1 -1
  205. package/lib/network/gossip/interface.d.ts +20 -2
  206. package/lib/network/gossip/interface.d.ts.map +1 -1
  207. package/lib/network/gossip/interface.js +3 -0
  208. package/lib/network/gossip/interface.js.map +1 -1
  209. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  210. package/lib/network/gossip/scoringParameters.js +38 -2
  211. package/lib/network/gossip/scoringParameters.js.map +1 -1
  212. package/lib/network/gossip/topic.d.ts +77 -1
  213. package/lib/network/gossip/topic.d.ts.map +1 -1
  214. package/lib/network/gossip/topic.js +20 -0
  215. package/lib/network/gossip/topic.js.map +1 -1
  216. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  217. package/lib/network/processor/gossipHandlers.js +34 -3
  218. package/lib/network/processor/gossipHandlers.js.map +1 -1
  219. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  220. package/lib/network/processor/gossipQueues/index.js +16 -0
  221. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  222. package/lib/network/processor/index.d.ts.map +1 -1
  223. package/lib/network/processor/index.js +3 -0
  224. package/lib/network/processor/index.js.map +1 -1
  225. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  226. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -4
  227. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  228. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +1 -2
  229. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
  230. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +5 -26
  231. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  232. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +1 -2
  233. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
  234. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +5 -7
  235. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  236. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  237. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +1 -2
  238. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  239. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  240. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -5
  241. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  242. package/lib/network/reqresp/handlers/index.js +2 -2
  243. package/lib/network/reqresp/handlers/index.js.map +1 -1
  244. package/lib/sync/backfill/backfill.js +2 -2
  245. package/lib/sync/backfill/backfill.js.map +1 -1
  246. package/lib/sync/backfill/verify.d.ts +1 -2
  247. package/lib/sync/backfill/verify.d.ts.map +1 -1
  248. package/lib/sync/backfill/verify.js +2 -2
  249. package/lib/sync/backfill/verify.js.map +1 -1
  250. package/lib/sync/range/chain.d.ts.map +1 -1
  251. package/lib/sync/range/chain.js +0 -1
  252. package/lib/sync/range/chain.js.map +1 -1
  253. package/lib/sync/range/range.d.ts.map +1 -1
  254. package/lib/sync/range/range.js +0 -3
  255. package/lib/sync/range/range.js.map +1 -1
  256. package/lib/sync/unknownBlock.d.ts.map +1 -1
  257. package/lib/sync/unknownBlock.js +0 -3
  258. package/lib/sync/unknownBlock.js.map +1 -1
  259. package/package.json +15 -15
  260. package/src/api/impl/beacon/blocks/index.ts +8 -18
  261. package/src/api/impl/debug/index.ts +2 -6
  262. package/src/api/impl/lodestar/index.ts +6 -3
  263. package/src/api/impl/validator/index.ts +12 -11
  264. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -0
  265. package/src/chain/blocks/blockInput/blockInput.ts +8 -0
  266. package/src/chain/blocks/importBlock.ts +2 -6
  267. package/src/chain/blocks/index.ts +0 -19
  268. package/src/chain/blocks/types.ts +0 -2
  269. package/src/chain/blocks/verifyBlock.ts +0 -9
  270. package/src/chain/blocks/verifyBlocksSignatures.ts +4 -12
  271. package/src/chain/blocks/writeBlockInputToDb.ts +24 -30
  272. package/src/chain/bls/multithread/index.ts +7 -4
  273. package/src/chain/bls/multithread/jobItem.ts +7 -3
  274. package/src/chain/bls/singleThread.ts +5 -3
  275. package/src/chain/bls/utils.ts +15 -7
  276. package/src/chain/chain.ts +205 -23
  277. package/src/chain/errors/attestationError.ts +11 -1
  278. package/src/chain/errors/executionPayloadBid.ts +35 -0
  279. package/src/chain/errors/executionPayloadEnvelope.ts +34 -0
  280. package/src/chain/errors/index.ts +3 -0
  281. package/src/chain/errors/payloadAttestation.ts +25 -0
  282. package/src/chain/forkChoice/index.ts +19 -0
  283. package/src/chain/interface.ts +32 -1
  284. package/src/chain/opPools/executionPayloadBidPool.ts +77 -0
  285. package/src/chain/opPools/index.ts +2 -0
  286. package/src/chain/opPools/payloadAttestationPool.ts +157 -0
  287. package/src/chain/prepareNextSlot.ts +6 -6
  288. package/src/chain/produceBlock/produceBlockBody.ts +7 -5
  289. package/src/chain/regen/interface.ts +2 -12
  290. package/src/chain/regen/queued.ts +3 -23
  291. package/src/chain/regen/regen.ts +4 -24
  292. package/src/chain/seenCache/index.ts +3 -1
  293. package/src/chain/seenCache/seenAttesters.ts +5 -0
  294. package/src/chain/seenCache/seenExecutionPayloadBids.ts +35 -0
  295. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +34 -0
  296. package/src/chain/validation/aggregateAndProof.ts +36 -14
  297. package/src/chain/validation/attestation.ts +33 -16
  298. package/src/chain/validation/attesterSlashing.ts +1 -6
  299. package/src/chain/validation/blobSidecar.ts +2 -7
  300. package/src/chain/validation/block.ts +5 -4
  301. package/src/chain/validation/dataColumnSidecar.ts +2 -7
  302. package/src/chain/validation/executionPayloadBid.ts +140 -0
  303. package/src/chain/validation/executionPayloadEnvelope.ts +122 -0
  304. package/src/chain/validation/payloadAttestationMessage.ts +109 -0
  305. package/src/chain/validation/proposerSlashing.ts +1 -6
  306. package/src/chain/validation/signatureSets/aggregateAndProof.ts +9 -14
  307. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -4
  308. package/src/chain/validation/signatureSets/selectionProof.ts +9 -9
  309. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -4
  310. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -3
  311. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -4
  312. package/src/chain/validation/syncCommittee.ts +1 -1
  313. package/src/chain/validation/syncCommitteeContributionAndProof.ts +3 -5
  314. package/src/chain/validation/voluntaryExit.ts +1 -1
  315. package/src/chain/validatorMonitor.ts +52 -3
  316. package/src/db/repositories/checkpointState.ts +1 -1
  317. package/src/metrics/metrics/lodestar.ts +65 -0
  318. package/src/network/gossip/interface.ts +17 -0
  319. package/src/network/gossip/scoringParameters.ts +44 -2
  320. package/src/network/gossip/topic.ts +21 -0
  321. package/src/network/processor/gossipHandlers.ts +48 -3
  322. package/src/network/processor/gossipQueues/index.ts +16 -0
  323. package/src/network/processor/index.ts +3 -0
  324. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -4
  325. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +5 -32
  326. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +5 -9
  327. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +5 -2
  328. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +1 -5
  329. package/src/network/reqresp/handlers/index.ts +2 -2
  330. package/src/sync/backfill/backfill.ts +2 -2
  331. package/src/sync/backfill/verify.ts +2 -3
  332. package/src/sync/range/chain.ts +0 -1
  333. package/src/sync/range/range.ts +0 -3
  334. package/src/sync/unknownBlock.ts +0 -3
@@ -28,7 +28,7 @@ async function validateProposerSlashing(chain, proposerSlashing, prioritizeBls =
28
28
  error: e,
29
29
  });
30
30
  }
31
- const signatureSets = getProposerSlashingSignatureSets(chain.config, chain.index2pubkey, state.slot, proposerSlashing);
31
+ const signatureSets = getProposerSlashingSignatureSets(chain.config, state.slot, proposerSlashing);
32
32
  if (!(await chain.bls.verifySignatureSets(signatureSets, { batchable: true, priority: prioritizeBls }))) {
33
33
  throw new ProposerSlashingError(GossipAction.REJECT, {
34
34
  code: ProposerSlashingErrorCode.INVALID,
@@ -1 +1 @@
1
- {"version":3,"file":"proposerSlashing.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAC;AAEzG,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAGlG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,gBAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAmB,EACnB,gBAAyC;IAEzC,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAmB,EACnB,gBAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,2GAA2G;IAC3G,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,cAAc;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpG,mDAAmD;QACnD,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,CAAU;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,gCAAgC,CACpD,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,IAAI,EACV,gBAAgB,CACjB,CAAC;IACF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,KAAK,CAAC,mBAAmB,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"proposerSlashing.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAC;AAEzG,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAGlG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,gBAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAmB,EACnB,gBAAyC;IAEzC,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAmB,EACnB,gBAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,2GAA2G;IAC3G,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,cAAc;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpG,mDAAmD;QACnD,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,CAAU;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,gCAAgC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACnG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,KAAK,CAAC,mBAAmB,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,7 +1,6 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
1
  import { BeaconConfig } from "@lodestar/config";
3
2
  import { ISignatureSet } from "@lodestar/state-transition";
4
- import { Epoch, SignedAggregateAndProof } from "@lodestar/types";
3
+ import { Epoch, SignedAggregateAndProof, ValidatorIndex } from "@lodestar/types";
5
4
  export declare function getAggregateAndProofSigningRoot(config: BeaconConfig, epoch: Epoch, aggregateAndProof: SignedAggregateAndProof): Uint8Array;
6
- export declare function getAggregateAndProofSignatureSet(config: BeaconConfig, epoch: Epoch, aggregator: PublicKey, aggregateAndProof: SignedAggregateAndProof): ISignatureSet;
5
+ export declare function getAggregateAndProofSignatureSet(config: BeaconConfig, epoch: Epoch, aggregatorIndex: ValidatorIndex, aggregateAndProof: SignedAggregateAndProof): ISignatureSet;
7
6
  //# sourceMappingURL=aggregateAndProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregateAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,aAAa,EAId,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,KAAK,EAAE,uBAAuB,EAAM,MAAM,iBAAiB,CAAC;AAEpE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,uBAAuB,GACzC,UAAU,CASZ;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,SAAS,EACrB,iBAAiB,EAAE,uBAAuB,GACzC,aAAa,CAMf"}
1
+ {"version":3,"file":"aggregateAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAgE,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpF,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,uBAAuB,GACzC,UAAU,CASZ;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,cAAc,EAC/B,iBAAiB,EAAE,uBAAuB,GACzC,aAAa,CAOf"}
@@ -1,5 +1,5 @@
1
1
  import { DOMAIN_AGGREGATE_AND_PROOF, ForkSeq } from "@lodestar/params";
2
- import { computeSigningRoot, computeStartSlotAtEpoch, createSingleSignatureSetFromComponents, } from "@lodestar/state-transition";
2
+ import { SignatureSetType, computeSigningRoot, computeStartSlotAtEpoch } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
4
  export function getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof) {
5
5
  // previously, we call `const aggregatorDomain = config.getDomain(state.slot, DOMAIN_AGGREGATE_AND_PROOF, slot);`
@@ -11,7 +11,12 @@ export function getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof
11
11
  const sszType = ForkSeq[fork] >= ForkSeq.electra ? ssz.electra.AggregateAndProof : ssz.phase0.AggregateAndProof;
12
12
  return computeSigningRoot(sszType, aggregateAndProof.message, aggregatorDomain);
13
13
  }
14
- export function getAggregateAndProofSignatureSet(config, epoch, aggregator, aggregateAndProof) {
15
- return createSingleSignatureSetFromComponents(aggregator, getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof), aggregateAndProof.signature);
14
+ export function getAggregateAndProofSignatureSet(config, epoch, aggregatorIndex, aggregateAndProof) {
15
+ return {
16
+ type: SignatureSetType.indexed,
17
+ index: aggregatorIndex,
18
+ signingRoot: getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof),
19
+ signature: aggregateAndProof.signature,
20
+ };
16
21
  }
17
22
  //# sourceMappingURL=aggregateAndProof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,0BAA0B,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,sCAAsC,GACvC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAiC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpE,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,KAAY,EACZ,iBAA0C;IAE1C,iHAAiH;IACjH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAChH,OAAO,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,KAAY,EACZ,UAAqB,EACrB,iBAA0C;IAE1C,OAAO,sCAAsC,CAC3C,UAAU,EACV,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,EACjE,iBAAiB,CAAC,SAAS,CAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAiD,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpF,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,KAAY,EACZ,iBAA0C;IAE1C,iHAAiH;IACjH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAChH,OAAO,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,KAAY,EACZ,eAA+B,EAC/B,iBAA0C;IAE1C,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC;QAC9E,SAAS,EAAE,iBAAiB,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
- import { CachedBeaconStateAllForks, ISignatureSet, Index2PubkeyCache } from "@lodestar/state-transition";
2
+ import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
3
3
  import { altair } from "@lodestar/types";
4
- export declare function getContributionAndProofSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, signedContributionAndProof: altair.SignedContributionAndProof): ISignatureSet;
4
+ export declare function getContributionAndProofSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, signedContributionAndProof: altair.SignedContributionAndProof): ISignatureSet;
5
5
  //# sourceMappingURL=contributionAndProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contributionAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,GAC5D,aAAa,CAaf"}
1
+ {"version":3,"file":"contributionAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,GAC5D,aAAa,CAaf"}
@@ -1,12 +1,12 @@
1
1
  import { DOMAIN_CONTRIBUTION_AND_PROOF } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getContributionAndProofSignatureSet(config, index2pubkey, state, signedContributionAndProof) {
4
+ export function getContributionAndProofSignatureSet(config, state, signedContributionAndProof) {
5
5
  const domain = config.getDomain(state.slot, DOMAIN_CONTRIBUTION_AND_PROOF, signedContributionAndProof.message.contribution.slot);
6
6
  const signingData = signedContributionAndProof.message;
7
7
  return {
8
- type: SignatureSetType.single,
9
- pubkey: index2pubkey[signedContributionAndProof.message.aggregatorIndex],
8
+ type: SignatureSetType.indexed,
9
+ index: signedContributionAndProof.message.aggregatorIndex,
10
10
  signingRoot: computeSigningRoot(ssz.altair.ContributionAndProof, signingData, domain),
11
11
  signature: signedContributionAndProof.signature,
12
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"contributionAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,6BAA6B,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAIL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,0BAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAC7B,KAAK,CAAC,IAAI,EACV,6BAA6B,EAC7B,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CACrD,CAAC;IACF,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC;QACxE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC;QACrF,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"contributionAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,6BAA6B,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,KAAgC,EAChC,0BAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAC7B,KAAK,CAAC,IAAI,EACV,6BAA6B,EAC7B,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CACrD,CAAC;IACF,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,0BAA0B,CAAC,OAAO,CAAC,eAAe;QACzD,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC;QACrF,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC"}
@@ -1,7 +1,6 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
1
  import { BeaconConfig } from "@lodestar/config";
3
2
  import { ISignatureSet } from "@lodestar/state-transition";
4
- import { Slot, phase0 } from "@lodestar/types";
3
+ import { Slot, ValidatorIndex, phase0 } from "@lodestar/types";
5
4
  export declare function getSelectionProofSigningRoot(config: BeaconConfig, slot: Slot): Uint8Array;
6
- export declare function getSelectionProofSignatureSet(config: BeaconConfig, slot: Slot, aggregator: PublicKey, aggregateAndProof: phase0.SignedAggregateAndProof): ISignatureSet;
5
+ export declare function getSelectionProofSignatureSet(config: BeaconConfig, slot: Slot, aggregatorIndex: ValidatorIndex, aggregateAndProof: phase0.SignedAggregateAndProof): ISignatureSet;
7
6
  //# sourceMappingURL=selectionProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAA6D,MAAM,4BAA4B,CAAC;AACrH,OAAO,EAAC,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAElD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,CAOzF;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,SAAS,EACrB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,GAChD,aAAa,CAMf"}
1
+ {"version":3,"file":"selectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAElE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,CAOzF;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,cAAc,EAC/B,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,GAChD,aAAa,CAOf"}
@@ -1,5 +1,5 @@
1
1
  import { DOMAIN_SELECTION_PROOF } from "@lodestar/params";
2
- import { computeSigningRoot, createSingleSignatureSetFromComponents } from "@lodestar/state-transition";
2
+ import { SignatureSetType, computeSigningRoot } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
4
  export function getSelectionProofSigningRoot(config, slot) {
5
5
  // previously, we call `const selectionProofDomain = config.getDomain(state.slot, DOMAIN_SELECTION_PROOF, slot)`
@@ -9,7 +9,12 @@ export function getSelectionProofSigningRoot(config, slot) {
9
9
  const selectionProofDomain = config.getDomainAtFork(fork, DOMAIN_SELECTION_PROOF);
10
10
  return computeSigningRoot(ssz.Slot, slot, selectionProofDomain);
11
11
  }
12
- export function getSelectionProofSignatureSet(config, slot, aggregator, aggregateAndProof) {
13
- return createSingleSignatureSetFromComponents(aggregator, getSelectionProofSigningRoot(config, slot), aggregateAndProof.message.selectionProof);
12
+ export function getSelectionProofSignatureSet(config, slot, aggregatorIndex, aggregateAndProof) {
13
+ return {
14
+ type: SignatureSetType.indexed,
15
+ index: aggregatorIndex,
16
+ signingRoot: getSelectionProofSigningRoot(config, slot),
17
+ signature: aggregateAndProof.message.selectionProof,
18
+ };
14
19
  }
15
20
  //# sourceMappingURL=selectionProof.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAgB,kBAAkB,EAAE,sCAAsC,EAAC,MAAM,4BAA4B,CAAC;AACrH,OAAO,EAAe,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAElD,MAAM,UAAU,4BAA4B,CAAC,MAAoB,EAAE,IAAU;IAC3E,gHAAgH;IAChH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,oBAAoB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAClF,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,IAAU,EACV,UAAqB,EACrB,iBAAiD;IAEjD,OAAO,sCAAsC,CAC3C,UAAU,EACV,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1C,iBAAiB,CAAC,OAAO,CAAC,cAAc,CACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"selectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAA+B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAElE,MAAM,UAAU,4BAA4B,CAAC,MAAoB,EAAE,IAAU;IAC3E,gHAAgH;IAChH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,oBAAoB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAClF,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,IAAU,EACV,eAA+B,EAC/B,iBAAiD;IAEjD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC;QACvD,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,cAAc;KACpD,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
- import { CachedBeaconStateAllForks, ISignatureSet, Index2PubkeyCache } from "@lodestar/state-transition";
2
+ import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
3
3
  import { altair } from "@lodestar/types";
4
- export declare function getSyncCommitteeSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, syncCommittee: altair.SyncCommitteeMessage): ISignatureSet;
4
+ export declare function getSyncCommitteeSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, syncCommittee: altair.SyncCommitteeMessage): ISignatureSet;
5
5
  //# sourceMappingURL=syncCommittee.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,aAAa,EAAE,MAAM,CAAC,oBAAoB,GACzC,aAAa,CASf"}
1
+ {"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,aAAa,EAAE,MAAM,CAAC,oBAAoB,GACzC,aAAa,CASf"}
@@ -1,11 +1,11 @@
1
1
  import { DOMAIN_SYNC_COMMITTEE } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getSyncCommitteeSignatureSet(config, index2pubkey, state, syncCommittee) {
4
+ export function getSyncCommitteeSignatureSet(config, state, syncCommittee) {
5
5
  const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE, syncCommittee.slot);
6
6
  return {
7
- type: SignatureSetType.single,
8
- pubkey: index2pubkey[syncCommittee.validatorIndex],
7
+ type: SignatureSetType.indexed,
8
+ index: syncCommittee.validatorIndex,
9
9
  signingRoot: computeSigningRoot(ssz.Root, syncCommittee.beaconBlockRoot, domain),
10
10
  signature: syncCommittee.signature,
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAIL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,aAA0C;IAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC;QAClD,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC;QAChF,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,KAAgC,EAChC,aAA0C;IAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,aAAa,CAAC,cAAc;QACnC,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC;QAChF,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,5 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
1
  import { BeaconConfig } from "@lodestar/config";
3
2
  import { CachedBeaconStateAltair, ISignatureSet } from "@lodestar/state-transition";
4
3
  import { altair } from "@lodestar/types";
5
- export declare function getSyncCommitteeContributionSignatureSet(config: BeaconConfig, state: CachedBeaconStateAltair, contribution: altair.SyncCommitteeContribution, pubkeys: PublicKey[]): ISignatureSet;
4
+ export declare function getSyncCommitteeContributionSignatureSet(config: BeaconConfig, state: CachedBeaconStateAltair, contribution: altair.SyncCommitteeContribution, participantIndices: number[]): ISignatureSet;
6
5
  //# sourceMappingURL=syncCommitteeContribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContribution.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,uBAAuB,EAAE,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,uBAAuB,EAC9B,YAAY,EAAE,MAAM,CAAC,yBAAyB,EAC9C,OAAO,EAAE,SAAS,EAAE,GACnB,aAAa,CAQf"}
1
+ {"version":3,"file":"syncCommitteeContribution.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,uBAAuB,EAAE,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,uBAAuB,EAC9B,YAAY,EAAE,MAAM,CAAC,yBAAyB,EAC9C,kBAAkB,EAAE,MAAM,EAAE,GAC3B,aAAa,CAQf"}
@@ -1,11 +1,11 @@
1
1
  import { DOMAIN_SYNC_COMMITTEE } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getSyncCommitteeContributionSignatureSet(config, state, contribution, pubkeys) {
4
+ export function getSyncCommitteeContributionSignatureSet(config, state, contribution, participantIndices) {
5
5
  const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE, contribution.slot);
6
6
  return {
7
7
  type: SignatureSetType.aggregate,
8
- pubkeys,
8
+ indices: participantIndices,
9
9
  signingRoot: computeSigningRoot(ssz.Root, contribution.beaconBlockRoot, domain),
10
10
  signature: contribution.signature,
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContribution.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAyC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,wCAAwC,CACtD,MAAoB,EACpB,KAA8B,EAC9B,YAA8C,EAC9C,OAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO;QACP,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;QAC/E,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"syncCommitteeContribution.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAyC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,wCAAwC,CACtD,MAAoB,EACpB,KAA8B,EAC9B,YAA8C,EAC9C,kBAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;QAC/E,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
- import { CachedBeaconStateAllForks, ISignatureSet, Index2PubkeyCache } from "@lodestar/state-transition";
2
+ import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
3
3
  import { altair } from "@lodestar/types";
4
- export declare function getSyncCommitteeSelectionProofSignatureSet(config: BeaconConfig, index2pubkey: Index2PubkeyCache, state: CachedBeaconStateAllForks, contributionAndProof: altair.ContributionAndProof): ISignatureSet;
4
+ export declare function getSyncCommitteeSelectionProofSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, contributionAndProof: altair.ContributionAndProof): ISignatureSet;
5
5
  //# sourceMappingURL=syncCommitteeSelectionProof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeSelectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,yBAAyB,EAChC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,GAChD,aAAa,CAaf"}
1
+ {"version":3,"file":"syncCommitteeSelectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,GAChD,aAAa,CAaf"}
@@ -1,7 +1,7 @@
1
1
  import { DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF } from "@lodestar/params";
2
2
  import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
3
3
  import { ssz } from "@lodestar/types";
4
- export function getSyncCommitteeSelectionProofSignatureSet(config, index2pubkey, state, contributionAndProof) {
4
+ export function getSyncCommitteeSelectionProofSignatureSet(config, state, contributionAndProof) {
5
5
  const slot = contributionAndProof.contribution.slot;
6
6
  const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, slot);
7
7
  const signingData = {
@@ -9,8 +9,8 @@ export function getSyncCommitteeSelectionProofSignatureSet(config, index2pubkey,
9
9
  subcommitteeIndex: contributionAndProof.contribution.subcommitteeIndex,
10
10
  };
11
11
  return {
12
- type: SignatureSetType.single,
13
- pubkey: index2pubkey[contributionAndProof.aggregatorIndex],
12
+ type: SignatureSetType.indexed,
13
+ index: contributionAndProof.aggregatorIndex,
14
14
  signingRoot: computeSigningRoot(ssz.altair.SyncAggregatorSelectionData, signingData, domain),
15
15
  signature: contributionAndProof.selectionProof,
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeSelectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qCAAqC,EAAC,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAIL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,0CAA0C,CACxD,MAAoB,EACpB,YAA+B,EAC/B,KAAgC,EAChC,oBAAiD;IAEjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qCAAqC,EAAE,IAAI,CAAC,CAAC;IACzF,MAAM,WAAW,GAAuC;QACtD,IAAI;QACJ,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,iBAAiB;KACvE,CAAC;IACF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM,EAAE,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC;QAC1D,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC;QAC5F,SAAS,EAAE,oBAAoB,CAAC,cAAc;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"syncCommitteeSelectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qCAAqC,EAAC,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,0CAA0C,CACxD,MAAoB,EACpB,KAAgC,EAChC,oBAAiD;IAEjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qCAAqC,EAAE,IAAI,CAAC,CAAC;IACzF,MAAM,WAAW,GAAuC;QACtD,IAAI;QACJ,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,iBAAiB;KACvE,CAAC;IACF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,oBAAoB,CAAC,eAAe;QAC3C,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC;QAC5F,SAAS,EAAE,oBAAoB,CAAC,cAAc;KAC/C,CAAC;AACJ,CAAC"}
@@ -61,7 +61,7 @@ export async function validateApiSyncCommittee(chain, headState, syncCommittee)
61
61
  * Abstracted so it can be re-used in API validation.
62
62
  */
63
63
  async function validateSyncCommitteeSigOnly(chain, headState, syncCommittee, prioritizeBls = false) {
64
- const signatureSet = getSyncCommitteeSignatureSet(chain.config, chain.index2pubkey, headState, syncCommittee);
64
+ const signatureSet = getSyncCommitteeSignatureSet(chain.config, headState, syncCommittee);
65
65
  if (!(await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls }))) {
66
66
  throw new SyncCommitteeError(GossipAction.REJECT, {
67
67
  code: SyncCommitteeErrorCode.INVALID_SIGNATURE,
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CAsF9D"}
1
+ {"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CAoF9D"}
@@ -10,7 +10,6 @@ export async function validateSyncCommitteeGossipContributionAndProof(chain, sig
10
10
  const contributionAndProof = signedContributionAndProof.message;
11
11
  const { contribution, aggregatorIndex } = contributionAndProof;
12
12
  const { subcommitteeIndex, slot } = contribution;
13
- const { index2pubkey } = chain;
14
13
  const headState = chain.getHeadState();
15
14
  validateGossipSyncCommitteeExceptSig(chain, headState, subcommitteeIndex, {
16
15
  slot,
@@ -54,16 +53,15 @@ export async function validateSyncCommitteeGossipContributionAndProof(chain, sig
54
53
  // [REJECT] The aggregator's validator index is in the declared subcommittee of the current sync committee --
55
54
  // i.e. state.validators[contribution_and_proof.aggregator_index].pubkey in get_sync_subcommittee_pubkeys(state, contribution.subcommittee_index).
56
55
  // > Checked in validateGossipSyncCommitteeExceptSig()
57
- const participantPubkeys = syncCommitteeParticipantIndices.map((validatorIndex) => index2pubkey[validatorIndex]);
58
56
  const signatureSets = [
59
57
  // [REJECT] The contribution_and_proof.selection_proof is a valid signature of the SyncAggregatorSelectionData
60
58
  // derived from the contribution by the validator with index contribution_and_proof.aggregator_index.
61
- getSyncCommitteeSelectionProofSignatureSet(chain.config, index2pubkey, headState, contributionAndProof),
59
+ getSyncCommitteeSelectionProofSignatureSet(chain.config, headState, contributionAndProof),
62
60
  // [REJECT] The aggregator signature, signed_contribution_and_proof.signature, is valid.
63
- getContributionAndProofSignatureSet(chain.config, index2pubkey, headState, signedContributionAndProof),
61
+ getContributionAndProofSignatureSet(chain.config, headState, signedContributionAndProof),
64
62
  // [REJECT] The aggregate signature is valid for the message beacon_block_root and aggregate pubkey derived from
65
63
  // the participation info in aggregation_bits for the subcommittee specified by the contribution.subcommittee_index.
66
- getSyncCommitteeContributionSignatureSet(chain.config, headState, contribution, participantPubkeys),
64
+ getSyncCommitteeContributionSignatureSet(chain.config, headState, contribution, syncCommitteeParticipantIndices),
67
65
  ];
68
66
  if (!(await chain.bls.verifySignatureSets(signatureSets, { batchable: true }))) {
69
67
  throw new SyncCommitteeError(GossipAction.REJECT, {
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ async function validateVoluntaryExit(chain, voluntaryExit, prioritizeBls = false
32
32
  code: voluntaryExitValidityToErrorCode(validity),
33
33
  });
34
34
  }
35
- const signatureSet = getVoluntaryExitSignatureSet(chain.config, chain.index2pubkey, state.slot, voluntaryExit);
35
+ const signatureSet = getVoluntaryExitSignatureSet(chain.config, state.slot, voluntaryExit);
36
36
  if (!(await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls }))) {
37
37
  throw new VoluntaryExitError(GossipAction.REJECT, {
38
38
  code: VoluntaryExitErrorCode.INVALID_SIGNATURE,
@@ -1 +1 @@
1
- {"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAmB,EACnB,aAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,aAAyC;IAEzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,KAAmB,EACnB,aAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,sGAAsG;IACtG,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,EAAE;IACF,gFAAgF;IAChF,6DAA6D;IAC7D,sGAAsG;IACtG,kGAAkG;IAClG,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE9F,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,gCAAgC,CAAC,QAAQ,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAmB,EACnB,aAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,aAAyC;IAEzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,KAAmB,EACnB,aAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,sGAAsG;IACtG,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,EAAE;IACF,gFAAgF;IAChF,6DAA6D;IAC7D,sGAAsG;IACtG,kGAAkG;IAClG,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE9F,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,gCAAgC,CAAC,QAAQ,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3F,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -26,6 +26,8 @@ export type ValidatorMonitor = {
26
26
  registerSyncAggregateInBlock(epoch: Epoch, syncAggregate: altair.SyncAggregate, syncCommitteeIndices: Uint32Array): void;
27
27
  onceEveryEndOfEpoch(state: CachedBeaconStateAllForks): void;
28
28
  scrapeMetrics(slotClock: Slot): void;
29
+ /** Returns the list of validator indices currently being monitored */
30
+ getMonitoredValidatorIndices(): ValidatorIndex[];
29
31
  };
30
32
  export type ValidatorMonitorOpts = {
31
33
  /** Log validator monitor events as info */
@@ -1 +1 @@
1
- {"version":3,"file":"validatorMonitor.d.ts","sourceRoot":"","sources":["../../src/chain/validatorMonitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validatorMonitor.d.ts","sourceRoot":"","sources":["../../src/chain/validatorMonitor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ForkSeq, MIN_ATTESTATION_INCLUSION_DELAY, SLOTS_PER_EPOCH } from "@lodestar/params";
2
2
  import { computeEpochAtSlot, computeStartSlotAtEpoch, computeTimeAtSlot, getBlockRootAtSlot, getCurrentSlot, parseAttesterFlags, parseParticipationFlags, } from "@lodestar/state-transition";
3
- import { LogLevel, MapDef, MapDefMax, toRootHex } from "@lodestar/utils";
3
+ import { LogLevel, MapDef, MapDefMax, prettyPrintIndices, toRootHex } from "@lodestar/utils";
4
4
  import { GENESIS_SLOT } from "../constants/constants.js";
5
5
  /** The validator monitor collects per-epoch data about each monitored validator.
6
6
  * Historical data will be kept around for `HISTORIC_EPOCHS` before it is pruned.
@@ -10,7 +10,8 @@ const MAX_CACHED_DISTINCT_TARGETS = 4;
10
10
  // TODO GLOAS: re-evaluate these timings
11
11
  const LATE_ATTESTATION_SUBMISSION_BPS = 5000;
12
12
  const LATE_BLOCK_SUBMISSION_BPS = 2500;
13
- const RETAIN_REGISTERED_VALIDATORS_MS = 1 * 3600 * 1000; // 1 hour
13
+ /** Number of epochs to retain registered validators after their last registration */
14
+ const RETAIN_REGISTERED_VALIDATORS_EPOCHS = 2;
14
15
  export var OpSource;
15
16
  (function (OpSource) {
16
17
  OpSource["api"] = "api";
@@ -74,6 +75,8 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
74
75
  const log = (message, context) => {
75
76
  logger[logLevel](message, context);
76
77
  };
78
+ // Calculate retain time dynamically based on slot duration (2 epochs)
79
+ const retainRegisteredValidatorsMs = SLOTS_PER_EPOCH * config.SLOT_DURATION_MS * RETAIN_REGISTERED_VALIDATORS_EPOCHS;
77
80
  /** The validators that require additional monitoring. */
78
81
  const validators = new MapDef(() => ({
79
82
  summaries: new Map(),
@@ -87,10 +90,17 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
87
90
  lastRegisteredTimeMs: 0,
88
91
  }));
89
92
  let lastRegisteredStatusEpoch = -1;
93
+ // Track validator additions/removals per epoch for logging
94
+ const addedValidatorsInEpoch = new Set();
95
+ const removedValidatorsInEpoch = new Set();
90
96
  const validatorMonitorMetrics = metricsRegister ? createValidatorMonitorMetrics(metricsRegister) : null;
91
97
  const validatorMonitor = {
92
98
  registerLocalValidator(index) {
99
+ const isNewValidator = !validators.has(index);
93
100
  validators.getOrDefault(index).lastRegisteredTimeMs = Date.now();
101
+ if (isNewValidator) {
102
+ addedValidatorsInEpoch.add(index);
103
+ }
94
104
  },
95
105
  registerLocalValidatorInSyncCommittee(index, untilEpoch) {
96
106
  const validator = validators.get(index);
@@ -401,10 +411,25 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
401
411
  }
402
412
  // Prune validators not seen in a while
403
413
  for (const [index, validator] of validators.entries()) {
404
- if (Date.now() - validator.lastRegisteredTimeMs > RETAIN_REGISTERED_VALIDATORS_MS) {
414
+ if (Date.now() - validator.lastRegisteredTimeMs > retainRegisteredValidatorsMs) {
405
415
  validators.delete(index);
416
+ removedValidatorsInEpoch.add(index);
406
417
  }
407
418
  }
419
+ // Log validator monitor status every epoch
420
+ const allIndices = Array.from(validators.keys()).sort((a, b) => a - b);
421
+ const addedIndices = Array.from(addedValidatorsInEpoch).sort((a, b) => a - b);
422
+ const removedIndices = Array.from(removedValidatorsInEpoch).sort((a, b) => a - b);
423
+ log("Validator monitor status", {
424
+ epoch: computeEpochAtSlot(headState.slot),
425
+ added: addedIndices.length > 0 ? prettyPrintIndices(addedIndices) : "none",
426
+ removed: removedIndices.length > 0 ? prettyPrintIndices(removedIndices) : "none",
427
+ total: validators.size,
428
+ indices: prettyPrintIndices(allIndices),
429
+ });
430
+ // Clear tracking sets for next epoch
431
+ addedValidatorsInEpoch.clear();
432
+ removedValidatorsInEpoch.clear();
408
433
  // Compute summaries of previous epoch attestation performance
409
434
  const prevEpoch = computeEpochAtSlot(headState.slot) - 1;
410
435
  // During the end of first epoch, the prev epoch with be -1
@@ -456,6 +481,12 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
456
481
  */
457
482
  scrapeMetrics(slotClock) {
458
483
  validatorMonitorMetrics?.validatorsConnected.set(validators.size);
484
+ // Update static metric with connected validator indices
485
+ if (validatorMonitorMetrics?.validatorsConnectedIndices) {
486
+ validatorMonitorMetrics.validatorsConnectedIndices.reset();
487
+ const allIndices = Array.from(validators.keys()).sort((a, b) => a - b);
488
+ validatorMonitorMetrics.validatorsConnectedIndices.set({ indices: prettyPrintIndices(allIndices) }, 1);
489
+ }
459
490
  const epoch = computeEpochAtSlot(slotClock);
460
491
  const slotInEpoch = slotClock % SLOTS_PER_EPOCH;
461
492
  // Only start to report on the current epoch once we've progressed past the point where
@@ -518,6 +549,9 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
518
549
  validatorMonitorMetrics?.prevEpochSyncCommitteeHits.set(prevEpochSyncCommitteeHits);
519
550
  validatorMonitorMetrics?.prevEpochSyncCommitteeMisses.set(prevEpochSyncCommitteeMisses);
520
551
  },
552
+ getMonitoredValidatorIndices() {
553
+ return Array.from(validators.keys()).sort((a, b) => a - b);
554
+ },
521
555
  };
522
556
  // Register a single collect() function to run all validatorMonitor metrics
523
557
  validatorMonitorMetrics?.validatorsConnected.addCollect(() => {
@@ -742,6 +776,11 @@ function createValidatorMonitorMetrics(register) {
742
776
  name: "validator_monitor_validators",
743
777
  help: "Count of validators that are specifically monitored by this beacon node",
744
778
  }),
779
+ validatorsConnectedIndices: register.gauge({
780
+ name: "validator_monitor_indices",
781
+ help: "Static metric with connected validator indices as label, value is always 1",
782
+ labelNames: ["indices"],
783
+ }),
745
784
  validatorsInSyncCommittee: register.gauge({
746
785
  name: "validator_monitor_validators_in_sync_committee",
747
786
  help: "Count of validators monitored by this beacon node that are part of sync committee",