@lodestar/beacon-node 1.40.0-dev.0ae7a89ead → 1.40.0-dev.193b2e2047

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 (339) 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/config/constants.d.ts +3 -0
  5. package/lib/api/impl/config/constants.d.ts.map +1 -1
  6. package/lib/api/impl/config/constants.js +5 -1
  7. package/lib/api/impl/config/constants.js.map +1 -1
  8. package/lib/api/impl/debug/index.d.ts +1 -1
  9. package/lib/api/impl/debug/index.d.ts.map +1 -1
  10. package/lib/api/impl/debug/index.js +3 -6
  11. package/lib/api/impl/debug/index.js.map +1 -1
  12. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  13. package/lib/api/impl/lodestar/index.js +5 -2
  14. package/lib/api/impl/lodestar/index.js.map +1 -1
  15. package/lib/api/impl/validator/index.d.ts.map +1 -1
  16. package/lib/api/impl/validator/index.js +9 -8
  17. package/lib/api/impl/validator/index.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 +180 -15
  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 +3 -7
  117. package/lib/chain/regen/regen.d.ts.map +1 -1
  118. package/lib/chain/regen/regen.js +3 -16
  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/validation/aggregateAndProof.js +35 -14
  137. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  138. package/lib/chain/validation/attestation.d.ts +2 -2
  139. package/lib/chain/validation/attestation.d.ts.map +1 -1
  140. package/lib/chain/validation/attestation.js +27 -8
  141. package/lib/chain/validation/attestation.js.map +1 -1
  142. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  143. package/lib/chain/validation/attesterSlashing.js +1 -1
  144. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  145. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  146. package/lib/chain/validation/blobSidecar.js +3 -3
  147. package/lib/chain/validation/blobSidecar.js.map +1 -1
  148. package/lib/chain/validation/block.d.ts.map +1 -1
  149. package/lib/chain/validation/block.js +5 -4
  150. package/lib/chain/validation/block.js.map +1 -1
  151. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  152. package/lib/chain/validation/dataColumnSidecar.js +3 -3
  153. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  154. package/lib/chain/validation/executionPayloadBid.d.ts +5 -0
  155. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -0
  156. package/lib/chain/validation/executionPayloadBid.js +104 -0
  157. package/lib/chain/validation/executionPayloadBid.js.map +1 -0
  158. package/lib/chain/validation/executionPayloadEnvelope.d.ts +5 -0
  159. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -0
  160. package/lib/chain/validation/executionPayloadEnvelope.js +89 -0
  161. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -0
  162. package/lib/chain/validation/payloadAttestationMessage.d.ts +9 -0
  163. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -0
  164. package/lib/chain/validation/payloadAttestationMessage.js +72 -0
  165. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -0
  166. package/lib/chain/validation/proposerSlashing.js +1 -1
  167. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  168. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -3
  169. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -1
  170. package/lib/chain/validation/signatureSets/aggregateAndProof.js +8 -3
  171. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  172. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  173. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  174. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -3
  175. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  176. package/lib/chain/validation/signatureSets/selectionProof.d.ts +2 -3
  177. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -1
  178. package/lib/chain/validation/signatureSets/selectionProof.js +8 -3
  179. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  180. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  181. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  182. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  183. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  184. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +1 -2
  185. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  186. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  187. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  188. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  189. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  190. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +3 -3
  191. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  192. package/lib/chain/validation/syncCommittee.js +1 -1
  193. package/lib/chain/validation/syncCommittee.js.map +1 -1
  194. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  195. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -5
  196. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  197. package/lib/chain/validation/voluntaryExit.js +1 -1
  198. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  199. package/lib/chain/validatorMonitor.d.ts +2 -0
  200. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  201. package/lib/chain/validatorMonitor.js +42 -3
  202. package/lib/chain/validatorMonitor.js.map +1 -1
  203. package/lib/db/repositories/checkpointState.js +0 -1
  204. package/lib/db/repositories/checkpointState.js.map +1 -1
  205. package/lib/metrics/metrics/lodestar.d.ts +27 -0
  206. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  207. package/lib/metrics/metrics/lodestar.js +64 -0
  208. package/lib/metrics/metrics/lodestar.js.map +1 -1
  209. package/lib/network/gossip/interface.d.ts +20 -2
  210. package/lib/network/gossip/interface.d.ts.map +1 -1
  211. package/lib/network/gossip/interface.js +3 -0
  212. package/lib/network/gossip/interface.js.map +1 -1
  213. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  214. package/lib/network/gossip/scoringParameters.js +38 -2
  215. package/lib/network/gossip/scoringParameters.js.map +1 -1
  216. package/lib/network/gossip/topic.d.ts +77 -1
  217. package/lib/network/gossip/topic.d.ts.map +1 -1
  218. package/lib/network/gossip/topic.js +20 -0
  219. package/lib/network/gossip/topic.js.map +1 -1
  220. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  221. package/lib/network/processor/gossipHandlers.js +34 -3
  222. package/lib/network/processor/gossipHandlers.js.map +1 -1
  223. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  224. package/lib/network/processor/gossipQueues/index.js +16 -0
  225. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  226. package/lib/network/processor/index.d.ts.map +1 -1
  227. package/lib/network/processor/index.js +3 -0
  228. package/lib/network/processor/index.js.map +1 -1
  229. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  230. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -4
  231. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  232. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +1 -2
  233. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
  234. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +5 -26
  235. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  236. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +1 -2
  237. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
  238. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +5 -7
  239. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  240. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  241. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +1 -2
  242. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  243. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  244. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -5
  245. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  246. package/lib/network/reqresp/handlers/index.js +2 -2
  247. package/lib/network/reqresp/handlers/index.js.map +1 -1
  248. package/lib/sync/backfill/backfill.js +2 -2
  249. package/lib/sync/backfill/backfill.js.map +1 -1
  250. package/lib/sync/backfill/verify.d.ts +1 -2
  251. package/lib/sync/backfill/verify.d.ts.map +1 -1
  252. package/lib/sync/backfill/verify.js +2 -2
  253. package/lib/sync/backfill/verify.js.map +1 -1
  254. package/lib/sync/range/chain.d.ts.map +1 -1
  255. package/lib/sync/range/chain.js +0 -1
  256. package/lib/sync/range/chain.js.map +1 -1
  257. package/lib/sync/range/range.d.ts.map +1 -1
  258. package/lib/sync/range/range.js +0 -3
  259. package/lib/sync/range/range.js.map +1 -1
  260. package/lib/sync/unknownBlock.d.ts.map +1 -1
  261. package/lib/sync/unknownBlock.js +0 -3
  262. package/lib/sync/unknownBlock.js.map +1 -1
  263. package/package.json +15 -15
  264. package/src/api/impl/beacon/blocks/index.ts +8 -18
  265. package/src/api/impl/config/constants.ts +8 -0
  266. package/src/api/impl/debug/index.ts +2 -6
  267. package/src/api/impl/lodestar/index.ts +6 -3
  268. package/src/api/impl/validator/index.ts +12 -11
  269. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -0
  270. package/src/chain/blocks/blockInput/blockInput.ts +8 -0
  271. package/src/chain/blocks/importBlock.ts +2 -6
  272. package/src/chain/blocks/index.ts +0 -19
  273. package/src/chain/blocks/types.ts +0 -2
  274. package/src/chain/blocks/verifyBlock.ts +0 -9
  275. package/src/chain/blocks/verifyBlocksSignatures.ts +4 -12
  276. package/src/chain/blocks/writeBlockInputToDb.ts +24 -30
  277. package/src/chain/bls/multithread/index.ts +7 -4
  278. package/src/chain/bls/multithread/jobItem.ts +7 -3
  279. package/src/chain/bls/singleThread.ts +5 -3
  280. package/src/chain/bls/utils.ts +15 -7
  281. package/src/chain/chain.ts +205 -23
  282. package/src/chain/errors/attestationError.ts +11 -1
  283. package/src/chain/errors/executionPayloadBid.ts +35 -0
  284. package/src/chain/errors/executionPayloadEnvelope.ts +34 -0
  285. package/src/chain/errors/index.ts +3 -0
  286. package/src/chain/errors/payloadAttestation.ts +25 -0
  287. package/src/chain/forkChoice/index.ts +19 -0
  288. package/src/chain/interface.ts +32 -1
  289. package/src/chain/opPools/executionPayloadBidPool.ts +77 -0
  290. package/src/chain/opPools/index.ts +2 -0
  291. package/src/chain/opPools/payloadAttestationPool.ts +157 -0
  292. package/src/chain/prepareNextSlot.ts +6 -6
  293. package/src/chain/produceBlock/produceBlockBody.ts +7 -5
  294. package/src/chain/regen/interface.ts +2 -12
  295. package/src/chain/regen/queued.ts +3 -23
  296. package/src/chain/regen/regen.ts +4 -24
  297. package/src/chain/seenCache/index.ts +3 -1
  298. package/src/chain/seenCache/seenAttesters.ts +5 -0
  299. package/src/chain/seenCache/seenExecutionPayloadBids.ts +35 -0
  300. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +34 -0
  301. package/src/chain/validation/aggregateAndProof.ts +36 -14
  302. package/src/chain/validation/attestation.ts +33 -16
  303. package/src/chain/validation/attesterSlashing.ts +1 -6
  304. package/src/chain/validation/blobSidecar.ts +2 -7
  305. package/src/chain/validation/block.ts +5 -4
  306. package/src/chain/validation/dataColumnSidecar.ts +2 -7
  307. package/src/chain/validation/executionPayloadBid.ts +141 -0
  308. package/src/chain/validation/executionPayloadEnvelope.ts +122 -0
  309. package/src/chain/validation/payloadAttestationMessage.ts +109 -0
  310. package/src/chain/validation/proposerSlashing.ts +1 -6
  311. package/src/chain/validation/signatureSets/aggregateAndProof.ts +9 -14
  312. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -4
  313. package/src/chain/validation/signatureSets/selectionProof.ts +9 -9
  314. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -4
  315. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -3
  316. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -4
  317. package/src/chain/validation/syncCommittee.ts +1 -1
  318. package/src/chain/validation/syncCommitteeContributionAndProof.ts +3 -5
  319. package/src/chain/validation/voluntaryExit.ts +1 -1
  320. package/src/chain/validatorMonitor.ts +52 -3
  321. package/src/db/repositories/checkpointState.ts +1 -1
  322. package/src/metrics/metrics/lodestar.ts +65 -0
  323. package/src/network/gossip/interface.ts +17 -0
  324. package/src/network/gossip/scoringParameters.ts +44 -2
  325. package/src/network/gossip/topic.ts +21 -0
  326. package/src/network/processor/gossipHandlers.ts +48 -3
  327. package/src/network/processor/gossipQueues/index.ts +16 -0
  328. package/src/network/processor/index.ts +3 -0
  329. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -4
  330. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +5 -32
  331. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +5 -9
  332. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +5 -2
  333. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +1 -5
  334. package/src/network/reqresp/handlers/index.ts +2 -2
  335. package/src/sync/backfill/backfill.ts +2 -2
  336. package/src/sync/backfill/verify.ts +2 -3
  337. package/src/sync/range/chain.ts +0 -1
  338. package/src/sync/range/range.ts +0 -3
  339. package/src/sync/unknownBlock.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAgB,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAG3E,MAAM,UAAU,mBAAmB,CAAC,YAA2B,EAAE,UAA0B,IAAI;IAC7F,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,YAAY,CAAC,MAAM,CAAC;QAE7B,KAAK,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,EAAE,aAAa,CAAC,oCAAoC,CAAC,UAAU,EAAE,CAAC;YACvF,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC1D,KAAK,EAAE,EAAE,CAAC;YACV,OAAO,OAAO,CAAC;QACjB,CAAC;QAED;YACE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,aAA8B;IACtE,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC5C,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAmC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAG9F,MAAM,UAAU,mBAAmB,CACjC,YAA2B,EAC3B,YAA+B,EAC/B,UAA0B,IAAI;IAE9B,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,YAAY,CAAC,MAAM,CAAC;QAE7B,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,KAAK,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,EAAE,aAAa,CAAC,oCAAoC,CAAC,UAAU,EAAE,CAAC;YACvF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAChD,KAAK,EAAE,EAAE,CAAC;YACV,OAAO,UAAU,CAAC;QACpB,CAAC;QAED;YACE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,aAA8B;IACtE,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC5C,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -4,7 +4,7 @@ import { CompositeTypeAny, TreeView, Type } from "@chainsafe/ssz";
