@lodestar/beacon-node 1.51.0-dev.ec493d509d → 1.51.0-dev.ee7f143944

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 (562) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +36 -88
  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 +22 -2
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/utils.d.ts +1 -1
  8. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  9. package/lib/api/impl/validator/index.d.ts +6 -0
  10. package/lib/api/impl/validator/index.d.ts.map +1 -1
  11. package/lib/api/impl/validator/index.js +42 -26
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/chain/GetBlobsTracker.d.ts +13 -2
  14. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  15. package/lib/chain/GetBlobsTracker.js +69 -35
  16. package/lib/chain/GetBlobsTracker.js.map +1 -1
  17. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  18. package/lib/chain/archiveStore/archiveStore.js +1 -0
  19. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  20. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  21. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  22. package/lib/chain/archiveStore/utils/archiveBlocks.js +7 -1
  23. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  24. package/lib/chain/blocks/blockInput/blockInput.d.ts +11 -56
  25. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  26. package/lib/chain/blocks/blockInput/blockInput.js +5 -241
  27. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  28. package/lib/chain/blocks/blockInput/errors.d.ts +2 -4
  29. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -1
  30. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  31. package/lib/chain/blocks/blockInput/types.d.ts +2 -18
  32. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  33. package/lib/chain/blocks/blockInput/types.js +0 -1
  34. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  35. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  36. package/lib/chain/blocks/importBlock.js +36 -53
  37. package/lib/chain/blocks/importBlock.js.map +1 -1
  38. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
  39. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  40. package/lib/chain/blocks/importExecutionPayload.js +32 -18
  41. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  42. package/lib/chain/blocks/index.d.ts.map +1 -1
  43. package/lib/chain/blocks/index.js +4 -4
  44. package/lib/chain/blocks/index.js.map +1 -1
  45. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  46. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  47. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  48. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  49. package/lib/chain/blocks/types.d.ts +4 -20
  50. package/lib/chain/blocks/types.d.ts.map +1 -1
  51. package/lib/chain/blocks/types.js +0 -24
  52. package/lib/chain/blocks/types.js.map +1 -1
  53. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  54. package/lib/chain/blocks/verifyBlock.js +18 -7
  55. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  56. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  57. package/lib/chain/blocks/verifyBlocksDataAvailability.js +14 -2
  58. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  59. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  60. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  61. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +7 -3
  62. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  63. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  64. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  65. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  66. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  67. package/lib/chain/blocks/verifyBlocksSignatures.js +10 -5
  68. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  69. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  70. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  71. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  72. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  73. package/lib/chain/blocks/writeBlockInputToDb.d.ts +0 -2
  74. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  75. package/lib/chain/blocks/writeBlockInputToDb.js +6 -24
  76. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  77. package/lib/chain/bls/interface.d.ts +2 -0
  78. package/lib/chain/bls/interface.d.ts.map +1 -1
  79. package/lib/chain/bls/multithread/index.d.ts +1 -1
  80. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  81. package/lib/chain/bls/multithread/index.js +50 -22
  82. package/lib/chain/bls/multithread/index.js.map +1 -1
  83. package/lib/chain/bls/multithread/types.d.ts +1 -1
  84. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  85. package/lib/chain/bls/multithread/worker.js +1 -1
  86. package/lib/chain/bls/multithread/worker.js.map +1 -1
  87. package/lib/chain/bls/singleThread.js +1 -1
  88. package/lib/chain/bls/singleThread.js.map +1 -1
  89. package/lib/chain/bls/utils.js +1 -1
  90. package/lib/chain/bls/utils.js.map +1 -1
  91. package/lib/chain/chain.d.ts +25 -4
  92. package/lib/chain/chain.d.ts.map +1 -1
  93. package/lib/chain/chain.js +120 -39
  94. package/lib/chain/chain.js.map +1 -1
  95. package/lib/chain/emitter.d.ts +7 -7
  96. package/lib/chain/emitter.d.ts.map +1 -1
  97. package/lib/chain/emitter.js +5 -5
  98. package/lib/chain/emitter.js.map +1 -1
  99. package/lib/chain/errors/blockError.d.ts +1 -1
  100. package/lib/chain/errors/blockError.d.ts.map +1 -1
  101. package/lib/chain/errors/blockError.js +1 -1
  102. package/lib/chain/errors/blockError.js.map +1 -1
  103. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  104. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  105. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  106. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  107. package/lib/chain/errors/index.d.ts +0 -1
  108. package/lib/chain/errors/index.d.ts.map +1 -1
  109. package/lib/chain/errors/index.js +0 -1
  110. package/lib/chain/errors/index.js.map +1 -1
  111. package/lib/chain/forkChoice/index.d.ts +11 -1
  112. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  113. package/lib/chain/forkChoice/index.js +11 -0
  114. package/lib/chain/forkChoice/index.js.map +1 -1
  115. package/lib/chain/forkChoiceExecutionEngine.d.ts +51 -0
  116. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  117. package/lib/chain/forkChoiceExecutionEngine.js +117 -0
  118. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  119. package/lib/chain/interface.d.ts +9 -7
  120. package/lib/chain/interface.d.ts.map +1 -1
  121. package/lib/chain/interface.js.map +1 -1
  122. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
  123. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  124. package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
  125. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  126. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  127. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  128. package/lib/chain/opPools/attestationPool.js +15 -4
  129. package/lib/chain/opPools/attestationPool.js.map +1 -1
  130. package/lib/chain/opPools/index.d.ts +1 -0
  131. package/lib/chain/opPools/index.d.ts.map +1 -1
  132. package/lib/chain/opPools/index.js +1 -0
  133. package/lib/chain/opPools/index.js.map +1 -1
  134. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  135. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  136. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  137. package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
  138. package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
  139. package/lib/chain/opPools/singleAttestationPool.js +209 -0
  140. package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
  141. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  142. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  143. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  144. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  145. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  146. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  147. package/lib/chain/opPools/utils.d.ts +1 -1
  148. package/lib/chain/opPools/utils.d.ts.map +1 -1
  149. package/lib/chain/opPools/utils.js +1 -1
  150. package/lib/chain/opPools/utils.js.map +1 -1
  151. package/lib/chain/options.d.ts +5 -3
  152. package/lib/chain/options.d.ts.map +1 -1
  153. package/lib/chain/options.js +0 -1
  154. package/lib/chain/options.js.map +1 -1
  155. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  156. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  157. package/lib/chain/produceBlock/produceBlockBody.js +3 -2
  158. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  159. package/lib/chain/proposerTracker.d.ts +31 -0
  160. package/lib/chain/proposerTracker.d.ts.map +1 -0
  161. package/lib/chain/proposerTracker.js +75 -0
  162. package/lib/chain/proposerTracker.js.map +1 -0
  163. package/lib/chain/regen/interface.d.ts +1 -1
  164. package/lib/chain/regen/interface.d.ts.map +1 -1
  165. package/lib/chain/regen/queued.d.ts +1 -1
  166. package/lib/chain/regen/queued.d.ts.map +1 -1
  167. package/lib/chain/regen/queued.js +5 -3
  168. package/lib/chain/regen/queued.js.map +1 -1
  169. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -14
  170. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  171. package/lib/chain/seenCache/seenGossipBlockInput.js +6 -65
  172. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  173. package/lib/chain/validation/executionPayloadBid.js +13 -13
  174. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  175. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  176. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  177. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  178. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  179. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  180. package/lib/chain/validation/syncCommittee.js +16 -10
  181. package/lib/chain/validation/syncCommittee.js.map +1 -1
  182. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  183. package/lib/chain/validation/syncCommitteeContributionAndProof.js +11 -0
  184. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  185. package/lib/chain/validatorMonitor.d.ts +1 -2
  186. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  187. package/lib/chain/validatorMonitor.js +0 -3
  188. package/lib/chain/validatorMonitor.js.map +1 -1
  189. package/lib/db/beacon.d.ts +7 -0
  190. package/lib/db/beacon.d.ts.map +1 -1
  191. package/lib/db/beacon.js +32 -0
  192. package/lib/db/beacon.js.map +1 -1
  193. package/lib/db/dataColumnStore.d.ts +1 -1
  194. package/lib/db/dataColumnStore.d.ts.map +1 -1
  195. package/lib/db/dataColumnStore.js +1 -4
  196. package/lib/db/dataColumnStore.js.map +1 -1
  197. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  198. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  199. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  200. package/lib/db/flatFileStore/slotIndex.js +2 -2
  201. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  202. package/lib/db/interface.d.ts +1 -0
  203. package/lib/db/interface.d.ts.map +1 -1
  204. package/lib/db/repositories/blobSidecars.d.ts +0 -1
  205. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  206. package/lib/db/repositories/blobSidecars.js +0 -1
  207. package/lib/db/repositories/blobSidecars.js.map +1 -1
  208. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  209. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  210. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  211. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  212. package/lib/execution/builder/apiClient.d.ts +14 -8
  213. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  214. package/lib/execution/builder/apiClient.js +12 -10
  215. package/lib/execution/builder/apiClient.js.map +1 -1
  216. package/lib/execution/builder/http.d.ts +2 -0
  217. package/lib/execution/builder/http.d.ts.map +1 -1
  218. package/lib/execution/builder/http.js +2 -0
  219. package/lib/execution/builder/http.js.map +1 -1
  220. package/lib/execution/engine/http.d.ts +4 -6
  221. package/lib/execution/engine/http.d.ts.map +1 -1
  222. package/lib/execution/engine/http.js +8 -10
  223. package/lib/execution/engine/http.js.map +1 -1
  224. package/lib/execution/engine/index.d.ts +1 -1
  225. package/lib/execution/engine/index.d.ts.map +1 -1
  226. package/lib/execution/engine/index.js +1 -1
  227. package/lib/execution/engine/index.js.map +1 -1
  228. package/lib/execution/engine/interface.d.ts +18 -6
  229. package/lib/execution/engine/interface.d.ts.map +1 -1
  230. package/lib/execution/engine/interface.js.map +1 -1
  231. package/lib/execution/engine/jsonRpcTransport.d.ts +2 -4
  232. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  233. package/lib/execution/engine/jsonRpcTransport.js +2 -12
  234. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  235. package/lib/execution/engine/mock.d.ts +0 -1
  236. package/lib/execution/engine/mock.d.ts.map +1 -1
  237. package/lib/execution/engine/mock.js +0 -4
  238. package/lib/execution/engine/mock.js.map +1 -1
  239. package/lib/execution/engine/restTransport.d.ts +2 -4
  240. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  241. package/lib/execution/engine/restTransport.js +1 -15
  242. package/lib/execution/engine/restTransport.js.map +1 -1
  243. package/lib/execution/engine/sszTypes.d.ts +0 -9
  244. package/lib/execution/engine/sszTypes.d.ts.map +1 -1
  245. package/lib/execution/engine/sszTypes.js +0 -5
  246. package/lib/execution/engine/sszTypes.js.map +1 -1
  247. package/lib/execution/engine/transport.d.ts +1 -14
  248. package/lib/execution/engine/transport.d.ts.map +1 -1
  249. package/lib/execution/engine/types.d.ts +0 -8
  250. package/lib/execution/engine/types.d.ts.map +1 -1
  251. package/lib/execution/engine/types.js +2 -10
  252. package/lib/execution/engine/types.js.map +1 -1
  253. package/lib/execution/engine/utils.d.ts.map +1 -1
  254. package/lib/execution/engine/utils.js +3 -2
  255. package/lib/execution/engine/utils.js.map +1 -1
  256. package/lib/index.d.ts +1 -1
  257. package/lib/index.d.ts.map +1 -1
  258. package/lib/index.js +1 -1
  259. package/lib/index.js.map +1 -1
  260. package/lib/metrics/metrics/beacon.d.ts +0 -9
  261. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  262. package/lib/metrics/metrics/beacon.js +0 -30
  263. package/lib/metrics/metrics/beacon.js.map +1 -1
  264. package/lib/metrics/metrics/lodestar.d.ts +30 -8
  265. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  266. package/lib/metrics/metrics/lodestar.js +79 -18
  267. package/lib/metrics/metrics/lodestar.js.map +1 -1
  268. package/lib/metrics/server/http.js +5 -5
  269. package/lib/metrics/server/http.js.map +1 -1
  270. package/lib/monitoring/service.js +1 -1
  271. package/lib/monitoring/service.js.map +1 -1
  272. package/lib/network/core/networkCore.d.ts +4 -1
  273. package/lib/network/core/networkCore.d.ts.map +1 -1
  274. package/lib/network/core/networkCore.js +7 -0
  275. package/lib/network/core/networkCore.js.map +1 -1
  276. package/lib/network/core/networkCoreWorker.js +2 -0
  277. package/lib/network/core/networkCoreWorker.js.map +1 -1
  278. package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
  279. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  280. package/lib/network/core/networkCoreWorkerHandler.js +6 -0
  281. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  282. package/lib/network/core/types.d.ts +6 -1
  283. package/lib/network/core/types.d.ts.map +1 -1
  284. package/lib/network/gossip/gossipsub.d.ts +1 -0
  285. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  286. package/lib/network/gossip/gossipsub.js +10 -0
  287. package/lib/network/gossip/gossipsub.js.map +1 -1
  288. package/lib/network/gossip/interface.d.ts +1 -8
  289. package/lib/network/gossip/interface.d.ts.map +1 -1
  290. package/lib/network/gossip/interface.js +0 -1
  291. package/lib/network/gossip/interface.js.map +1 -1
  292. package/lib/network/gossip/topic.d.ts +0 -16
  293. package/lib/network/gossip/topic.d.ts.map +1 -1
  294. package/lib/network/gossip/topic.js +0 -23
  295. package/lib/network/gossip/topic.js.map +1 -1
  296. package/lib/network/interface.d.ts +4 -5
  297. package/lib/network/interface.d.ts.map +1 -1
  298. package/lib/network/libp2p/index.d.ts.map +1 -1
  299. package/lib/network/libp2p/index.js +5 -1
  300. package/lib/network/libp2p/index.js.map +1 -1
  301. package/lib/network/network.d.ts +8 -7
  302. package/lib/network/network.d.ts.map +1 -1
  303. package/lib/network/network.js +53 -35
  304. package/lib/network/network.js.map +1 -1
  305. package/lib/network/options.d.ts +2 -0
  306. package/lib/network/options.d.ts.map +1 -1
  307. package/lib/network/options.js +2 -0
  308. package/lib/network/options.js.map +1 -1
  309. package/lib/network/peers/peerManager.d.ts +2 -1
  310. package/lib/network/peers/peerManager.d.ts.map +1 -1
  311. package/lib/network/peers/peerManager.js +28 -1
  312. package/lib/network/peers/peerManager.js.map +1 -1
  313. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  314. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  315. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  316. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  317. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  318. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  319. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  320. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  321. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  322. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  323. package/lib/network/peers/utils/subnetMap.js +6 -3
  324. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  325. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  326. package/lib/network/processor/extractSlotRootFns.js +1 -8
  327. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  328. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  329. package/lib/network/processor/gossipHandlers.js +52 -131
  330. package/lib/network/processor/gossipHandlers.js.map +1 -1
  331. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  332. package/lib/network/processor/gossipQueues/index.js +0 -6
  333. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  334. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
  335. package/lib/network/processor/gossipValidatorFn.js +1 -5
  336. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  337. package/lib/network/processor/index.d.ts +6 -0
  338. package/lib/network/processor/index.d.ts.map +1 -1
  339. package/lib/network/processor/index.js +29 -4
  340. package/lib/network/processor/index.js.map +1 -1
  341. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  342. package/lib/network/reqresp/ReqRespBeaconNode.js +0 -3
  343. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  344. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
  345. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  346. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  347. package/lib/network/reqresp/handlers/index.js +1 -12
  348. package/lib/network/reqresp/handlers/index.js.map +1 -1
  349. package/lib/network/reqresp/protocols.d.ts +0 -2
  350. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  351. package/lib/network/reqresp/protocols.js +0 -10
  352. package/lib/network/reqresp/protocols.js.map +1 -1
  353. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  354. package/lib/network/reqresp/rateLimit.js +1 -17
  355. package/lib/network/reqresp/rateLimit.js.map +1 -1
  356. package/lib/network/reqresp/types.d.ts +2 -8
  357. package/lib/network/reqresp/types.d.ts.map +1 -1
  358. package/lib/network/reqresp/types.js +1 -7
  359. package/lib/network/reqresp/types.js.map +1 -1
  360. package/lib/network/subnets/attnetsService.d.ts +35 -5
  361. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  362. package/lib/network/subnets/attnetsService.js +84 -6
  363. package/lib/network/subnets/attnetsService.js.map +1 -1
  364. package/lib/network/subnets/interface.d.ts +7 -0
  365. package/lib/network/subnets/interface.d.ts.map +1 -1
  366. package/lib/network/subnets/interface.js.map +1 -1
  367. package/lib/node/nodejs.d.ts +3 -1
  368. package/lib/node/nodejs.d.ts.map +1 -1
  369. package/lib/node/nodejs.js +47 -21
  370. package/lib/node/nodejs.js.map +1 -1
  371. package/lib/node/options.d.ts +3 -1
  372. package/lib/node/options.d.ts.map +1 -1
  373. package/lib/node/options.js +4 -2
  374. package/lib/node/options.js.map +1 -1
  375. package/lib/sync/interface.d.ts.map +1 -1
  376. package/lib/sync/interface.js.map +1 -1
  377. package/lib/sync/range/batch.d.ts +2 -3
  378. package/lib/sync/range/batch.d.ts.map +1 -1
  379. package/lib/sync/range/batch.js +9 -22
  380. package/lib/sync/range/batch.js.map +1 -1
  381. package/lib/sync/range/chain.d.ts.map +1 -1
  382. package/lib/sync/range/chain.js +2 -15
  383. package/lib/sync/range/chain.js.map +1 -1
  384. package/lib/sync/sync.d.ts +15 -0
  385. package/lib/sync/sync.d.ts.map +1 -1
  386. package/lib/sync/sync.js +103 -25
  387. package/lib/sync/sync.js.map +1 -1
  388. package/lib/sync/unknownBlock.d.ts.map +1 -1
  389. package/lib/sync/unknownBlock.js +1 -7
  390. package/lib/sync/unknownBlock.js.map +1 -1
  391. package/lib/sync/utils/downloadByRange.d.ts +6 -34
  392. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  393. package/lib/sync/utils/downloadByRange.js +24 -128
  394. package/lib/sync/utils/downloadByRange.js.map +1 -1
  395. package/lib/sync/utils/downloadByRoot.d.ts +2 -18
  396. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  397. package/lib/sync/utils/downloadByRoot.js +14 -99
  398. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  399. package/lib/util/blobs.d.ts +1 -7
  400. package/lib/util/blobs.d.ts.map +1 -1
  401. package/lib/util/blobs.js +0 -19
  402. package/lib/util/blobs.js.map +1 -1
  403. package/lib/util/execution.d.ts +3 -4
  404. package/lib/util/execution.d.ts.map +1 -1
  405. package/lib/util/execution.js +1 -73
  406. package/lib/util/execution.js.map +1 -1
  407. package/lib/util/file.d.ts.map +1 -1
  408. package/lib/util/file.js +8 -9
  409. package/lib/util/file.js.map +1 -1
  410. package/lib/util/queue/itemQueue.js +1 -1
  411. package/lib/util/queue/itemQueue.js.map +1 -1
  412. package/lib/util/sszBytes.d.ts +5 -1
  413. package/lib/util/sszBytes.d.ts.map +1 -1
  414. package/lib/util/sszBytes.js +36 -19
  415. package/lib/util/sszBytes.js.map +1 -1
  416. package/lib/util/types.d.ts +0 -5
  417. package/lib/util/types.d.ts.map +1 -1
  418. package/lib/util/types.js +1 -2
  419. package/lib/util/types.js.map +1 -1
  420. package/package.json +16 -17
  421. package/src/api/impl/beacon/blocks/index.ts +59 -109
  422. package/src/api/impl/beacon/pool/index.ts +31 -1
  423. package/src/api/impl/beacon/state/utils.ts +1 -1
  424. package/src/api/impl/validator/index.ts +47 -30
  425. package/src/chain/GetBlobsTracker.ts +82 -52
  426. package/src/chain/archiveStore/archiveStore.ts +1 -0
  427. package/src/chain/archiveStore/utils/archiveBlocks.ts +12 -4
  428. package/src/chain/blocks/blockInput/blockInput.ts +11 -343
  429. package/src/chain/blocks/blockInput/errors.ts +1 -2
  430. package/src/chain/blocks/blockInput/types.ts +2 -20
  431. package/src/chain/blocks/importBlock.ts +56 -72
  432. package/src/chain/blocks/importExecutionPayload.ts +55 -34
  433. package/src/chain/blocks/index.ts +11 -4
  434. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  435. package/src/chain/blocks/types.ts +5 -31
  436. package/src/chain/blocks/verifyBlock.ts +31 -16
  437. package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
  438. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
  439. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  440. package/src/chain/blocks/verifyBlocksSignatures.ts +10 -5
  441. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  442. package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
  443. package/src/chain/bls/interface.ts +2 -0
  444. package/src/chain/bls/multithread/index.ts +48 -24
  445. package/src/chain/bls/multithread/types.ts +1 -1
  446. package/src/chain/bls/multithread/worker.ts +1 -5
  447. package/src/chain/bls/singleThread.ts +1 -1
  448. package/src/chain/bls/utils.ts +1 -1
  449. package/src/chain/chain.ts +136 -38
  450. package/src/chain/emitter.ts +8 -8
  451. package/src/chain/errors/blockError.ts +1 -1
  452. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  453. package/src/chain/errors/index.ts +0 -1
  454. package/src/chain/forkChoice/index.ts +11 -0
  455. package/src/chain/forkChoiceExecutionEngine.ts +183 -0
  456. package/src/chain/interface.ts +9 -6
  457. package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
  458. package/src/chain/opPools/attestationPool.ts +16 -4
  459. package/src/chain/opPools/index.ts +1 -0
  460. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  461. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  462. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  463. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  464. package/src/chain/opPools/utils.ts +1 -1
  465. package/src/chain/options.ts +5 -4
  466. package/src/chain/produceBlock/produceBlockBody.ts +7 -3
  467. package/src/chain/proposerTracker.ts +94 -0
  468. package/src/chain/regen/interface.ts +1 -1
  469. package/src/chain/regen/queued.ts +6 -4
  470. package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
  471. package/src/chain/validation/executionPayloadBid.ts +14 -13
  472. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  473. package/src/chain/validation/syncCommittee.ts +31 -15
  474. package/src/chain/validation/syncCommitteeContributionAndProof.ts +13 -0
  475. package/src/chain/validatorMonitor.ts +0 -6
  476. package/src/db/beacon.ts +39 -0
  477. package/src/db/dataColumnStore.ts +2 -4
  478. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  479. package/src/db/flatFileStore/slotIndex.ts +4 -3
  480. package/src/db/interface.ts +2 -0
  481. package/src/db/repositories/blobSidecars.ts +0 -1
  482. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  483. package/src/execution/builder/apiClient.ts +16 -13
  484. package/src/execution/builder/http.ts +4 -0
  485. package/src/execution/engine/http.ts +19 -42
  486. package/src/execution/engine/index.ts +1 -1
  487. package/src/execution/engine/interface.ts +19 -10
  488. package/src/execution/engine/jsonRpcTransport.ts +10 -22
  489. package/src/execution/engine/mock.ts +0 -7
  490. package/src/execution/engine/restTransport.ts +3 -22
  491. package/src/execution/engine/sszTypes.ts +0 -9
  492. package/src/execution/engine/transport.ts +8 -17
  493. package/src/execution/engine/types.ts +3 -18
  494. package/src/execution/engine/utils.ts +4 -2
  495. package/src/index.ts +1 -1
  496. package/src/metrics/metrics/beacon.ts +0 -30
  497. package/src/metrics/metrics/lodestar.ts +80 -18
  498. package/src/metrics/server/http.ts +5 -5
  499. package/src/monitoring/service.ts +1 -1
  500. package/src/network/core/networkCore.ts +11 -1
  501. package/src/network/core/networkCoreWorker.ts +2 -0
  502. package/src/network/core/networkCoreWorkerHandler.ts +8 -1
  503. package/src/network/core/types.ts +6 -1
  504. package/src/network/gossip/gossipsub.ts +11 -0
  505. package/src/network/gossip/interface.ts +0 -5
  506. package/src/network/gossip/topic.ts +0 -25
  507. package/src/network/interface.ts +2 -5
  508. package/src/network/libp2p/index.ts +5 -1
  509. package/src/network/network.ts +55 -58
  510. package/src/network/options.ts +4 -0
  511. package/src/network/peers/peerManager.ts +28 -3
  512. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  513. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  514. package/src/network/peers/utils/subnetMap.ts +6 -3
  515. package/src/network/processor/extractSlotRootFns.ts +0 -9
  516. package/src/network/processor/gossipHandlers.ts +65 -164
  517. package/src/network/processor/gossipQueues/index.ts +0 -6
  518. package/src/network/processor/gossipValidatorFn.ts +0 -5
  519. package/src/network/processor/index.ts +25 -4
  520. package/src/network/reqresp/ReqRespBeaconNode.ts +0 -7
  521. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
  522. package/src/network/reqresp/handlers/index.ts +0 -17
  523. package/src/network/reqresp/protocols.ts +0 -12
  524. package/src/network/reqresp/rateLimit.ts +1 -17
  525. package/src/network/reqresp/types.ts +0 -13
  526. package/src/network/subnets/attnetsService.ts +94 -6
  527. package/src/network/subnets/interface.ts +7 -0
  528. package/src/node/nodejs.ts +58 -22
  529. package/src/node/options.ts +9 -6
  530. package/src/sync/interface.ts +1 -0
  531. package/src/sync/range/batch.ts +9 -21
  532. package/src/sync/range/chain.ts +2 -14
  533. package/src/sync/sync.ts +108 -26
  534. package/src/sync/unknownBlock.ts +1 -8
  535. package/src/sync/utils/downloadByRange.ts +31 -230
  536. package/src/sync/utils/downloadByRoot.ts +15 -142
  537. package/src/util/blobs.ts +0 -34
  538. package/src/util/execution.ts +8 -102
  539. package/src/util/file.ts +8 -9
  540. package/src/util/queue/itemQueue.ts +1 -1
  541. package/src/util/sszBytes.ts +42 -24
  542. package/src/util/types.ts +1 -8
  543. package/lib/chain/errors/blobSidecarError.d.ts +0 -108
  544. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  545. package/lib/chain/errors/blobSidecarError.js +0 -38
  546. package/lib/chain/errors/blobSidecarError.js.map +0 -1
  547. package/lib/chain/validation/blobSidecar.d.ts +0 -16
  548. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  549. package/lib/chain/validation/blobSidecar.js +0 -276
  550. package/lib/chain/validation/blobSidecar.js.map +0 -1
  551. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
  552. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  553. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
  554. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
  555. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
  556. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  557. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
  558. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
  559. package/src/chain/errors/blobSidecarError.ts +0 -70
  560. package/src/chain/validation/blobSidecar.ts +0 -357
  561. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
  562. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
