@lodestar/beacon-node 1.41.0-dev.555261016d → 1.41.0-dev.66fe43ae9e

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 (411) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +123 -4
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/state/index.js +8 -8
  5. package/lib/api/impl/beacon/state/index.js.map +1 -1
  6. package/lib/api/impl/beacon/state/utils.d.ts +3 -4
  7. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  8. package/lib/api/impl/beacon/state/utils.js +5 -24
  9. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  10. package/lib/api/impl/debug/index.d.ts.map +1 -1
  11. package/lib/api/impl/debug/index.js +6 -2
  12. package/lib/api/impl/debug/index.js.map +1 -1
  13. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  14. package/lib/api/impl/lightclient/index.js +19 -2
  15. package/lib/api/impl/lightclient/index.js.map +1 -1
  16. package/lib/api/impl/node/index.d.ts +1 -1
  17. package/lib/api/impl/node/index.d.ts.map +1 -1
  18. package/lib/api/impl/node/index.js +18 -1
  19. package/lib/api/impl/node/index.js.map +1 -1
  20. package/lib/api/impl/node/utils.d.ts +1 -1
  21. package/lib/api/impl/node/utils.d.ts.map +1 -1
  22. package/lib/api/impl/node/utils.js.map +1 -1
  23. package/lib/api/impl/validator/index.d.ts.map +1 -1
  24. package/lib/api/impl/validator/index.js +130 -16
  25. package/lib/api/impl/validator/index.js.map +1 -1
  26. package/lib/chain/archiveStore/archiveStore.d.ts +1 -0
  27. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  28. package/lib/chain/archiveStore/archiveStore.js +9 -0
  29. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  30. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +5 -6
  31. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  32. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +9 -10
  33. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  34. package/lib/chain/archiveStore/historicalState/worker.js +3 -3
  35. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  36. package/lib/chain/archiveStore/utils/archivePayloads.d.ts +7 -0
  37. package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +1 -0
  38. package/lib/chain/archiveStore/utils/archivePayloads.js +10 -0
  39. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -0
  40. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  41. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  42. package/lib/chain/blocks/blockInput/blockInput.d.ts +20 -2
  43. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  44. package/lib/chain/blocks/blockInput/blockInput.js +47 -0
  45. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  46. package/lib/chain/blocks/blockInput/types.d.ts +2 -1
  47. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  48. package/lib/chain/blocks/blockInput/types.js +1 -0
  49. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  50. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  51. package/lib/chain/blocks/importBlock.js +26 -5
  52. package/lib/chain/blocks/importBlock.js.map +1 -1
  53. package/lib/chain/blocks/index.d.ts.map +1 -1
  54. package/lib/chain/blocks/index.js +2 -1
  55. package/lib/chain/blocks/index.js.map +1 -1
  56. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  57. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  58. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  59. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  60. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  61. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  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 -1
  65. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  66. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  67. package/lib/chain/blocks/writeBlockInputToDb.js +3 -0
  68. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  69. package/lib/chain/bls/multithread/index.d.ts +3 -3
  70. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  71. package/lib/chain/bls/multithread/index.js +5 -5
  72. package/lib/chain/bls/multithread/index.js.map +1 -1
  73. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  74. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  75. package/lib/chain/bls/multithread/jobItem.js +2 -2
  76. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  77. package/lib/chain/bls/singleThread.d.ts +4 -4
  78. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  79. package/lib/chain/bls/singleThread.js +4 -4
  80. package/lib/chain/bls/singleThread.js.map +1 -1
  81. package/lib/chain/bls/utils.d.ts +2 -2
  82. package/lib/chain/bls/utils.d.ts.map +1 -1
  83. package/lib/chain/bls/utils.js +7 -4
  84. package/lib/chain/bls/utils.js.map +1 -1
  85. package/lib/chain/chain.d.ts +6 -9
  86. package/lib/chain/chain.d.ts.map +1 -1
  87. package/lib/chain/chain.js +38 -22
  88. package/lib/chain/chain.js.map +1 -1
  89. package/lib/chain/emitter.d.ts +5 -5
  90. package/lib/chain/emitter.d.ts.map +1 -1
  91. package/lib/chain/errors/blockError.d.ts +7 -1
  92. package/lib/chain/errors/blockError.d.ts.map +1 -1
  93. package/lib/chain/errors/blockError.js +2 -0
  94. package/lib/chain/errors/blockError.js.map +1 -1
  95. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  96. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  97. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  98. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  99. package/lib/chain/forkChoice/index.js +30 -24
  100. package/lib/chain/forkChoice/index.js.map +1 -1
  101. package/lib/chain/interface.d.ts +4 -6
  102. package/lib/chain/interface.d.ts.map +1 -1
  103. package/lib/chain/interface.js.map +1 -1
  104. package/lib/chain/lightClient/index.d.ts.map +1 -1
  105. package/lib/chain/lightClient/index.js +1 -1
  106. package/lib/chain/lightClient/index.js.map +1 -1
  107. package/lib/chain/opPools/aggregatedAttestationPool.js +1 -1
  108. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  109. package/lib/chain/options.d.ts.map +1 -1
  110. package/lib/chain/options.js.map +1 -1
  111. package/lib/chain/prepareNextSlot.js +3 -3
  112. package/lib/chain/prepareNextSlot.js.map +1 -1
  113. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +10 -2
  114. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  115. package/lib/chain/produceBlock/computeNewStateRoot.js +24 -2
  116. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  117. package/lib/chain/produceBlock/produceBlockBody.d.ts +22 -7
  118. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  119. package/lib/chain/produceBlock/produceBlockBody.js +109 -10
  120. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  121. package/lib/chain/regen/queued.d.ts.map +1 -1
  122. package/lib/chain/regen/queued.js +4 -1
  123. package/lib/chain/regen/queued.js.map +1 -1
  124. package/lib/chain/regen/regen.d.ts.map +1 -1
  125. package/lib/chain/regen/regen.js +5 -1
  126. package/lib/chain/regen/regen.js.map +1 -1
  127. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  128. package/lib/chain/seenCache/seenGossipBlockInput.js +15 -7
  129. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  130. package/lib/chain/validation/aggregateAndProof.js +1 -1
  131. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  132. package/lib/chain/validation/attestation.d.ts.map +1 -1
  133. package/lib/chain/validation/attestation.js +7 -4
  134. package/lib/chain/validation/attestation.js.map +1 -1
  135. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  136. package/lib/chain/validation/attesterSlashing.js +9 -2
  137. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  138. package/lib/chain/validation/blobSidecar.js +2 -2
  139. package/lib/chain/validation/blobSidecar.js.map +1 -1
  140. package/lib/chain/validation/block.d.ts.map +1 -1
  141. package/lib/chain/validation/block.js +33 -6
  142. package/lib/chain/validation/block.js.map +1 -1
  143. package/lib/chain/validation/dataColumnSidecar.d.ts +2 -2
  144. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  145. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  146. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  147. package/lib/chain/validation/executionPayloadBid.js +1 -2
  148. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  149. package/lib/chain/validation/executionPayloadEnvelope.js +6 -5
  150. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  151. package/lib/chain/validation/payloadAttestationMessage.js +9 -3
  152. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  153. package/lib/chain/validation/proposerSlashing.js +1 -1
  154. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  155. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  156. package/lib/db/beacon.d.ts +3 -1
  157. package/lib/db/beacon.d.ts.map +1 -1
  158. package/lib/db/beacon.js +5 -1
  159. package/lib/db/beacon.js.map +1 -1
  160. package/lib/db/buckets.d.ts +3 -1
  161. package/lib/db/buckets.d.ts.map +1 -1
  162. package/lib/db/buckets.js +2 -0
  163. package/lib/db/buckets.js.map +1 -1
  164. package/lib/db/interface.d.ts +3 -1
  165. package/lib/db/interface.d.ts.map +1 -1
  166. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  167. package/lib/db/repositories/blockArchive.js +1 -2
  168. package/lib/db/repositories/blockArchive.js.map +1 -1
  169. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  170. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  171. package/lib/db/repositories/dataColumnSidecar.d.ts +5 -3
  172. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  173. package/lib/db/repositories/dataColumnSidecar.js +14 -1
  174. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  175. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +5 -3
  176. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  177. package/lib/db/repositories/dataColumnSidecarArchive.js +14 -1
  178. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  179. package/lib/db/repositories/executionPayloadEnvelope.d.ts +19 -0
  180. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -0
  181. package/lib/db/repositories/executionPayloadEnvelope.js +22 -0
  182. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -0
  183. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts +18 -0
  184. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -0
  185. package/lib/db/repositories/executionPayloadEnvelopeArchive.js +28 -0
  186. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -0
  187. package/lib/db/repositories/index.d.ts +2 -0
  188. package/lib/db/repositories/index.d.ts.map +1 -1
  189. package/lib/db/repositories/index.js +2 -0
  190. package/lib/db/repositories/index.js.map +1 -1
  191. package/lib/execution/engine/http.d.ts +1 -0
  192. package/lib/execution/engine/http.d.ts.map +1 -1
  193. package/lib/execution/engine/http.js +3 -0
  194. package/lib/execution/engine/http.js.map +1 -1
  195. package/lib/execution/engine/interface.d.ts +3 -25
  196. package/lib/execution/engine/interface.d.ts.map +1 -1
  197. package/lib/execution/engine/interface.js +2 -20
  198. package/lib/execution/engine/interface.js.map +1 -1
  199. package/lib/metrics/metrics/beacon.d.ts +1 -0
  200. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  201. package/lib/metrics/metrics/beacon.js +5 -0
  202. package/lib/metrics/metrics/beacon.js.map +1 -1
  203. package/lib/metrics/metrics/lodestar.d.ts +8 -0
  204. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  205. package/lib/metrics/metrics/lodestar.js +14 -0
  206. package/lib/metrics/metrics/lodestar.js.map +1 -1
  207. package/lib/metrics/metrics.d.ts.map +1 -1
  208. package/lib/metrics/metrics.js +8 -3
  209. package/lib/metrics/metrics.js.map +1 -1
  210. package/lib/monitoring/service.d.ts +2 -2
  211. package/lib/monitoring/service.d.ts.map +1 -1
  212. package/lib/monitoring/service.js +3 -2
  213. package/lib/monitoring/service.js.map +1 -1
  214. package/lib/network/core/networkCore.d.ts +3 -3
  215. package/lib/network/core/networkCore.d.ts.map +1 -1
  216. package/lib/network/core/networkCore.js.map +1 -1
  217. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  218. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  219. package/lib/network/core/types.d.ts +2 -2
  220. package/lib/network/core/types.d.ts.map +1 -1
  221. package/lib/network/events.d.ts +2 -1
  222. package/lib/network/events.d.ts.map +1 -1
  223. package/lib/network/events.js.map +1 -1
  224. package/lib/network/gossip/encoding.d.ts +3 -3
  225. package/lib/network/gossip/encoding.d.ts.map +1 -1
  226. package/lib/network/gossip/encoding.js.map +1 -1
  227. package/lib/network/gossip/gossipsub.d.ts +13 -4
  228. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  229. package/lib/network/gossip/gossipsub.js +47 -20
  230. package/lib/network/gossip/gossipsub.js.map +1 -1
  231. package/lib/network/gossip/interface.d.ts +6 -6
  232. package/lib/network/gossip/interface.d.ts.map +1 -1
  233. package/lib/network/gossip/scoringParameters.d.ts +1 -1
  234. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  235. package/lib/network/gossip/scoringParameters.js +1 -1
  236. package/lib/network/gossip/scoringParameters.js.map +1 -1
  237. package/lib/network/gossip/topic.d.ts +114 -65
  238. package/lib/network/gossip/topic.d.ts.map +1 -1
  239. package/lib/network/gossip/topic.js +2 -2
  240. package/lib/network/gossip/topic.js.map +1 -1
  241. package/lib/network/interface.d.ts +6 -5
  242. package/lib/network/interface.d.ts.map +1 -1
  243. package/lib/network/libp2p/index.d.ts +1 -1
  244. package/lib/network/libp2p/index.d.ts.map +1 -1
  245. package/lib/network/libp2p/index.js +7 -2
  246. package/lib/network/libp2p/index.js.map +1 -1
  247. package/lib/network/network.d.ts +5 -4
  248. package/lib/network/network.d.ts.map +1 -1
  249. package/lib/network/network.js +10 -1
  250. package/lib/network/network.js.map +1 -1
  251. package/lib/network/options.d.ts.map +1 -1
  252. package/lib/network/options.js +3 -0
  253. package/lib/network/options.js.map +1 -1
  254. package/lib/network/peers/datastore.d.ts +7 -5
  255. package/lib/network/peers/datastore.d.ts.map +1 -1
  256. package/lib/network/peers/datastore.js +10 -10
  257. package/lib/network/peers/datastore.js.map +1 -1
  258. package/lib/network/peers/peerManager.d.ts +3 -0
  259. package/lib/network/peers/peerManager.d.ts.map +1 -1
  260. package/lib/network/peers/peerManager.js +103 -53
  261. package/lib/network/peers/peerManager.js.map +1 -1
  262. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  263. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  264. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  265. package/lib/network/processor/gossipHandlers.js +9 -2
  266. package/lib/network/processor/gossipHandlers.js.map +1 -1
  267. package/lib/network/processor/gossipValidatorFn.js +1 -1
  268. package/lib/network/processor/types.d.ts +1 -1
  269. package/lib/network/processor/types.d.ts.map +1 -1
  270. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  271. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  272. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  273. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  274. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +1 -1
  275. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +7 -1
  276. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  277. package/lib/network/reqresp/score.d.ts.map +1 -1
  278. package/lib/network/reqresp/score.js +0 -1
  279. package/lib/network/reqresp/score.js.map +1 -1
  280. package/lib/network/util.js +2 -2
  281. package/lib/network/util.js.map +1 -1
  282. package/lib/node/nodejs.d.ts +3 -5
  283. package/lib/node/nodejs.d.ts.map +1 -1
  284. package/lib/node/nodejs.js +6 -4
  285. package/lib/node/nodejs.js.map +1 -1
  286. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  287. package/lib/sync/utils/downloadByRange.js +3 -9
  288. package/lib/sync/utils/downloadByRange.js.map +1 -1
  289. package/lib/sync/utils/downloadByRoot.d.ts +1 -1
  290. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  291. package/lib/sync/utils/downloadByRoot.js +4 -4
  292. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  293. package/lib/util/blobs.d.ts +2 -2
  294. package/lib/util/blobs.d.ts.map +1 -1
  295. package/lib/util/blobs.js.map +1 -1
  296. package/lib/util/clock.d.ts +6 -0
  297. package/lib/util/clock.d.ts.map +1 -1
  298. package/lib/util/clock.js +9 -3
  299. package/lib/util/clock.js.map +1 -1
  300. package/lib/util/dataColumns.d.ts +15 -2
  301. package/lib/util/dataColumns.d.ts.map +1 -1
  302. package/lib/util/dataColumns.js +40 -5
  303. package/lib/util/dataColumns.js.map +1 -1
  304. package/lib/util/multifork.d.ts +8 -0
  305. package/lib/util/multifork.d.ts.map +1 -1
  306. package/lib/util/multifork.js +37 -0
  307. package/lib/util/multifork.js.map +1 -1
  308. package/lib/util/serializedCache.d.ts +5 -0
  309. package/lib/util/serializedCache.d.ts.map +1 -1
  310. package/lib/util/serializedCache.js +5 -0
  311. package/lib/util/serializedCache.js.map +1 -1
  312. package/package.json +39 -42
  313. package/src/api/impl/beacon/blocks/index.ts +147 -3
  314. package/src/api/impl/beacon/state/index.ts +8 -8
  315. package/src/api/impl/beacon/state/utils.ts +15 -29
  316. package/src/api/impl/debug/index.ts +9 -5
  317. package/src/api/impl/lightclient/index.ts +19 -2
  318. package/src/api/impl/node/index.ts +22 -1
  319. package/src/api/impl/node/utils.ts +3 -3
  320. package/src/api/impl/validator/index.ts +153 -17
  321. package/src/chain/archiveStore/archiveStore.ts +10 -0
  322. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -11
  323. package/src/chain/archiveStore/historicalState/worker.ts +3 -3
  324. package/src/chain/archiveStore/utils/archivePayloads.ts +15 -0
  325. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  326. package/src/chain/blocks/blockInput/blockInput.ts +68 -3
  327. package/src/chain/blocks/blockInput/types.ts +1 -0
  328. package/src/chain/blocks/importBlock.ts +34 -6
  329. package/src/chain/blocks/index.ts +2 -1
  330. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  331. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  332. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  333. package/src/chain/blocks/writeBlockInputToDb.ts +3 -0
  334. package/src/chain/bls/multithread/index.ts +7 -7
  335. package/src/chain/bls/multithread/jobItem.ts +3 -3
  336. package/src/chain/bls/singleThread.ts +5 -5
  337. package/src/chain/bls/utils.ts +8 -5
  338. package/src/chain/chain.ts +57 -32
  339. package/src/chain/emitter.ts +5 -5
  340. package/src/chain/errors/blockError.ts +4 -1
  341. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  342. package/src/chain/forkChoice/index.ts +39 -21
  343. package/src/chain/interface.ts +4 -11
  344. package/src/chain/lightClient/index.ts +4 -1
  345. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  346. package/src/chain/options.ts +1 -0
  347. package/src/chain/prepareNextSlot.ts +5 -5
  348. package/src/chain/produceBlock/computeNewStateRoot.ts +35 -3
  349. package/src/chain/produceBlock/produceBlockBody.ts +162 -13
  350. package/src/chain/regen/queued.ts +7 -2
  351. package/src/chain/regen/regen.ts +8 -2
  352. package/src/chain/seenCache/seenGossipBlockInput.ts +16 -7
  353. package/src/chain/validation/aggregateAndProof.ts +1 -1
  354. package/src/chain/validation/attestation.ts +7 -4
  355. package/src/chain/validation/attesterSlashing.ts +10 -1
  356. package/src/chain/validation/blobSidecar.ts +2 -2
  357. package/src/chain/validation/block.ts +40 -7
  358. package/src/chain/validation/dataColumnSidecar.ts +3 -6
  359. package/src/chain/validation/executionPayloadBid.ts +1 -2
  360. package/src/chain/validation/executionPayloadEnvelope.ts +6 -5
  361. package/src/chain/validation/payloadAttestationMessage.ts +11 -4
  362. package/src/chain/validation/proposerSlashing.ts +1 -1
  363. package/src/chain/validation/syncCommitteeContributionAndProof.ts +1 -1
  364. package/src/db/beacon.ts +8 -0
  365. package/src/db/buckets.ts +3 -0
  366. package/src/db/interface.ts +5 -0
  367. package/src/db/repositories/blockArchive.ts +1 -2
  368. package/src/db/repositories/dataColumnSidecar.ts +18 -3
  369. package/src/db/repositories/dataColumnSidecarArchive.ts +18 -3
  370. package/src/db/repositories/executionPayloadEnvelope.ts +26 -0
  371. package/src/db/repositories/executionPayloadEnvelopeArchive.ts +32 -0
  372. package/src/db/repositories/index.ts +2 -0
  373. package/src/execution/engine/http.ts +3 -0
  374. package/src/execution/engine/interface.ts +3 -27
  375. package/src/metrics/metrics/beacon.ts +5 -0
  376. package/src/metrics/metrics/lodestar.ts +14 -0
  377. package/src/metrics/metrics.ts +8 -3
  378. package/src/monitoring/service.ts +3 -2
  379. package/src/network/core/networkCore.ts +3 -3
  380. package/src/network/core/networkCoreWorkerHandler.ts +3 -3
  381. package/src/network/core/types.ts +2 -2
  382. package/src/network/events.ts +2 -1
  383. package/src/network/gossip/encoding.ts +3 -3
  384. package/src/network/gossip/gossipsub.ts +86 -25
  385. package/src/network/gossip/interface.ts +6 -6
  386. package/src/network/gossip/scoringParameters.ts +4 -4
  387. package/src/network/gossip/topic.ts +2 -1
  388. package/src/network/interface.ts +7 -4
  389. package/src/network/libp2p/index.ts +8 -3
  390. package/src/network/network.ts +24 -6
  391. package/src/network/options.ts +3 -0
  392. package/src/network/peers/datastore.ts +13 -10
  393. package/src/network/peers/peerManager.ts +118 -54
  394. package/src/network/peers/utils/prioritizePeers.ts +3 -3
  395. package/src/network/processor/gossipHandlers.ts +19 -4
  396. package/src/network/processor/gossipValidatorFn.ts +1 -1
  397. package/src/network/processor/types.ts +1 -1
  398. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  399. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +1 -1
  400. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +6 -1
  401. package/src/network/reqresp/score.ts +0 -1
  402. package/src/network/util.ts +2 -2
  403. package/src/node/nodejs.ts +8 -9
  404. package/src/sync/utils/downloadByRange.ts +3 -15
  405. package/src/sync/utils/downloadByRoot.ts +5 -11
  406. package/src/util/blobs.ts +3 -3
  407. package/src/util/clock.ts +9 -4
  408. package/src/util/dataColumns.ts +54 -5
  409. package/src/util/multifork.ts +45 -0
  410. package/src/util/serializedCache.ts +5 -0
  411. package/src/util/workerEvents.ts +1 -1
