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

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 (341) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +15 -25
  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 +15 -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/ColumnReconstructionTracker.d.ts +2 -0
  15. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  16. package/lib/chain/ColumnReconstructionTracker.js +7 -3
  17. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  18. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  19. package/lib/chain/archiveStore/utils/archiveBlocks.js +4 -0
  20. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  21. package/lib/chain/blocks/blockInput/blockInput.d.ts +2 -0
  22. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  23. package/lib/chain/blocks/blockInput/blockInput.js +6 -0
  24. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  25. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  26. package/lib/chain/blocks/importBlock.js +2 -6
  27. package/lib/chain/blocks/importBlock.js.map +1 -1
  28. package/lib/chain/blocks/index.d.ts.map +1 -1
  29. package/lib/chain/blocks/index.js +0 -14
  30. package/lib/chain/blocks/index.js.map +1 -1
  31. package/lib/chain/blocks/types.d.ts +0 -2
  32. package/lib/chain/blocks/types.d.ts.map +1 -1
  33. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  34. package/lib/chain/blocks/verifyBlock.js +1 -8
  35. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  36. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  37. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  38. package/lib/chain/blocks/verifyBlocksSignatures.js +2 -2
  39. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  40. package/lib/chain/blocks/writeBlockInputToDb.d.ts +1 -4
  41. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  42. package/lib/chain/blocks/writeBlockInputToDb.js +20 -28
  43. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  44. package/lib/chain/bls/multithread/index.d.ts +3 -1
  45. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  46. package/lib/chain/bls/multithread/index.js +5 -3
  47. package/lib/chain/bls/multithread/index.js.map +1 -1
  48. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  49. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  50. package/lib/chain/bls/multithread/jobItem.js +2 -2
  51. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  52. package/lib/chain/bls/singleThread.d.ts +4 -2
  53. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  54. package/lib/chain/bls/singleThread.js +4 -2
  55. package/lib/chain/bls/singleThread.js.map +1 -1
  56. package/lib/chain/bls/utils.d.ts +2 -2
  57. package/lib/chain/bls/utils.d.ts.map +1 -1
  58. package/lib/chain/bls/utils.js +9 -6
  59. package/lib/chain/bls/utils.js.map +1 -1
  60. package/lib/chain/chain.d.ts +21 -4
  61. package/lib/chain/chain.d.ts.map +1 -1
  62. package/lib/chain/chain.js +185 -19
  63. package/lib/chain/chain.js.map +1 -1
  64. package/lib/chain/errors/attestationError.d.ts +14 -1
  65. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  66. package/lib/chain/errors/attestationError.js +8 -0
  67. package/lib/chain/errors/attestationError.js.map +1 -1
  68. package/lib/chain/errors/executionPayloadBid.d.ts +48 -0
  69. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -0
  70. package/lib/chain/errors/executionPayloadBid.js +15 -0
  71. package/lib/chain/errors/executionPayloadBid.js.map +1 -0
  72. package/lib/chain/errors/executionPayloadEnvelope.d.ts +48 -0
  73. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -0
  74. package/lib/chain/errors/executionPayloadEnvelope.js +16 -0
  75. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -0
  76. package/lib/chain/errors/index.d.ts +3 -0
  77. package/lib/chain/errors/index.d.ts.map +1 -1
  78. package/lib/chain/errors/index.js +3 -0
  79. package/lib/chain/errors/index.js.map +1 -1
  80. package/lib/chain/errors/payloadAttestation.d.ts +34 -0
  81. package/lib/chain/errors/payloadAttestation.d.ts.map +1 -0
  82. package/lib/chain/errors/payloadAttestation.js +13 -0
  83. package/lib/chain/errors/payloadAttestation.js.map +1 -0
  84. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  85. package/lib/chain/forkChoice/index.js +18 -0
  86. package/lib/chain/forkChoice/index.js.map +1 -1
  87. package/lib/chain/interface.d.ts +21 -3
  88. package/lib/chain/interface.d.ts.map +1 -1
  89. package/lib/chain/interface.js.map +1 -1
  90. package/lib/chain/opPools/executionPayloadBidPool.d.ts +21 -0
  91. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -0
  92. package/lib/chain/opPools/executionPayloadBidPool.js +57 -0
  93. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -0
  94. package/lib/chain/opPools/index.d.ts +2 -0
  95. package/lib/chain/opPools/index.d.ts.map +1 -1
  96. package/lib/chain/opPools/index.js +2 -0
  97. package/lib/chain/opPools/index.js.map +1 -1
  98. package/lib/chain/opPools/payloadAttestationPool.d.ts +24 -0
  99. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -0
  100. package/lib/chain/opPools/payloadAttestationPool.js +109 -0
  101. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -0
  102. package/lib/chain/prepareNextSlot.js +6 -4
  103. package/lib/chain/prepareNextSlot.js.map +1 -1
  104. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  105. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  106. package/lib/chain/produceBlock/produceBlockBody.js +5 -3
  107. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  108. package/lib/chain/regen/interface.d.ts +3 -8
  109. package/lib/chain/regen/interface.d.ts.map +1 -1
  110. package/lib/chain/regen/interface.js +1 -1
  111. package/lib/chain/regen/interface.js.map +1 -1
  112. package/lib/chain/regen/queued.d.ts +1 -2
  113. package/lib/chain/regen/queued.d.ts.map +1 -1
  114. package/lib/chain/regen/queued.js +2 -16
  115. package/lib/chain/regen/queued.js.map +1 -1
  116. package/lib/chain/regen/regen.d.ts +5 -7
  117. package/lib/chain/regen/regen.d.ts.map +1 -1
  118. package/lib/chain/regen/regen.js +7 -17
  119. package/lib/chain/regen/regen.js.map +1 -1
  120. package/lib/chain/seenCache/index.d.ts +3 -1
  121. package/lib/chain/seenCache/index.d.ts.map +1 -1
  122. package/lib/chain/seenCache/index.js +3 -1
  123. package/lib/chain/seenCache/index.js.map +1 -1
  124. package/lib/chain/seenCache/seenAttesters.d.ts +5 -0
  125. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  126. package/lib/chain/seenCache/seenAttesters.js +5 -0
  127. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  128. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts +12 -0
  129. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -0
  130. package/lib/chain/seenCache/seenExecutionPayloadBids.js +30 -0
  131. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -0
  132. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +15 -0
  133. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -0
  134. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +28 -0
  135. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -0
  136. package/lib/chain/seenCache/seenGossipBlockInput.js +1 -1
  137. package/lib/chain/validation/aggregateAndProof.js +35 -14
  138. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  139. package/lib/chain/validation/attestation.d.ts +2 -2
  140. package/lib/chain/validation/attestation.d.ts.map +1 -1
  141. package/lib/chain/validation/attestation.js +27 -8
  142. package/lib/chain/validation/attestation.js.map +1 -1
  143. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  144. package/lib/chain/validation/attesterSlashing.js +1 -1
  145. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  146. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  147. package/lib/chain/validation/blobSidecar.js +3 -3
  148. package/lib/chain/validation/blobSidecar.js.map +1 -1
  149. package/lib/chain/validation/block.d.ts.map +1 -1
  150. package/lib/chain/validation/block.js +5 -4
  151. package/lib/chain/validation/block.js.map +1 -1
  152. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  153. package/lib/chain/validation/dataColumnSidecar.js +3 -3
  154. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  155. package/lib/chain/validation/executionPayloadBid.d.ts +5 -0
  156. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -0
  157. package/lib/chain/validation/executionPayloadBid.js +104 -0
  158. package/lib/chain/validation/executionPayloadBid.js.map +1 -0
  159. package/lib/chain/validation/executionPayloadEnvelope.d.ts +5 -0
  160. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -0
  161. package/lib/chain/validation/executionPayloadEnvelope.js +89 -0
  162. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -0
  163. package/lib/chain/validation/payloadAttestationMessage.d.ts +9 -0
  164. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -0
  165. package/lib/chain/validation/payloadAttestationMessage.js +72 -0
  166. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -0
  167. package/lib/chain/validation/proposerSlashing.js +1 -1
  168. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  169. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -3
  170. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -1
  171. package/lib/chain/validation/signatureSets/aggregateAndProof.js +8 -3
  172. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  173. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  174. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  175. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -3
  176. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  177. package/lib/chain/validation/signatureSets/selectionProof.d.ts +2 -3
  178. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -1
  179. package/lib/chain/validation/signatureSets/selectionProof.js +8 -3
  180. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  181. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  182. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  183. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  184. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  185. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +1 -2
  186. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  187. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  188. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  189. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  190. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  191. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +3 -3
  192. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  193. package/lib/chain/validation/syncCommittee.js +1 -1
  194. package/lib/chain/validation/syncCommittee.js.map +1 -1
  195. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  196. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -5
  197. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  198. package/lib/chain/validation/voluntaryExit.js +1 -1
  199. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  200. package/lib/chain/validatorMonitor.d.ts +2 -0
  201. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  202. package/lib/chain/validatorMonitor.js +49 -7
  203. package/lib/chain/validatorMonitor.js.map +1 -1
  204. package/lib/db/repositories/checkpointState.js +0 -1
  205. package/lib/db/repositories/checkpointState.js.map +1 -1
  206. package/lib/metrics/metrics/lodestar.d.ts +27 -0
  207. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  208. package/lib/metrics/metrics/lodestar.js +64 -0
  209. package/lib/metrics/metrics/lodestar.js.map +1 -1
  210. package/lib/network/gossip/interface.d.ts +20 -2
  211. package/lib/network/gossip/interface.d.ts.map +1 -1
  212. package/lib/network/gossip/interface.js +3 -0
  213. package/lib/network/gossip/interface.js.map +1 -1
  214. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  215. package/lib/network/gossip/scoringParameters.js +38 -2
  216. package/lib/network/gossip/scoringParameters.js.map +1 -1
  217. package/lib/network/gossip/topic.d.ts +77 -1
  218. package/lib/network/gossip/topic.d.ts.map +1 -1
  219. package/lib/network/gossip/topic.js +20 -0
  220. package/lib/network/gossip/topic.js.map +1 -1
  221. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  222. package/lib/network/processor/gossipHandlers.js +34 -3
  223. package/lib/network/processor/gossipHandlers.js.map +1 -1
  224. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  225. package/lib/network/processor/gossipQueues/index.js +16 -0
  226. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  227. package/lib/network/processor/index.d.ts.map +1 -1
  228. package/lib/network/processor/index.js +3 -0
  229. package/lib/network/processor/index.js.map +1 -1
  230. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  231. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -4
  232. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  233. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +1 -2
  234. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
  235. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +5 -26
  236. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  237. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +1 -2
  238. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
  239. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +5 -7
  240. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  241. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  242. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +1 -2
  243. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  244. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  245. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -5
  246. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  247. package/lib/network/reqresp/handlers/index.js +2 -2
  248. package/lib/network/reqresp/handlers/index.js.map +1 -1
  249. package/lib/sync/backfill/backfill.js +2 -2
  250. package/lib/sync/backfill/backfill.js.map +1 -1
  251. package/lib/sync/backfill/verify.d.ts +1 -2
  252. package/lib/sync/backfill/verify.d.ts.map +1 -1
  253. package/lib/sync/backfill/verify.js +2 -2
  254. package/lib/sync/backfill/verify.js.map +1 -1
  255. package/lib/sync/range/chain.d.ts.map +1 -1
  256. package/lib/sync/range/chain.js +0 -1
  257. package/lib/sync/range/chain.js.map +1 -1
  258. package/lib/sync/range/range.d.ts.map +1 -1
  259. package/lib/sync/range/range.js +0 -3
  260. package/lib/sync/range/range.js.map +1 -1
  261. package/lib/sync/unknownBlock.d.ts.map +1 -1
  262. package/lib/sync/unknownBlock.js +0 -3
  263. package/lib/sync/unknownBlock.js.map +1 -1
  264. package/package.json +15 -15
  265. package/src/api/impl/beacon/blocks/index.ts +17 -25
  266. package/src/api/impl/debug/index.ts +2 -6
  267. package/src/api/impl/lodestar/index.ts +18 -3
  268. package/src/api/impl/validator/index.ts +12 -11
  269. package/src/chain/ColumnReconstructionTracker.ts +8 -4
  270. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -0
  271. package/src/chain/blocks/blockInput/blockInput.ts +8 -0
  272. package/src/chain/blocks/importBlock.ts +2 -6
  273. package/src/chain/blocks/index.ts +0 -19
  274. package/src/chain/blocks/types.ts +0 -2
  275. package/src/chain/blocks/verifyBlock.ts +0 -9
  276. package/src/chain/blocks/verifyBlocksSignatures.ts +4 -12
  277. package/src/chain/blocks/writeBlockInputToDb.ts +24 -30
  278. package/src/chain/bls/multithread/index.ts +7 -4
  279. package/src/chain/bls/multithread/jobItem.ts +7 -3
  280. package/src/chain/bls/singleThread.ts +5 -3
  281. package/src/chain/bls/utils.ts +15 -7
  282. package/src/chain/chain.ts +210 -27
  283. package/src/chain/errors/attestationError.ts +11 -1
  284. package/src/chain/errors/executionPayloadBid.ts +35 -0
  285. package/src/chain/errors/executionPayloadEnvelope.ts +34 -0
  286. package/src/chain/errors/index.ts +3 -0
  287. package/src/chain/errors/payloadAttestation.ts +25 -0
  288. package/src/chain/forkChoice/index.ts +19 -0
  289. package/src/chain/interface.ts +32 -1
  290. package/src/chain/opPools/executionPayloadBidPool.ts +77 -0
  291. package/src/chain/opPools/index.ts +2 -0
  292. package/src/chain/opPools/payloadAttestationPool.ts +157 -0
  293. package/src/chain/prepareNextSlot.ts +6 -6
  294. package/src/chain/produceBlock/produceBlockBody.ts +7 -5
  295. package/src/chain/regen/interface.ts +2 -12
  296. package/src/chain/regen/queued.ts +3 -23
  297. package/src/chain/regen/regen.ts +10 -25
  298. package/src/chain/seenCache/index.ts +3 -1
  299. package/src/chain/seenCache/seenAttesters.ts +5 -0
  300. package/src/chain/seenCache/seenExecutionPayloadBids.ts +35 -0
  301. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +34 -0
  302. package/src/chain/seenCache/seenGossipBlockInput.ts +1 -1
  303. package/src/chain/validation/aggregateAndProof.ts +36 -14
  304. package/src/chain/validation/attestation.ts +33 -16
  305. package/src/chain/validation/attesterSlashing.ts +1 -6
  306. package/src/chain/validation/blobSidecar.ts +2 -7
  307. package/src/chain/validation/block.ts +5 -4
  308. package/src/chain/validation/dataColumnSidecar.ts +2 -7
  309. package/src/chain/validation/executionPayloadBid.ts +141 -0
  310. package/src/chain/validation/executionPayloadEnvelope.ts +122 -0
  311. package/src/chain/validation/payloadAttestationMessage.ts +109 -0
  312. package/src/chain/validation/proposerSlashing.ts +1 -6
  313. package/src/chain/validation/signatureSets/aggregateAndProof.ts +9 -14
  314. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -4
  315. package/src/chain/validation/signatureSets/selectionProof.ts +9 -9
  316. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -4
  317. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -3
  318. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -4
  319. package/src/chain/validation/syncCommittee.ts +1 -1
  320. package/src/chain/validation/syncCommitteeContributionAndProof.ts +3 -5
  321. package/src/chain/validation/voluntaryExit.ts +1 -1
  322. package/src/chain/validatorMonitor.ts +62 -8
  323. package/src/db/repositories/checkpointState.ts +1 -1
  324. package/src/metrics/metrics/lodestar.ts +65 -0
  325. package/src/network/gossip/interface.ts +17 -0
  326. package/src/network/gossip/scoringParameters.ts +44 -2
  327. package/src/network/gossip/topic.ts +21 -0
  328. package/src/network/processor/gossipHandlers.ts +48 -3
  329. package/src/network/processor/gossipQueues/index.ts +16 -0
  330. package/src/network/processor/index.ts +3 -0
  331. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -4
  332. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +5 -32
  333. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +5 -9
  334. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +5 -2
  335. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +1 -5
  336. package/src/network/reqresp/handlers/index.ts +2 -2
  337. package/src/sync/backfill/backfill.ts +2 -2
  338. package/src/sync/backfill/verify.ts +2 -3
  339. package/src/sync/range/chain.ts +0 -1
  340. package/src/sync/range/range.ts +0 -3
  341. package/src/sync/unknownBlock.ts +0 -3