package/src/sync/sync.ts CHANGED
@@ -1,13 +1,17 @@
1
1
  import {SLOTS_PER_EPOCH} from "@lodestar/params";
2
- import {Slot} from "@lodestar/types";
2
+ import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
3
+ import {Slot, Status} from "@lodestar/types";
3
4
  import {Logger, toRootHex} from "@lodestar/utils";
4
5
  import {IBeaconChain} from "../chain/index.js";
5
- import {GENESIS_SLOT} from "../constants/constants.js";
6
+ import {GENESIS_EPOCH, GENESIS_SLOT} from "../constants/constants.js";
7
+ import {GoodByeReasonCode} from "../constants/index.js";
8
+ import {IBeaconDb} from "../db/index.js";
6
9
  import {ExecutionEngineState} from "../execution/index.js";
7
10
  import {Metrics} from "../metrics/index.js";
8
- import {INetwork, NetworkEvent, NetworkEventData} from "../network/index.js";
11
+ import {INetwork, NetworkEvent, NetworkEventData, PeerAction} from "../network/index.js";
9
12
  import {ClockEvent} from "../util/clock.js";
10
13
  import {isOptimisticBlock} from "../util/forkChoice.js";
14
+ import {PeerIdStr} from "../util/peerId.js";
11
15
  import {MIN_EPOCH_TO_START_GOSSIP} from "./constants.js";