@@ -4,21 +4,26 @@ import {ChainForkConfig} from "@lodestar/config";
4
4
  import {
5
5
  ForkAll,
6
6
  ForkName,
7
+ ForkPostDeneb,
7
8
  ForkPostFulu,
8
9
  ForkPreGloas,
9
10
  KZG_COMMITMENTS_GINDEX,
10
11
  NUMBER_OF_COLUMNS,
12
+ isForkPostGloas,
11
13
  } from "@lodestar/params";
12
14
  import {signedBlockToSignedHeader} from "@lodestar/state-transition";
13
15
  import {
14
16
  BeaconBlockBody,
15
17
  ColumnIndex,
16
18
  CustodyIndex,
19
+ Root,
17
20
  SSZTypesFor,
18
21
  SignedBeaconBlock,
19
22
  SignedBeaconBlockHeader,
23
+ Slot,
20
24
  deneb,
21
25
  fulu,
26
+ gloas,
22
27
  ssz,
23
28
  } from "@lodestar/types";
24
29
  import {bytesToBigInt} from "@lodestar/utils";
@@ -261,6 +266,20 @@ export async function getCellsAndProofs(
261
266
  return blobsAndProofs;
262
267
  }
263
268
 
269
+ /**
270
+ * Get blob KZG commitments from a signed block, handling the different locations
271
+ * in pre-Gloas (directly in block body) vs post-Gloas (in execution payload bid).
272
+ */
273
+ export function getBlobKzgCommitments(
274
+ fork: ForkName,
275
+ signedBlock: SignedBeaconBlock<ForkPostDeneb>
276
+ ): deneb.KZGCommitment[] {
277
+ if (isForkPostGloas(fork)) {
278
+ return (signedBlock as gloas.SignedBeaconBlock).message.body.signedExecutionPayloadBid.message.blobKzgCommitments;
279
+ }
280
+ return (signedBlock.message.body as BeaconBlockBody<ForkPostFulu & ForkPreGloas>).blobKzgCommitments;
281
+ }
282
+
264
283
  /**
265
284
  * Given a signed block header and the commitments, inclusion proof, cells/proofs associated with
266
285
  * each blob in the block, assemble the sidecars which can be distributed to peers.
@@ -310,16 +329,13 @@ export function getDataColumnSidecarsFromBlock(
310
329
  signedBlock: SignedBeaconBlock<ForkPostFulu>,
311
330
  cellsAndKzgProofs: {cells: Uint8Array[]; proofs: Uint8Array[]}[]
312
331
  ): fulu.DataColumnSidecars {
313
- // TODO GLOAS: Need to get blobKzgCommitments from somewhere else
314
- const blobKzgCommitments = (signedBlock.message.body as BeaconBlockBody<ForkPostFulu & ForkPreGloas>)
315
- .blobKzgCommitments;
332
+ const fork = config.getForkName(signedBlock.message.slot);
333
+ const blobKzgCommitments = getBlobKzgCommitments(fork, signedBlock);
316
334
 
317
335
  // No need to create data column sidecars if there are no blobs
318
336
  if (blobKzgCommitments.length === 0) {
319
337
  return [];
320
338
  }
321
-
322
- const fork = config.getForkName(signedBlock.message.slot);
323
339
  const signedBlockHeader = signedBlockToSignedHeader(config, signedBlock);
324
340
 
325
341
  const kzgCommitmentsInclusionProof = computePostFuluKzgCommitmentsInclusionProof(fork, signedBlock.message.body);
@@ -346,6 +362,39 @@ export function getDataColumnSidecarsFromColumnSidecar(
346
362
  );
347
363
  }
348
364
 
365
+ /**
366
+ * In Gloas, data column sidecars have a simplified structure with `slot` and `beaconBlockRoot`
367
+ * instead of `signedBlockHeader`, `kzgCommitments`, and `kzgCommitmentsInclusionProof`.
368
+ */
369
+ export function getDataColumnSidecarsForGloas(
370
+ slot: Slot,
371
+ beaconBlockRoot: Root,
372
+ cellsAndKzgProofs: {cells: Uint8Array[]; proofs: Uint8Array[]}[]
373
+ ): gloas.DataColumnSidecars {
374
+ // No need to create data column sidecars if there are no blobs
375
+ if (cellsAndKzgProofs.length === 0) {
376
+ return [];
377
+ }
378
+
379
+ const sidecars: gloas.DataColumnSidecars = [];
380
+ for (let columnIndex = 0; columnIndex < NUMBER_OF_COLUMNS; columnIndex++) {
381
+ const column: Uint8Array[] = [];
382
+ const kzgProofs: Uint8Array[] = [];
383
+ for (const {cells, proofs} of cellsAndKzgProofs) {
384
+ column.push(cells[columnIndex]);
385
+ kzgProofs.push(proofs[columnIndex]);
386
+ }
387
+ sidecars.push({
388
+ index: columnIndex,
389
+ column,
390
+ kzgProofs,
391
+ slot,
392
+ beaconBlockRoot,
393
+ });
394
+ }
395
+ return sidecars;
396
+ }
397
+
349
398
  /**
350
399
  * If we receive more than half of NUMBER_OF_COLUMNS (64) we should recover all remaining columns
351
400
  */
