@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
@@ -1,6 +1,6 @@
1
1
  import { digest } from "@chainsafe/as-sha256";
2
2
  import { Tree } from "@chainsafe/persistent-merkle-tree";
3
- import { KZG_COMMITMENTS_GINDEX, NUMBER_OF_COLUMNS, } from "@lodestar/params";
3
+ import { KZG_COMMITMENTS_GINDEX, NUMBER_OF_COLUMNS, isForkPostGloas, } from "@lodestar/params";
4
4
  import { signedBlockToSignedHeader } from "@lodestar/state-transition";
5
5
  import { ssz, } from "@lodestar/types";
6
6
  import { bytesToBigInt } from "@lodestar/utils";
@@ -193,6 +193,16 @@ export async function getCellsAndProofs(blobBundles) {
193
193
  }
194
194
  return blobsAndProofs;
195
195
  }
196
+ /**
197
+ * Get blob KZG commitments from a signed block, handling the different locations
198
+ * in pre-Gloas (directly in block body) vs post-Gloas (in execution payload bid).
199
+ */
200
+ export function getBlobKzgCommitments(fork, signedBlock) {
201
+ if (isForkPostGloas(fork)) {
202
+ return signedBlock.message.body.signedExecutionPayloadBid.message.blobKzgCommitments;
203
+ }
204
+ return signedBlock.message.body.blobKzgCommitments;
205
+ }
196
206
  /**
197
207
  * Given a signed block header and the commitments, inclusion proof, cells/proofs associated with
198
208
  * each blob in the block, assemble the sidecars which can be distributed to peers.
@@ -231,14 +241,12 @@ export function getDataColumnSidecars(signedBlockHeader, kzgCommitments, kzgComm
231
241
  * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/validator.md#get_data_column_sidecars_from_block
232
242
  */
