@lodestar/beacon-node 1.41.0-dev.983b1a457b → 1.41.0-dev.9939b12b53

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 (891) hide show
  1. package/lib/api/impl/api.js.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.d.ts +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/blocks/index.js +132 -4
  5. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  6. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  7. package/lib/api/impl/beacon/index.js.map +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts +1 -1
  9. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts +1 -1
  12. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -1
  13. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  16. package/lib/api/impl/beacon/state/index.js +8 -8
  17. package/lib/api/impl/beacon/state/index.js.map +1 -1
  18. package/lib/api/impl/beacon/state/utils.d.ts +3 -4
  19. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  20. package/lib/api/impl/beacon/state/utils.js +5 -24
  21. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  22. package/lib/api/impl/config/constants.js.map +1 -1
  23. package/lib/api/impl/config/index.js.map +1 -1
  24. package/lib/api/impl/debug/index.d.ts +1 -1
  25. package/lib/api/impl/debug/index.d.ts.map +1 -1
  26. package/lib/api/impl/debug/index.js +6 -2
  27. package/lib/api/impl/debug/index.js.map +1 -1
  28. package/lib/api/impl/errors.d.ts.map +1 -1
  29. package/lib/api/impl/errors.js.map +1 -1
  30. package/lib/api/impl/events/index.d.ts +1 -1
  31. package/lib/api/impl/events/index.d.ts.map +1 -1
  32. package/lib/api/impl/events/index.js.map +1 -1
  33. package/lib/api/impl/lightclient/index.d.ts +1 -1
  34. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  35. package/lib/api/impl/lightclient/index.js.map +1 -1
  36. package/lib/api/impl/lodestar/index.d.ts +1 -1
  37. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  38. package/lib/api/impl/lodestar/index.js.map +1 -1
  39. package/lib/api/impl/node/index.js.map +1 -1
  40. package/lib/api/impl/node/utils.d.ts +1 -1
  41. package/lib/api/impl/node/utils.d.ts.map +1 -1
  42. package/lib/api/impl/node/utils.js.map +1 -1
  43. package/lib/api/impl/proof/index.js.map +1 -1
  44. package/lib/api/impl/utils.js.map +1 -1
  45. package/lib/api/impl/validator/index.d.ts.map +1 -1
  46. package/lib/api/impl/validator/index.js +134 -18
  47. package/lib/api/impl/validator/index.js.map +1 -1
  48. package/lib/api/impl/validator/utils.d.ts +1 -1
  49. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  50. package/lib/api/impl/validator/utils.js.map +1 -1
  51. package/lib/api/rest/activeSockets.d.ts.map +1 -1
  52. package/lib/api/rest/activeSockets.js.map +1 -1
  53. package/lib/api/rest/base.d.ts.map +1 -1
  54. package/lib/api/rest/base.js.map +1 -1
  55. package/lib/api/rest/index.d.ts.map +1 -1
  56. package/lib/api/rest/index.js.map +1 -1
  57. package/lib/api/rest/swaggerUI.js.map +1 -1
  58. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -1
  59. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  60. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  61. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  62. package/lib/chain/GetBlobsTracker.js.map +1 -1
  63. package/lib/chain/archiveStore/archiveStore.d.ts +1 -0
  64. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  65. package/lib/chain/archiveStore/archiveStore.js +11 -1
  66. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  67. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +5 -6
  68. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  69. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +9 -10
  70. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  71. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  72. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  73. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  74. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  75. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  76. package/lib/chain/archiveStore/historicalState/worker.js +3 -3
  77. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  78. package/lib/chain/archiveStore/interface.js +2 -1
  79. package/lib/chain/archiveStore/interface.js.map +1 -1
  80. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +1 -1
  81. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  82. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -1
  83. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  84. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  85. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  86. package/lib/chain/archiveStore/utils/archiveBlocks.js +1 -1
  87. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  88. package/lib/chain/archiveStore/utils/archivePayloads.d.ts +7 -0
  89. package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +1 -0
  90. package/lib/chain/archiveStore/utils/archivePayloads.js +10 -0
  91. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -0
  92. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  93. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  94. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  95. package/lib/chain/balancesCache.d.ts.map +1 -1
  96. package/lib/chain/balancesCache.js.map +1 -1
  97. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  98. package/lib/chain/beaconProposerCache.js.map +1 -1
  99. package/lib/chain/blocks/blockInput/blockInput.d.ts +25 -2
  100. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  101. package/lib/chain/blocks/blockInput/blockInput.js +71 -0
  102. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  103. package/lib/chain/blocks/blockInput/errors.js +2 -1
  104. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  105. package/lib/chain/blocks/blockInput/types.d.ts +18 -1
  106. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  107. package/lib/chain/blocks/blockInput/types.js +5 -2
  108. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  109. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  110. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  111. package/lib/chain/blocks/importBlock.js +28 -5
  112. package/lib/chain/blocks/importBlock.js.map +1 -1
  113. package/lib/chain/blocks/index.d.ts.map +1 -1
  114. package/lib/chain/blocks/index.js.map +1 -1
  115. package/lib/chain/blocks/types.js +6 -3
  116. package/lib/chain/blocks/types.js.map +1 -1
  117. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  118. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  119. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  120. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  121. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  122. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  123. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  124. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  125. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  126. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  127. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  128. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  129. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  130. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  131. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  132. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  133. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  134. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  135. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  136. package/lib/chain/bls/maybeBatch.js.map +1 -1
  137. package/lib/chain/bls/multithread/index.d.ts +3 -3
  138. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  139. package/lib/chain/bls/multithread/index.js +5 -5
  140. package/lib/chain/bls/multithread/index.js.map +1 -1
  141. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  142. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  143. package/lib/chain/bls/multithread/jobItem.js +4 -3
  144. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  145. package/lib/chain/bls/multithread/types.js +2 -1
  146. package/lib/chain/bls/multithread/types.js.map +1 -1
  147. package/lib/chain/bls/multithread/utils.js.map +1 -1
  148. package/lib/chain/bls/multithread/worker.js.map +1 -1
  149. package/lib/chain/bls/singleThread.d.ts +4 -4
  150. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  151. package/lib/chain/bls/singleThread.js +4 -4
  152. package/lib/chain/bls/singleThread.js.map +1 -1
  153. package/lib/chain/bls/utils.d.ts +2 -2
  154. package/lib/chain/bls/utils.d.ts.map +1 -1
  155. package/lib/chain/bls/utils.js +7 -4
  156. package/lib/chain/bls/utils.js.map +1 -1
  157. package/lib/chain/chain.d.ts +9 -12
  158. package/lib/chain/chain.d.ts.map +1 -1
  159. package/lib/chain/chain.js +49 -30
  160. package/lib/chain/chain.js.map +1 -1
  161. package/lib/chain/emitter.d.ts +6 -8
  162. package/lib/chain/emitter.d.ts.map +1 -1
  163. package/lib/chain/emitter.js +2 -1
  164. package/lib/chain/emitter.js.map +1 -1
  165. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  166. package/lib/chain/errors/attestationError.js +2 -1
  167. package/lib/chain/errors/attestationError.js.map +1 -1
  168. package/lib/chain/errors/attesterSlashingError.js +2 -1
  169. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  170. package/lib/chain/errors/blobSidecarError.js +2 -1
  171. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  172. package/lib/chain/errors/blockError.d.ts.map +1 -1
  173. package/lib/chain/errors/blockError.js +2 -1
  174. package/lib/chain/errors/blockError.js.map +1 -1
  175. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  176. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  177. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  178. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  179. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  180. package/lib/chain/errors/executionPayloadBid.js +2 -1
  181. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  182. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  183. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  184. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  185. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  186. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  187. package/lib/chain/errors/gossipValidation.js +4 -2
  188. package/lib/chain/errors/gossipValidation.js.map +1 -1
  189. package/lib/chain/errors/lightClientError.js +4 -2
  190. package/lib/chain/errors/lightClientError.js.map +1 -1
  191. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  192. package/lib/chain/errors/payloadAttestation.js +2 -1
  193. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  194. package/lib/chain/errors/proposerSlashingError.js +2 -1
  195. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  196. package/lib/chain/errors/syncCommitteeError.js +2 -1
  197. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  198. package/lib/chain/errors/voluntaryExitError.js +2 -1
  199. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  200. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  201. package/lib/chain/forkChoice/index.js +32 -25
  202. package/lib/chain/forkChoice/index.js.map +1 -1
  203. package/lib/chain/initState.d.ts +1 -1
  204. package/lib/chain/initState.d.ts.map +1 -1
  205. package/lib/chain/initState.js.map +1 -1
  206. package/lib/chain/interface.d.ts +4 -6
  207. package/lib/chain/interface.d.ts.map +1 -1
  208. package/lib/chain/interface.js +2 -1
  209. package/lib/chain/interface.js.map +1 -1
  210. package/lib/chain/lightClient/index.d.ts +0 -29
  211. package/lib/chain/lightClient/index.d.ts.map +1 -1
  212. package/lib/chain/lightClient/index.js.map +1 -1
  213. package/lib/chain/lightClient/proofs.js.map +1 -1
  214. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  215. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  216. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  217. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  218. package/lib/chain/opPools/attestationPool.js.map +1 -1
  219. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  220. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  221. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  222. package/lib/chain/opPools/opPool.js.map +1 -1
  223. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  224. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  225. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  226. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  227. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  228. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  229. package/lib/chain/opPools/types.js +4 -2
  230. package/lib/chain/opPools/types.js.map +1 -1
  231. package/lib/chain/opPools/utils.js.map +1 -1
  232. package/lib/chain/options.d.ts.map +1 -1
  233. package/lib/chain/options.js.map +1 -1
  234. package/lib/chain/prepareNextSlot.d.ts +1 -2
  235. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  236. package/lib/chain/prepareNextSlot.js +3 -3
  237. package/lib/chain/prepareNextSlot.js.map +1 -1
  238. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +9 -2
  239. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  240. package/lib/chain/produceBlock/computeNewStateRoot.js +25 -2
  241. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  242. package/lib/chain/produceBlock/produceBlockBody.d.ts +23 -8
  243. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  244. package/lib/chain/produceBlock/produceBlockBody.js +124 -14
  245. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  246. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  247. package/lib/chain/regen/errors.d.ts.map +1 -1
  248. package/lib/chain/regen/errors.js +2 -1
  249. package/lib/chain/regen/errors.js.map +1 -1
  250. package/lib/chain/regen/interface.js +4 -2
  251. package/lib/chain/regen/interface.js.map +1 -1
  252. package/lib/chain/regen/queued.d.ts.map +1 -1
  253. package/lib/chain/regen/queued.js +4 -1
  254. package/lib/chain/regen/queued.js.map +1 -1
  255. package/lib/chain/regen/regen.d.ts.map +1 -1
  256. package/lib/chain/regen/regen.js +6 -2
  257. package/lib/chain/regen/regen.js.map +1 -1
  258. package/lib/chain/reprocess.d.ts.map +1 -1
  259. package/lib/chain/reprocess.js +2 -1
  260. package/lib/chain/reprocess.js.map +1 -1
  261. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  262. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  263. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  264. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  265. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  266. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  267. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  268. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  269. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  270. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  271. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  272. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  273. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  274. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  275. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  276. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  277. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  278. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  279. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  280. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  281. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  282. package/lib/chain/seenCache/seenGossipBlockInput.js +38 -16
  283. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  284. package/lib/chain/serializeState.js +1 -0
  285. package/lib/chain/serializeState.js.map +1 -1
  286. package/lib/chain/shufflingCache.d.ts.map +1 -1
  287. package/lib/chain/shufflingCache.js +2 -1
  288. package/lib/chain/shufflingCache.js.map +1 -1
  289. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  290. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  291. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  292. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  293. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  294. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  295. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  296. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  297. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -41
  298. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  299. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  300. package/lib/chain/stateCache/types.js +2 -1
  301. package/lib/chain/stateCache/types.js.map +1 -1
  302. package/lib/chain/validation/aggregateAndProof.js +1 -1
  303. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  304. package/lib/chain/validation/attestation.d.ts.map +1 -1
  305. package/lib/chain/validation/attestation.js +14 -7
  306. package/lib/chain/validation/attestation.js.map +1 -1
  307. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  308. package/lib/chain/validation/attesterSlashing.js +9 -2
  309. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  310. package/lib/chain/validation/blobSidecar.js +2 -2
  311. package/lib/chain/validation/blobSidecar.js.map +1 -1
  312. package/lib/chain/validation/block.d.ts.map +1 -1
  313. package/lib/chain/validation/block.js +6 -3
  314. package/lib/chain/validation/block.js.map +1 -1
  315. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  316. package/lib/chain/validation/dataColumnSidecar.d.ts +4 -3
  317. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  318. package/lib/chain/validation/dataColumnSidecar.js +125 -108
  319. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  320. package/lib/chain/validation/executionPayloadBid.js +1 -2
  321. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  322. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  323. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  324. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  325. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  326. package/lib/chain/validation/payloadAttestationMessage.js +9 -3
  327. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  328. package/lib/chain/validation/proposerSlashing.js +1 -1
  329. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  330. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  331. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  332. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  333. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  334. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  335. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  336. package/lib/chain/validation/syncCommittee.js.map +1 -1
  337. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  338. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  339. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  340. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  341. package/lib/chain/validatorMonitor.js +2 -1
  342. package/lib/chain/validatorMonitor.js.map +1 -1
  343. package/lib/constants/network.js +4 -2
  344. package/lib/constants/network.js.map +1 -1
  345. package/lib/db/beacon.d.ts +3 -1
  346. package/lib/db/beacon.d.ts.map +1 -1
  347. package/lib/db/beacon.js +5 -1
  348. package/lib/db/beacon.js.map +1 -1
  349. package/lib/db/buckets.d.ts +24 -22
  350. package/lib/db/buckets.d.ts.map +1 -1
  351. package/lib/db/buckets.js +4 -1
  352. package/lib/db/buckets.js.map +1 -1
  353. package/lib/db/index.d.ts +1 -0
  354. package/lib/db/index.d.ts.map +1 -1
  355. package/lib/db/index.js +1 -0
  356. package/lib/db/index.js.map +1 -1
  357. package/lib/db/interface.d.ts +3 -1
  358. package/lib/db/interface.d.ts.map +1 -1
  359. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  360. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  361. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  362. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  363. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  364. package/lib/db/repositories/blobSidecars.js.map +1 -1
  365. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  366. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  367. package/lib/db/repositories/block.d.ts.map +1 -1
  368. package/lib/db/repositories/block.js.map +1 -1
  369. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  370. package/lib/db/repositories/blockArchive.js +1 -2
  371. package/lib/db/repositories/blockArchive.js.map +1 -1
  372. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  373. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  374. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  375. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  376. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  377. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  378. package/lib/db/repositories/checkpointState.js.map +1 -1
  379. package/lib/db/repositories/dataColumnSidecar.d.ts +5 -3
  380. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  381. package/lib/db/repositories/dataColumnSidecar.js +14 -1
  382. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  383. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +5 -3
  384. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  385. package/lib/db/repositories/dataColumnSidecarArchive.js +14 -1
  386. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  387. package/lib/db/repositories/executionPayloadEnvelope.d.ts +19 -0
  388. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -0
  389. package/lib/db/repositories/executionPayloadEnvelope.js +22 -0
  390. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -0
  391. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts +18 -0
  392. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -0
  393. package/lib/db/repositories/executionPayloadEnvelopeArchive.js +28 -0
  394. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -0
  395. package/lib/db/repositories/index.d.ts +2 -0
  396. package/lib/db/repositories/index.d.ts.map +1 -1
  397. package/lib/db/repositories/index.js +2 -0
  398. package/lib/db/repositories/index.js.map +1 -1
  399. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  400. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  401. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  402. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  403. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  404. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  405. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  406. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  407. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  408. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  409. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  410. package/lib/db/repositories/stateArchive.js.map +1 -1
  411. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  412. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  413. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  414. package/lib/execution/builder/cache.d.ts.map +1 -1
  415. package/lib/execution/builder/cache.js.map +1 -1
  416. package/lib/execution/builder/http.d.ts.map +1 -1
  417. package/lib/execution/builder/http.js +2 -1
  418. package/lib/execution/builder/http.js.map +1 -1
  419. package/lib/execution/builder/index.js.map +1 -1
  420. package/lib/execution/builder/utils.js.map +1 -1
  421. package/lib/execution/engine/disabled.d.ts.map +1 -1
  422. package/lib/execution/engine/disabled.js.map +1 -1
  423. package/lib/execution/engine/http.d.ts +1 -0
  424. package/lib/execution/engine/http.d.ts.map +1 -1
  425. package/lib/execution/engine/http.js +3 -0
  426. package/lib/execution/engine/http.js.map +1 -1
  427. package/lib/execution/engine/index.js.map +1 -1
  428. package/lib/execution/engine/interface.js +4 -2
  429. package/lib/execution/engine/interface.js.map +1 -1
  430. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  431. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  432. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  433. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  434. package/lib/execution/engine/jwt.js.map +1 -1
  435. package/lib/execution/engine/mock.d.ts.map +1 -1
  436. package/lib/execution/engine/mock.js.map +1 -1
  437. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  438. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  439. package/lib/execution/engine/types.js.map +1 -1
  440. package/lib/execution/engine/utils.d.ts +1 -1
  441. package/lib/execution/engine/utils.d.ts.map +1 -1
  442. package/lib/execution/engine/utils.js.map +1 -1
  443. package/lib/metrics/metrics/beacon.d.ts +3 -1
  444. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  445. package/lib/metrics/metrics/beacon.js +14 -3
  446. package/lib/metrics/metrics/beacon.js.map +1 -1
  447. package/lib/metrics/metrics/lodestar.d.ts +21 -11
  448. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  449. package/lib/metrics/metrics/lodestar.js +48 -24
  450. package/lib/metrics/metrics/lodestar.js.map +1 -1
  451. package/lib/metrics/metrics.js.map +1 -1
  452. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  453. package/lib/metrics/server/http.d.ts +1 -1
  454. package/lib/metrics/server/http.d.ts.map +1 -1
  455. package/lib/metrics/server/http.js.map +1 -1
  456. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  457. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  458. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  459. package/lib/metrics/utils/gauge.js.map +1 -1
  460. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  461. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  462. package/lib/monitoring/clientStats.js.map +1 -1
  463. package/lib/monitoring/properties.d.ts.map +1 -1
  464. package/lib/monitoring/properties.js.map +1 -1
  465. package/lib/monitoring/service.d.ts +2 -2
  466. package/lib/monitoring/service.d.ts.map +1 -1
  467. package/lib/monitoring/service.js +3 -2
  468. package/lib/monitoring/service.js.map +1 -1
  469. package/lib/monitoring/system.d.ts.map +1 -1
  470. package/lib/monitoring/system.js.map +1 -1
  471. package/lib/monitoring/types.js +4 -2
  472. package/lib/monitoring/types.js.map +1 -1
  473. package/lib/network/core/events.d.ts +1 -3
  474. package/lib/network/core/events.d.ts.map +1 -1
  475. package/lib/network/core/events.js +4 -2
  476. package/lib/network/core/events.js.map +1 -1
  477. package/lib/network/core/metrics.d.ts +6 -7
  478. package/lib/network/core/metrics.d.ts.map +1 -1
  479. package/lib/network/core/metrics.js.map +1 -1
  480. package/lib/network/core/networkCore.d.ts +4 -4
  481. package/lib/network/core/networkCore.d.ts.map +1 -1
  482. package/lib/network/core/networkCore.js.map +1 -1
  483. package/lib/network/core/networkCoreWorker.js.map +1 -1
  484. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  485. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  486. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  487. package/lib/network/core/types.d.ts +2 -2
  488. package/lib/network/core/types.d.ts.map +1 -1
  489. package/lib/network/discv5/index.d.ts +1 -3
  490. package/lib/network/discv5/index.d.ts.map +1 -1
  491. package/lib/network/discv5/index.js.map +1 -1
  492. package/lib/network/discv5/utils.d.ts +1 -1
  493. package/lib/network/discv5/utils.d.ts.map +1 -1
  494. package/lib/network/discv5/utils.js +7 -5
  495. package/lib/network/discv5/utils.js.map +1 -1
  496. package/lib/network/discv5/worker.js.map +1 -1
  497. package/lib/network/events.d.ts +3 -4
  498. package/lib/network/events.d.ts.map +1 -1
  499. package/lib/network/events.js +4 -2
  500. package/lib/network/events.js.map +1 -1
  501. package/lib/network/forks.js.map +1 -1
  502. package/lib/network/gossip/encoding.d.ts +3 -3
  503. package/lib/network/gossip/encoding.d.ts.map +1 -1
  504. package/lib/network/gossip/encoding.js.map +1 -1
  505. package/lib/network/gossip/errors.d.ts.map +1 -1
  506. package/lib/network/gossip/errors.js.map +1 -1
  507. package/lib/network/gossip/gossipsub.d.ts +13 -4
  508. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  509. package/lib/network/gossip/gossipsub.js +56 -26
  510. package/lib/network/gossip/gossipsub.js.map +1 -1
  511. package/lib/network/gossip/interface.d.ts +6 -6
  512. package/lib/network/gossip/interface.d.ts.map +1 -1
  513. package/lib/network/gossip/interface.js +4 -2
  514. package/lib/network/gossip/interface.js.map +1 -1
  515. package/lib/network/gossip/metrics.d.ts +12 -14
  516. package/lib/network/gossip/metrics.d.ts.map +1 -1
  517. package/lib/network/gossip/metrics.js.map +1 -1
  518. package/lib/network/gossip/scoringParameters.d.ts +2 -2
  519. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  520. package/lib/network/gossip/scoringParameters.js +1 -1
  521. package/lib/network/gossip/scoringParameters.js.map +1 -1
  522. package/lib/network/gossip/topic.d.ts +3166 -3169
  523. package/lib/network/gossip/topic.d.ts.map +1 -1
  524. package/lib/network/gossip/topic.js +2 -2
  525. package/lib/network/gossip/topic.js.map +1 -1
  526. package/lib/network/interface.d.ts +6 -5
  527. package/lib/network/interface.d.ts.map +1 -1
  528. package/lib/network/libp2p/error.js +2 -1
  529. package/lib/network/libp2p/error.js.map +1 -1
  530. package/lib/network/libp2p/index.d.ts +2 -2
  531. package/lib/network/libp2p/index.d.ts.map +1 -1
  532. package/lib/network/libp2p/index.js +42 -19
  533. package/lib/network/libp2p/index.js.map +1 -1
  534. package/lib/network/metadata.d.ts +1 -0
  535. package/lib/network/metadata.d.ts.map +1 -1
  536. package/lib/network/metadata.js +5 -2
  537. package/lib/network/metadata.js.map +1 -1
  538. package/lib/network/network.d.ts +6 -5
  539. package/lib/network/network.d.ts.map +1 -1
  540. package/lib/network/network.js +11 -2
  541. package/lib/network/network.js.map +1 -1
  542. package/lib/network/options.d.ts +2 -0
  543. package/lib/network/options.d.ts.map +1 -1
  544. package/lib/network/options.js +6 -0
  545. package/lib/network/options.js.map +1 -1
  546. package/lib/network/peers/client.js +2 -1
  547. package/lib/network/peers/client.js.map +1 -1
  548. package/lib/network/peers/datastore.d.ts +7 -8
  549. package/lib/network/peers/datastore.d.ts.map +1 -1
  550. package/lib/network/peers/datastore.js +10 -10
  551. package/lib/network/peers/datastore.js.map +1 -1
  552. package/lib/network/peers/discover.d.ts +2 -7
  553. package/lib/network/peers/discover.d.ts.map +1 -1
  554. package/lib/network/peers/discover.js +45 -12
  555. package/lib/network/peers/discover.js.map +1 -1
  556. package/lib/network/peers/peerManager.d.ts +3 -1
  557. package/lib/network/peers/peerManager.d.ts.map +1 -1
  558. package/lib/network/peers/peerManager.js +103 -53
  559. package/lib/network/peers/peerManager.js.map +1 -1
  560. package/lib/network/peers/peersData.d.ts.map +1 -1
  561. package/lib/network/peers/peersData.js +2 -1
  562. package/lib/network/peers/peersData.js.map +1 -1
  563. package/lib/network/peers/score/interface.js +4 -2
  564. package/lib/network/peers/score/interface.js.map +1 -1
  565. package/lib/network/peers/score/score.d.ts.map +1 -1
  566. package/lib/network/peers/score/score.js.map +1 -1
  567. package/lib/network/peers/score/store.d.ts.map +1 -1
  568. package/lib/network/peers/score/store.js.map +1 -1
  569. package/lib/network/peers/score/utils.js.map +1 -1
  570. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  571. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  572. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  573. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  574. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  575. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  576. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  577. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  578. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  579. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  580. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  581. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  582. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  583. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  584. package/lib/network/processor/gossipHandlers.js +9 -2
  585. package/lib/network/processor/gossipHandlers.js.map +1 -1
  586. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  587. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  588. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  589. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  590. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  591. package/lib/network/processor/gossipQueues/types.js +4 -2
  592. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  593. package/lib/network/processor/gossipValidatorFn.js +1 -1
  594. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  595. package/lib/network/processor/index.d.ts.map +1 -1
  596. package/lib/network/processor/index.js +4 -2
  597. package/lib/network/processor/index.js.map +1 -1
  598. package/lib/network/processor/types.d.ts +1 -1
  599. package/lib/network/processor/types.d.ts.map +1 -1
  600. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  601. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  602. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  603. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  604. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  605. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  606. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  607. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  608. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  609. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  610. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  611. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  612. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  613. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  614. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  615. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  616. package/lib/network/reqresp/handlers/index.js.map +1 -1
  617. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  618. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  619. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  620. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  621. package/lib/network/reqresp/interface.js +2 -1
  622. package/lib/network/reqresp/interface.js.map +1 -1
  623. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  624. package/lib/network/reqresp/protocols.js.map +1 -1
  625. package/lib/network/reqresp/rateLimit.js.map +1 -1
  626. package/lib/network/reqresp/score.d.ts.map +1 -1
  627. package/lib/network/reqresp/score.js +0 -1
  628. package/lib/network/reqresp/score.js.map +1 -1
  629. package/lib/network/reqresp/types.js +4 -2
  630. package/lib/network/reqresp/types.js.map +1 -1
  631. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  632. package/lib/network/reqresp/utils/collect.js.map +1 -1
  633. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  634. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  635. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  636. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  637. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  638. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  639. package/lib/network/statusCache.d.ts.map +1 -1
  640. package/lib/network/statusCache.js.map +1 -1
  641. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  642. package/lib/network/subnets/attnetsService.js +2 -1
  643. package/lib/network/subnets/attnetsService.js.map +1 -1
  644. package/lib/network/subnets/interface.js.map +1 -1
  645. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  646. package/lib/network/subnets/syncnetsService.js.map +1 -1
  647. package/lib/network/subnets/util.js.map +1 -1
  648. package/lib/network/util.js +2 -2
  649. package/lib/network/util.js.map +1 -1
  650. package/lib/node/nodejs.d.ts +4 -6
  651. package/lib/node/nodejs.d.ts.map +1 -1
  652. package/lib/node/nodejs.js +8 -5
  653. package/lib/node/nodejs.js.map +1 -1
  654. package/lib/node/notifier.js.map +1 -1
  655. package/lib/node/utils/interop/deposits.js.map +1 -1
  656. package/lib/node/utils/interop/state.d.ts +1 -1
  657. package/lib/node/utils/interop/state.d.ts.map +1 -1
  658. package/lib/node/utils/interop/state.js.map +1 -1
  659. package/lib/node/utils/lightclient.js.map +1 -1
  660. package/lib/node/utils/state.js.map +1 -1
  661. package/lib/sync/backfill/backfill.d.ts +1 -10
  662. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  663. package/lib/sync/backfill/backfill.js +6 -3
  664. package/lib/sync/backfill/backfill.js.map +1 -1
  665. package/lib/sync/backfill/errors.js +2 -1
  666. package/lib/sync/backfill/errors.js.map +1 -1
  667. package/lib/sync/backfill/verify.js.map +1 -1
  668. package/lib/sync/interface.js +2 -1
  669. package/lib/sync/interface.js.map +1 -1
  670. package/lib/sync/range/batch.d.ts.map +1 -1
  671. package/lib/sync/range/batch.js +4 -2
  672. package/lib/sync/range/batch.js.map +1 -1
  673. package/lib/sync/range/chain.d.ts +0 -10
  674. package/lib/sync/range/chain.d.ts.map +1 -1
  675. package/lib/sync/range/chain.js +2 -1
  676. package/lib/sync/range/chain.js.map +1 -1
  677. package/lib/sync/range/range.d.ts +1 -3
  678. package/lib/sync/range/range.d.ts.map +1 -1
  679. package/lib/sync/range/range.js +5 -2
  680. package/lib/sync/range/range.js.map +1 -1
  681. package/lib/sync/range/utils/batches.js.map +1 -1
  682. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  683. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  684. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  685. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  686. package/lib/sync/range/utils/updateChains.js.map +1 -1
  687. package/lib/sync/sync.d.ts.map +1 -1
  688. package/lib/sync/sync.js.map +1 -1
  689. package/lib/sync/types.js +4 -2
  690. package/lib/sync/types.js.map +1 -1
  691. package/lib/sync/unknownBlock.d.ts +0 -14
  692. package/lib/sync/unknownBlock.d.ts.map +1 -1
  693. package/lib/sync/unknownBlock.js.map +1 -1
  694. package/lib/sync/utils/downloadByRange.d.ts +8 -5
  695. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  696. package/lib/sync/utils/downloadByRange.js +8 -6
  697. package/lib/sync/utils/downloadByRange.js.map +1 -1
  698. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  699. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  700. package/lib/sync/utils/downloadByRoot.js +3 -2
  701. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  702. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  703. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  704. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  705. package/lib/sync/utils/remoteSyncType.js +4 -2
  706. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  707. package/lib/util/address.js.map +1 -1
  708. package/lib/util/array.d.ts.map +1 -1
  709. package/lib/util/array.js.map +1 -1
  710. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  711. package/lib/util/asyncIterableToEvents.js +2 -1
  712. package/lib/util/asyncIterableToEvents.js.map +1 -1
  713. package/lib/util/binarySearch.d.ts.map +1 -1
  714. package/lib/util/binarySearch.js.map +1 -1
  715. package/lib/util/bitArray.js +2 -1
  716. package/lib/util/bitArray.js.map +1 -1
  717. package/lib/util/blobs.d.ts +2 -2
  718. package/lib/util/blobs.d.ts.map +1 -1
  719. package/lib/util/blobs.js.map +1 -1
  720. package/lib/util/bufferPool.d.ts.map +1 -1
  721. package/lib/util/bufferPool.js +2 -1
  722. package/lib/util/bufferPool.js.map +1 -1
  723. package/lib/util/chunkify.js.map +1 -1
  724. package/lib/util/clock.d.ts +6 -0
  725. package/lib/util/clock.d.ts.map +1 -1
  726. package/lib/util/clock.js +11 -4
  727. package/lib/util/clock.js.map +1 -1
  728. package/lib/util/dataColumns.d.ts +11 -3
  729. package/lib/util/dataColumns.d.ts.map +1 -1
  730. package/lib/util/dataColumns.js +36 -3
  731. package/lib/util/dataColumns.js.map +1 -1
  732. package/lib/util/dependentRoot.js.map +1 -1
  733. package/lib/util/enum.js.map +1 -1
  734. package/lib/util/error.js.map +1 -1
  735. package/lib/util/eventLoop.js.map +1 -1
  736. package/lib/util/execution.d.ts.map +1 -1
  737. package/lib/util/execution.js +19 -9
  738. package/lib/util/execution.js.map +1 -1
  739. package/lib/util/file.js.map +1 -1
  740. package/lib/util/forkChoice.js.map +1 -1
  741. package/lib/util/forkName.js.map +1 -1
  742. package/lib/util/graffiti.js.map +1 -1
  743. package/lib/util/hex.js.map +1 -1
  744. package/lib/util/ip.js.map +1 -1
  745. package/lib/util/itTrigger.d.ts.map +1 -1
  746. package/lib/util/itTrigger.js.map +1 -1
  747. package/lib/util/map.d.ts.map +1 -1
  748. package/lib/util/map.js.map +1 -1
  749. package/lib/util/metadata.js.map +1 -1
  750. package/lib/util/multifork.d.ts +8 -0
  751. package/lib/util/multifork.d.ts.map +1 -1
  752. package/lib/util/multifork.js +37 -0
  753. package/lib/util/multifork.js.map +1 -1
  754. package/lib/util/numpy.js.map +1 -1
  755. package/lib/util/peerId.js.map +1 -1
  756. package/lib/util/profile.js +2 -1
  757. package/lib/util/profile.js.map +1 -1
  758. package/lib/util/promises.js.map +1 -1
  759. package/lib/util/queue/errors.js +2 -1
  760. package/lib/util/queue/errors.js.map +1 -1
  761. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  762. package/lib/util/queue/fnQueue.js.map +1 -1
  763. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  764. package/lib/util/queue/itemQueue.js.map +1 -1
  765. package/lib/util/queue/options.js +2 -1
  766. package/lib/util/queue/options.js.map +1 -1
  767. package/lib/util/serializedCache.d.ts +4 -4
  768. package/lib/util/serializedCache.d.ts.map +1 -1
  769. package/lib/util/serializedCache.js +6 -4
  770. package/lib/util/serializedCache.js.map +1 -1
  771. package/lib/util/set.d.ts.map +1 -1
  772. package/lib/util/set.js.map +1 -1
  773. package/lib/util/shuffle.js.map +1 -1
  774. package/lib/util/sortBy.js.map +1 -1
  775. package/lib/util/sszBytes.js.map +1 -1
  776. package/lib/util/time.js.map +1 -1
  777. package/lib/util/timeSeries.d.ts.map +1 -1
  778. package/lib/util/timeSeries.js.map +1 -1
  779. package/lib/util/types.d.ts.map +1 -1
  780. package/lib/util/workerEvents.d.ts +1 -1
  781. package/lib/util/workerEvents.d.ts.map +1 -1
  782. package/lib/util/workerEvents.js.map +1 -1
  783. package/lib/util/wrapError.js.map +1 -1
  784. package/package.json +42 -44
  785. package/src/api/impl/beacon/blocks/index.ts +158 -3
  786. package/src/api/impl/beacon/state/index.ts +8 -8
  787. package/src/api/impl/beacon/state/utils.ts +15 -29
  788. package/src/api/impl/debug/index.ts +9 -5
  789. package/src/api/impl/node/utils.ts +3 -3
  790. package/src/api/impl/validator/index.ts +153 -17
  791. package/src/chain/archiveStore/archiveStore.ts +15 -5
  792. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -11
  793. package/src/chain/archiveStore/historicalState/worker.ts +3 -3
  794. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -5
  795. package/src/chain/archiveStore/utils/archivePayloads.ts +15 -0
  796. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  797. package/src/chain/blocks/blockInput/blockInput.ts +103 -3
  798. package/src/chain/blocks/blockInput/types.ts +18 -0
  799. package/src/chain/blocks/importBlock.ts +36 -5
  800. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  801. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  802. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  803. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  804. package/src/chain/bls/multithread/index.ts +7 -7
  805. package/src/chain/bls/multithread/jobItem.ts +3 -3
  806. package/src/chain/bls/singleThread.ts +5 -5
  807. package/src/chain/bls/utils.ts +8 -5
  808. package/src/chain/chain.ts +86 -47
  809. package/src/chain/emitter.ts +5 -5
  810. package/src/chain/errors/executionPayloadBid.ts +1 -1
  811. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  812. package/src/chain/errors/payloadAttestation.ts +1 -1
  813. package/src/chain/forkChoice/index.ts +39 -21
  814. package/src/chain/interface.ts +4 -11
  815. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  816. package/src/chain/options.ts +1 -0
  817. package/src/chain/prepareNextSlot.ts +5 -5
  818. package/src/chain/produceBlock/computeNewStateRoot.ts +36 -3
  819. package/src/chain/produceBlock/produceBlockBody.ts +170 -14
  820. package/src/chain/regen/queued.ts +7 -2
  821. package/src/chain/regen/regen.ts +9 -3
  822. package/src/chain/seenCache/seenGossipBlockInput.ts +56 -18
  823. package/src/chain/validation/aggregateAndProof.ts +1 -1
  824. package/src/chain/validation/attestation.ts +14 -7
  825. package/src/chain/validation/attesterSlashing.ts +10 -1
  826. package/src/chain/validation/blobSidecar.ts +2 -2
  827. package/src/chain/validation/block.ts +9 -4
  828. package/src/chain/validation/dataColumnSidecar.ts +149 -132
  829. package/src/chain/validation/executionPayloadBid.ts +1 -2
  830. package/src/chain/validation/executionPayloadEnvelope.ts +4 -4
  831. package/src/chain/validation/payloadAttestationMessage.ts +10 -3
  832. package/src/chain/validation/proposerSlashing.ts +1 -1
  833. package/src/chain/validation/syncCommitteeContributionAndProof.ts +1 -1
  834. package/src/db/beacon.ts +8 -0
  835. package/src/db/buckets.ts +3 -0
  836. package/src/db/index.ts +1 -0
  837. package/src/db/interface.ts +5 -0
  838. package/src/db/repositories/blockArchive.ts +1 -2
  839. package/src/db/repositories/dataColumnSidecar.ts +18 -3
  840. package/src/db/repositories/dataColumnSidecarArchive.ts +18 -3
  841. package/src/db/repositories/executionPayloadEnvelope.ts +26 -0
  842. package/src/db/repositories/executionPayloadEnvelopeArchive.ts +32 -0
  843. package/src/db/repositories/index.ts +2 -0
  844. package/src/execution/engine/http.ts +3 -0
  845. package/src/metrics/metrics/beacon.ts +14 -3
  846. package/src/metrics/metrics/lodestar.ts +48 -24
  847. package/src/monitoring/service.ts +3 -2
  848. package/src/network/core/networkCore.ts +3 -3
  849. package/src/network/core/networkCoreWorkerHandler.ts +3 -3
  850. package/src/network/core/types.ts +2 -2
  851. package/src/network/discv5/utils.ts +5 -4
  852. package/src/network/events.ts +2 -1
  853. package/src/network/gossip/encoding.ts +3 -3
  854. package/src/network/gossip/gossipsub.ts +98 -32
  855. package/src/network/gossip/interface.ts +6 -6
  856. package/src/network/gossip/scoringParameters.ts +4 -4
  857. package/src/network/gossip/topic.ts +2 -1
  858. package/src/network/interface.ts +7 -4
  859. package/src/network/libp2p/index.ts +48 -21
  860. package/src/network/metadata.ts +1 -0
  861. package/src/network/network.ts +26 -7
  862. package/src/network/options.ts +8 -1
  863. package/src/network/peers/datastore.ts +13 -10
  864. package/src/network/peers/discover.ts +46 -11
  865. package/src/network/peers/peerManager.ts +118 -54
  866. package/src/network/peers/utils/prioritizePeers.ts +3 -3
  867. package/src/network/processor/gossipHandlers.ts +19 -4
  868. package/src/network/processor/gossipValidatorFn.ts +2 -2
  869. package/src/network/processor/types.ts +1 -1
  870. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  871. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  872. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  873. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  874. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  875. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  876. package/src/network/reqresp/score.ts +0 -1
  877. package/src/network/reqresp/utils/collect.ts +1 -1
  878. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  879. package/src/network/util.ts +2 -2
  880. package/src/node/nodejs.ts +8 -9
  881. package/src/sync/range/range.ts +1 -0
  882. package/src/sync/utils/downloadByRange.ts +12 -3
  883. package/src/sync/utils/downloadByRoot.ts +2 -2
  884. package/src/sync/utils/remoteSyncType.ts +1 -1
  885. package/src/util/blobs.ts +3 -3
  886. package/src/util/clock.ts +9 -4
  887. package/src/util/dataColumns.ts +43 -3
  888. package/src/util/execution.ts +23 -12
  889. package/src/util/multifork.ts +45 -0
  890. package/src/util/serializedCache.ts +7 -5
  891. package/src/util/workerEvents.ts +1 -1
