@lodestar/beacon-node 1.42.0-dev.7b5ce3932d → 1.42.0-dev.7bdb87e586

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 (469) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +25 -13
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +5 -1
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  8. package/lib/api/impl/beacon/state/index.js +38 -40
  9. package/lib/api/impl/beacon/state/index.js.map +1 -1
  10. package/lib/api/impl/beacon/state/utils.d.ts +4 -4
  11. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/state/utils.js +7 -10
  13. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  14. package/lib/api/impl/debug/index.js.map +1 -1
  15. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  16. package/lib/api/impl/lodestar/index.js +8 -6
  17. package/lib/api/impl/lodestar/index.js.map +1 -1
  18. package/lib/api/impl/proof/index.d.ts.map +1 -1
  19. package/lib/api/impl/proof/index.js +2 -6
  20. package/lib/api/impl/proof/index.js.map +1 -1
  21. package/lib/api/impl/validator/index.d.ts.map +1 -1
  22. package/lib/api/impl/validator/index.js +33 -27
  23. package/lib/api/impl/validator/index.js.map +1 -1
  24. package/lib/api/impl/validator/utils.d.ts +2 -2
  25. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  26. package/lib/api/impl/validator/utils.js +3 -3
  27. package/lib/api/impl/validator/utils.js.map +1 -1
  28. package/lib/chain/ColumnReconstructionTracker.d.ts +2 -1
  29. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  30. package/lib/chain/ColumnReconstructionTracker.js +5 -5
  31. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  32. package/lib/chain/GetBlobsTracker.d.ts +2 -1
  33. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  34. package/lib/chain/GetBlobsTracker.js +14 -12
  35. package/lib/chain/GetBlobsTracker.js.map +1 -1
  36. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  37. package/lib/chain/archiveStore/archiveStore.js +1 -0
  38. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  39. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +3 -7
  40. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  41. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +8 -26
  42. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  43. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts +2 -2
  44. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  45. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -0
  46. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  47. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -0
  48. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  49. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  50. package/lib/chain/archiveStore/historicalState/worker.js +1 -3
  51. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  52. package/lib/chain/archiveStore/interface.d.ts +1 -0
  53. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  54. package/lib/chain/balancesCache.d.ts +2 -2
  55. package/lib/chain/balancesCache.d.ts.map +1 -1
  56. package/lib/chain/balancesCache.js +4 -4
  57. package/lib/chain/balancesCache.js.map +1 -1
  58. package/lib/chain/blocks/blockInput/blockInput.d.ts +5 -5
  59. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  60. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  61. package/lib/chain/blocks/blockInput/types.d.ts +5 -4
  62. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  63. package/lib/chain/blocks/blockInput/types.js +1 -0
  64. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  65. package/lib/chain/blocks/importBlock.d.ts +3 -3
  66. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  67. package/lib/chain/blocks/importBlock.js +37 -23
  68. package/lib/chain/blocks/importBlock.js.map +1 -1
  69. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -8
  70. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  71. package/lib/chain/blocks/importExecutionPayload.js +87 -51
  72. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  73. package/lib/chain/blocks/index.d.ts.map +1 -1
  74. package/lib/chain/blocks/index.js +3 -2
  75. package/lib/chain/blocks/index.js.map +1 -1
  76. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +14 -6
  77. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  78. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +33 -2
  79. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  80. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +2 -1
  81. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  82. package/lib/chain/blocks/types.d.ts +21 -15
  83. package/lib/chain/blocks/types.d.ts.map +1 -1
  84. package/lib/chain/blocks/types.js.map +1 -1
  85. package/lib/chain/blocks/utils/checkpoint.d.ts +2 -2
  86. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -1
  87. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  88. package/lib/chain/blocks/verifyBlock.d.ts +2 -2
  89. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  90. package/lib/chain/blocks/verifyBlock.js +4 -4
  91. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  92. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +5 -5
  93. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  94. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -4
  95. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  96. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  97. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  98. package/lib/chain/blocks/verifyBlocksSignatures.js +4 -2
  99. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  100. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -3
  101. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  102. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -3
  103. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  104. package/lib/chain/chain.d.ts +15 -14
  105. package/lib/chain/chain.d.ts.map +1 -1
  106. package/lib/chain/chain.js +110 -62
  107. package/lib/chain/chain.js.map +1 -1
  108. package/lib/chain/emitter.d.ts +31 -9
  109. package/lib/chain/emitter.d.ts.map +1 -1
  110. package/lib/chain/emitter.js +12 -3
  111. package/lib/chain/emitter.js.map +1 -1
  112. package/lib/chain/errors/blockError.d.ts +4 -4
  113. package/lib/chain/errors/blockError.d.ts.map +1 -1
  114. package/lib/chain/errors/dataColumnSidecarError.d.ts +31 -1
  115. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
  116. package/lib/chain/errors/dataColumnSidecarError.js +7 -0
  117. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  118. package/lib/chain/forkChoice/index.d.ts +4 -4
  119. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  120. package/lib/chain/forkChoice/index.js +30 -24
  121. package/lib/chain/forkChoice/index.js.map +1 -1
  122. package/lib/chain/initState.d.ts +2 -2
  123. package/lib/chain/initState.d.ts.map +1 -1
  124. package/lib/chain/initState.js +1 -1
  125. package/lib/chain/initState.js.map +1 -1
  126. package/lib/chain/interface.d.ts +15 -14
  127. package/lib/chain/interface.d.ts.map +1 -1
  128. package/lib/chain/lightClient/index.d.ts +2 -2
  129. package/lib/chain/lightClient/index.d.ts.map +1 -1
  130. package/lib/chain/lightClient/index.js +11 -4
  131. package/lib/chain/lightClient/index.js.map +1 -1
  132. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -6
  133. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  134. package/lib/chain/opPools/aggregatedAttestationPool.js +13 -13
  135. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  136. package/lib/chain/opPools/executionPayloadBidPool.d.ts +2 -2
  137. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  138. package/lib/chain/opPools/executionPayloadBidPool.js +2 -2
  139. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  140. package/lib/chain/opPools/opPool.d.ts +3 -3
  141. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  142. package/lib/chain/opPools/opPool.js +7 -7
  143. package/lib/chain/opPools/opPool.js.map +1 -1
  144. package/lib/chain/opPools/utils.d.ts +2 -2
  145. package/lib/chain/opPools/utils.d.ts.map +1 -1
  146. package/lib/chain/opPools/utils.js +1 -1
  147. package/lib/chain/opPools/utils.js.map +1 -1
  148. package/lib/chain/options.d.ts +1 -0
  149. package/lib/chain/options.d.ts.map +1 -1
  150. package/lib/chain/options.js +1 -0
  151. package/lib/chain/options.js.map +1 -1
  152. package/lib/chain/prepareNextSlot.d.ts +2 -2
  153. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  154. package/lib/chain/prepareNextSlot.js +10 -4
  155. package/lib/chain/prepareNextSlot.js.map +1 -1
  156. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +4 -4
  157. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  158. package/lib/chain/produceBlock/computeNewStateRoot.js +3 -4
  159. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  160. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
  161. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  162. package/lib/chain/produceBlock/produceBlockBody.js +21 -16
  163. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  164. package/lib/chain/regen/interface.d.ts +13 -13
  165. package/lib/chain/regen/interface.d.ts.map +1 -1
  166. package/lib/chain/regen/queued.d.ts +14 -14
  167. package/lib/chain/regen/queued.d.ts.map +1 -1
  168. package/lib/chain/regen/queued.js.map +1 -1
  169. package/lib/chain/regen/regen.d.ts +6 -5
  170. package/lib/chain/regen/regen.d.ts.map +1 -1
  171. package/lib/chain/regen/regen.js +6 -6
  172. package/lib/chain/regen/regen.js.map +1 -1
  173. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +1 -1
  174. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  175. package/lib/chain/seenCache/seenGossipBlockInput.js +2 -2
  176. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  177. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +1 -1
  178. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  179. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +2 -2
  180. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  181. package/lib/chain/serializeState.d.ts +2 -2
  182. package/lib/chain/serializeState.d.ts.map +1 -1
  183. package/lib/chain/serializeState.js +1 -1
  184. package/lib/chain/serializeState.js.map +1 -1
  185. package/lib/chain/shufflingCache.d.ts +2 -2
  186. package/lib/chain/shufflingCache.d.ts.map +1 -1
  187. package/lib/chain/shufflingCache.js +3 -4
  188. package/lib/chain/shufflingCache.js.map +1 -1
  189. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +6 -6
  190. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  191. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  192. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +11 -11
  193. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  194. package/lib/chain/stateCache/persistentCheckpointsCache.js +12 -16
  195. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  196. package/lib/chain/stateCache/types.d.ts +14 -14
  197. package/lib/chain/stateCache/types.d.ts.map +1 -1
  198. package/lib/chain/stateCache/types.js.map +1 -1
  199. package/lib/chain/validation/attesterSlashing.js +3 -3
  200. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  201. package/lib/chain/validation/blobSidecar.js +1 -1
  202. package/lib/chain/validation/blobSidecar.js.map +1 -1
  203. package/lib/chain/validation/block.d.ts.map +1 -1
  204. package/lib/chain/validation/block.js +3 -3
  205. package/lib/chain/validation/block.js.map +1 -1
  206. package/lib/chain/validation/blsToExecutionChange.js +2 -2
  207. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  208. package/lib/chain/validation/dataColumnSidecar.d.ts +11 -4
  209. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  210. package/lib/chain/validation/dataColumnSidecar.js +185 -6
  211. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  212. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  213. package/lib/chain/validation/executionPayloadBid.js +10 -7
  214. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  215. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  216. package/lib/chain/validation/executionPayloadEnvelope.js +5 -3
  217. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  218. package/lib/chain/validation/payloadAttestationMessage.js +5 -3
  219. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  220. package/lib/chain/validation/proposerSlashing.js +1 -1
  221. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  222. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  223. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  224. package/lib/chain/validation/signatureSets/contributionAndProof.js +1 -1
  225. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  226. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  227. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  228. package/lib/chain/validation/signatureSets/syncCommittee.js +1 -1
  229. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  230. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -2
  231. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  232. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  233. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  234. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  235. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -1
  236. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  237. package/lib/chain/validation/syncCommittee.d.ts +4 -4
  238. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  239. package/lib/chain/validation/syncCommittee.js +17 -12
  240. package/lib/chain/validation/syncCommittee.js.map +1 -1
  241. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  242. package/lib/chain/validation/syncCommitteeContributionAndProof.js +5 -2
  243. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  244. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  245. package/lib/chain/validation/voluntaryExit.js +3 -3
  246. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  247. package/lib/chain/validatorMonitor.d.ts +3 -3
  248. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  249. package/lib/chain/validatorMonitor.js +11 -9
  250. package/lib/chain/validatorMonitor.js.map +1 -1
  251. package/lib/db/buckets.d.ts +2 -2
  252. package/lib/db/buckets.d.ts.map +1 -1
  253. package/lib/db/buckets.js +2 -2
  254. package/lib/db/buckets.js.map +1 -1
  255. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  256. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  257. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  258. package/lib/db/repositories/dataColumnSidecar.js +4 -2
  259. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  260. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  261. package/lib/db/repositories/dataColumnSidecarArchive.js +4 -2
  262. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  263. package/lib/metrics/metrics/lodestar.d.ts +32 -4
  264. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  265. package/lib/metrics/metrics/lodestar.js +52 -15
  266. package/lib/metrics/metrics/lodestar.js.map +1 -1
  267. package/lib/network/gossip/encoding.d.ts.map +1 -1
  268. package/lib/network/gossip/encoding.js +15 -0
  269. package/lib/network/gossip/encoding.js.map +1 -1
  270. package/lib/network/interface.d.ts +7 -4
  271. package/lib/network/interface.d.ts.map +1 -1
  272. package/lib/network/libp2p/index.d.ts.map +1 -1
  273. package/lib/network/libp2p/index.js +22 -11
  274. package/lib/network/libp2p/index.js.map +1 -1
  275. package/lib/network/network.d.ts +7 -4
  276. package/lib/network/network.d.ts.map +1 -1
  277. package/lib/network/network.js +12 -3
  278. package/lib/network/network.js.map +1 -1
  279. package/lib/network/options.d.ts.map +1 -1
  280. package/lib/network/options.js +7 -2
  281. package/lib/network/options.js.map +1 -1
  282. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  283. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  284. package/lib/network/processor/extractSlotRootFns.js +25 -5
  285. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  286. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  287. package/lib/network/processor/gossipHandlers.js +269 -80
  288. package/lib/network/processor/gossipHandlers.js.map +1 -1
  289. package/lib/network/processor/index.d.ts +22 -7
  290. package/lib/network/processor/index.d.ts.map +1 -1
  291. package/lib/network/processor/index.js +313 -80
  292. package/lib/network/processor/index.js.map +1 -1
  293. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  294. package/lib/network/reqresp/ReqRespBeaconNode.js +9 -0
  295. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  296. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts +8 -0
  297. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -0
  298. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +69 -0
  299. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -0
  300. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts +6 -0
  301. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -0
  302. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +28 -0
  303. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -0
  304. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  305. package/lib/network/reqresp/handlers/index.js +11 -1
  306. package/lib/network/reqresp/handlers/index.js.map +1 -1
  307. package/lib/network/reqresp/protocols.d.ts +2 -0
  308. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  309. package/lib/network/reqresp/protocols.js +10 -0
  310. package/lib/network/reqresp/protocols.js.map +1 -1
  311. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  312. package/lib/network/reqresp/rateLimit.js +8 -0
  313. package/lib/network/reqresp/rateLimit.js.map +1 -1
  314. package/lib/network/reqresp/score.d.ts.map +1 -1
  315. package/lib/network/reqresp/score.js +2 -0
  316. package/lib/network/reqresp/score.js.map +1 -1
  317. package/lib/network/reqresp/types.d.ts +10 -4
  318. package/lib/network/reqresp/types.d.ts.map +1 -1
  319. package/lib/network/reqresp/types.js +16 -4
  320. package/lib/network/reqresp/types.js.map +1 -1
  321. package/lib/node/nodejs.d.ts +2 -2
  322. package/lib/node/nodejs.d.ts.map +1 -1
  323. package/lib/node/nodejs.js +3 -3
  324. package/lib/node/nodejs.js.map +1 -1
  325. package/lib/node/notifier.d.ts.map +1 -1
  326. package/lib/node/notifier.js +3 -3
  327. package/lib/node/notifier.js.map +1 -1
  328. package/lib/sync/backfill/backfill.d.ts +2 -2
  329. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  330. package/lib/sync/backfill/backfill.js +2 -2
  331. package/lib/sync/backfill/backfill.js.map +1 -1
  332. package/lib/sync/unknownBlock.d.ts +3 -9
  333. package/lib/sync/unknownBlock.d.ts.map +1 -1
  334. package/lib/sync/unknownBlock.js +10 -43
  335. package/lib/sync/unknownBlock.js.map +1 -1
  336. package/lib/sync/utils/downloadByRange.d.ts +3 -3
  337. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  338. package/lib/sync/utils/downloadByRange.js +4 -2
  339. package/lib/sync/utils/downloadByRange.js.map +1 -1
  340. package/lib/sync/utils/downloadByRoot.d.ts +3 -3
  341. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  342. package/lib/sync/utils/downloadByRoot.js +10 -5
  343. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  344. package/lib/util/blobs.d.ts +3 -3
  345. package/lib/util/blobs.d.ts.map +1 -1
  346. package/lib/util/blobs.js +21 -10
  347. package/lib/util/blobs.js.map +1 -1
  348. package/lib/util/dataColumns.d.ts +18 -11
  349. package/lib/util/dataColumns.d.ts.map +1 -1
  350. package/lib/util/dataColumns.js +51 -17
  351. package/lib/util/dataColumns.js.map +1 -1
  352. package/lib/util/execution.d.ts +6 -2
  353. package/lib/util/execution.d.ts.map +1 -1
  354. package/lib/util/execution.js +49 -25
  355. package/lib/util/execution.js.map +1 -1
  356. package/lib/util/sszBytes.d.ts +25 -1
  357. package/lib/util/sszBytes.d.ts.map +1 -1
  358. package/lib/util/sszBytes.js +189 -2
  359. package/lib/util/sszBytes.js.map +1 -1
  360. package/lib/util/types.d.ts +2 -0
  361. package/lib/util/types.d.ts.map +1 -1
  362. package/lib/util/types.js +1 -0
  363. package/lib/util/types.js.map +1 -1
  364. package/package.json +16 -16
  365. package/src/api/impl/beacon/blocks/index.ts +33 -16
  366. package/src/api/impl/beacon/pool/index.ts +5 -1
  367. package/src/api/impl/beacon/state/index.ts +43 -55
  368. package/src/api/impl/beacon/state/utils.ts +11 -25
  369. package/src/api/impl/debug/index.ts +2 -2
  370. package/src/api/impl/lodestar/index.ts +8 -8
  371. package/src/api/impl/proof/index.ts +2 -9
  372. package/src/api/impl/validator/index.ts +36 -41
  373. package/src/api/impl/validator/utils.ts +4 -7
  374. package/src/chain/ColumnReconstructionTracker.ts +6 -5
  375. package/src/chain/GetBlobsTracker.ts +14 -12
  376. package/src/chain/archiveStore/archiveStore.ts +1 -0
  377. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -39
  378. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +2 -1
  379. package/src/chain/archiveStore/historicalState/types.ts +2 -0
  380. package/src/chain/archiveStore/historicalState/worker.ts +1 -4
  381. package/src/chain/archiveStore/interface.ts +1 -0
  382. package/src/chain/balancesCache.ts +5 -11
  383. package/src/chain/blocks/blockInput/blockInput.ts +8 -8
  384. package/src/chain/blocks/blockInput/types.ts +5 -4
  385. package/src/chain/blocks/importBlock.ts +50 -31
  386. package/src/chain/blocks/importExecutionPayload.ts +98 -62
  387. package/src/chain/blocks/index.ts +3 -2
  388. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +53 -12
  389. package/src/chain/blocks/payloadEnvelopeInput/types.ts +2 -1
  390. package/src/chain/blocks/types.ts +26 -15
  391. package/src/chain/blocks/utils/checkpoint.ts +2 -2
  392. package/src/chain/blocks/verifyBlock.ts +5 -10
  393. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +10 -14
  394. package/src/chain/blocks/verifyBlocksSignatures.ts +10 -3
  395. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -8
  396. package/src/chain/chain.ts +148 -95
  397. package/src/chain/emitter.ts +27 -9
  398. package/src/chain/errors/blockError.ts +4 -4
  399. package/src/chain/errors/dataColumnSidecarError.ts +32 -1
  400. package/src/chain/forkChoice/index.ts +35 -41
  401. package/src/chain/initState.ts +7 -2
  402. package/src/chain/interface.ts +16 -15
  403. package/src/chain/lightClient/index.ts +17 -18
  404. package/src/chain/opPools/aggregatedAttestationPool.ts +20 -21
  405. package/src/chain/opPools/executionPayloadBidPool.ts +3 -3
  406. package/src/chain/opPools/opPool.ts +13 -14
  407. package/src/chain/opPools/utils.ts +3 -3
  408. package/src/chain/options.ts +2 -0
  409. package/src/chain/prepareNextSlot.ts +14 -8
  410. package/src/chain/produceBlock/computeNewStateRoot.ts +7 -10
  411. package/src/chain/produceBlock/produceBlockBody.ts +38 -45
  412. package/src/chain/regen/interface.ts +13 -17
  413. package/src/chain/regen/queued.ts +16 -20
  414. package/src/chain/regen/regen.ts +16 -17
  415. package/src/chain/seenCache/seenGossipBlockInput.ts +2 -2
  416. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +2 -2
  417. package/src/chain/serializeState.ts +3 -3
  418. package/src/chain/shufflingCache.ts +5 -7
  419. package/src/chain/stateCache/fifoBlockStateCache.ts +7 -7
  420. package/src/chain/stateCache/persistentCheckpointsCache.ts +27 -42
  421. package/src/chain/stateCache/types.ts +14 -18
  422. package/src/chain/validation/attesterSlashing.ts +3 -3
  423. package/src/chain/validation/blobSidecar.ts +1 -1
  424. package/src/chain/validation/block.ts +3 -4
  425. package/src/chain/validation/blsToExecutionChange.ts +2 -2
  426. package/src/chain/validation/dataColumnSidecar.ts +231 -8
  427. package/src/chain/validation/executionPayloadBid.ts +10 -10
  428. package/src/chain/validation/executionPayloadEnvelope.ts +5 -4
  429. package/src/chain/validation/payloadAttestationMessage.ts +6 -4
  430. package/src/chain/validation/proposerSlashing.ts +1 -1
  431. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -7
  432. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -7
  433. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -2
  434. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -7
  435. package/src/chain/validation/syncCommittee.ts +25 -20
  436. package/src/chain/validation/syncCommitteeContributionAndProof.ts +9 -10
  437. package/src/chain/validation/voluntaryExit.ts +3 -8
  438. package/src/chain/validatorMonitor.ts +15 -13
  439. package/src/db/buckets.ts +2 -2
  440. package/src/db/repositories/dataColumnSidecar.ts +4 -2
  441. package/src/db/repositories/dataColumnSidecarArchive.ts +4 -2
  442. package/src/metrics/metrics/lodestar.ts +57 -19
  443. package/src/network/gossip/encoding.ts +16 -0
  444. package/src/network/interface.ts +18 -4
  445. package/src/network/libp2p/index.ts +24 -13
  446. package/src/network/network.ts +39 -8
  447. package/src/network/options.ts +7 -2
  448. package/src/network/processor/extractSlotRootFns.ts +32 -6
  449. package/src/network/processor/gossipHandlers.ts +334 -94
  450. package/src/network/processor/index.ts +395 -92
  451. package/src/network/reqresp/ReqRespBeaconNode.ts +13 -0
  452. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +94 -0
  453. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +43 -0
  454. package/src/network/reqresp/handlers/index.ts +12 -0
  455. package/src/network/reqresp/protocols.ts +12 -0
  456. package/src/network/reqresp/rateLimit.ts +18 -0
  457. package/src/network/reqresp/score.ts +2 -0
  458. package/src/network/reqresp/types.ts +26 -5
  459. package/src/node/nodejs.ts +6 -5
  460. package/src/node/notifier.ts +5 -6
  461. package/src/sync/backfill/backfill.ts +3 -3
  462. package/src/sync/unknownBlock.ts +13 -53
  463. package/src/sync/utils/downloadByRange.ts +9 -7
  464. package/src/sync/utils/downloadByRoot.ts +16 -12
  465. package/src/util/blobs.ts +35 -15
  466. package/src/util/dataColumns.ts +69 -25
  467. package/src/util/execution.ts +49 -30
  468. package/src/util/sszBytes.ts +245 -3
  469. package/src/util/types.ts +6 -0
