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

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 (379) 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 +30 -0
  22. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  23. package/lib/chain/blocks/blockInput/blockInput.js +42 -1
  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 +3 -7
  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 +28 -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 +22 -5
  61. package/lib/chain/chain.d.ts.map +1 -1
  62. package/lib/chain/chain.js +197 -44
  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/options.d.ts +0 -1
  103. package/lib/chain/options.d.ts.map +1 -1
  104. package/lib/chain/options.js +0 -1
  105. package/lib/chain/options.js.map +1 -1
  106. package/lib/chain/prepareNextSlot.js +6 -4
  107. package/lib/chain/prepareNextSlot.js.map +1 -1
  108. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  109. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  110. package/lib/chain/produceBlock/produceBlockBody.js +5 -3
  111. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  112. package/lib/chain/regen/interface.d.ts +4 -9
  113. package/lib/chain/regen/interface.d.ts.map +1 -1
  114. package/lib/chain/regen/interface.js +1 -1
  115. package/lib/chain/regen/interface.js.map +1 -1
  116. package/lib/chain/regen/queued.d.ts +2 -3
  117. package/lib/chain/regen/queued.d.ts.map +1 -1
  118. package/lib/chain/regen/queued.js +2 -16
  119. package/lib/chain/regen/queued.js.map +1 -1
  120. package/lib/chain/regen/regen.d.ts +5 -7
  121. package/lib/chain/regen/regen.d.ts.map +1 -1
  122. package/lib/chain/regen/regen.js +7 -17
  123. package/lib/chain/regen/regen.js.map +1 -1
  124. package/lib/chain/seenCache/index.d.ts +3 -1
  125. package/lib/chain/seenCache/index.d.ts.map +1 -1
  126. package/lib/chain/seenCache/index.js +3 -1
  127. package/lib/chain/seenCache/index.js.map +1 -1
  128. package/lib/chain/seenCache/seenAttesters.d.ts +5 -0
  129. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  130. package/lib/chain/seenCache/seenAttesters.js +5 -0
  131. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  132. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts +12 -0
  133. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -0
  134. package/lib/chain/seenCache/seenExecutionPayloadBids.js +30 -0
  135. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -0
  136. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +15 -0
  137. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -0
  138. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +28 -0
  139. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -0
  140. package/lib/chain/seenCache/seenGossipBlockInput.js +1 -1
  141. package/lib/chain/stateCache/index.d.ts +0 -2
  142. package/lib/chain/stateCache/index.d.ts.map +1 -1
  143. package/lib/chain/stateCache/index.js +0 -2
  144. package/lib/chain/stateCache/index.js.map +1 -1
  145. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +2 -1
  146. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  147. package/lib/chain/stateCache/persistentCheckpointsCache.js +3 -0
  148. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  149. package/lib/chain/validation/aggregateAndProof.js +35 -14
  150. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  151. package/lib/chain/validation/attestation.d.ts +2 -2
  152. package/lib/chain/validation/attestation.d.ts.map +1 -1
  153. package/lib/chain/validation/attestation.js +27 -8
  154. package/lib/chain/validation/attestation.js.map +1 -1
  155. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  156. package/lib/chain/validation/attesterSlashing.js +1 -1
  157. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  158. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  159. package/lib/chain/validation/blobSidecar.js +3 -3
  160. package/lib/chain/validation/blobSidecar.js.map +1 -1
  161. package/lib/chain/validation/block.d.ts.map +1 -1
  162. package/lib/chain/validation/block.js +6 -6
  163. package/lib/chain/validation/block.js.map +1 -1
  164. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  165. package/lib/chain/validation/dataColumnSidecar.js +3 -3
  166. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  167. package/lib/chain/validation/executionPayloadBid.d.ts +5 -0
  168. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -0
  169. package/lib/chain/validation/executionPayloadBid.js +104 -0
  170. package/lib/chain/validation/executionPayloadBid.js.map +1 -0
  171. package/lib/chain/validation/executionPayloadEnvelope.d.ts +5 -0
  172. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -0
  173. package/lib/chain/validation/executionPayloadEnvelope.js +89 -0
  174. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -0
  175. package/lib/chain/validation/payloadAttestationMessage.d.ts +9 -0
  176. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -0
  177. package/lib/chain/validation/payloadAttestationMessage.js +72 -0
  178. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -0
  179. package/lib/chain/validation/proposerSlashing.js +1 -1
  180. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  181. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -3
  182. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -1
  183. package/lib/chain/validation/signatureSets/aggregateAndProof.js +8 -3
  184. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  185. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  186. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  187. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -3
  188. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  189. package/lib/chain/validation/signatureSets/selectionProof.d.ts +2 -3
  190. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -1
  191. package/lib/chain/validation/signatureSets/selectionProof.js +8 -3
  192. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  193. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  194. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  195. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  196. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  197. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +1 -2
  198. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  199. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  200. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  201. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  202. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  203. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +3 -3
  204. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  205. package/lib/chain/validation/syncCommittee.js +1 -1
  206. package/lib/chain/validation/syncCommittee.js.map +1 -1
  207. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  208. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -5
  209. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  210. package/lib/chain/validation/voluntaryExit.js +1 -1
  211. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  212. package/lib/chain/validatorMonitor.d.ts +2 -0
  213. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  214. package/lib/chain/validatorMonitor.js +49 -7
  215. package/lib/chain/validatorMonitor.js.map +1 -1
  216. package/lib/db/repositories/checkpointState.js +0 -1
  217. package/lib/db/repositories/checkpointState.js.map +1 -1
  218. package/lib/metrics/metrics/lodestar.d.ts +27 -0
  219. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  220. package/lib/metrics/metrics/lodestar.js +64 -0
  221. package/lib/metrics/metrics/lodestar.js.map +1 -1
  222. package/lib/network/gossip/gossipsub.d.ts +19 -0
  223. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  224. package/lib/network/gossip/gossipsub.js +71 -0
  225. package/lib/network/gossip/gossipsub.js.map +1 -1
  226. package/lib/network/gossip/interface.d.ts +20 -2
  227. package/lib/network/gossip/interface.d.ts.map +1 -1
  228. package/lib/network/gossip/interface.js +3 -0
  229. package/lib/network/gossip/interface.js.map +1 -1
  230. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  231. package/lib/network/gossip/scoringParameters.js +38 -2
  232. package/lib/network/gossip/scoringParameters.js.map +1 -1
  233. package/lib/network/gossip/topic.d.ts +77 -1
  234. package/lib/network/gossip/topic.d.ts.map +1 -1
  235. package/lib/network/gossip/topic.js +20 -0
  236. package/lib/network/gossip/topic.js.map +1 -1
  237. package/lib/network/options.d.ts +6 -0
  238. package/lib/network/options.d.ts.map +1 -1
  239. package/lib/network/options.js.map +1 -1
  240. package/lib/network/peers/peerManager.d.ts.map +1 -1
  241. package/lib/network/peers/peerManager.js +9 -0
  242. package/lib/network/peers/peerManager.js.map +1 -1
  243. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  244. package/lib/network/processor/gossipHandlers.js +35 -4
  245. package/lib/network/processor/gossipHandlers.js.map +1 -1
  246. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  247. package/lib/network/processor/gossipQueues/index.js +16 -0
  248. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  249. package/lib/network/processor/index.d.ts.map +1 -1
  250. package/lib/network/processor/index.js +3 -0
  251. package/lib/network/processor/index.js.map +1 -1
  252. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  253. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -4
  254. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  255. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +1 -2
  256. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
  257. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +5 -26
  258. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  259. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +1 -2
  260. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
  261. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +5 -7
  262. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  263. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  264. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +1 -2
  265. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  266. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  267. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -5
  268. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  269. package/lib/network/reqresp/handlers/index.js +2 -2
  270. package/lib/network/reqresp/handlers/index.js.map +1 -1
  271. package/lib/sync/backfill/backfill.js +2 -2
  272. package/lib/sync/backfill/backfill.js.map +1 -1
  273. package/lib/sync/backfill/verify.d.ts +1 -2
  274. package/lib/sync/backfill/verify.d.ts.map +1 -1
  275. package/lib/sync/backfill/verify.js +2 -2
  276. package/lib/sync/backfill/verify.js.map +1 -1
  277. package/lib/sync/range/chain.d.ts.map +1 -1
  278. package/lib/sync/range/chain.js +0 -1
  279. package/lib/sync/range/chain.js.map +1 -1
  280. package/lib/sync/range/range.d.ts.map +1 -1
  281. package/lib/sync/range/range.js +0 -3
  282. package/lib/sync/range/range.js.map +1 -1
  283. package/lib/sync/unknownBlock.d.ts.map +1 -1
  284. package/lib/sync/unknownBlock.js +0 -3
  285. package/lib/sync/unknownBlock.js.map +1 -1
  286. package/package.json +15 -15
  287. package/src/api/impl/beacon/blocks/index.ts +17 -25
  288. package/src/api/impl/debug/index.ts +2 -6
  289. package/src/api/impl/lodestar/index.ts +18 -3
  290. package/src/api/impl/validator/index.ts +14 -12
  291. package/src/chain/ColumnReconstructionTracker.ts +8 -4
  292. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -0
  293. package/src/chain/blocks/blockInput/blockInput.ts +53 -2
  294. package/src/chain/blocks/importBlock.ts +3 -7
  295. package/src/chain/blocks/index.ts +0 -19
  296. package/src/chain/blocks/types.ts +0 -2
  297. package/src/chain/blocks/verifyBlock.ts +0 -9
  298. package/src/chain/blocks/verifyBlocksSignatures.ts +4 -12
  299. package/src/chain/blocks/writeBlockInputToDb.ts +33 -30
  300. package/src/chain/bls/multithread/index.ts +7 -4
  301. package/src/chain/bls/multithread/jobItem.ts +7 -3
  302. package/src/chain/bls/singleThread.ts +5 -3
  303. package/src/chain/bls/utils.ts +15 -7
  304. package/src/chain/chain.ts +227 -56
  305. package/src/chain/errors/attestationError.ts +11 -1
  306. package/src/chain/errors/executionPayloadBid.ts +35 -0
  307. package/src/chain/errors/executionPayloadEnvelope.ts +34 -0
  308. package/src/chain/errors/index.ts +3 -0
  309. package/src/chain/errors/payloadAttestation.ts +25 -0
  310. package/src/chain/forkChoice/index.ts +19 -0
  311. package/src/chain/interface.ts +32 -1
  312. package/src/chain/opPools/executionPayloadBidPool.ts +77 -0
  313. package/src/chain/opPools/index.ts +2 -0
  314. package/src/chain/opPools/payloadAttestationPool.ts +157 -0
  315. package/src/chain/options.ts +0 -2
  316. package/src/chain/prepareNextSlot.ts +6 -6
  317. package/src/chain/produceBlock/produceBlockBody.ts +7 -5
  318. package/src/chain/regen/interface.ts +3 -13
  319. package/src/chain/regen/queued.ts +3 -24
  320. package/src/chain/regen/regen.ts +10 -25
  321. package/src/chain/seenCache/index.ts +3 -1
  322. package/src/chain/seenCache/seenAttesters.ts +5 -0
  323. package/src/chain/seenCache/seenExecutionPayloadBids.ts +35 -0
  324. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +34 -0
  325. package/src/chain/seenCache/seenGossipBlockInput.ts +1 -1
  326. package/src/chain/stateCache/index.ts +0 -2
  327. package/src/chain/stateCache/persistentCheckpointsCache.ts +6 -2
  328. package/src/chain/validation/aggregateAndProof.ts +36 -14
  329. package/src/chain/validation/attestation.ts +33 -16
  330. package/src/chain/validation/attesterSlashing.ts +1 -6
  331. package/src/chain/validation/blobSidecar.ts +2 -7
  332. package/src/chain/validation/block.ts +6 -6
  333. package/src/chain/validation/dataColumnSidecar.ts +2 -7
  334. package/src/chain/validation/executionPayloadBid.ts +141 -0
  335. package/src/chain/validation/executionPayloadEnvelope.ts +122 -0
  336. package/src/chain/validation/payloadAttestationMessage.ts +109 -0
  337. package/src/chain/validation/proposerSlashing.ts +1 -6
  338. package/src/chain/validation/signatureSets/aggregateAndProof.ts +9 -14
  339. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -4
  340. package/src/chain/validation/signatureSets/selectionProof.ts +9 -9
  341. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -4
  342. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -3
  343. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -4
  344. package/src/chain/validation/syncCommittee.ts +1 -1
  345. package/src/chain/validation/syncCommitteeContributionAndProof.ts +3 -5
  346. package/src/chain/validation/voluntaryExit.ts +1 -1
  347. package/src/chain/validatorMonitor.ts +62 -8
  348. package/src/db/repositories/checkpointState.ts +1 -1
  349. package/src/metrics/metrics/lodestar.ts +65 -0
  350. package/src/network/gossip/gossipsub.ts +86 -1
  351. package/src/network/gossip/interface.ts +17 -0
  352. package/src/network/gossip/scoringParameters.ts +44 -2
  353. package/src/network/gossip/topic.ts +21 -0
  354. package/src/network/options.ts +6 -0
  355. package/src/network/peers/peerManager.ts +11 -0
  356. package/src/network/processor/gossipHandlers.ts +49 -4
  357. package/src/network/processor/gossipQueues/index.ts +16 -0
  358. package/src/network/processor/index.ts +3 -0
  359. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -4
  360. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +5 -32
  361. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +5 -9
  362. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +5 -2
  363. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +1 -5
  364. package/src/network/reqresp/handlers/index.ts +2 -2
  365. package/src/sync/backfill/backfill.ts +2 -2
  366. package/src/sync/backfill/verify.ts +2 -3
  367. package/src/sync/range/chain.ts +0 -1
  368. package/src/sync/range/range.ts +0 -3
  369. package/src/sync/unknownBlock.ts +0 -3
  370. package/lib/chain/stateCache/blockStateCacheImpl.d.ts +0 -54
  371. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
  372. package/lib/chain/stateCache/blockStateCacheImpl.js +0 -130
  373. package/lib/chain/stateCache/blockStateCacheImpl.js.map +0 -1
  374. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts +0 -60
  375. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
  376. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +0 -156
  377. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +0 -1
  378. package/src/chain/stateCache/blockStateCacheImpl.ts +0 -149
  379. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -192