4
4
  import { BeaconConfig } from "@lodestar/config";
5
5
  import { CheckpointWithHex, IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
6
6
  import { BeaconStateAllForks, CachedBeaconStateAllForks, EpochShuffling, Index2PubkeyCache } from "@lodestar/state-transition";
7
- import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei, phase0, rewards } from "@lodestar/types";
7
+ import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei, deneb, fulu, phase0, rewards } from "@lodestar/types";
8
8
  import { Logger } from "@lodestar/utils";
9
9
  import { ProcessShutdownCallback } from "@lodestar/validator";
10
10
  import { IBeaconDb } from "../db/index.js";
@@ -13,6 +13,7 @@ import { Metrics } from "../metrics/index.js";
13
13
  import { BufferPool } from "../util/bufferPool.js";
14
14
  import { IClock } from "../util/clock.js";
15
15
  import { CustodyConfig } from "../util/dataColumns.js";
16
+ import { JobItemQueue } from "../util/queue/itemQueue.ts";
16
17
  import { SerializedCache } from "../util/serializedCache.js";
17
18
  import { ArchiveStore } from "./archiveStore/archiveStore.js";
18
19
  import { CheckpointBalancesCache } from "./balancesCache.js";
@@ -26,13 +27,13 @@ import { ForkchoiceCaller } from "./forkChoice/index.js";
26
27
  import { GetBlobsTracker } from "./GetBlobsTracker.js";