@@ -38,7 +38,12 @@ import {
38
38
  import {BlockInputSource} from "../chain/blocks/blockInput/types.js";
39
39
  import {CustodyConfig} from "../util/dataColumns.js";
40
40
  import {PeerIdStr} from "../util/peerId.js";
41
- import {BeaconBlocksByRootRequest, BlobSidecarsByRootRequest, DataColumnSidecarsByRootRequest} from "../util/types.js";
41
+ import {
42
+ BeaconBlocksByRootRequest,
43
+ BlobSidecarsByRootRequest,
44
+ DataColumnSidecarsByRootRequest,
45
+ ExecutionPayloadEnvelopesByRootRequest,
46
+ } from "../util/types.js";
42
47
  import {INetworkCorePublic} from "./core/types.js";
43
48
  import {INetworkEventBus} from "./events.js";
44
49
  import {GossipType} from "./gossip/interface.js";
@@ -68,7 +73,8 @@ export interface INetwork extends INetworkCorePublic {
68
73
  reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): void;
69
74
  shouldAggregate(subnet: SubnetID, slot: Slot): boolean;
70
75
  reStatusPeers(peers: PeerIdStr[]): Promise<void>;
71
- searchUnknownSlotRoot(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void;
76
+ searchUnknownBlock(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void;
77
+ searchUnknownEnvelope(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void;
72
78
  // ReqResp
73
79
  sendBeaconBlocksByRange(peerId: PeerIdStr, request: phase0.BeaconBlocksByRangeRequest): Promise<SignedBeaconBlock[]>;
74
80
  sendBeaconBlocksByRoot(peerId: PeerIdStr, request: BeaconBlocksByRootRequest): Promise<SignedBeaconBlock[]>;
@@ -77,11 +83,19 @@ export interface INetwork extends INetworkCorePublic {
77
83
  sendDataColumnSidecarsByRange(
78
84
  peerId: PeerIdStr,
79
85
  request: fulu.DataColumnSidecarsByRangeRequest
80
- ): Promise<fulu.DataColumnSidecar[]>;
86
+ ): Promise<DataColumnSidecar[]>;
81
87
  sendDataColumnSidecarsByRoot(
82
88
  peerId: PeerIdStr,
83
89
  request: DataColumnSidecarsByRootRequest
84
- ): Promise<fulu.DataColumnSidecar[]>;
90
+ ): Promise<DataColumnSidecar[]>;
91
+ sendExecutionPayloadEnvelopesByRange(
92
+ peerId: PeerIdStr,
93
+ request: gloas.ExecutionPayloadEnvelopesByRangeRequest
94
+ ): Promise<gloas.SignedExecutionPayloadEnvelope[]>;
95
+ sendExecutionPayloadEnvelopesByRoot(
96
+ peerId: PeerIdStr,
97
+ request: ExecutionPayloadEnvelopesByRootRequest
98
+ ): Promise<gloas.SignedExecutionPayloadEnvelope[]>;
85
99
 
86
100
  // Gossip
87
101
  publishBeaconBlock(signedBlock: SignedBeaconBlock): Promise<number>;
@@ -44,6 +44,8 @@ export async function createNodeJsLibp2p(
44
44
  ): Promise<Libp2p> {
45
45
  const localMultiaddrs = networkOpts.localMultiaddrs || defaultNetworkOptions.localMultiaddrs;
46
46
  const disconnectThreshold = networkOpts.disconnectThreshold ?? defaultNetworkOptions.disconnectThreshold;
47
+ const tcpEnabled = networkOpts.tcp ?? defaultNetworkOptions.tcp;
48
+ const quicEnabled = networkOpts.quic ?? defaultNetworkOptions.quic;
47
49
  const {peerStoreDir, disablePeerDiscovery} = nodeJsLibp2pOpts;
48
50
 
49
51
  let datastore: undefined | Eth2PeerDataStore = undefined;
@@ -58,7 +60,7 @@ export async function createNodeJsLibp2p(
58
60
  ...(networkOpts.bootMultiaddrs ?? defaultNetworkOptions.bootMultiaddrs ?? []),
59
61
  // Append discv5.bootEnrs to bootMultiaddrs if requested
60
62
  ...(networkOpts.connectToDiscv5Bootnodes
61
- ? await getDiscv5Multiaddrs(networkOpts.discv5?.bootEnrs ?? [], networkOpts.quic)
63
+ ? await getDiscv5Multiaddrs(networkOpts.discv5?.bootEnrs ?? [], quicEnabled)
62
64
  : []),
63
65
  ];
64
66
 
@@ -71,7 +73,7 @@ export async function createNodeJsLibp2p(
71
73
  }
72
74
  }
73
75
  const transports: Libp2pInit["transports"] = [];
74
- if (networkOpts.tcp ?? true) {
76
+ if (tcpEnabled) {
75
77
  transports.unshift(
76
78
  tcp({
77
79
  // Reject connections when the server's connection count gets high
@@ -87,17 +89,26 @@ export async function createNodeJsLibp2p(
87
89
  })
88
90
  );
89
91
  }
90
- if (networkOpts.quic) {
91
- transports.unshift(
92
- quic({
93
- handshakeTimeout: 5_000,
94
- maxIdleTimeout: 10_000,
95
- keepAliveInterval: 5_000,
96
- maxConcurrentStreamLimit: 256,
97
- maxStreamData: 10_000_000,
98
- maxConnectionData: 15_000_000,
99
- })
100
- );
92
+ if (quicEnabled) {
93
+ const quicMultiaddrs = localMultiaddrs.filter((ma) => ma.includes("/quic-v1"));
94
+ const hasIpv4Quic = quicMultiaddrs.some((ma) => ma.includes("/ip4/"));
95
+ const hasIpv6Quic = quicMultiaddrs.some((ma) => ma.includes("/ip6/"));
96
+ // Only add QUIC transport if at least one QUIC listen address is configured,
97
+ // otherwise the transport constructor will throw
98
+ if (hasIpv4Quic || hasIpv6Quic) {
99
+ transports.unshift(
100
+ quic({
101
+ handshakeTimeout: 5_000,
102
+ maxIdleTimeout: 10_000,
103
+ keepAliveInterval: 5_000,
104
+ maxConcurrentStreamLimit: 256,
105
+ maxStreamData: 10_000_000,
106
+ maxConnectionData: 15_000_000,
107
+ ipv4: hasIpv4Quic,
108
+ ipv6: hasIpv6Quic,
109
+ })
110
+ );
111
+ }
101
112
  }
102
113
 
103
114
  const noiseCrypto = {
@@ -11,7 +11,6 @@ import {computeEpochAtSlot} from "@lodestar/state-transition";
11
11
  import {
12
12
  AttesterSlashing,
13
13
  DataColumnSidecar,
14
- DataColumnSidecars,
15
14
  LightClientBootstrap,
16
15
  LightClientFinalityUpdate,
17
16
  LightClientOptimisticUpdate,
@@ -40,7 +39,12 @@ import {IClock} from "../util/clock.js";
40
39
  import {CustodyConfig} from "../util/dataColumns.js";
41
40
  import {PeerIdStr, peerIdToString} from "../util/peerId.js";
42
41
  import {promiseAllMaybeAsync} from "../util/promises.js";
43
- import {BeaconBlocksByRootRequest, BlobSidecarsByRootRequest, DataColumnSidecarsByRootRequest} from "../util/types.js";
42
+ import {
43
+ BeaconBlocksByRootRequest,
44
+ BlobSidecarsByRootRequest,
45
+ DataColumnSidecarsByRootRequest,
46
+ ExecutionPayloadEnvelopesByRootRequest,
47
+ } from "../util/types.js";
44
48
  import {INetworkCore, NetworkCore, WorkerNetworkCore} from "./core/index.js";
45
49
  import {INetworkEventBus, NetworkEvent, NetworkEventBus, NetworkEventData} from "./events.js";
46
50
  import {getActiveForkBoundaries} from "./forks.js";
@@ -161,7 +165,7 @@ export class Network implements INetwork {
161
165
  const events = new NetworkEventBus();
162
166
  const aggregatorTracker = new AggregatorTracker();
163
167
 
164
- const activeValidatorCount = chain.getHeadState().epochCtx.currentShuffling.activeIndices.length;
168
+ const activeValidatorCount = chain.getHeadState().activeValidatorCount;
165
169
  const initialStatus = chain.getStatus();
166
170
  const initialCustodyGroupCount = chain.custodyConfig.targetCustodyGroupCount;
167
171
 
@@ -277,8 +281,12 @@ export class Network implements INetwork {
277
281
  return this.core.reStatusPeers(peers);
278
282
  }
279
283
 
280
- searchUnknownSlotRoot(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void {
281
- this.networkProcessor.searchUnknownSlotRoot(slotRoot, source, peer);
284
+ searchUnknownBlock(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void {
285
+ this.networkProcessor.searchUnknownBlock(slotRoot, source, peer);
286
+ }
287
+
288
+ searchUnknownEnvelope(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void {
289
+ this.networkProcessor.searchUnknownEnvelope(slotRoot, source, peer);
282
290
  }
283
291
 
284
292
  async reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): Promise<void> {
@@ -616,7 +624,7 @@ export class Network implements INetwork {
616
624
  async sendDataColumnSidecarsByRange(
617
625
  peerId: PeerIdStr,
618
626
  request: fulu.DataColumnSidecarsByRangeRequest
619
- ): Promise<fulu.DataColumnSidecar[]> {
627
+ ): Promise<DataColumnSidecar[]> {
620
628
  return collectMaxResponseTyped(
621
629
  this.sendReqRespRequest(peerId, ReqRespMethod.DataColumnSidecarsByRange, [Version.V1], request),
622
630
  request.count * request.columns.length,
@@ -627,7 +635,7 @@ export class Network implements INetwork {
627
635
  async sendDataColumnSidecarsByRoot(
628
636
  peerId: PeerIdStr,
629
637
  request: DataColumnSidecarsByRootRequest
630
- ): Promise<fulu.DataColumnSidecar[]> {
638
+ ): Promise<DataColumnSidecar[]> {
631
639
  return collectMaxResponseTyped(
632
640
  this.sendReqRespRequest(peerId, ReqRespMethod.DataColumnSidecarsByRoot, [Version.V1], request),
633
641
  request.reduce((total, {columns}) => total + columns.length, 0),
@@ -636,6 +644,29 @@ export class Network implements INetwork {
636
644
  );
637
645
  }
638
646
 
647
+ async sendExecutionPayloadEnvelopesByRange(
648
+ peerId: PeerIdStr,
649
+ request: gloas.ExecutionPayloadEnvelopesByRangeRequest
650
+ ): Promise<gloas.SignedExecutionPayloadEnvelope[]> {
651
+ return collectMaxResponseTyped(
652
+ this.sendReqRespRequest(peerId, ReqRespMethod.ExecutionPayloadEnvelopesByRange, [Version.V1], request),
653
+ request.count,
654
+ responseSszTypeByMethod[ReqRespMethod.ExecutionPayloadEnvelopesByRange]
655
+ );
656
+ }
657
+
658
+ async sendExecutionPayloadEnvelopesByRoot(
659
+ peerId: PeerIdStr,
660
+ request: ExecutionPayloadEnvelopesByRootRequest
661
+ ): Promise<gloas.SignedExecutionPayloadEnvelope[]> {
662
+ return collectMaxResponseTyped(
663
+ this.sendReqRespRequest(peerId, ReqRespMethod.ExecutionPayloadEnvelopesByRoot, [Version.V1], request),
664
+ request.length,
665
+ responseSszTypeByMethod[ReqRespMethod.ExecutionPayloadEnvelopesByRoot],
666
+ this.chain.serializedCache
667
+ );
668
+ }
669
+
639
670
  private sendReqRespRequest<Req>(
640
671
  peerId: PeerIdStr,
641
672
  method: ReqRespMethod,
@@ -784,7 +815,7 @@ export class Network implements INetwork {
784
815
  this.core.setTargetGroupCount(count);
785
816
  };
786
817
 
787
- private onPublishDataColumns = (sidecars: DataColumnSidecars): Promise<number[]> => {
818
+ private onPublishDataColumns = (sidecars: DataColumnSidecar[]): Promise<number[]> => {
788
819
  return promiseAllMaybeAsync(sidecars.map((sidecar) => () => this.publishDataColumnSidecar(sidecar)));
789
820
  };
790
821
 
@@ -55,7 +55,12 @@ export const defaultNetworkOptions: NetworkOptions = {
55
55
  maxPeers: 210, // Allow some room above targetPeers for new inbound peers
56
56
  targetPeers: 200,
57
57
  // In CLI usage this is typically overridden; when unset it serves as a fallback default (e.g. programmatic usage/tests)
58
- localMultiaddrs: ["/ip4/0.0.0.0/tcp/9000", "/ip6/::/tcp/9000"],
58
+ localMultiaddrs: [
59
+ "/ip4/0.0.0.0/udp/9001/quic-v1",
60
+ "/ip6/::/udp/9001/quic-v1",
61
+ "/ip4/0.0.0.0/tcp/9000",
62
+ "/ip6/::/tcp/9000",
63
+ ],
59
64
  bootMultiaddrs: [],
60
65
  /** disabled by default */
61
66
  discv5: null,
@@ -69,7 +74,7 @@ export const defaultNetworkOptions: NetworkOptions = {
69
74
  slotsToSubscribeBeforeAggregatorDuty: 2,
70
75
  // This will enable the light client server by default
71
76
  disableLightClientServer: false,
72
- quic: false,
77
+ quic: true,
73
78
  tcp: true,
74
79
  // specific option for fulu
75
80
  // - this is the same to TARGET_SUBNET_PEERS
@@ -1,23 +1,25 @@
1
- import {ForkName, isForkPostGloas} from "@lodestar/params";
1
+ import {ForkName, ForkSeq} from "@lodestar/params";
2
2
  import {SlotOptionalRoot, SlotRootHex} from "@lodestar/types";
3
3
  import {
4
4
  getBeaconBlockRootFromDataColumnSidecarSerialized,
5
- getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized,
6
5
  getBlockRootFromBeaconAttestationSerialized,
6
+ getBlockRootFromPayloadAttestationMessageSerialized,
7
7
  getBlockRootFromSignedAggregateAndProofSerialized,
8
8
  getSlotFromBeaconAttestationSerialized,
9
9
  getSlotFromBlobSidecarSerialized,
10
10
  getSlotFromDataColumnSidecarSerialized,
11
11
  getSlotFromExecutionPayloadEnvelopeSerialized,
12
+ getSlotFromPayloadAttestationMessageSerialized,
12
13
  getSlotFromSignedAggregateAndProofSerialized,
13
14
  getSlotFromSignedBeaconBlockSerialized,
15
+ getSlotFromSignedExecutionPayloadBidSerialized,
14
16
  } from "../../util/sszBytes.js";
15
17
  import {GossipType} from "../gossip/index.js";
16
18
  import {ExtractSlotRootFns} from "./types.js";
17
19
 
18
20
  /**
19
21
  * Extract the slot and block root of a gossip message form serialized data.
20
- * Only applicable for beacon_attestation and beacon_aggregate_and_proof topics.
22
+ * Only do it for messages that have a slot and block root, and we want to await the block if the block root is not known.
21
23
  */
22
24
  export function createExtractBlockSlotRootFns(): ExtractSlotRootFns {
23
25
  return {
@@ -57,21 +59,45 @@ export function createExtractBlockSlotRootFns(): ExtractSlotRootFns {
57
59
  },
58
60
  [GossipType.data_column_sidecar]: (data: Uint8Array, fork: ForkName): SlotOptionalRoot | null => {
59
61
  const slot = getSlotFromDataColumnSidecarSerialized(data, fork);
62
+
60
63
  if (slot === null) {
61
64
  return null;
62
65
  }
63
66
 
64
- const root = isForkPostGloas(fork) ? getBeaconBlockRootFromDataColumnSidecarSerialized(data) : null;
67
+ if (ForkSeq[fork] < ForkSeq.gloas) {
68
+ return {slot};
69
+ }
70
+
71
+ const root = getBeaconBlockRootFromDataColumnSidecarSerialized(data);
72
+ // null root means the message is invalid here and will be ignored in gossip handler later
73
+ // returning the slot here helps check the earliest permissable slot in the network processor
65
74
  return root !== null ? {slot, root} : {slot};
66
75
  },
67
- [GossipType.execution_payload]: (data: Uint8Array): SlotRootHex | null => {
76
+ [GossipType.execution_payload]: (data: Uint8Array): SlotOptionalRoot | null => {
68
77
  const slot = getSlotFromExecutionPayloadEnvelopeSerialized(data);
69
- const root = getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized(data);
78
+ // Do not extract the root here; the network processor will extract it in the 2nd round to trigger block search without awaiting.
79
+ if (slot === null) {
80
+ return null;
81
+ }
82
+ return {slot};
83
+ },
84
+ [GossipType.payload_attestation_message]: (data: Uint8Array): SlotRootHex | null => {
85
+ const slot = getSlotFromPayloadAttestationMessageSerialized(data);
86
+ const root = getBlockRootFromPayloadAttestationMessageSerialized(data);
70
87
 
71
88
  if (slot === null || root === null) {
72
89
  return null;
73
90
  }
74
91
  return {slot, root};
75
92
  },
93
+ [GossipType.execution_payload_bid]: (data: Uint8Array): SlotOptionalRoot | null => {
94
+ const slot = getSlotFromSignedExecutionPayloadBidSerialized(data);
95
+
96
+ if (slot === null) {
97
+ return null;
98
+ }
99
+
100
+ return {slot};
101
+ },
76
102
  };
77
103
  }