@@ -1,14 +1,14 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ChainForkConfig} from "@lodestar/config";
3
3
  import {getSafeExecutionBlockHash} from "@lodestar/fork-choice";
4
- import {ForkPostBellatrix, ForkSeq, SLOTS_PER_EPOCH} from "@lodestar/params";
4
+ import {ForkPostBellatrix, ForkSeq, SLOTS_PER_EPOCH, isForkPostBellatrix} from "@lodestar/params";
5
5
  import {
6
6
  CachedBeaconStateAllForks,
7
7
  CachedBeaconStateExecutions,
8
+ CachedBeaconStateGloas,
8
9
  StateHashTreeRootSource,
9
10
  computeEpochAtSlot,
10
11
  computeTimeAtSlot,
11
- isExecutionStateType,
12
12
  } from "@lodestar/state-transition";
13
13
  import {Slot} from "@lodestar/types";
14
14
  import {Logger, fromHex, isErrorAborted, sleep} from "@lodestar/utils";
@@ -120,10 +120,10 @@ export class PrepareNextSlotScheduler {
120
120
  RegenCaller.precomputeEpoch
121
121
  );
122
122
 
123
- if (isExecutionStateType(prepareState)) {
123
+ if (isForkPostBellatrix(fork)) {
124
124
  const proposerIndex = prepareState.epochCtx.getBeaconProposer(prepareSlot);
125
125
  const feeRecipient = this.chain.beaconProposerCache.get(proposerIndex);
126
- let updatedPrepareState = prepareState;
126
+ let updatedPrepareState = prepareState as CachedBeaconStateExecutions | CachedBeaconStateGloas;
127
127
  let updatedHeadRoot = headRoot;
128
128
 
129
129
  if (feeRecipient) {
@@ -146,7 +146,7 @@ export class PrepareNextSlotScheduler {
146
146
  // only transfer cache if epoch transition because that's the state we will use to stateTransition() the 1st block of epoch
147
147
  {dontTransferCache: !isEpochTransition},
148
148
  RegenCaller.predictProposerHead
149
- )) as CachedBeaconStateExecutions;
149
+ )) as CachedBeaconStateExecutions | CachedBeaconStateGloas;
150
150
  updatedHeadRoot = proposerHeadRoot;