27
28
  import { CommonBlockBody, IBeaconChain, ProposerPreparationData, StateGetOpts } from "./interface.js";
28
29
  import { LightClientServer } from "./lightClient/index.js";
29
- import { AggregatedAttestationPool, AttestationPool, OpPool, SyncCommitteeMessagePool, SyncContributionAndProofPool } from "./opPools/index.js";
30
+ import { AggregatedAttestationPool, AttestationPool, ExecutionPayloadBidPool, OpPool, PayloadAttestationPool, SyncCommitteeMessagePool, SyncContributionAndProofPool } from "./opPools/index.js";
30
31
  import { IChainOptions } from "./options.js";
31
32
  import { AssembledBlockType, BlockType, ProduceResult } from "./produceBlock/index.js";
32
33
  import { BlockAttributes } from "./produceBlock/produceBlockBody.js";
33
34
  import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
34
35
  import { ReprocessController } from "./reprocess.js";
35
- import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenSyncCommitteeMessages } from "./seenCache/index.js";
36
+ import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenExecutionPayloadBids, SeenExecutionPayloadEnvelopes, SeenPayloadAttesters, SeenSyncCommitteeMessages } from "./seenCache/index.js";
36
37
  import { SeenAggregatedAttestations } from "./seenCache/seenAggregateAndProof.js";
37
38
  import { SeenAttestationDatas } from "./seenCache/seenAttestationData.js";
38
39
  import { SeenBlockAttesters } from "./seenCache/seenBlockAttesters.js";