@@ -9,6 +9,11 @@ import {getSlotFromSignedBeaconBlockSerialized} from "./sszBytes.js";
9
9
  */
10
10
  const SLOT_BYTE_COUNT = 8;
11
11
 
12
+ /**
13
+ * SSZ offset uint32
14
+ */
15
+ const OFFSET_BYTE_COUNT = 4;
16
+
12
17
  /**
13
18
  * 8 + 32 = 40
14
19
  * ```
@@ -67,3 +72,43 @@ export function getLightClientHeaderTypeFromBytes(
67
72
  );
68
73
  return config.getPostAltairForkTypes(slot).LightClientHeader;
69
74
  }
75
+
76
+ /**
77
+ * Position of first offset in DataColumnSidecar (after index field)
78
+ *
79
+ * Fulu DataColumnSidecar (6 fields):
80
+ * index: uint64 [fixed - 8 bytes]
81
+ * column: List [variable - 4-byte offset]
82
+ * kzgCommitments: List [variable - 4-byte offset]
83
+ * kzgProofs: List [variable - 4-byte offset]
84
+ * signedBlockHeader: Container [fixed - 208 bytes]
85
+ * kzgCommitmentsInclusionProof: Vector[Bytes32, 4] [fixed - 128 bytes]
86
+ * => First offset value = 8 + 4 + 4 + 4 + 208 + 128 = 356
87
+ *
88
+ * Gloas DataColumnSidecar (5 fields):
89
+ * index: uint64 [fixed - 8 bytes]
90
+ * column: List [variable - 4-byte offset]
91
+ * kzgProofs: List [variable - 4-byte offset]
92
+ * slot: uint64 [fixed - 8 bytes]
93
+ * beaconBlockRoot: Bytes32 [fixed - 32 bytes]
94
+ * => First offset value = 8 + 4 + 4 + 8 + 32 = 56
95
+ */
96
+ const FIRST_OFFSET_POSITION_IN_DATA_COLUMN_SIDECAR = 8;
97
+ const GLOAS_DATA_COLUMN_SIDECAR_FIRST_OFFSET = 56;
98
+
99
+ /**
100
+ * Determines if DataColumnSidecar bytes are from Gloas fork by checking the SSZ offset structure.
101
+ *
102
+ * The first offset (bytes 8-12) indicates where variable-size data begins:
103
+ * - Gloas: 56 (small fixed section)
104
+ * - Fulu: 356
105
+ */
106
+ export function isGloasDataColumnSidecarBytes(bytes: Uint8Array): boolean {
107
+ const firstOffset = bytesToInt(
108
+ bytes.subarray(
109
+ FIRST_OFFSET_POSITION_IN_DATA_COLUMN_SIDECAR,
110
+ FIRST_OFFSET_POSITION_IN_DATA_COLUMN_SIDECAR + OFFSET_BYTE_COUNT
111
+ )
112
+ );
113
+ return firstOffset === GLOAS_DATA_COLUMN_SIDECAR_FIRST_OFFSET;
114
+ }
@@ -14,6 +14,11 @@ export class SerializedCache {
14
14
  this.map.set(obj, serialized);
15
15
  }
16
16
 
17
+ /**
18
+ * Replace the internal WeakMap to force GC of all cached entries.
19
+ * Must only be called after all DB writes that may read from this cache have completed,
20
+ * otherwise cached serialized bytes will be unavailable and data will be re-serialized unnecessarily.
21
+ */
17
22
  clear(): void {
18
23
  this.map = new WeakMap();
19
24
  }
@@ -1,5 +1,5 @@
1
1
  import {MessagePort, Worker} from "node:worker_threads";
2
- import {Message} from "@libp2p/interface";
2
+ import type {Message} from "@libp2p/gossipsub";
3
3
  import {Thread} from "@chainsafe/threads";
4
4
  import {Logger} from "@lodestar/logger";
5
5
  import {sleep} from "@lodestar/utils";