@@ -1,5 +1,5 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
- import {CachedBeaconStateAllForks, Index2PubkeyCache, getBlockSignatureSets} from "@lodestar/state-transition";
2
+ import {CachedBeaconStateAllForks, getBlockSignatureSets} from "@lodestar/state-transition";
3
3
  import {IndexedAttestation, SignedBeaconBlock} from "@lodestar/types";
4
4
  import {Logger} from "@lodestar/utils";
5
5
  import {Metrics} from "../../metrics/metrics.js";
@@ -17,7 +17,6 @@ import {ImportBlockOpts} from "./types.js";
17
17
  */
18
18
  export async function verifyBlocksSignatures(
19
19
  config: BeaconConfig,
20
- index2pubkey: Index2PubkeyCache,
21
20
  bls: IBlsVerifier,
22
21
  logger: Logger,
23
22
  metrics: Metrics | null,
@@ -42,16 +41,9 @@ export async function verifyBlocksSignatures(
42
41
  : //
43
42
  // Verify signatures per block to track which block is invalid
44
43
  bls.verifySignatureSets(
45
- getBlockSignatureSets(
46
- config,
47
- index2pubkey,
48
- currentSyncCommitteeIndexed,
49
- block,
50
- indexedAttestationsByBlock[i],
51
- {
52
- skipProposerSignature: opts.validProposerSignature,
53
- }
54
- )
44
+ getBlockSignatureSets(config, currentSyncCommitteeIndexed, block, indexedAttestationsByBlock[i], {
45
+ skipProposerSignature: opts.validProposerSignature,
46
+ })
55
47
  );
56
48
 
57
49
  // getBlockSignatureSets() takes 45ms in benchmarks for 2022Q2 mainnet blocks (100 sigs). When syncing a 32 blocks
@@ -98,35 +98,29 @@ export async function writeBlockInputToDb(this: BeaconChain, blocksInputs: IBloc
98
98
  }
99
99
  }
100
100
 
101
- /**
102
- * Prunes eagerly persisted block inputs only if not known to the fork-choice
103
- */
104
- export async function removeEagerlyPersistedBlockInputs(this: BeaconChain, blockInputs: IBlockInput[]): Promise<void> {
105
- const blockToRemove = [];
106
- const blobsToRemove = [];
107
- const dataColumnsToRemove = [];
108
-
109
- for (const blockInput of blockInputs) {
110
- const block = blockInput.getBlock();
111
- const slot = block.message.slot;
112
- const blockRoot = this.config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message);
113
- const blockRootHex = toRootHex(blockRoot);
114
- if (!this.forkChoice.hasBlockHex(blockRootHex)) {
115
- blockToRemove.push(block);
116
-
117
- if (isBlockInputColumns(blockInput) && blockInput.getCustodyColumns().length > 0) {
118
- dataColumnsToRemove.push(blockRoot);
119
- } else if (isBlockInputBlobs(blockInput)) {
120
- const blobSidecars = blockInput.getBlobs();
121
- blobsToRemove.push({blockRoot, slot, blobSidecars});
101
+ export async function persistBlockInputs(this: BeaconChain, blockInputs: IBlockInput[]): Promise<void> {
102
+ await writeBlockInputToDb
103
+ .call(this, blockInputs)
104
+ .catch((e) => {
105
+ this.logger.debug(
106
+ "Error persisting block input in hot db",
107
+ {
108
+ count: blockInputs.length,
109
+ slot: blockInputs[0].slot,
110
+ root: blockInputs[0].blockRootHex,
111
+ },
112
+ e
113
+ );
114
+ })
115
+ .finally(() => {
116
+ for (const blockInput of blockInputs) {
117
+ this.seenBlockInputCache.prune(blockInput.blockRootHex);
122
118
  }
123
- }
124
- }
125
-
126
- await Promise.all([
127
- // TODO: Batch DB operations not with Promise.all but with level db ops
128
- this.db.block.batchRemove(blockToRemove),
129
- this.db.blobSidecars.batchRemove(blobsToRemove),
130
- this.db.dataColumnSidecar.deleteMany(dataColumnsToRemove),
131
- ]);
119
+ if (blockInputs.length === 1) {
120
+ this.logger.debug("Pruned block input", {
121
+ slot: blockInputs[0].slot,
122
+ root: blockInputs[0].blockRootHex,
123
+ });
124
+ }
125
+ });
132
126
  }
@@ -7,7 +7,7 @@ import {Worker, spawn} from "@chainsafe/threads";
7
7
  self = undefined;
8
8
 
9
9
  import {PublicKey} from "@chainsafe/blst";
10
- import {ISignatureSet} from "@lodestar/state-transition";
10
+ import {ISignatureSet, Index2PubkeyCache} from "@lodestar/state-transition";
11
11
  import {Logger} from "@lodestar/utils";
12
12
  import {Metrics} from "../../../metrics/index.js";
13
13
  import {LinkedList} from "../../../util/array.js";
@@ -34,6 +34,7 @@ const workerDir = process.env.NODE_ENV === "test" ? "../../../../lib/chain/bls/m
34
34
  export type BlsMultiThreadWorkerPoolModules = {
35
35
  logger: Logger;
36
36
  metrics: Metrics | null;
37
+ index2pubkey: Index2PubkeyCache;
37
38
  };
38
39
 
39
40
  export type BlsMultiThreadWorkerPoolOptions = {
@@ -113,6 +114,7 @@ type WorkerDescriptor = {
113
114
  export class BlsMultiThreadWorkerPool implements IBlsVerifier {
114
115
  private readonly logger: Logger;
115
116
  private readonly metrics: Metrics | null;
117
+ private readonly index2pubkey: Index2PubkeyCache;
116
118
 
117
119
  private readonly workers: WorkerDescriptor[];
118
120
  private readonly jobs = new LinkedList<JobQueueItem>();
@@ -128,9 +130,10 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
128
130
  private workersBusy = 0;
129
131
 
130
132
  constructor(options: BlsMultiThreadWorkerPoolOptions, modules: BlsMultiThreadWorkerPoolModules) {
131
- const {logger, metrics} = modules;
133
+ const {logger, metrics, index2pubkey} = modules;
132
134
  this.logger = logger;
133
135
  this.metrics = metrics;
136
+ this.index2pubkey = index2pubkey;
134
137
  this.blsVerifyAllMultiThread = options.blsVerifyAllMultiThread ?? false;
135
138
 
136
139
  // Use compressed for herumi for now.
@@ -170,7 +173,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
170
173
  try {
171
174
  return verifySignatureSetsMaybeBatch(
172
175
  sets.map((set) => ({
173
- publicKey: getAggregatedPubkey(set),
176
+ publicKey: getAggregatedPubkey(set, this.index2pubkey),
174
177
  message: set.signingRoot.valueOf(),
175
178
  signature: set.signature,
176
179
  }))
@@ -395,7 +398,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
395
398
  try {
396
399
  // Note: This can throw, must be handled per-job.
397
400
  // Pubkey and signature aggregation is defered here
398
- workReq = await jobItemWorkReq(job, this.metrics);
401
+ workReq = await jobItemWorkReq(job, this.index2pubkey, this.metrics);
399
402
  } catch (e) {
400
403
  this.metrics?.blsThreadPool.errorAggregateSignatureSetsCount.inc({type: job.type});
401
404
 
@@ -1,5 +1,5 @@
1
1
  import {PublicKey, asyncAggregateWithRandomness} from "@chainsafe/blst";
2
- import {ISignatureSet, SignatureSetType} from "@lodestar/state-transition";
2
+ import {ISignatureSet, Index2PubkeyCache, SignatureSetType} from "@lodestar/state-transition";
3
3
  import {Metrics} from "../../../metrics/metrics.js";
4
4
  import {LinkedList} from "../../../util/array.js";
5
5
  import {VerifySignatureOpts} from "../interface.js";
@@ -48,14 +48,18 @@ export function jobItemSigSets(job: JobQueueItem): number {
48
48
  * Prepare BlsWorkReq from JobQueueItem
49
49
  * WARNING: May throw with untrusted user input
50
50
  */
51
- export async function jobItemWorkReq(job: JobQueueItem, metrics: Metrics | null): Promise<BlsWorkReq> {
51
+ export async function jobItemWorkReq(
52
+ job: JobQueueItem,
53
+ index2pubkey: Index2PubkeyCache,
54
+ metrics: Metrics | null
55
+ ): Promise<BlsWorkReq> {
52
56
  switch (job.type) {
53
57
  case JobQueueItemType.default:
54
58
  return {
55
59
  opts: job.opts,
56
60
  sets: job.sets.map((set) => ({
57
61
  // this can throw, handled in the consumer code
58
- publicKey: getAggregatedPubkey(set, metrics).toBytes(),
62
+ publicKey: getAggregatedPubkey(set, index2pubkey, metrics).toBytes(),
59
63
  signature: set.signature,
60
64
  message: set.signingRoot,
61
65
  })),
@@ -1,5 +1,5 @@
1
1
  import {PublicKey, Signature, aggregatePublicKeys, aggregateSignatures, verify} from "@chainsafe/blst";
2
- import {ISignatureSet} from "@lodestar/state-transition";
2
+ import {ISignatureSet, Index2PubkeyCache} from "@lodestar/state-transition";
3
3
  import {Metrics} from "../../metrics/index.js";
4
4
  import {IBlsVerifier} from "./interface.js";
5
5
  import {verifySignatureSetsMaybeBatch} from "./maybeBatch.js";
@@ -7,16 +7,18 @@ import {getAggregatedPubkey, getAggregatedPubkeysCount} from "./utils.js";
7
7
 
8
8
  export class BlsSingleThreadVerifier implements IBlsVerifier {
9
9
  private readonly metrics: Metrics | null;
10
+ private readonly index2pubkey: Index2PubkeyCache;
10
11
 
11
- constructor({metrics = null}: {metrics: Metrics | null}) {
12
+ constructor({metrics = null, index2pubkey}: {metrics: Metrics | null; index2pubkey: Index2PubkeyCache}) {
12
13
  this.metrics = metrics;
14
+ this.index2pubkey = index2pubkey;
13
15
  }
14
16
 
15
17
  async verifySignatureSets(sets: ISignatureSet[]): Promise<boolean> {
16
18
  this.metrics?.bls.aggregatedPubkeys.inc(getAggregatedPubkeysCount(sets));
17
19
 
18
20
  const setsAggregated = sets.map((set) => ({
19
- publicKey: getAggregatedPubkey(set),
21
+ publicKey: getAggregatedPubkey(set, this.index2pubkey, this.metrics),
20
22
  message: set.signingRoot,
21
23
  signature: set.signature,
22
24
  }));
@@ -1,17 +1,25 @@
1
1
  import {PublicKey, aggregatePublicKeys} from "@chainsafe/blst";
2
- import {ISignatureSet, SignatureSetType} from "@lodestar/state-transition";
2
+ import {ISignatureSet, Index2PubkeyCache, SignatureSetType} from "@lodestar/state-transition";
3
3
  import {Metrics} from "../../metrics/metrics.js";
4
4
 
5
- export function getAggregatedPubkey(signatureSet: ISignatureSet, metrics: Metrics | null = null): PublicKey {
5
+ export function getAggregatedPubkey(
6
+ signatureSet: ISignatureSet,
7
+ index2pubkey: Index2PubkeyCache,
8
+ metrics: Metrics | null = null
9
+ ): PublicKey {
6
10
  switch (signatureSet.type) {
7
11
  case SignatureSetType.single:
8
12
  return signatureSet.pubkey;
9
13
 
14
+ case SignatureSetType.indexed:
15
+ return index2pubkey[signatureSet.index];
16
+
10
17
  case SignatureSetType.aggregate: {
11
18
  const timer = metrics?.blsThreadPool.pubkeysAggregationMainThreadDuration.startTimer();
12
- const pubkeys = aggregatePublicKeys(signatureSet.pubkeys);
19
+ const pubkeys = signatureSet.indices.map((i) => index2pubkey[i]);
20
+ const aggregated = aggregatePublicKeys(pubkeys);
13
21
  timer?.();
14
- return pubkeys;
22
+ return aggregated;
15
23
  }
16
24
 
17
25
  default:
@@ -20,11 +28,11 @@ export function getAggregatedPubkey(signatureSet: ISignatureSet, metrics: Metric
20
28
  }
21
29
 
22
30
  export function getAggregatedPubkeysCount(signatureSets: ISignatureSet[]): number {
23
- let pubkeysConut = 0;
31
+ let pubkeysCount = 0;
24
32
  for (const set of signatureSets) {
25
33
  if (set.type === SignatureSetType.aggregate) {
26
- pubkeysConut += set.pubkeys.length;
34
+ pubkeysCount += set.indices.length;
27
35
  }
28
36
  }
29
- return pubkeysConut;
37
+ return pubkeysCount;
30
38
  }