@@ -44,6 +44,15 @@ export async function writeBlockInputToDb(this: BeaconChain, blocksInputs: IBloc
44
44
 
45
45
  // NOTE: Old data is pruned on archive
46
46
  if (isBlockInputColumns(blockInput)) {
47
+ if (!blockInput.hasComputedAllData()) {
48
+ // Supernodes may only have a subset of the data columns by the time the block begins to be imported
49
+ // because full data availability can be assumed after NUMBER_OF_COLUMNS / 2 columns are available.
50
+ // Here, however, all data columns must be fully available/reconstructed before persisting to the DB.
51
+ await blockInput.waitForComputedAllData(BLOB_AVAILABILITY_TIMEOUT).catch(() => {
52
+ this.logger.debug("Failed to wait for computed all data", {slot, blockRoot: blockRootHex});
53
+ });
54
+ }
55
+
47
56
  const {custodyColumns} = this.custodyConfig;
48
57
  const blobsLen = (block.message as fulu.BeaconBlock).body.blobKzgCommitments.length;
49
58
  let dataColumnsLen: number;
@@ -98,35 +107,29 @@ export async function writeBlockInputToDb(this: BeaconChain, blocksInputs: IBloc
98
107
  }
99
108
  }
100
109
 
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});
110
+ export async function persistBlockInputs(this: BeaconChain, blockInputs: IBlockInput[]): Promise<void> {
111
+ await writeBlockInputToDb
112
+ .call(this, blockInputs)
113
+ .catch((e) => {
114
+ this.logger.debug(
115
+ "Error persisting block input in hot db",
116
+ {
117
+ count: blockInputs.length,
118
+ slot: blockInputs[0].slot,
119
+ root: blockInputs[0].blockRootHex,
120
+ },
121
+ e
122
+ );
123
+ })
124
+ .finally(() => {
125
+ for (const blockInput of blockInputs) {
126
+ this.seenBlockInputCache.prune(blockInput.blockRootHex);
122
127
  }
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
- ]);
128
+ if (blockInputs.length === 1) {
129
+ this.logger.debug("Pruned block input", {
130
+ slot: blockInputs[0].slot,
131
+ root: blockInputs[0].blockRootHex,
132
+ });
133
+ }
134
+ });
132
135
  }
@@ -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
  }