12
16
  import {IBeaconSync, SyncChainDebugState, SyncModules, SyncState, SyncingStatus, syncStateMetric} from "./interface.js";
13
17
  import {SyncOptions} from "./options.js";
@@ -19,6 +23,7 @@ export class BeaconSync implements IBeaconSync {
19
23
  private readonly logger: Logger;
20
24
  private readonly network: INetwork;
21
25
  private readonly chain: IBeaconChain;
26
+ private readonly db: IBeaconDb;
22
27
  private readonly metrics: Metrics | null;
23
28
  private readonly opts: SyncOptions;
24
29
 
@@ -28,12 +33,15 @@ export class BeaconSync implements IBeaconSync {
28
33
  /** For metrics only */
29
34
  private readonly peerSyncType = new Map<string, PeerSyncType>();
30
35
  private readonly slotImportTolerance: Slot;
36
+ /** The requested subscription state, set while a change is being applied */
37
+ private pendingGossipSubscribed: boolean | undefined;
31
38
 
32
39
  constructor(opts: SyncOptions, modules: SyncModules) {
33
- const {config, chain, metrics, network, logger} = modules;
40
+ const {config, chain, db, metrics, network, logger} = modules;
34
41
  this.opts = opts;
35
42
  this.network = network;
36
43
  this.chain = chain;
44
+ this.db = db;
37
45
  this.metrics = metrics;
38
46
  this.logger = logger;
39
47
  this.rangeSync = new RangeSync(modules, opts);
@@ -83,6 +91,7 @@ export class BeaconSync implements IBeaconSync {
83
91
  }
84
92
 
85
93
  close(): void {
94
+ this.pendingGossipSubscribed = undefined;
86
95
  this.network.events.off(NetworkEvent.peerConnected, this.addPeer);
87
96
  this.network.events.off(NetworkEvent.peerDisconnected, this.removePeer);
88
97
  this.chain.clock.off(ClockEvent.epoch, this.onClockEpoch);
@@ -192,6 +201,11 @@ export class BeaconSync implements IBeaconSync {
192
201
  */
193
202
  private addPeer = (data: NetworkEventData[NetworkEvent.peerConnected]): void => {
194
203
  const localStatus = this.chain.getStatus();
204
+ // Genesis and equal finalized epochs are already checked by assertPeerRelevance in the network worker
205
+ if (data.status.finalizedEpoch > GENESIS_EPOCH && data.status.finalizedEpoch < localStatus.finalizedEpoch) {
206
+ void this.verifyPastFinalizedCheckpoint(data.peer, data.status);
207
+ }
208
+
195
209
  const syncType = getPeerSyncType(localStatus, data.status, this.chain.forkChoice, this.slotImportTolerance);
196
210
  this.logger.verbose("Peer sync type classified", {
197
211
  peer: data.peer,
@@ -216,6 +230,56 @@ export class BeaconSync implements IBeaconSync {
216
230
  this.updateSyncState();
217
231
  };
218
232
 
233
+ /**
234
+ * A behind peer's finalized checkpoint must be the canonical block in effect at the start slot of its epoch
235
+ */
236
+ async verifyPastFinalizedCheckpoint(peer: PeerIdStr, remote: Status): Promise<void> {
237
+ const startSlot = computeStartSlotAtEpoch(remote.finalizedEpoch);
238
+ const root = toRootHex(remote.finalizedRoot);
239
+ try {
240
+ let reason: string | null = null;
241
+ // After a finality jump, finalized blocks stay in fork choice until the archiver migrates them.
242
+ // Fork choice is pruned only after archiving, so a miss here means the db already has this range.
243
+ const canonicalBlock = this.chain.forkChoice.getCanonicalBlockClosestLteSlot(startSlot);
244
+ if (canonicalBlock !== null) {
245
+ if (canonicalBlock.blockRoot === root) return;
246
+ reason = "finalized_root_not_canonical";
247
+ } else {
248
+ const slot = await this.db.blockArchive.getSlotByRoot(remote.finalizedRoot);
249
+ if (slot !== null && slot > startSlot) {
250
+ reason = "finalized_root_after_epoch_start";
251
+ } else if (slot !== startSlot) {
252
+ const childSlot = await this.db.blockArchive.getSlotByParentRoot(remote.finalizedRoot);
253
+ if (childSlot !== null) {
254
+ if (childSlot <= startSlot) reason = "finalized_root_not_in_effect_at_epoch_start";
255
+ } else if (slot === null && startSlot > this.chain.earliestAvailableSlot) {
256
+ // childSlot == null too, neither the root nor a child is canonical
257
+ // or they are canonical and both pruned but peer's finalized epoch starts after earliestAvailableSlot
258
+ reason = "unknown_finalized_root";
259
+ }
260
+ }
261
+ }
262
+
263
+ if (reason !== null) {
264
+ this.logger.debug("Peer finalized checkpoint not in our chain", {
265
+ peer,
266
+ finalizedEpoch: remote.finalizedEpoch,
267
+ root,
268
+ reason,
269
+ });
270
+ this.metrics?.syncPeerFinalizedCheckpointMismatch.inc({reason});
271
+ this.network.reportPeer(peer, PeerAction.Fatal, "PeerFinalizedCheckpointMismatch");
272
+ await this.network.goodbyeAndDisconnect(peer, GoodByeReasonCode.IRRELEVANT_NETWORK);
273
+ }
274
+ } catch (e) {
275
+ this.logger.debug(
276
+ "Error verifying peer finalized checkpoint",
277
+ {peer, finalizedEpoch: remote.finalizedEpoch, root},
278
+ e as Error
279
+ );
280
+ }
281
+ }
282
+
219
283
  /**
220
284
  * Must be called by libp2p when a peer is removed from the peer manager
221
285
  */
@@ -235,17 +299,7 @@ export class BeaconSync implements IBeaconSync {
235
299
  if (state === SyncState.Synced && this.chain.clock.currentEpoch >= MIN_EPOCH_TO_START_GOSSIP) {
236
300
  this.chain.forkChoice.resumeFastConfirmation();
237
301
 
238
- if (!this.network.isSubscribedToGossipCoreTopics()) {
239
- this.network
240
- .subscribeGossipCoreTopics()
241
- .then(() => {
242
- this.metrics?.syncSwitchGossipSubscriptions.inc({action: "subscribed"});
243
- this.logger.info("Subscribed gossip core topics");
244
- })
245
- .catch((e) => {
246
- this.logger.error("Error subscribing to gossip core topics", {}, e);
247
- });
248
- }
302
+ this.setGossipSubscription(true);
249
303
 
250
304
  // also start searching for unknown blocks
251
305
  if (!this.unknownBlockSync.isSubscribedToNetwork()) {
@@ -261,17 +315,8 @@ export class BeaconSync implements IBeaconSync {
261
315
  // Same debounce as gossip: transient blips keep the rule running, only a real gap pauses it
262
316
  this.chain.forkChoice.pauseFastConfirmation();
263
317
 
264
- if (this.network.isSubscribedToGossipCoreTopics()) {
265
- this.logger.warn(`Node sync has fallen behind by ${syncDiff} slots`);
266
- this.network
267
- .unsubscribeGossipCoreTopics()
268
- .then(() => {
269
- this.metrics?.syncSwitchGossipSubscriptions.inc({action: "unsubscribed"});
270
- this.logger.info("Un-subscribed gossip core topics");
271
- })
272
- .catch((e) => {
273
- this.logger.error("Error unsubscribing to gossip core topics", {}, e);
274
- });
318
+ if (this.setGossipSubscription(false)) {
319
+ this.logger.warn("Node sync has fallen behind", {slots: syncDiff});
275
320
  }
276
321
 
277
322
  // also stop searching for unknown blocks
@@ -283,6 +328,43 @@ export class BeaconSync implements IBeaconSync {
283
328
  }
284
329
  };
285
330
 
331
+ private setGossipSubscription(subscribe: boolean): boolean {
332
+ if ((this.pendingGossipSubscribed ?? this.network.isSubscribedToGossipCoreTopics()) === subscribe) return false;
333
+ const applying = this.pendingGossipSubscribed !== undefined;
334
+ this.pendingGossipSubscribed = subscribe;
335
+ if (!applying) void this.applyGossipSubscription();
336
+ return true;
337
+ }
338
+
339
+ /**
340
+ * Applies the latest requested state one request at a time. Network skips a subscribe issued while an unsubscribe is
341
+ * in flight, so opposite requests must not overlap.
342
+ */
343
+ private async applyGossipSubscription(): Promise<void> {
344
+ for (;;) {
345
+ const subscribe = this.pendingGossipSubscribed;
346
+ if (subscribe === undefined || subscribe === this.network.isSubscribedToGossipCoreTopics()) break;
347
+ try {
348
+ await (subscribe ? this.network.subscribeGossipCoreTopics() : this.network.unsubscribeGossipCoreTopics());
349
+ } catch (e) {
350
+ this.logger.error(
351
+ subscribe ? "Error subscribing to gossip core topics" : "Error unsubscribing to gossip core topics",
352
+ {},
353
+ e as Error
354
+ );
355
+ // Leave a retry of the same request to the next sync state update
356
+ if (this.pendingGossipSubscribed === subscribe) break;
357
+ continue;
358
+ }
359
+ if (this.pendingGossipSubscribed === undefined || this.network.isSubscribedToGossipCoreTopics() !== subscribe) {
360
+ break;
361
+ }
362
+ this.metrics?.syncSwitchGossipSubscriptions.inc({action: subscribe ? "subscribed" : "unsubscribed"});
363
+ this.logger.info(subscribe ? "Subscribed gossip core topics" : "Un-subscribed gossip core topics");
364
+ }
365
+ this.pendingGossipSubscribed = undefined;
366
+ }
367
+
286
368
  private onClockEpoch = (): void => {
287
369
  // If a node witness the genesis event consider starting gossip
288
370
  // Also, ensure that updateSyncState is run at least once per epoch.
@@ -6,7 +6,7 @@ import {RequestError, RequestErrorCode} from "@lodestar/reqresp";
6
6
  import {computeTimeAtSlot} from "@lodestar/state-transition";
7
7
  import {RootHex, Slot, gloas} from "@lodestar/types";
8
8
  import {Logger, fromHex, isErrorAborted, prettyPrintIndices, pruneSetToMax, sleep, toRootHex} from "@lodestar/utils";
9
- import {isBlockInputBlobs, isBlockInputColumns} from "../chain/blocks/blockInput/blockInput.js";
9
+ import {isBlockInputColumns} from "../chain/blocks/blockInput/blockInput.js";
10
10
  import {BlockInputSource, IBlockInput} from "../chain/blocks/blockInput/types.js";
11
11
  import {PayloadError, PayloadErrorCode} from "../chain/blocks/importExecutionPayload.js";
12
12
  import {PayloadEnvelopeInput, PayloadEnvelopeInputSource} from "../chain/blocks/payloadEnvelopeInput/index.js";
@@ -1910,13 +1910,6 @@ export class BlockInputSync {
1910
1910
  throw new Error(`${message} Block was not found.`);
1911
1911
  }
1912
1912
 
1913
- if (isBlockInputBlobs(cacheItem.blockInput)) {
1914
- const missing = cacheItem.blockInput.getMissingBlobMeta().map((b) => b.index);
1915
- if (missing.length) {
1916
- throw new Error(`${message} Missing blob indices=${prettyPrintIndices(missing)}.`);
1917
- }
1918
- }
1919
-
1920
1913
  if (isBlockInputColumns(cacheItem.blockInput)) {
1921
1914
  const missing = cacheItem.blockInput.getMissingSampledColumnMeta().missing;
1922
1915
  if (missing.length) {