151
151
  }
152
152
 
@@ -1,11 +1,14 @@
1
1
  import {
2
2
  CachedBeaconStateAllForks,
3
+ CachedBeaconStateGloas,
3
4
  DataAvailabilityStatus,
4
5
  ExecutionPayloadStatus,
6
+ G2_POINT_AT_INFINITY,
5
7
  StateHashTreeRootSource,
6
8
  stateTransition,
7
9
  } from "@lodestar/state-transition";
8
- import {BeaconBlock, BlindedBeaconBlock, Gwei, Root} from "@lodestar/types";
10
+ import {processExecutionPayloadEnvelope} from "@lodestar/state-transition/block";
11
+ import {BeaconBlock, BlindedBeaconBlock, Gwei, Root, gloas} from "@lodestar/types";
9
12
  import {ZERO_HASH} from "../../constants/index.js";
10
13
  import {Metrics} from "../../metrics/index.js";
11
14
 
@@ -18,7 +21,7 @@ export function computeNewStateRoot(
18
21
  metrics: Metrics | null,
19
22
  state: CachedBeaconStateAllForks,
20
23
  block: BeaconBlock | BlindedBeaconBlock
21
- ): {newStateRoot: Root; proposerReward: Gwei} {
24
+ ): {newStateRoot: Root; proposerReward: Gwei; postState: CachedBeaconStateAllForks} {
22
25
  // Set signature to zero to re-use stateTransition() function which requires the SignedBeaconBlock type
23
26
  const blockEmptySig = {message: block, signature: ZERO_HASH};
24
27
 
@@ -51,5 +54,35 @@ export function computeNewStateRoot(
51
54
  const newStateRoot = postState.hashTreeRoot();
52
55
  hashTreeRootTimer?.();
53
56
 
54
- return {newStateRoot, proposerReward};
57
+ return {newStateRoot, proposerReward, postState};
58
+ }
59
+
60
+ /**
61
+ * Compute the state root after processing an execution payload envelope.
62
+ * Similar to `computeNewStateRoot` but for payload envelope processing.
63
+ *
64
+ */
65
+ export function computeEnvelopeStateRoot(
66
+ metrics: Metrics | null,
67
+ postBlockState: CachedBeaconStateGloas,
68
+ envelope: gloas.ExecutionPayloadEnvelope
69
+ ): Root {
70
+ const signedEnvelope: gloas.SignedExecutionPayloadEnvelope = {
71
+ message: envelope,
72
+ signature: G2_POINT_AT_INFINITY,
73
+ };
74
+
75
+ const processEnvelopeTimer = metrics?.blockPayload.executionPayloadEnvelopeProcessingTime.startTimer();
76
+ const postEnvelopeState = processExecutionPayloadEnvelope(postBlockState, signedEnvelope, false, {
77
+ dontTransferCache: true,
78
+ });
79
+ processEnvelopeTimer?.();
80
+
81
+ const hashTreeRootTimer = metrics?.stateHashTreeRootTime.startTimer({
82
+ source: StateHashTreeRootSource.computeEnvelopeStateRoot,
83
+ });
84
+ const stateRoot = postEnvelopeState.hashTreeRoot();
85
+ hashTreeRootTimer?.();
86
+
87
+ return stateRoot;
55
88
  }
@@ -1,10 +1,13 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
- import {ProtoBlock, getSafeExecutionBlockHash} from "@lodestar/fork-choice";
2
+ import {IForkChoice, ProtoBlock, getSafeExecutionBlockHash} from "@lodestar/fork-choice";
3
3
  import {
4
+ BUILDER_INDEX_SELF_BUILD,
4
5
  ForkName,
5
6
  ForkPostBellatrix,
7
+ ForkPostCapella,
6
8
  ForkPostDeneb,
7
9
  ForkPostFulu,
10
+ ForkPostGloas,
8
11
  ForkPreGloas,
9
12
  ForkSeq,
10
13
  isForkPostAltair,
@@ -16,6 +19,8 @@ import {
16
19
  CachedBeaconStateBellatrix,
17
20
  CachedBeaconStateCapella,
18
21
  CachedBeaconStateExecutions,
22
+ CachedBeaconStateGloas,
23
+ G2_POINT_AT_INFINITY,
19
24
  computeTimeAtSlot,
20
25
  getExpectedWithdrawals,
21
26
  getRandaoMix,
@@ -42,6 +47,7 @@ import {
42
47
  deneb,
43
48
  electra,
44
49
  fulu,
50
+ gloas,
45
51
  } from "@lodestar/types";
46
52
  import {Logger, fromHex, sleep, toHex, toPubkeyHex, toRootHex} from "@lodestar/utils";
47
53
  import {ZERO_HASH_HEX} from "../../constants/index.js";
@@ -99,6 +105,20 @@ export type AssembledBodyType<T extends BlockType> = T extends BlockType.Full
99
105
  : BlindedBeaconBlockBody;
100
106
  export type AssembledBlockType<T extends BlockType> = T extends BlockType.Full ? BeaconBlock : BlindedBeaconBlock;
101
107
 
108
+ export type ProduceFullGloas = {
109
+ type: BlockType.Full;
110
+ fork: ForkPostGloas;
111
+ executionPayload: ExecutionPayload<ForkPostGloas>;
112
+ executionRequests: electra.ExecutionRequests;
113
+ blobsBundle: BlobsBundle<ForkPostGloas>;
114
+ cells: fulu.Cell[][];
115
+ /**
116
+ * Cached envelope state root computed during block production.
117
+ * This is the state root after running `processExecutionPayloadEnvelope` on the
118
+ * post-block state, and later used to construct the `ExecutionPayloadEnvelope`.
119
+ */
120
+ envelopeStateRoot: Root;
121
+ };
102
122
  export type ProduceFullFulu = {
103
123
  type: BlockType.Full;
104
124
  fork: ForkPostFulu;
@@ -131,6 +151,7 @@ export type ProduceBlinded = {
131
151
 
132
152
  /** The result of local block production, everything that's not the block itself */
133
153
  export type ProduceResult =
154
+ | ProduceFullGloas
134
155
  | ProduceFullFulu
135
156
  | ProduceFullDeneb
136
157
  | ProduceFullBellatrix
@@ -180,12 +201,112 @@ export async function produceBlockBody<T extends BlockType>(
180
201
  this.logger.verbose("Producing beacon block body", logMeta);
181
202
 
182
203
  if (isForkPostGloas(fork)) {
183
- // TODO GLOAS: Set body.signedExecutionPayloadBid and body.payloadAttestation
204
+ // TODO GLOAS: support non self-building here, the block type differentiation between
205
+ // full and blinded no longer makes sense in gloas, it might be a good idea to move
206
+ // this into a completely separate function and have pre/post gloas more separated
207
+ const gloasState = currentState as CachedBeaconStateGloas;
208
+ const safeBlockHash = getSafeExecutionBlockHash(this.forkChoice);
209
+ const finalizedBlockHash = this.forkChoice.getFinalizedBlock().executionPayloadBlockHash ?? ZERO_HASH_HEX;
210
+ const feeRecipient = requestedFeeRecipient ?? this.beaconProposerCache.getOrDefault(proposerIndex);
211
+
212
+ const endExecutionPayload = this.metrics?.executionBlockProductionTimeSteps.startTimer();
213
+
214
+ this.logger.verbose("Preparing execution payload from engine", {
215
+ slot: blockSlot,
216
+ parentBlockRoot: toRootHex(parentBlockRoot),
217
+ feeRecipient,
218
+ });
219
+
220
+ // Get execution payload from EL
221
+ const prepareRes = await prepareExecutionPayload(
222
+ this,
223
+ this.logger,
224
+ fork,
225
+ parentBlockRoot,
226
+ safeBlockHash,
227
+ finalizedBlockHash ?? ZERO_HASH_HEX,
228
+ gloasState,
229
+ feeRecipient
230
+ );
231
+
232
+ const {prepType, payloadId} = prepareRes;
233
+ Object.assign(logMeta, {executionPayloadPrepType: prepType});
234
+
235
+ if (prepType !== PayloadPreparationType.Cached) {
236
+ await sleep(PAYLOAD_GENERATION_TIME_MS);
237
+ }
238
+
239
+ this.logger.verbose("Fetching execution payload from engine", {slot: blockSlot, payloadId});
240
+ const payloadRes = await this.executionEngine.getPayload(fork, payloadId);
241
+
242
+ endExecutionPayload?.({step: BlockProductionStep.executionPayload});
243
+
244
+ const {executionPayload, blobsBundle, executionRequests} = payloadRes;
245
+ executionPayloadValue = payloadRes.executionPayloadValue;
246
+ shouldOverrideBuilder = payloadRes.shouldOverrideBuilder;
247
+
248
+ if (blobsBundle === undefined) {
249
+ throw Error(`Missing blobsBundle response from getPayload at fork=${fork}`);
250
+ }
251
+ if (executionRequests === undefined) {
252
+ throw Error(`Missing executionRequests response from getPayload at fork=${fork}`);
253
+ }
254
+
255
+ const cells = blobsBundle.blobs.map((blob) => kzg.computeCells(blob));
256
+ if (this.opts.sanityCheckExecutionEngineBlobs) {
257
+ await validateCellsAndKzgCommitments(blobsBundle.commitments, blobsBundle.proofs, cells);
258
+ }
259
+
260
+ // Create self-build execution payload bid
261
+ const bid: gloas.ExecutionPayloadBid = {
262
+ parentBlockHash: gloasState.latestBlockHash,
263
+ parentBlockRoot: parentBlockRoot,
264
+ blockHash: executionPayload.blockHash,
265
+ prevRandao: getRandaoMix(gloasState, gloasState.epochCtx.epoch),
266
+ feeRecipient: executionPayload.feeRecipient,
267
+ gasLimit: BigInt(executionPayload.gasLimit),
268
+ builderIndex: BUILDER_INDEX_SELF_BUILD,
269
+ slot: blockSlot,
270
+ value: 0,
271
+ executionPayment: 0,
272
+ blobKzgCommitments: blobsBundle.commitments,
273
+ };
274
+ const signedBid: gloas.SignedExecutionPayloadBid = {
275
+ message: bid,
276
+ signature: G2_POINT_AT_INFINITY,
277
+ };
278
+
184
279
  const commonBlockBody = await commonBlockBodyPromise;
185
- blockBody = Object.assign({}, commonBlockBody) as AssembledBodyType<T>;
186
- executionPayloadValue = BigInt(0);
280
+ const gloasBody = Object.assign({}, commonBlockBody) as gloas.BeaconBlockBody;
281
+ gloasBody.signedExecutionPayloadBid = signedBid;
282
+ // TODO GLOAS: Get payload attestations from pool for previous slot
283
+ gloasBody.payloadAttestations = [];
284
+ blockBody = gloasBody as AssembledBodyType<T>;
285
+
286
+ // Store execution payload data required to construct execution payload envelope later
287
+ const gloasResult = produceResult as ProduceFullGloas;
288
+ gloasResult.executionPayload = executionPayload as ExecutionPayload<ForkPostGloas>;
289
+ gloasResult.executionRequests = executionRequests;
290
+ gloasResult.blobsBundle = blobsBundle;
291
+ gloasResult.cells = cells;
292
+
293
+ const fetchedTime = Date.now() / 1000 - computeTimeAtSlot(this.config, blockSlot, this.genesisTime);
294
+ this.metrics?.blockPayload.payloadFetchedTime.observe({prepType}, fetchedTime);
295
+ this.logger.verbose("Produced block with self-build bid", {
296
+ slot: blockSlot,
297
+ executionPayloadValue,
298
+ prepType,
299
+ payloadId,
300
+ fetchedTime,
301
+ executionBlockHash: toRootHex(executionPayload.blockHash),
302
+ blobs: blobsBundle.commitments.length,
303
+ });
187
304
 
188
- // We don't deal with blinded blocks, execution engine, blobs and execution requests post-gloas
305
+ Object.assign(logMeta, {
306
+ transactions: executionPayload.transactions.length,
307
+ blobs: blobsBundle.commitments.length,
308
+ shouldOverrideBuilder,
309
+ });
189
310
  } else if (isForkPostBellatrix(fork)) {
190
311
  const safeBlockHash = getSafeExecutionBlockHash(this.forkChoice);
191
312
  const finalizedBlockHash = this.forkChoice.getFinalizedBlock().executionPayloadBlockHash ?? ZERO_HASH_HEX;
@@ -390,9 +511,16 @@ export async function produceBlockBody<T extends BlockType>(
390
511
  // NOTE: Even though the fulu.BlobsBundle type is superficially the same as deneb.BlobsBundle, it is NOT.
391
512
  // In fulu, proofs are _cell_ proofs, vs in deneb they are _blob_ proofs.
392
513
 
514
+ const timer = this?.metrics?.peerDas.dataColumnSidecarComputationTime.startTimer();
393
515
  const cells = blobsBundle.blobs.map((blob) => kzg.computeCells(blob));
516
+ timer?.();
394
517
  if (this.opts.sanityCheckExecutionEngineBlobs) {
395
- await validateCellsAndKzgCommitments(blobsBundle.commitments, blobsBundle.proofs, cells);
518
+ const validationTimer = this.metrics?.peerDas.kzgVerificationDataColumnBatchTime.startTimer();
519
+ try {
520
+ await validateCellsAndKzgCommitments(blobsBundle.commitments, blobsBundle.proofs, cells);
521
+ } finally {
522
+ validationTimer?.();
523
+ }
396
524
  }
397
525
 
398
526
  (blockBody as deneb.BeaconBlockBody).blobKzgCommitments = blobsBundle.commitments;
@@ -447,8 +575,14 @@ export async function produceBlockBody<T extends BlockType>(
447
575
  });
448
576
  }
449
577
 
450
- if (ForkSeq[fork] >= ForkSeq.capella) {
451
- const {blsToExecutionChanges, executionPayload} = blockBody as capella.BeaconBlockBody;
578
+ if (ForkSeq[fork] >= ForkSeq.gloas) {
579
+ const {blsToExecutionChanges, payloadAttestations} = blockBody as BeaconBlockBody<ForkPostGloas>;
580
+ Object.assign(logMeta, {
581
+ blsToExecutionChanges: blsToExecutionChanges.length,
582
+ payloadAttestations: payloadAttestations.length,
583
+ });
584
+ } else if (ForkSeq[fork] >= ForkSeq.capella) {
585
+ const {blsToExecutionChanges, executionPayload} = blockBody as BeaconBlockBody<ForkPostCapella & ForkPreGloas>;
452
586
  Object.assign(logMeta, {
453
587
  blsToExecutionChanges: blsToExecutionChanges.length,
454
588
  });
@@ -480,10 +614,12 @@ export async function prepareExecutionPayload(
480
614
  parentBlockRoot: Root,
481
615
  safeBlockHash: RootHex,
482
616
  finalizedBlockHash: RootHex,
483
- state: CachedBeaconStateExecutions,
617
+ state: CachedBeaconStateExecutions | CachedBeaconStateGloas,
484
618
  suggestedFeeRecipient: string
485
619
  ): Promise<{prepType: PayloadPreparationType; payloadId: PayloadId}> {
486
- const parentHash = state.latestExecutionPayloadHeader.blockHash;
620
+ const parentHash = isForkPostGloas(fork)
621
+ ? (state as CachedBeaconStateGloas).latestBlockHash
622
+ : (state as CachedBeaconStateExecutions).latestExecutionPayloadHeader.blockHash;
487
623
  const timestamp = computeTimeAtSlot(chain.config, state.slot, state.genesisTime);
488
624
  const prevRandao = getRandaoMix(state, state.epochCtx.epoch);
489
625
 
@@ -568,25 +704,45 @@ export function getPayloadAttributesForSSE(
568
704
  fork: ForkPostBellatrix,
569
705
  chain: {
570
706
  config: ChainForkConfig;
707
+ forkChoice: IForkChoice;
571
708
  },
572
709
  {
573
710
  prepareState,
574
711
  prepareSlot,
575
712
  parentBlockRoot,
576
713
  feeRecipient,
577
- }: {prepareState: CachedBeaconStateExecutions; prepareSlot: Slot; parentBlockRoot: Root; feeRecipient: string}
714
+ }: {
715
+ prepareState: CachedBeaconStateExecutions | CachedBeaconStateGloas;
716
+ prepareSlot: Slot;
717
+ parentBlockRoot: Root;
718
+ feeRecipient: string;
719
+ }
578
720
  ): SSEPayloadAttributes {
579
- const parentHash = prepareState.latestExecutionPayloadHeader.blockHash;
721
+ const parentHash = isForkPostGloas(fork)
722
+ ? (prepareState as CachedBeaconStateGloas).latestBlockHash
723
+ : (prepareState as CachedBeaconStateExecutions).latestExecutionPayloadHeader.blockHash;
580
724
  const payloadAttributes = preparePayloadAttributes(fork, chain, {
581
725
  prepareState,
582
726
  prepareSlot,
583
727
  parentBlockRoot,
584
728
  feeRecipient,
585
729
  });
730
+
731
+ let parentBlockNumber: number;
732
+ if (isForkPostGloas(fork)) {
733
+ const parentBlock = chain.forkChoice.getBlockHexAndBlockHash(toRootHex(parentBlockRoot), toRootHex(parentHash));
734
+ if (parentBlock?.executionPayloadBlockHash == null) {
735
+ throw Error(`Parent block not found in fork choice root=${toRootHex(parentBlockRoot)}`);
736
+ }
737
+ parentBlockNumber = parentBlock.executionPayloadNumber;
738
+ } else {
739
+ parentBlockNumber = (prepareState as CachedBeaconStateExecutions).latestExecutionPayloadHeader.blockNumber;
740
+ }
741
+
586
742
  const ssePayloadAttributes: SSEPayloadAttributes = {
587
743
  proposerIndex: prepareState.epochCtx.getBeaconProposer(prepareSlot),
588
744
  proposalSlot: prepareSlot,
589
- parentBlockNumber: prepareState.latestExecutionPayloadHeader.blockNumber,
745
+ parentBlockNumber,
590
746
  parentBlockRoot,
591
747
  parentBlockHash: parentHash,
592
748
  payloadAttributes,
@@ -605,7 +761,7 @@ function preparePayloadAttributes(
605
761
  parentBlockRoot,
606
762
  feeRecipient,
607
763
  }: {
608
- prepareState: CachedBeaconStateExecutions;
764
+ prepareState: CachedBeaconStateExecutions | CachedBeaconStateGloas;
609
765
  prepareSlot: Slot;
610
766
  parentBlockRoot: Root;
611
767
  feeRecipient: string;
@@ -1,7 +1,7 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
3
3
  import {CachedBeaconStateAllForks, computeEpochAtSlot} from "@lodestar/state-transition";
4
- import {BeaconBlock, Epoch, RootHex, Slot, phase0} from "@lodestar/types";
4
+ import {BeaconBlock, Epoch, RootHex, Slot, isGloasBeaconBlock, phase0} from "@lodestar/types";
5
5
  import {Logger, toRootHex} from "@lodestar/utils";
6
6
  import {Metrics} from "../../metrics/index.js";
7
7
  import {JobItemQueue} from "../../util/queue/index.js";
@@ -88,7 +88,12 @@ export class QueuedStateRegenerator implements IStateRegenerator {
88
88
  */
89
89
  getPreStateSync(block: BeaconBlock): CachedBeaconStateAllForks | null {
90
90
  const parentRoot = toRootHex(block.parentRoot);
91
- const parentBlock = this.forkChoice.getBlockHex(parentRoot);
91
+ const parentBlock = isGloasBeaconBlock(block)
92
+ ? this.forkChoice.getBlockHexAndBlockHash(
93
+ parentRoot,
94
+ toRootHex(block.body.signedExecutionPayloadBid.message.parentBlockHash)
95
+ )
96
+ : this.forkChoice.getBlockHexDefaultStatus(parentRoot);
92
97
  if (!parentBlock) {
93
98
  throw new RegenError({
94
99
  code: RegenErrorCode.BLOCK_NOT_IN_FORKCHOICE,
@@ -11,7 +11,7 @@ import {
11
11
  processSlots,
12
12
  stateTransition,
13
13
  } from "@lodestar/state-transition";
14
- import {BeaconBlock, RootHex, SignedBeaconBlock, Slot} from "@lodestar/types";
14
+ import {BeaconBlock, RootHex, SignedBeaconBlock, Slot, isGloasBeaconBlock} from "@lodestar/types";
15
15
  import {Logger, fromHex, toRootHex} from "@lodestar/utils";
16
16
  import {IBeaconDb} from "../../db/index.js";
17
17
  import {Metrics} from "../../metrics/index.js";
@@ -58,7 +58,13 @@ export class StateRegenerator implements IStateRegeneratorInternal {
58
58
  opts: StateRegenerationOpts,
59
59
  regenCaller: RegenCaller
60
60
  ): Promise<CachedBeaconStateAllForks> {
61
- const parentBlock = this.modules.forkChoice.getBlock(block.parentRoot);
61
+ const parentRoot = toRootHex(block.parentRoot);
62
+ const parentBlock = isGloasBeaconBlock(block)
63
+ ? this.modules.forkChoice.getBlockHexAndBlockHash(
64
+ parentRoot,
65
+ toRootHex(block.body.signedExecutionPayloadBid.message.parentBlockHash)
66
+ )
67
+ : this.modules.forkChoice.getBlockHexDefaultStatus(parentRoot);
62
68
  if (!parentBlock) {
63
69
  throw new RegenError({
64
70
  code: RegenErrorCode.BLOCK_NOT_IN_FORKCHOICE,
@@ -152,7 +158,7 @@ export class StateRegenerator implements IStateRegeneratorInternal {
152
158
 
153
159
  const getSeedStateTimer = this.modules.metrics?.regenGetState.getSeedState.startTimer({caller});
154
160
  // iterateAncestorBlocks only returns ancestor blocks, not the block itself
155
- for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot)) {
161
+ for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot, block.payloadStatus)) {
156
162
  state = this.modules.blockStateCache.get(b.stateRoot);
157
163
  if (state) {
158
164
  break;
@@ -3,6 +3,7 @@ import {CheckpointWithHex} from "@lodestar/fork-choice";
3
3
  import {
4
4
  ForkName,
5
5
  ForkPostFulu,
6
+ ForkPostGloas,
6
7
  ForkPreGloas,
7
8
  SLOTS_PER_EPOCH,
8
9
  isForkPostDeneb,
@@ -16,10 +17,12 @@ import {Metrics} from "../../metrics/metrics.js";
16
17
  import {MAX_LOOK_AHEAD_EPOCHS} from "../../sync/constants.js";
17
18
  import {IClock} from "../../util/clock.js";
18
19
  import {CustodyConfig} from "../../util/dataColumns.js";
20
+ import {SerializedCache} from "../../util/serializedCache.js";
19
21
  import {
20
22
  BlockInput,
21
23
  BlockInputBlobs,
22
24
  BlockInputColumns,
25
+ BlockInputNoData,
23
26
  BlockInputPreData,
24
27
  BlockWithSource,
25
28
  DAType,
@@ -53,6 +56,7 @@ export type SeenBlockInputCacheModules = {
53
56
  chainEvents: ChainEventEmitter;
54
57
  signal: AbortSignal;
55
58
  custodyConfig: CustodyConfig;
59
+ serializedCache: SerializedCache;
56
60
  metrics: Metrics | null;
57
61
  logger?: Logger;
58
62
  };
@@ -99,6 +103,7 @@ export class SeenBlockInput {
99
103
  private readonly clock: IClock;
100
104
  private readonly chainEvents: ChainEventEmitter;
101
105
  private readonly signal: AbortSignal;
106
+ private readonly serializedCache: SerializedCache;
102
107
  private readonly metrics: Metrics | null;
103
108
  private readonly logger?: Logger;
104
109
  private blockInputs = new Map<RootHex, IBlockInput>();
@@ -107,19 +112,35 @@ export class SeenBlockInput {
107
112
  // and the signature to ensure we only skip verification if both match
108
113
  private verifiedProposerSignatures = new Map<Slot, Map<RootHex, BLSSignature>>();
109
114
 
110
- constructor({config, custodyConfig, clock, chainEvents, signal, metrics, logger}: SeenBlockInputCacheModules) {
115
+ constructor({
116
+ config,
117
+ custodyConfig,
118
+ clock,
119
+ chainEvents,
120
+ signal,
121
+ serializedCache,
122
+ metrics,
123
+ logger,
124
+ }: SeenBlockInputCacheModules) {
111
125
  this.config = config;
112
126
  this.custodyConfig = custodyConfig;
113
127
  this.clock = clock;
114
128
  this.chainEvents = chainEvents;
115
129
  this.signal = signal;
130
+ this.serializedCache = serializedCache;
116
131
  this.metrics = metrics;
117
132
  this.logger = logger;
118
133
 
119
134
  if (metrics) {
120
- metrics.seenCache.blockInput.blockInputCount.addCollect(() =>
121
- metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size)
122
- );
135
+ metrics.seenCache.blockInput.blockInputCount.addCollect(() => {
136
+ metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size);
137
+ metrics.seenCache.blockInput.serializedObjectRefs.set(
138
+ Array.from(this.blockInputs.values()).reduce(
139
+ (count, blockInput) => count + blockInput.getSerializedCacheKeys().length,
140
+ 0
141
+ )
142
+ );
143
+ });
123
144
  }
124
145
 
125
146
  this.chainEvents.on(ChainEvent.forkChoiceFinalized, this.onFinalized);
@@ -140,7 +161,10 @@ export class SeenBlockInput {
140
161
  * Removes the single BlockInput from the cache
141
162
  */
142
163
  remove(rootHex: RootHex): void {
143
- this.blockInputs.delete(rootHex);
164
+ const blockInput = this.blockInputs.get(rootHex);
165
+ if (blockInput) {
166
+ this.evictBlockInput(blockInput);
167
+ }
144
168
  }
145
169
 
146
170
  /**
@@ -152,7 +176,7 @@ export class SeenBlockInput {
152
176
  let deletedCount = 0;
153
177
  while (blockInput) {
154
178
  deletedCount++;
155
- this.blockInputs.delete(blockInput.blockRootHex);
179
+ this.evictBlockInput(blockInput);
156
180
  blockInput = this.blockInputs.get(parentRootHex ?? "");
157
181
  parentRootHex = blockInput?.parentRootHex;
158
182
  }
@@ -163,10 +187,10 @@ export class SeenBlockInput {
163
187
  onFinalized = (checkpoint: CheckpointWithHex) => {
164
188
  let deletedCount = 0;
165
189
  const cutoffSlot = computeStartSlotAtEpoch(checkpoint.epoch);
166
- for (const [rootHex, blockInput] of this.blockInputs) {
190
+ for (const [, blockInput] of this.blockInputs) {
167
191
  if (blockInput.slot < cutoffSlot) {
168
192
  deletedCount++;
169
- this.blockInputs.delete(rootHex);
193
+ this.evictBlockInput(blockInput);
170
194
  }
171
195
  }
172
196
  this.logger?.debug(`BlockInputCache.onFinalized deleted ${deletedCount} cached BlockInputs`);
@@ -179,12 +203,19 @@ export class SeenBlockInput {
179
203
  if (!blockInput) {
180
204
  const {forkName, daOutOfRange} = this.buildCommonProps(block.message.slot);
181
205
 
182
- // TODO GLOAS: Implement
183
206
  if (isForkPostGloas(forkName)) {
184
- throw Error("Not implemented");
185
- }
186
- // Pre-deneb
187
- if (!isForkPostDeneb(forkName)) {
207
+ // Post-gloas
208
+ blockInput = BlockInputNoData.createFromBlock({
209
+ block: block as SignedBeaconBlock<ForkPostGloas>,
210
+ blockRootHex,
211
+ daOutOfRange,
212
+ forkName,
213
+ source,
214
+ seenTimestampSec,
215
+ peerIdStr,
216
+ });
217
+ } else if (!isForkPostDeneb(forkName)) {
218
+ // Pre-deneb
188
219
  blockInput = BlockInputPreData.createFromBlock({
189
220
  block,
190
221
  blockRootHex,
@@ -194,8 +225,8 @@ export class SeenBlockInput {
194
225
  seenTimestampSec,
195
226
  peerIdStr,
196
227
  });
197
- // Fulu Only
198
228
  } else if (isForkPostFulu(forkName)) {
229
+ // Fulu Only
199
230
  blockInput = BlockInputColumns.createFromBlock({
200
231
  block: block as SignedBeaconBlock<ForkPostFulu & ForkPreGloas>,
201
232
  blockRootHex,
@@ -207,8 +238,8 @@ export class SeenBlockInput {
207
238
  seenTimestampSec,
208
239
  peerIdStr,
209
240
  });
210
- // Deneb and Electra
211
241
  } else {
242
+ // Deneb and Electra
212
243
  blockInput = BlockInputBlobs.createFromBlock({
213
244
  block: block as SignedBeaconBlock<ForkBlobsDA>,
214
245
  blockRootHex,
@@ -219,6 +250,7 @@ export class SeenBlockInput {
219
250
  peerIdStr,
220
251
  });
221
252
  }
253
+ this.metrics?.seenCache.blockInput.createdByBlock.inc();
222
254
  this.blockInputs.set(blockInput.blockRootHex, blockInput);
223
255
  }
224
256
 
@@ -318,7 +350,7 @@ export class SeenBlockInput {
318
350
  custodyColumns: this.custodyConfig.custodyColumns,
319
351
  sampledColumns: this.custodyConfig.sampledColumns,
320
352
  });
321
- this.metrics?.seenCache.blockInput.createdByBlob.inc();
353
+ this.metrics?.seenCache.blockInput.createdByColumn.inc();
322
354
  this.blockInputs.set(blockRootHex, blockInput);
323
355
  }
324
356
 
@@ -399,14 +431,20 @@ export class SeenBlockInput {
399
431
 
400
432
  if (itemsToDelete > 0) {
401
433
  const sorted = [...this.blockInputs.entries()].sort((a, b) => a[1].slot - b[1].slot);
402
- for (const [rootHex] of sorted) {
403
- this.blockInputs.delete(rootHex);
434
+ for (const [, blockInput] of sorted) {
435
+ this.evictBlockInput(blockInput);
404
436
  itemsToDelete--;
405
437
  if (itemsToDelete <= 0) return;
406
438
  }
407
439
  }
408
440
  pruneSetToMax(this.verifiedProposerSignatures, MAX_BLOCK_INPUT_CACHE_SIZE);
409
441
  }
442
+
443
+ private evictBlockInput(blockInput: IBlockInput): void {
444
+ // Without forcefully clearing this cache, we would rely on WeakMap to evict memory which is not reliable
445
+ this.serializedCache.delete(blockInput.getSerializedCacheKeys());
446
+ this.blockInputs.delete(blockInput.blockRootHex);
447
+ }
410
448
  }
411
449
 
412
450
  enum SeenBlockInputCacheErrorCode {
@@ -81,7 +81,7 @@ async function validateAggregateAndProof(
81
81
  });
82
82
  }
83
83
  // [REJECT] `aggregate.data.index == 0` if `block.slot == aggregate.data.slot`.
84
- const block = chain.forkChoice.getBlock(attData.beaconBlockRoot);
84
+ const block = chain.forkChoice.getBlockDefaultStatus(attData.beaconBlockRoot);
85
85
 
86
86
  // If block is unknown, we don't handle it here. It will throw error later on at `verifyHeadBlockAndTargetRoot()`
87
87
  if (block !== null && block.slot === attData.slot && attData.index !== 0) {