@@ -59,14 +60,20 @@ export declare class BeaconChain implements IBeaconChain {
59
60
  readonly lightClientServer?: LightClientServer;
60
61
  readonly reprocessController: ReprocessController;
61
62
  readonly archiveStore: ArchiveStore;
63
+ readonly unfinalizedBlockWrites: JobItemQueue<[IBlockInput[]], void>;
62
64
  readonly attestationPool: AttestationPool;
63
65
  readonly aggregatedAttestationPool: AggregatedAttestationPool;
64
66
  readonly syncCommitteeMessagePool: SyncCommitteeMessagePool;
65
67
  readonly syncContributionAndProofPool: SyncContributionAndProofPool;
68
+ readonly executionPayloadBidPool: ExecutionPayloadBidPool;
69
+ readonly payloadAttestationPool: PayloadAttestationPool;
66
70
  readonly opPool: OpPool;
67
71
  readonly seenAttesters: SeenAttesters;
68
72
  readonly seenAggregators: SeenAggregators;
73
+ readonly seenPayloadAttesters: SeenPayloadAttesters;
69
74
  readonly seenAggregatedAttestations: SeenAggregatedAttestations;
75
+ readonly seenExecutionPayloadEnvelopes: SeenExecutionPayloadEnvelopes;
76
+ readonly seenExecutionPayloadBids: SeenExecutionPayloadBids;
70
77
  readonly seenBlockProposers: SeenBlockProposers;
71
78
  readonly seenSyncCommitteeMessages: SeenSyncCommitteeMessages;
72
79
  readonly seenContributionAndProof: SeenContributionAndProof;
@@ -165,6 +172,16 @@ export declare class BeaconChain implements IBeaconChain {
165
172
  executionOptimistic: boolean;
166
173
  finalized: boolean;
167
174
  } | null>;
175
+ getSerializedBlockByRoot(root: string): Promise<{
176
+ block: Uint8Array;
177
+ executionOptimistic: boolean;
178
+ finalized: boolean;
179
+ slot: Slot;
180
+ } | null>;
181
+ getBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<deneb.BlobSidecars | null>;
182
+ getSerializedBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<Uint8Array | null>;
183
+ getDataColumnSidecars(blockSlot: Slot, blockRootHex: string): Promise<fulu.DataColumnSidecars>;
184
+ getSerializedDataColumnSidecars(blockSlot: Slot, blockRootHex: string, indices: number[]): Promise<(Uint8Array | undefined)[]>;
168
185
  produceCommonBlockBody(blockAttributes: BlockAttributes): Promise<CommonBlockBody>;
169
186
  produceBlock(blockAttributes: BlockAttributes & {
170
187
  commonBlockBodyPromise: Promise<CommonBlockBody>;
@@ -181,7 +198,7 @@ export declare class BeaconChain implements IBeaconChain {
181
198
  executionPayloadValue: Wei;
182
199
  consensusBlockValue: Wei;
183
200
  }>;
184
- produceBlockWrapper<T extends BlockType>(blockType: T, { randaoReveal, graffiti, slot, feeRecipient, commonBlockBodyPromise, parentBlockRoot, }: BlockAttributes & {
201
+ produceBlockWrapper<T extends BlockType>(blockType: T, { randaoReveal, graffiti, slot, feeRecipient, commonBlockBodyPromise, parentBlock, }: BlockAttributes & {
185
202
  commonBlockBodyPromise: Promise<CommonBlockBody>;
186
203
  }): Promise<{
187
204
  block: AssembledBlockType<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@ import path from "node:path";
2
2
  import { UpdateHeadOpt } from "@lodestar/fork-choice";
3
3
  import { EFFECTIVE_BALANCE_INCREMENT, GENESIS_SLOT, SLOTS_PER_EPOCH, isForkPostElectra } from "@lodestar/params";
4
4
  import { computeAnchorCheckpoint, computeAttestationsRewards, computeBlockRewards, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, computeSyncCommitteeRewards, getEffectiveBalanceIncrementsZeroInactive, getEffectiveBalancesFromStateBytes, processSlots, } from "@lodestar/state-transition";
5
- import { isBlindedBeaconBlock, } from "@lodestar/types";
5
+ import { isBlindedBeaconBlock, ssz, sszTypesFor, } from "@lodestar/types";
6
6
  import { fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRootHex } from "@lodestar/utils";
7
7
  import { GENESIS_EPOCH, ZERO_HASH } from "../constants/index.js";
8
+ import { BLOB_SIDECARS_IN_WRAPPER_INDEX } from "../db/repositories/blobSidecars.js";
8
9
  import { BuilderStatus } from "../execution/builder/http.js";
9
10
  import { computeNodeIdFromPrivateKey } from "../network/subnets/interface.js";
10
11
  import { BufferPool } from "../util/bufferPool.js";
@@ -13,11 +14,15 @@ import { CustodyConfig, getValidatorsCustodyRequirement } from "../util/dataColu
13
14
  import { callInNextEventLoop } from "../util/eventLoop.js";
14
15
  import { ensureDir, writeIfNotExist } from "../util/file.js";
15
16
  import { isOptimisticBlock } from "../util/forkChoice.js";
17
+ import { JobItemQueue } from "../util/queue/itemQueue.js";
16
18
  import { SerializedCache } from "../util/serializedCache.js";
19
+ import { getSlotFromSignedBeaconBlockSerialized } from "../util/sszBytes.js";
17
20
  import { ArchiveStore } from "./archiveStore/archiveStore.js";
18
21
  import { CheckpointBalancesCache } from "./balancesCache.js";
19
22
  import { BeaconProposerCache } from "./beaconProposerCache.js";
23
+ import { isBlockInputBlobs, isBlockInputColumns } from "./blocks/blockInput/index.js";
20
24
  import { BlockProcessor } from "./blocks/index.js";
25
+ import { persistBlockInputs } from "./blocks/writeBlockInputToDb.js";
21
26
  import { BlsMultiThreadWorkerPool, BlsSingleThreadVerifier } from "./bls/index.js";
22
27
  import { ColumnReconstructionTracker } from "./ColumnReconstructionTracker.js";
23
28
  import { ChainEvent, ChainEventEmitter } from "./emitter.js";
@@ -25,14 +30,14 @@ import { initializeForkChoice } from "./forkChoice/index.js";
25
30
  import { GetBlobsTracker } from "./GetBlobsTracker.js";
26
31
  import { FindHeadFnName } from "./interface.js";
27
32
  import { LightClientServer } from "./lightClient/index.js";
28
- import { AggregatedAttestationPool, AttestationPool, OpPool, SyncCommitteeMessagePool, SyncContributionAndProofPool, } from "./opPools/index.js";
33
+ import { AggregatedAttestationPool, AttestationPool, ExecutionPayloadBidPool, OpPool, PayloadAttestationPool, SyncCommitteeMessagePool, SyncContributionAndProofPool, } from "./opPools/index.js";
29
34
  import { PrepareNextSlotScheduler } from "./prepareNextSlot.js";
30
35
  import { computeNewStateRoot } from "./produceBlock/computeNewStateRoot.js";
31
36
  import { BlockType } from "./produceBlock/index.js";
32
37
  import { produceBlockBody, produceCommonBlockBody } from "./produceBlock/produceBlockBody.js";
33
38
  import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
34
39
  import { ReprocessController } from "./reprocess.js";
35
- import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenSyncCommitteeMessages, } from "./seenCache/index.js";
40
+ import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenExecutionPayloadBids, SeenExecutionPayloadEnvelopes, SeenPayloadAttesters, SeenSyncCommitteeMessages, } from "./seenCache/index.js";
36
41
  import { SeenAggregatedAttestations } from "./seenCache/seenAggregateAndProof.js";
37
42
  import { SeenAttestationDatas } from "./seenCache/seenAttestationData.js";
38
43
  import { SeenBlockAttesters } from "./seenCache/seenBlockAttesters.js";
@@ -52,6 +57,10 @@ import { PersistentCheckpointStateCache } from "./stateCache/persistentCheckpoin
52
57
  * allow some margin if the node overloads.
53
58
  */
54
59
  const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
60
+ /**
61
+ * The maximum number of pending unfinalized block writes to the database before backpressure is applied.
62
+ */
63
+ const DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES = 32;
55
64
  export class BeaconChain {
56
65
  genesisTime;
57
66
  genesisValidatorsRoot;
@@ -73,16 +82,22 @@ export class BeaconChain {
73
82
  lightClientServer;
74
83
  reprocessController;
75
84
  archiveStore;
85
+ unfinalizedBlockWrites;
76
86
  // Ops pool
77
87
  attestationPool;
78
88
  aggregatedAttestationPool;
79
89
  syncCommitteeMessagePool;
80
90
  syncContributionAndProofPool;
91
+ executionPayloadBidPool;
92
+ payloadAttestationPool;
81
93
  opPool;
82
94
  // Gossip seen cache
83
95
  seenAttesters = new SeenAttesters();
84
96
  seenAggregators = new SeenAggregators();
97
+ seenPayloadAttesters = new SeenPayloadAttesters();
85
98
  seenAggregatedAttestations;
99
+ seenExecutionPayloadEnvelopes = new SeenExecutionPayloadEnvelopes();
100
+ seenExecutionPayloadBids = new SeenExecutionPayloadBids();
86
101
  seenBlockProposers = new SeenBlockProposers();
87
102
  seenSyncCommitteeMessages = new SeenSyncCommitteeMessages();
88
103
  seenContributionAndProof;
@@ -140,8 +155,8 @@ export class BeaconChain {
140
155
  const emitter = new ChainEventEmitter();
141
156
  // by default, verify signatures on both main threads and worker threads
142
157
  const bls = opts.blsVerifyAllMainThread
143
- ? new BlsSingleThreadVerifier({ metrics })
144
- : new BlsMultiThreadWorkerPool(opts, { logger, metrics });
158
+ ? new BlsSingleThreadVerifier({ metrics, index2pubkey })
159
+ : new BlsMultiThreadWorkerPool(opts, { logger, metrics, index2pubkey });
145
160
  if (!clock)
146
161
  clock = new Clock({ config, genesisTime: this.genesisTime, signal });
147
162
  this.blacklistedBlocks = new Map((opts.blacklistedBlocks ?? []).map((hex) => [hex, null]));
@@ -149,6 +164,8 @@ export class BeaconChain {
149
164
  this.aggregatedAttestationPool = new AggregatedAttestationPool(this.config, metrics);
150
165
  this.syncCommitteeMessagePool = new SyncCommitteeMessagePool(config, clock, this.opts?.preaggregateSlotDistance);
151
166
  this.syncContributionAndProofPool = new SyncContributionAndProofPool(config, clock, metrics, logger);
167
+ this.executionPayloadBidPool = new ExecutionPayloadBidPool();
168
+ this.payloadAttestationPool = new PayloadAttestationPool(config, clock, metrics);
152
169
  this.opPool = new OpPool(config);
153
170
  this.seenAggregatedAttestations = new SeenAggregatedAttestations(metrics);
154
171
  this.seenContributionAndProof = new SeenContributionAndProof(metrics);
@@ -256,6 +273,10 @@ export class BeaconChain {
256
273
  config,
257
274
  });
258
275
  this.archiveStore = new ArchiveStore({ db, chain: this, logger: logger, metrics }, { ...opts, dbName, anchorState: { finalizedCheckpoint: anchorState.finalizedCheckpoint } }, signal);
276
+ this.unfinalizedBlockWrites = new JobItemQueue(persistBlockInputs.bind(this), {
277
+ maxLength: DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES,
278
+ signal,
279
+ }, metrics?.unfinalizedBlockWritesQueue);
259
280
  // always run PrepareNextSlotScheduler except for fork_choice spec tests
260
281
  if (!opts?.disablePrepareNextSlot) {
261
282
  new PrepareNextSlotScheduler(this, this.config, metrics, this.logger, signal);
@@ -277,6 +298,10 @@ export class BeaconChain {
277
298
  async close() {
278
299
  await this.archiveStore.close();
279
300
  await this.bls.close();
301
+ // Since we don't persist unfinalized fork-choice,
302
+ // we can abort any ongoing unfinalized block writes.
303
+ // TODO: persist fork choice to disk and allow unfinalized block writes to complete.
304
+ this.unfinalizedBlockWrites.dropAllJobs();
280
305
  this.abortController.abort();
281
306
  }
282
307
  seenBlock(blockRoot) {
@@ -301,6 +326,8 @@ export class BeaconChain {
301
326
  this.seenAttesters.isKnown(epoch, index) ||
302
327
  // seenAggregators = single aggregator index, not participants of the aggregate
303
328
  this.seenAggregators.isKnown(epoch, index) ||
329
+ // seenPayloadAttesters = single signer of payload attestation message
330
+ this.seenPayloadAttesters.isKnown(epoch, index) ||
304
331
  // seenBlockProposers = single block proposer
305
332
  this.seenBlockProposers.seenAtEpoch(epoch, index));
306
333
  }
@@ -337,7 +364,7 @@ export class BeaconChain {
337
364
  // only use regen queue if necessary, it'll cache in checkpointStateCache if regen gets through epoch transition
338
365
  const head = this.forkChoice.getHead();
339
366
  const startSlot = computeStartSlotAtEpoch(epoch);
340
- return this.regen.getBlockSlotState(head.blockRoot, startSlot, { dontTransferCache: true }, regenCaller);
367
+ return this.regen.getBlockSlotState(head, startSlot, { dontTransferCache: true }, regenCaller);
341
368
  }
342
369
  async getStateBySlot(slot, opts) {
343
370
  const finalizedBlock = this.forkChoice.getFinalizedBlock();
@@ -349,7 +376,7 @@ export class BeaconChain {
349
376
  if (opts?.allowRegen) {
350
377
  // Find closest canonical block to slot, then trigger regen
351
378
  const block = this.forkChoice.getCanonicalBlockClosestLteSlot(slot) ?? finalizedBlock;
352
- const state = await this.regen.getBlockSlotState(block.blockRoot, slot, { dontTransferCache: true }, RegenCaller.restApi);
379
+ const state = await this.regen.getBlockSlotState(block, slot, { dontTransferCache: true }, RegenCaller.restApi);
353
380
  return {
354
381
  state,
355
382
  executionOptimistic: isOptimisticBlock(block),
@@ -448,6 +475,13 @@ export class BeaconChain {
448
475
  // Unfinalized slot, attempt to find in fork-choice
449
476
  const block = this.forkChoice.getCanonicalBlockAtSlot(slot);
450
477
  if (block) {
478
+ // Block found in fork-choice.
479
+ // It may be in the block input cache, awaiting full DA reconstruction, check there first
480
+ // Otherwise (most likely), check the hot db
481
+ const blockInput = this.seenBlockInputCache.get(block.blockRoot);
482
+ if (blockInput?.hasBlock()) {
483
+ return { block: blockInput.getBlock(), executionOptimistic: isOptimisticBlock(block), finalized: false };
484
+ }
451
485
  const data = await this.db.block.get(fromHex(block.blockRoot));
452
486
  if (data) {
453
487
  return { block: data, executionOptimistic: isOptimisticBlock(block), finalized: false };
@@ -463,6 +497,13 @@ export class BeaconChain {
463
497
  async getBlockByRoot(root) {
464
498
  const block = this.forkChoice.getBlockHex(root);
465
499
  if (block) {
500
+ // Block found in fork-choice.
501
+ // It may be in the block input cache, awaiting full DA reconstruction, check there first
502
+ // Otherwise (most likely), check the hot db
503
+ const blockInput = this.seenBlockInputCache.get(block.blockRoot);
504
+ if (blockInput?.hasBlock()) {
505
+ return { block: blockInput.getBlock(), executionOptimistic: isOptimisticBlock(block), finalized: false };
506
+ }
466
507
  const data = await this.db.block.get(fromHex(root));
467
508
  if (data) {
468
509
  return { block: data, executionOptimistic: isOptimisticBlock(block), finalized: false };
@@ -473,9 +514,125 @@ export class BeaconChain {
473
514
  const data = await this.db.blockArchive.getByRoot(fromHex(root));
474
515
  return data && { block: data, executionOptimistic: false, finalized: true };
475
516
  }
517
+ async getSerializedBlockByRoot(root) {
518
+ const block = this.forkChoice.getBlockHex(root);
519
+ if (block) {
520
+ // Block found in fork-choice.
521
+ // It may be in the block input cache, awaiting full DA reconstruction, check there first
522
+ // Otherwise (most likely), check the hot db
523
+ const blockInput = this.seenBlockInputCache.get(block.blockRoot);
524
+ if (blockInput?.hasBlock()) {
525
+ const signedBlock = blockInput.getBlock();
526
+ const serialized = this.serializedCache.get(signedBlock);
527
+ if (serialized) {
528
+ return {
529
+ block: serialized,
530
+ executionOptimistic: isOptimisticBlock(block),
531
+ finalized: false,
532
+ slot: blockInput.slot,
533
+ };
534
+ }
535
+ return {
536
+ block: sszTypesFor(blockInput.forkName).SignedBeaconBlock.serialize(signedBlock),
537
+ executionOptimistic: isOptimisticBlock(block),
538
+ finalized: false,
539
+ slot: blockInput.slot,
540
+ };
541
+ }
542
+ const data = await this.db.block.getBinary(fromHex(root));
543
+ if (data) {
544
+ const slot = getSlotFromSignedBeaconBlockSerialized(data);
545
+ if (slot === null)
546
+ throw new Error(`Invalid block data stored in DB for root: ${root}`);
547
+ return { block: data, executionOptimistic: isOptimisticBlock(block), finalized: false, slot };
548
+ }
549
+ // If block is not found in hot db, try cold db since there could be an archive cycle happening
550
+ // TODO: Add a lock to the archiver to have deterministic behavior on where are blocks
551
+ }
552
+ const data = await this.db.blockArchive.getBinaryEntryByRoot(fromHex(root));
553
+ return data && { block: data.value, executionOptimistic: false, finalized: true, slot: data.key };
554
+ }
555
+ async getBlobSidecars(blockSlot, blockRootHex) {
556
+ const blockInput = this.seenBlockInputCache.get(blockRootHex);
557
+ if (blockInput) {
558
+ if (!isBlockInputBlobs(blockInput)) {
559
+ throw new Error(`Expected block input to have blobs: slot=${blockSlot} root=${blockRootHex}`);
560
+ }
561
+ if (!blockInput.hasAllData()) {
562
+ return null;
563
+ }
564
+ return blockInput.getBlobs();
565
+ }
566
+ const unfinalizedBlobSidecars = (await this.db.blobSidecars.get(fromHex(blockRootHex)))?.blobSidecars ?? null;
567
+ if (unfinalizedBlobSidecars) {
568
+ return unfinalizedBlobSidecars;
569
+ }
570
+ return (await this.db.blobSidecarsArchive.get(blockSlot))?.blobSidecars ?? null;
571
+ }
572
+ async getSerializedBlobSidecars(blockSlot, blockRootHex) {
573
+ const blockInput = this.seenBlockInputCache.get(blockRootHex);
574
+ if (blockInput) {
575
+ if (!isBlockInputBlobs(blockInput)) {
576
+ throw new Error(`Expected block input to have blobs: slot=${blockSlot} root=${blockRootHex}`);
577
+ }
578
+ if (!blockInput.hasAllData()) {
579
+ return null;
580
+ }
581
+ return ssz.deneb.BlobSidecars.serialize(blockInput.getBlobs());
582
+ }
583
+ const unfinalizedBlobSidecarsWrapper = await this.db.blobSidecars.getBinary(fromHex(blockRootHex));
584
+ if (unfinalizedBlobSidecarsWrapper) {
585
+ return unfinalizedBlobSidecarsWrapper.slice(BLOB_SIDECARS_IN_WRAPPER_INDEX);
586
+ }
587
+ const finalizedBlobSidecarsWrapper = await this.db.blobSidecarsArchive.getBinary(blockSlot);
588
+ if (finalizedBlobSidecarsWrapper) {
589
+ return finalizedBlobSidecarsWrapper.slice(BLOB_SIDECARS_IN_WRAPPER_INDEX);
590
+ }
591
+ return null;
592
+ }
593
+ async getDataColumnSidecars(blockSlot, blockRootHex) {
594
+ const blockInput = this.seenBlockInputCache.get(blockRootHex);
595
+ if (blockInput) {
596
+ if (!isBlockInputColumns(blockInput)) {
597
+ throw new Error(`Expected block input to have columns: slot=${blockSlot} root=${blockRootHex}`);
598
+ }
599
+ return blockInput.getAllColumns();
600
+ }
601
+ const sidecarsUnfinalized = await this.db.dataColumnSidecar.values(fromHex(blockRootHex));
602
+ if (sidecarsUnfinalized.length > 0) {
603
+ return sidecarsUnfinalized;
604
+ }
605
+ const sidecarsFinalized = await this.db.dataColumnSidecarArchive.values(blockSlot);
606
+ return sidecarsFinalized;
607
+ }
608
+ async getSerializedDataColumnSidecars(blockSlot, blockRootHex, indices) {
609
+ const blockInput = this.seenBlockInputCache.get(blockRootHex);
610
+ if (blockInput) {
611
+ if (!isBlockInputColumns(blockInput)) {
612
+ throw new Error(`Expected block input to have columns: slot=${blockSlot} root=${blockRootHex}`);
613
+ }
614
+ return indices.map((index) => {
615
+ const sidecar = blockInput.getColumn(index);
616
+ if (!sidecar) {
617
+ return undefined;
618
+ }
619
+ const serialized = this.serializedCache.get(sidecar);
620
+ if (serialized) {
621
+ return serialized;
622
+ }
623
+ return ssz.fulu.DataColumnSidecar.serialize(sidecar);
624
+ });
625
+ }
626
+ const sidecarsUnfinalized = await this.db.dataColumnSidecar.getManyBinary(fromHex(blockRootHex), indices);
627
+ if (sidecarsUnfinalized.some((sidecar) => sidecar != null)) {
628
+ return sidecarsUnfinalized;
629
+ }
630
+ const sidecarsFinalized = await this.db.dataColumnSidecarArchive.getManyBinary(blockSlot, indices);
631
+ return sidecarsFinalized;
632
+ }
476
633
  async produceCommonBlockBody(blockAttributes) {
477
- const { slot, parentBlockRoot } = blockAttributes;
478
- const state = await this.regen.getBlockSlotState(toRootHex(parentBlockRoot), slot, { dontTransferCache: true }, RegenCaller.produceBlock);
634
+ const { slot, parentBlock } = blockAttributes;
635
+ const state = await this.regen.getBlockSlotState(parentBlock, slot, { dontTransferCache: true }, RegenCaller.produceBlock);
479
636
  // TODO: To avoid breaking changes for metric define this attribute
480
637
  const blockType = BlockType.Full;
481
638
  return produceCommonBlockBody.call(this, blockType, state, blockAttributes);
@@ -486,8 +643,8 @@ export class BeaconChain {
486
643
  produceBlindedBlock(blockAttributes) {
487
644
  return this.produceBlockWrapper(BlockType.Blinded, blockAttributes);
488
645
  }
489
- async produceBlockWrapper(blockType, { randaoReveal, graffiti, slot, feeRecipient, commonBlockBodyPromise, parentBlockRoot, }) {
490
- const state = await this.regen.getBlockSlotState(toRootHex(parentBlockRoot), slot, { dontTransferCache: true }, RegenCaller.produceBlock);
646
+ async produceBlockWrapper(blockType, { randaoReveal, graffiti, slot, feeRecipient, commonBlockBodyPromise, parentBlock, }) {
647
+ const state = await this.regen.getBlockSlotState(parentBlock, slot, { dontTransferCache: true }, RegenCaller.produceBlock);
491
648
  const proposerIndex = state.epochCtx.getBeaconProposer(slot);
492
649
  const proposerPubKey = this.index2pubkey[proposerIndex].toBytes();
493
650
  const { body, produceResult, executionPayloadValue, shouldOverrideBuilder } = await produceBlockBody.call(this, blockType, state, {
@@ -495,7 +652,7 @@ export class BeaconChain {
495
652
  graffiti,
496
653
  slot,
497
654
  feeRecipient,
498
- parentBlockRoot,
655
+ parentBlock,
499
656
  proposerIndex,
500
657
  proposerPubKey,
501
658
  commonBlockBodyPromise,
@@ -514,7 +671,7 @@ export class BeaconChain {
514
671
  const block = {
515
672
  slot,
516
673
  proposerIndex,
517
- parentRoot: parentBlockRoot,
674
+ parentRoot: fromHex(parentBlock.blockRoot),
518
675
  stateRoot: ZERO_HASH,
519
676
  body,
520
677
  };
@@ -671,7 +828,7 @@ export class BeaconChain {
671
828
  // thanks to one epoch look ahead, we don't need to dial up to attEpoch
672
829
  const targetSlot = computeStartSlotAtEpoch(attEpoch - 1);
673
830
  this.metrics?.gossipAttestation.useHeadBlockStateDialedToTargetEpoch.inc({ caller: regenCaller });
674
- state = await this.regen.getBlockSlotState(attHeadBlock.blockRoot, targetSlot, { dontTransferCache: true }, regenCaller);
831
+ state = await this.regen.getBlockSlotState(attHeadBlock, targetSlot, { dontTransferCache: true }, regenCaller);
675
832
  }
676
833
  else if (blockEpoch > attEpoch) {
677
834
  // should not happen, handled inside attestation verification code
@@ -780,6 +937,8 @@ export class BeaconChain {
780
937
  metrics.opPool.proposerSlashingPoolSize.set(this.opPool.proposerSlashingsSize);
781
938
  metrics.opPool.voluntaryExitPoolSize.set(this.opPool.voluntaryExitsSize);
782
939
  metrics.opPool.syncCommitteeMessagePoolSize.set(this.syncCommitteeMessagePool.size);
940
+ metrics.opPool.payloadAttestationPool.size.set(this.payloadAttestationPool.size);
941
+ metrics.opPool.executionPayloadBidPool.size.set(this.executionPayloadBidPool.size);
783
942
  // syncContributionAndProofPool tracks metrics on its own
784
943
  metrics.opPool.blsToExecutionChangePoolSize.set(this.opPool.blsToExecutionChangeSize);
785
944
  metrics.chain.blacklistedBlocks.set(this.blacklistedBlocks.size);
@@ -804,6 +963,9 @@ export class BeaconChain {
804
963
  this.aggregatedAttestationPool.prune(slot);
805
964
  this.syncCommitteeMessagePool.prune(slot);
806
965
  this.seenSyncCommitteeMessages.prune(slot);
966
+ this.payloadAttestationPool.prune(slot);
967
+ this.executionPayloadBidPool.prune(slot);
968
+ this.seenExecutionPayloadBids.prune(slot);
807
969
  this.seenAttestationDatas.onSlot(slot);
808
970
  this.reprocessController.onSlot(slot);
809
971
  // Prune old cached block production artifacts, those are only useful on their slot
@@ -824,6 +986,7 @@ export class BeaconChain {
824
986
  this.metrics?.clockEpoch.set(epoch);
825
987
  this.seenAttesters.prune(epoch);
826
988
  this.seenAggregators.prune(epoch);
989
+ this.seenPayloadAttesters.prune(epoch);
827
990
  this.seenAggregatedAttestations.prune(epoch);
828
991
  this.seenBlockAttesters.prune(epoch);
829
992
  this.beaconProposerCache.prune(epoch);
@@ -843,7 +1006,9 @@ export class BeaconChain {
843
1006
  }
844
1007
  async onForkChoiceFinalized(cp) {
845
1008
  this.logger.verbose("Fork choice finalized", { epoch: cp.epoch, root: cp.rootHex });
846
- this.seenBlockProposers.prune(computeStartSlotAtEpoch(cp.epoch));
1009
+ const finalizedSlot = computeStartSlotAtEpoch(cp.epoch);
1010
+ this.seenBlockProposers.prune(finalizedSlot);
1011
+ this.seenExecutionPayloadEnvelopes.prune(finalizedSlot);
847
1012
  // Update validator custody to account for effective balance changes
848
1013
  await this.updateValidatorsCustodyRequirement(cp);
849
1014
  // TODO: Improve using regen here