233
243
  export function getDataColumnSidecarsFromBlock(config, signedBlock, cellsAndKzgProofs) {
234
- // TODO GLOAS: Need to get blobKzgCommitments from somewhere else
235
- const blobKzgCommitments = signedBlock.message.body
236
- .blobKzgCommitments;
244
+ const fork = config.getForkName(signedBlock.message.slot);
245
+ const blobKzgCommitments = getBlobKzgCommitments(fork, signedBlock);
237
246
  // No need to create data column sidecars if there are no blobs
238
247
  if (blobKzgCommitments.length === 0) {
239
248
  return [];
240
249
  }
241
- const fork = config.getForkName(signedBlock.message.slot);
242
250
  const signedBlockHeader = signedBlockToSignedHeader(config, signedBlock);
243
251
  const kzgCommitmentsInclusionProof = computePostFuluKzgCommitmentsInclusionProof(fork, signedBlock.message.body);
244
252
  return getDataColumnSidecars(signedBlockHeader, blobKzgCommitments, kzgCommitmentsInclusionProof, cellsAndKzgProofs);
@@ -253,6 +261,33 @@ export function getDataColumnSidecarsFromBlock(config, signedBlock, cellsAndKzgP
253
261
  export function getDataColumnSidecarsFromColumnSidecar(sidecar, cellsAndKzgProofs) {
254
262
  return getDataColumnSidecars(sidecar.signedBlockHeader, sidecar.kzgCommitments, sidecar.kzgCommitmentsInclusionProof, cellsAndKzgProofs);
255
263
  }
264
+ /**
265
+ * In Gloas, data column sidecars have a simplified structure with `slot` and `beaconBlockRoot`
266
+ * instead of `signedBlockHeader`, `kzgCommitments`, and `kzgCommitmentsInclusionProof`.
267
+ */
268
+ export function getDataColumnSidecarsForGloas(slot, beaconBlockRoot, cellsAndKzgProofs) {
269
+ // No need to create data column sidecars if there are no blobs
270
+ if (cellsAndKzgProofs.length === 0) {
271
+ return [];
272
+ }
273
+ const sidecars = [];
274
+ for (let columnIndex = 0; columnIndex < NUMBER_OF_COLUMNS; columnIndex++) {
275
+ const column = [];
276
+ const kzgProofs = [];
277
+ for (const { cells, proofs } of cellsAndKzgProofs) {
278
+ column.push(cells[columnIndex]);
279
+ kzgProofs.push(proofs[columnIndex]);
280
+ }
281
+ sidecars.push({
282
+ index: columnIndex,
283
+ column,
284
+ kzgProofs,
285
+ slot,
286
+ beaconBlockRoot,
287
+ });
288
+ }
289
+ return sidecars;
290
+ }
256
291
  /**
257
292
  * If we receive more than half of NUMBER_OF_COLUMNS (64) we should recover all remaining columns
258
293
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dataColumns.js","sourceRoot":"","sources":["../../src/util/dataColumns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataColumns.js","sourceRoot":"","sources":["../../src/util/dataColumns.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,12 @@ export declare function getSignedBlockTypeFromBytes(config: ChainForkConfig, byt
5
5
  export declare function getStateTypeFromBytes(config: ChainForkConfig, bytes: Buffer | Uint8Array): SSZTypesFor<ForkAll, "BeaconState">;
6
6
  export declare function getStateSlotFromBytes(bytes: Uint8Array): Slot;
7
7
  export declare function getLightClientHeaderTypeFromBytes(config: ChainForkConfig, bytes: Buffer | Uint8Array): SSZTypesFor<ForkPostAltair, "LightClientHeader">;
8
+ /**
9
+ * Determines if DataColumnSidecar bytes are from Gloas fork by checking the SSZ offset structure.
10
+ *
11
+ * The first offset (bytes 8-12) indicates where variable-size data begins:
12
+ * - Gloas: 56 (small fixed section)
13
+ * - Fulu: 356
14
+ */
15
+ export declare function isGloasDataColumnSidecarBytes(bytes: Uint8Array): boolean;
8
16
  //# sourceMappingURL=multifork.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multifork.d.ts","sourceRoot":"","sources":["../../src/util/multifork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,WAAW,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAqBlD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAO3C;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAGrC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAE7D;AAeD,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,WAAW,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAKlD"}
1
+ {"version":3,"file":"multifork.d.ts","sourceRoot":"","sources":["../../src/util/multifork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,OAAO,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,WAAW,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AA0BlD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAO3C;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAGrC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAE7D;AAeD,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,WAAW,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAKlD;AAyBD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAQxE"}
@@ -4,6 +4,10 @@ import { getSlotFromSignedBeaconBlockSerialized } from "./sszBytes.js";
4
4
  * Slot uint64
5
5
  */
6
6
  const SLOT_BYTE_COUNT = 8;
7
+ /**
8
+ * SSZ offset uint32
9
+ */
10
+ const OFFSET_BYTE_COUNT = 4;
7
11
  /**
8
12
  * 8 + 32 = 40
9
13
  * ```
@@ -46,4 +50,37 @@ export function getLightClientHeaderTypeFromBytes(config, bytes) {
46
50
  const slot = bytesToInt(bytes.subarray(SLOT_BYTES_POSITION_IN_LIGHTCLIENTHEADER, SLOT_BYTES_POSITION_IN_LIGHTCLIENTHEADER + SLOT_BYTE_COUNT));
47
51
  return config.getPostAltairForkTypes(slot).LightClientHeader;
48
52
  }
53
+ /**
54
+ * Position of first offset in DataColumnSidecar (after index field)
55
+ *
56
+ * Fulu DataColumnSidecar (6 fields):
57
+ * index: uint64 [fixed - 8 bytes]
58
+ * column: List [variable - 4-byte offset]
59
+ * kzgCommitments: List [variable - 4-byte offset]
60
+ * kzgProofs: List [variable - 4-byte offset]
61
+ * signedBlockHeader: Container [fixed - 208 bytes]
62
+ * kzgCommitmentsInclusionProof: Vector[Bytes32, 4] [fixed - 128 bytes]
63
+ * => First offset value = 8 + 4 + 4 + 4 + 208 + 128 = 356
64
+ *
65
+ * Gloas DataColumnSidecar (5 fields):
66
+ * index: uint64 [fixed - 8 bytes]
67
+ * column: List [variable - 4-byte offset]
68
+ * kzgProofs: List [variable - 4-byte offset]
69
+ * slot: uint64 [fixed - 8 bytes]
70
+ * beaconBlockRoot: Bytes32 [fixed - 32 bytes]
71
+ * => First offset value = 8 + 4 + 4 + 8 + 32 = 56
72
+ */
73
+ const FIRST_OFFSET_POSITION_IN_DATA_COLUMN_SIDECAR = 8;
74
+ const GLOAS_DATA_COLUMN_SIDECAR_FIRST_OFFSET = 56;
75
+ /**
76
+ * Determines if DataColumnSidecar bytes are from Gloas fork by checking the SSZ offset structure.
77
+ *
78
+ * The first offset (bytes 8-12) indicates where variable-size data begins:
79
+ * - Gloas: 56 (small fixed section)
80
+ * - Fulu: 356
81
+ */
82
+ export function isGloasDataColumnSidecarBytes(bytes) {
83
+ const firstOffset = bytesToInt(bytes.subarray(FIRST_OFFSET_POSITION_IN_DATA_COLUMN_SIDECAR, FIRST_OFFSET_POSITION_IN_DATA_COLUMN_SIDECAR + OFFSET_BYTE_COUNT));
84
+ return firstOffset === GLOAS_DATA_COLUMN_SIDECAR_FIRST_OFFSET;
85
+ }
49
86
  //# sourceMappingURL=multifork.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multifork.js","sourceRoot":"","sources":["../../src/util/multifork.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,sCAAsC,EAAC,MAAM,eAAe,CAAC;AAErE;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,MAAM,UAAU,2BAA2B,CACzC,MAAuB,EACvB,KAA0B;IAE1B,MAAM,IAAI,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAuB,EACvB,KAA0B;IAE1B,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,GAAG,eAAe,CAAC,CAAC,CAAC;AAClH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,wCAAwC,GAAG,CAAC,CAAC;AACnD,MAAM,UAAU,iCAAiC,CAC/C,MAAuB,EACvB,KAA0B;IAE1B,MAAM,IAAI,GAAG,UAAU,CACrB,KAAK,CAAC,QAAQ,CAAC,wCAAwC,EAAE,wCAAwC,GAAG,eAAe,CAAC,CACrH,CAAC;IACF,OAAO,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"multifork.js","sourceRoot":"","sources":["../../src/util/multifork.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,sCAAsC,EAAC,MAAM,eAAe,CAAC;AAErE;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,MAAM,UAAU,2BAA2B,CACzC,MAAuB,EACvB,KAA0B;IAE1B,MAAM,IAAI,GAAG,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAuB,EACvB,KAA0B;IAE1B,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,GAAG,eAAe,CAAC,CAAC,CAAC;AAClH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,wCAAwC,GAAG,CAAC,CAAC;AACnD,MAAM,UAAU,iCAAiC,CAC/C,MAAuB,EACvB,KAA0B;IAE1B,MAAM,IAAI,GAAG,UAAU,CACrB,KAAK,CAAC,QAAQ,CAAC,wCAAwC,EAAE,wCAAwC,GAAG,eAAe,CAAC,CACrH,CAAC;IACF,OAAO,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,4CAA4C,GAAG,CAAC,CAAC;AACvD,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAiB;IAC7D,MAAM,WAAW,GAAG,UAAU,CAC5B,KAAK,CAAC,QAAQ,CACZ,4CAA4C,EAC5C,4CAA4C,GAAG,iBAAiB,CACjE,CACF,CAAC;IACF,OAAO,WAAW,KAAK,sCAAsC,CAAC;AAChE,CAAC"}
@@ -7,6 +7,11 @@ export declare class SerializedCache {
7
7
  map: WeakMap<object, Uint8Array>;
8
8
  get(obj: object): Uint8Array | undefined;
9
9
  set(obj: object, serialized: Uint8Array): void;
10
+ /**
11
+ * Replace the internal WeakMap to force GC of all cached entries.
12
+ * Must only be called after all DB writes that may read from this cache have completed,
13
+ * otherwise cached serialized bytes will be unavailable and data will be re-serialized unnecessarily.
14
+ */
10
15
  clear(): void;
11
16
  }
12
17
  //# sourceMappingURL=serializedCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializedCache.d.ts","sourceRoot":"","sources":["../../src/util/serializedCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAiB;IAEjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAI9C,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"serializedCache.d.ts","sourceRoot":"","sources":["../../src/util/serializedCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAiB;IAEjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAI9C;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -11,6 +11,11 @@ export class SerializedCache {
11
11
  set(obj, serialized) {
12
12
  this.map.set(obj, serialized);
13
13
  }
14
+ /**
15
+ * Replace the internal WeakMap to force GC of all cached entries.
16
+ * Must only be called after all DB writes that may read from this cache have completed,
17
+ * otherwise cached serialized bytes will be unavailable and data will be re-serialized unnecessarily.
18
+ */
14
19
  clear() {
15
20
  this.map = new WeakMap();
16
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serializedCache.js","sourceRoot":"","sources":["../../src/util/serializedCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAC1B,GAAG,GAAgC,IAAI,OAAO,EAAE,CAAC;IAEjD,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,UAAsB;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"serializedCache.js","sourceRoot":"","sources":["../../src/util/serializedCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAC1B,GAAG,GAAgC,IAAI,OAAO,EAAE,CAAC;IAEjD,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,UAAsB;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.41.0-dev.555261016d",
14
+ "version": "1.41.0-dev.66fe43ae9e",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -110,10 +110,9 @@
110
110
  "dependencies": {
111
111
  "@chainsafe/as-sha256": "^1.2.0",
112
112
  "@chainsafe/blst": "^2.2.0",
113
- "@chainsafe/discv5": "^11.0.4",
114
- "@chainsafe/enr": "^5.0.1",
115
- "@chainsafe/libp2p-gossipsub": "^14.1.2",
116
- "@chainsafe/libp2p-noise": "^16.1.5",
113
+ "@chainsafe/discv5": "^12.0.0",
114
+ "@chainsafe/enr": "^6.0.0",
115
+ "@chainsafe/libp2p-noise": "^17.0.0",
117
116
  "@chainsafe/persistent-merkle-tree": "^1.2.1",
118
117
  "@chainsafe/prometheus-gc-stats": "^1.0.0",
119
118
  "@chainsafe/pubkey-index-map": "^3.0.0",
@@ -125,39 +124,38 @@
125
124
  "@fastify/cors": "^10.0.1",
126
125
  "@fastify/swagger": "^9.0.0",
127
126
  "@fastify/swagger-ui": "^5.0.1",
128
- "@libp2p/bootstrap": "^11.0.32",
129
- "@libp2p/crypto": "^5.0.15",
130
- "@libp2p/identify": "^3.0.27",
131
- "@libp2p/interface": "^2.7.0",
132
- "@libp2p/mdns": "^11.0.32",
133
- "@libp2p/mplex": "^11.0.32",
134
- "@libp2p/peer-id": "^5.1.0",
135
- "@libp2p/prometheus-metrics": "^4.3.15",
136
- "@libp2p/tcp": "^10.1.8",
137
- "@lodestar/api": "^1.41.0-dev.555261016d",
138
- "@lodestar/config": "^1.41.0-dev.555261016d",
139
- "@lodestar/db": "^1.41.0-dev.555261016d",
140
- "@lodestar/fork-choice": "^1.41.0-dev.555261016d",
141
- "@lodestar/light-client": "^1.41.0-dev.555261016d",
142
- "@lodestar/logger": "^1.41.0-dev.555261016d",
143
- "@lodestar/params": "^1.41.0-dev.555261016d",
144
- "@lodestar/reqresp": "^1.41.0-dev.555261016d",
145
- "@lodestar/state-transition": "^1.41.0-dev.555261016d",
146
- "@lodestar/types": "^1.41.0-dev.555261016d",
147
- "@lodestar/utils": "^1.41.0-dev.555261016d",
148
- "@lodestar/validator": "^1.41.0-dev.555261016d",
149
- "@multiformats/multiaddr": "^12.1.3",
150
- "datastore-core": "^10.0.2",
151
- "datastore-fs": "^10.0.6",
152
- "datastore-level": "^11.0.3",
127
+ "@libp2p/bootstrap": "^12.0.13",
128
+ "@libp2p/crypto": "^5.1.13",
129
+ "@libp2p/gossipsub": "^15.0.14",
130
+ "@libp2p/identify": "^4.0.12",
131
+ "@libp2p/interface": "^3.1.0",
132
+ "@libp2p/mdns": "^12.0.13",
133
+ "@libp2p/mplex": "^12.0.13",
134
+ "@libp2p/peer-id": "^6.0.4",
135
+ "@libp2p/prometheus-metrics": "^5.0.13",
136
+ "@libp2p/tcp": "^11.0.12",
137
+ "@lodestar/api": "^1.41.0-dev.66fe43ae9e",
138
+ "@lodestar/config": "^1.41.0-dev.66fe43ae9e",
139
+ "@lodestar/db": "^1.41.0-dev.66fe43ae9e",
140
+ "@lodestar/fork-choice": "^1.41.0-dev.66fe43ae9e",
141
+ "@lodestar/light-client": "^1.41.0-dev.66fe43ae9e",
142
+ "@lodestar/logger": "^1.41.0-dev.66fe43ae9e",
143
+ "@lodestar/params": "^1.41.0-dev.66fe43ae9e",
144
+ "@lodestar/reqresp": "^1.41.0-dev.66fe43ae9e",
145
+ "@lodestar/state-transition": "^1.41.0-dev.66fe43ae9e",
146
+ "@lodestar/types": "^1.41.0-dev.66fe43ae9e",
147
+ "@lodestar/utils": "^1.41.0-dev.66fe43ae9e",
148
+ "@lodestar/validator": "^1.41.0-dev.66fe43ae9e",
149
+ "@multiformats/multiaddr": "^13.0.1",
150
+ "datastore-core": "^11.0.2",
151
+ "datastore-fs": "^11.0.2",
152
+ "datastore-level": "^12.0.2",
153
153
  "deepmerge": "^4.3.1",
154
- "fastify": "^5.7.4",
155
- "interface-datastore": "^8.3.0",
156
- "it-all": "^3.0.4",
157
- "it-pipe": "^3.0.1",
154
+ "fastify": "^5.8.1",
155
+ "interface-datastore": "^9.0.2",
158
156
  "jwt-simple": "0.5.6",
159
- "libp2p": "2.9.0",
160
- "multiformats": "^11.0.1",
157
+ "libp2p": "3.1.5",
158
+ "multiformats": "^13.4.2",
161
159
  "prom-client": "^15.1.0",
162
160
  "qs": "^6.11.1",
163
161
  "strict-event-emitter-types": "^2.0.0",
@@ -167,14 +165,13 @@
167
165
  },
168
166
  "devDependencies": {
169
167
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
170
- "@libp2p/interface-internal": "^2.3.18",
171
- "@libp2p/logger": "^5.1.21",
172
- "@lodestar/spec-test-util": "^1.41.0-dev.555261016d",
168
+ "@libp2p/interface-internal": "^3.0.12",
169
+ "@libp2p/logger": "^6.2.2",
170
+ "@libp2p/utils": "^7.0.12",
171
+ "@lodestar/spec-test-util": "^1.41.0-dev.66fe43ae9e",
173
172
  "@types/js-yaml": "^4.0.5",
174
173
  "@types/qs": "^6.9.7",
175
174
  "@types/tmp": "^0.2.3",
176
- "it-drain": "^3.0.3",
177
- "it-pair": "^2.0.6",
178
175
  "js-yaml": "^4.1.0",
179
176
  "rewiremock": "^3.14.5",
180
177
  "rimraf": "^4.4.1",
@@ -188,5 +185,5 @@
188
185
  "beacon",
189
186
  "blockchain"
190
187
  ],
191
- "gitHead": "30f9ebf9ffb25c7b925adf8879690e6c7bff68d6"
188
+ "gitHead": "dce893217b6d78a08dddd2706f1707c429473141"
192
189
  }
@@ -1,6 +1,8 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ApiError, ApplicationMethods} from "@lodestar/api/server";
3
+ import {PayloadStatus} from "@lodestar/fork-choice";
3
4
  import {
5
+ BUILDER_INDEX_SELF_BUILD,
4
6
  ForkPostBellatrix,
5
7
  ForkPostFulu,
6
8
  ForkPreGloas,
@@ -27,6 +29,7 @@ import {
27
29
  WithOptionalBytes,
28
30
  deneb,
29
31
  fulu,
32
+ gloas,
30
33
  isDenebBlockContents,
31
34
  sszTypesFor,
32
35
  } from "@lodestar/types";
@@ -42,6 +45,7 @@ import {
42
45
  ProduceFullBellatrix,
43
46
  ProduceFullDeneb,
44
47
  ProduceFullFulu,
48
+ ProduceFullGloas,
45
49
  } from "../../../../chain/produceBlock/index.js";
46
50
  import {validateGossipBlock} from "../../../../chain/validation/block.js";
47
51
  import {OpSource} from "../../../../chain/validatorMonitor.js";
@@ -51,7 +55,7 @@ import {
51
55
  kzgCommitmentToVersionedHash,
52
56
  reconstructBlobs,
53
57
  } from "../../../../util/blobs.js";
54
- import {getDataColumnSidecarsFromBlock} from "../../../../util/dataColumns.js";
58
+ import {getDataColumnSidecarsForGloas, getDataColumnSidecarsFromBlock} from "../../../../util/dataColumns.js";
55
59
  import {isOptimisticBlock} from "../../../../util/forkChoice.js";
56
60
  import {kzg} from "../../../../util/kzg.js";
57
61
  import {promiseAllMaybeAsync} from "../../../../util/promises.js";
@@ -93,6 +97,7 @@ export function getBeaconBlockApi({
93
97
  const fork = config.getForkName(slot);
94
98
  const blockRoot = toRootHex(chain.config.getForkTypes(slot).BeaconBlock.hashTreeRoot(signedBlock.message));
95
99
 
100
+ // TODO GLOAS: handle new BlockInput type
96
101
  const blockForImport = chain.seenBlockInputCache.getByBlock({
97
102
  block: signedBlock,
98
103
  source: BlockInputSource.api,
@@ -201,7 +206,7 @@ export function getBeaconBlockApi({
201
206
  case routes.beacon.BroadcastValidation.consensus: {
202
207
  // check if this beacon node produced the block else run validations
203
208
  if (!blockLocallyProduced) {
204
- const parentBlock = chain.forkChoice.getBlock(signedBlock.message.parentRoot);
209
+ const parentBlock = chain.forkChoice.getBlockDefaultStatus(signedBlock.message.parentRoot);
205
210
  if (parentBlock === null) {
206
211
  chain.emitter.emit(ChainEvent.unknownParent, {
207
212
  blockInput: blockForImport,
@@ -309,7 +314,9 @@ export function getBeaconBlockApi({
309
314
  ];
310
315
  const sentPeersArr = await promiseAllMaybeAsync<number | void>(publishPromises);
311
316
 
312
- if (isForkPostFulu(fork)) {
317
+ if (isForkPostGloas(fork)) {
318
+ // After gloas, data columns are not published with the block but when publishing the execution payload envelope
319
+ } else if (isForkPostFulu(fork)) {
313
320
  let columnsPublishedWithZeroPeers = 0;
314
321
  // sent peers per topic are logged in network.publishGossip(), here we only track metrics for it
315
322
  // starting from fulu, we have to push to 128 subnets so need to make sure we have enough sent peers per topic
@@ -632,6 +639,143 @@ export function getBeaconBlockApi({
632
639
  await publishBlock(args, context, opts);
633
640
  },
634
641
 
642
+ async publishExecutionPayloadEnvelope({signedExecutionPayloadEnvelope}) {
643
+ const seenTimestampSec = Date.now() / 1000;
644
+ const envelope = signedExecutionPayloadEnvelope.message;
645
+ const slot = envelope.slot;
646
+ const fork = config.getForkName(slot);
647
+ const blockRootHex = toRootHex(envelope.beaconBlockRoot);
648
+
649
+ if (!isForkPostGloas(fork)) {
650
+ throw new ApiError(400, `publishExecutionPayloadEnvelope not supported for pre-gloas fork=${fork}`);
651
+ }
652
+
653
+ // TODO GLOAS: review checks, do we want to implement `broadcast_validation`?
654
+ const block = chain.forkChoice.getBlockHex(blockRootHex, PayloadStatus.EMPTY);
655
+ if (block === null) {
656
+ throw new ApiError(404, `Block not found for beacon block root ${blockRootHex}`);
657
+ }
658
+ if (block.slot !== slot) {
659
+ throw new ApiError(400, `Envelope slot ${slot} does not match block slot ${block.slot}`);
660
+ }
661
+
662
+ const isSelfBuild = envelope.builderIndex === BUILDER_INDEX_SELF_BUILD;
663
+ let dataColumnSidecars: gloas.DataColumnSidecars = [];
664
+
665
+ if (isSelfBuild) {
666
+ // For self-builds, construct and publish data column sidecars from cached block production data
667
+ const cachedResult = chain.blockProductionCache.get(blockRootHex) as ProduceFullGloas | undefined;
668
+ if (cachedResult === undefined) {
669
+ throw new ApiError(404, `No cached block production result found for block root ${blockRootHex}`);
670
+ }
671
+ if (!isForkPostGloas(cachedResult.fork)) {
672
+ throw new ApiError(400, `Cached block production result is for pre-gloas fork=${cachedResult.fork}`);
673
+ }
674
+ if (cachedResult.type !== BlockType.Full) {
675
+ throw new ApiError(400, "Cached block production result is not full block");
676
+ }
677
+
678
+ if (cachedResult.cells && cachedResult.blobsBundle.commitments.length > 0) {
679
+ const cellsAndProofs = cachedResult.cells.map((rowCells, rowIndex) => ({
680
+ cells: rowCells,
681
+ proofs: cachedResult.blobsBundle.proofs.slice(
682
+ rowIndex * NUMBER_OF_COLUMNS,
683
+ (rowIndex + 1) * NUMBER_OF_COLUMNS
684
+ ),
685
+ }));
686
+
687
+ dataColumnSidecars = getDataColumnSidecarsForGloas(slot, envelope.beaconBlockRoot, cellsAndProofs);
688
+ }
689
+ } else {
690
+ // TODO GLOAS: will this api be used by builders or only for self-building?
691
+ }
692
+
693
+ // TODO GLOAS: Verify execution payload envelope signature
694
+ // For self-builds, the proposer signs with their own validator key
695
+ // For external builders, verify using the builder's registered pubkey
696
+ // Use verify_execution_payload_envelope_signature(state, signed_envelope)
697
+
698
+ // TODO GLOAS: Process execution payload via state transition
699
+ // Call process_execution_payload(state, signed_envelope, execution_engine)
700
+
701
+ // TODO GLOAS: Update fork choice with the execution payload
702
+ // Call on_execution_payload(store, signed_envelope) to update fork choice state
703
+
704
+ // TODO GLOAS: Add envelope and data columns to block input via seenBlockInputCache
705
+ // and trigger block import (Gloas block import requires both beacon block and envelope)
706
+
707
+ const valLogMeta = {
708
+ slot,
709
+ blockRoot: blockRootHex,
710
+ builderIndex: envelope.builderIndex,
711
+ isSelfBuild,
712
+ dataColumns: dataColumnSidecars.length,
713
+ };
714
+
715
+ // If called near a slot boundary (e.g. late in slot N-1), hold briefly so gossip aligns with slot N.
716
+ const msToBlockSlot = computeTimeAtSlot(config, slot, chain.genesisTime) * 1000 - Date.now();
717
+ if (msToBlockSlot <= MAX_API_CLOCK_DISPARITY_MS && msToBlockSlot > 0) {
718
+ await sleep(msToBlockSlot);
719
+ }
720
+
721
+ const delaySec = seenTimestampSec - computeTimeAtSlot(config, slot, chain.genesisTime);
722
+ metrics?.gossipExecutionPayloadEnvelope.elapsedTimeTillReceived.observe({source: OpSource.api}, delaySec);
723
+
724
+ chain.logger.info("Publishing execution payload envelope", valLogMeta);
725
+
726
+ // Publish envelope and data columns
727
+ const publishPromises = [
728
+ // Gossip the signed execution payload envelope first
729
+ () => network.publishSignedExecutionPayloadEnvelope(signedExecutionPayloadEnvelope),
730
+ // For self-builds, publish all data column sidecars
731
+ ...dataColumnSidecars.map((dataColumnSidecar) => () => network.publishDataColumnSidecar(dataColumnSidecar)),
732
+ ];
733
+
734
+ const sentPeersArr = await promiseAllMaybeAsync<number | void>(publishPromises);
735
+
736
+ // Track metrics for data column publishing
737
+ if (dataColumnSidecars.length > 0) {
738
+ let columnsPublishedWithZeroPeers = 0;
739
+ // Skip first entry (envelope), track data columns
740
+ for (let i = 1; i < sentPeersArr.length; i++) {
741
+ const sentPeers = sentPeersArr[i] as number;
742
+ metrics?.dataColumns.sentPeersPerSubnet.observe(sentPeers);
743
+ if (sentPeers === 0) {
744
+ columnsPublishedWithZeroPeers++;
745
+ }
746
+ }
747
+ if (columnsPublishedWithZeroPeers > 0) {
748
+ chain.logger.warn("Published data columns to 0 peers, increased risk of reorg", {
749
+ slot,
750
+ blockRoot: blockRootHex,
751
+ columns: columnsPublishedWithZeroPeers,
752
+ });
753
+ }
754
+
755
+ metrics?.dataColumns.bySource.inc({source: BlockInputSource.api}, dataColumnSidecars.length);
756
+
757
+ if (chain.emitter.listenerCount(routes.events.EventType.dataColumnSidecar)) {
758
+ // TODO GLOAS: revisit this, we likely don't wanna emit KZG commitments anymore
759
+ const cachedResult = chain.blockProductionCache.get(blockRootHex) as ProduceFullGloas | undefined;
760
+ const kzgCommitments = cachedResult?.blobsBundle.commitments.map(toHex) ?? [];
761
+ for (const dataColumnSidecar of dataColumnSidecars) {
762
+ chain.emitter.emit(routes.events.EventType.dataColumnSidecar, {
763
+ blockRoot: blockRootHex,
764
+ slot,
765
+ index: dataColumnSidecar.index,
766
+ kzgCommitments,
767
+ });
768
+ }
769
+ }
770
+ }
771
+
772
+ chain.logger.info("Published execution payload envelope", {
773
+ ...valLogMeta,
774
+ delaySec,
775
+ sentPeers: (sentPeersArr[0] as number) ?? 0,
776
+ });
777
+ },
778
+
635
779
  async getBlobSidecars({blockId, indices}) {
636
780
  assertUniqueItems(indices, "Duplicate indices provided");
637
781
 
@@ -95,14 +95,14 @@ export function getBeaconStateApi({
95
95
  const {state, executionOptimistic, finalized} = await getState(stateId);
96
96
  const currentEpoch = getCurrentEpoch(state);
97
97
  const {validators, balances} = state; // Get the validators sub tree once for all the loop
98
- const {pubkey2index} = chain;
98
+ const {pubkeyCache} = chain;
99
99
 
100
100
  const validatorResponses: routes.beacon.ValidatorResponse[] = [];
101
101
  if (validatorIds.length) {
102
102
  assertUniqueItems(validatorIds, "Duplicate validator IDs provided");
103
103
 
104
104
  for (const id of validatorIds) {
105
- const resp = getStateValidatorIndex(id, state, pubkey2index);
105
+ const resp = getStateValidatorIndex(id, state, pubkeyCache);
106
106
  if (resp.valid) {
107
107
  const validatorIndex = resp.validatorIndex;
108
108
  const validator = validators.getReadonly(validatorIndex);
@@ -127,7 +127,7 @@ export function getBeaconStateApi({
127
127
  if (statuses.length) {
128
128
  assertUniqueItems(statuses, "Duplicate statuses provided");
129
129
 
130
- const validatorsByStatus = filterStateValidatorsByStatus(statuses, state, pubkey2index, currentEpoch);
130
+ const validatorsByStatus = filterStateValidatorsByStatus(statuses, state, pubkeyCache, currentEpoch);
131
131
  return {
132
132
  data: validatorsByStatus,
133
133
  meta: {executionOptimistic, finalized},
@@ -154,7 +154,7 @@ export function getBeaconStateApi({
154
154
 
155
155
  async postStateValidatorIdentities({stateId, validatorIds = []}) {
156
156
  const {state, executionOptimistic, finalized} = await getState(stateId);
157
- const {pubkey2index} = chain;
157
+ const {pubkeyCache} = chain;
158
158
 
159
159
  let validatorIdentities: routes.beacon.ValidatorIdentities;
160
160
 
@@ -163,7 +163,7 @@ export function getBeaconStateApi({
163
163
 
164
164
  validatorIdentities = [];
165
165
  for (const id of validatorIds) {
166
- const resp = getStateValidatorIndex(id, state, pubkey2index);
166
+ const resp = getStateValidatorIndex(id, state, pubkeyCache);
167
167
  if (resp.valid) {
168
168
  const index = resp.validatorIndex;
169
169
  const {pubkey, activationEpoch} = state.validators.getReadonly(index);
@@ -187,9 +187,9 @@ export function getBeaconStateApi({
187
187
 
188
188
  async getStateValidator({stateId, validatorId}) {
189
189
  const {state, executionOptimistic, finalized} = await getState(stateId);
190
- const {pubkey2index} = chain;
190
+ const {pubkeyCache} = chain;
191
191
 
192
- const resp = getStateValidatorIndex(validatorId, state, pubkey2index);
192
+ const resp = getStateValidatorIndex(validatorId, state, pubkeyCache);
193
193
  if (!resp.valid) {
194
194
  throw new ApiError(resp.code, resp.reason);
195
195
  }
@@ -214,7 +214,7 @@ export function getBeaconStateApi({
214
214
 
215
215
  const balances: routes.beacon.ValidatorBalance[] = [];
216
216
  for (const id of validatorIds) {
217
- const resp = getStateValidatorIndex(id, state, chain.pubkey2index);
217
+ const resp = getStateValidatorIndex(id, state, chain.pubkeyCache);
218
218
 
219
219
  if (resp.valid) {
220
220
  balances.push({