@lodestar/beacon-node 1.51.0-dev.ab56d90f0c → 1.51.0-dev.ab8f3f6381

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 (414) hide show
  1. package/lib/api/impl/api.js +1 -1
  2. package/lib/api/impl/api.js.map +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts +2 -1
  4. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/blocks/index.js +29 -34
  6. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  7. package/lib/api/impl/beacon/index.d.ts +2 -1
  8. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/index.js +2 -2
  10. package/lib/api/impl/beacon/index.js.map +1 -1
  11. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/pool/index.js +22 -2
  13. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/utils.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  16. package/lib/api/impl/validator/index.d.ts +6 -0
  17. package/lib/api/impl/validator/index.d.ts.map +1 -1
  18. package/lib/api/impl/validator/index.js +42 -26
  19. package/lib/api/impl/validator/index.js.map +1 -1
  20. package/lib/api/options.d.ts +2 -0
  21. package/lib/api/options.d.ts.map +1 -1
  22. package/lib/api/options.js +1 -0
  23. package/lib/api/options.js.map +1 -1
  24. package/lib/chain/GetBlobsTracker.d.ts +13 -2
  25. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  26. package/lib/chain/GetBlobsTracker.js +85 -27
  27. package/lib/chain/GetBlobsTracker.js.map +1 -1
  28. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  29. package/lib/chain/archiveStore/archiveStore.js +1 -0
  30. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  31. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  32. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  33. package/lib/chain/archiveStore/utils/archiveBlocks.js +61 -97
  34. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  35. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  36. package/lib/chain/blocks/importBlock.js +39 -50
  37. package/lib/chain/blocks/importBlock.js.map +1 -1
  38. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
  39. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  40. package/lib/chain/blocks/importExecutionPayload.js +32 -18
  41. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  42. package/lib/chain/blocks/index.d.ts.map +1 -1
  43. package/lib/chain/blocks/index.js +4 -4
  44. package/lib/chain/blocks/index.js.map +1 -1
  45. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  46. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  47. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  48. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  49. package/lib/chain/blocks/types.d.ts +4 -1
  50. package/lib/chain/blocks/types.d.ts.map +1 -1
  51. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  52. package/lib/chain/blocks/verifyBlock.js +18 -7
  53. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  54. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  55. package/lib/chain/blocks/verifyBlocksDataAvailability.js +8 -1
  56. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  57. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  58. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  59. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  60. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  61. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  62. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  63. package/lib/chain/blocks/verifyBlocksSignatures.js +7 -5
  64. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  65. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  66. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  67. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  68. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  69. package/lib/chain/bls/interface.d.ts +2 -0
  70. package/lib/chain/bls/interface.d.ts.map +1 -1
  71. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  72. package/lib/chain/bls/multithread/index.js +13 -11
  73. package/lib/chain/bls/multithread/index.js.map +1 -1
  74. package/lib/chain/bls/multithread/types.d.ts +1 -1
  75. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  76. package/lib/chain/bls/multithread/worker.js +1 -1
  77. package/lib/chain/bls/multithread/worker.js.map +1 -1
  78. package/lib/chain/bls/singleThread.js +1 -1
  79. package/lib/chain/bls/singleThread.js.map +1 -1
  80. package/lib/chain/bls/utils.js +1 -1
  81. package/lib/chain/bls/utils.js.map +1 -1
  82. package/lib/chain/chain.d.ts +25 -3
  83. package/lib/chain/chain.d.ts.map +1 -1
  84. package/lib/chain/chain.js +123 -10
  85. package/lib/chain/chain.js.map +1 -1
  86. package/lib/chain/emitter.d.ts +6 -0
  87. package/lib/chain/emitter.d.ts.map +1 -1
  88. package/lib/chain/emitter.js +5 -0
  89. package/lib/chain/emitter.js.map +1 -1
  90. package/lib/chain/errors/blockError.d.ts +1 -1
  91. package/lib/chain/errors/blockError.d.ts.map +1 -1
  92. package/lib/chain/errors/blockError.js +1 -1
  93. package/lib/chain/errors/blockError.js.map +1 -1
  94. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  95. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  96. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  97. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  98. package/lib/chain/forkChoice/index.d.ts +11 -1
  99. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  100. package/lib/chain/forkChoice/index.js +11 -0
  101. package/lib/chain/forkChoice/index.js.map +1 -1
  102. package/lib/chain/forkChoiceExecutionEngine.d.ts +53 -0
  103. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  104. package/lib/chain/forkChoiceExecutionEngine.js +121 -0
  105. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  106. package/lib/chain/interface.d.ts +9 -6
  107. package/lib/chain/interface.d.ts.map +1 -1
  108. package/lib/chain/interface.js.map +1 -1
  109. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
  110. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  111. package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
  112. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  113. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  114. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  115. package/lib/chain/opPools/attestationPool.js +15 -4
  116. package/lib/chain/opPools/attestationPool.js.map +1 -1
  117. package/lib/chain/opPools/index.d.ts +1 -0
  118. package/lib/chain/opPools/index.d.ts.map +1 -1
  119. package/lib/chain/opPools/index.js +1 -0
  120. package/lib/chain/opPools/index.js.map +1 -1
  121. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  122. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  123. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  124. package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
  125. package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
  126. package/lib/chain/opPools/singleAttestationPool.js +209 -0
  127. package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
  128. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  129. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  130. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  131. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  132. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  133. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  134. package/lib/chain/opPools/utils.d.ts +1 -1
  135. package/lib/chain/opPools/utils.d.ts.map +1 -1
  136. package/lib/chain/opPools/utils.js +1 -1
  137. package/lib/chain/opPools/utils.js.map +1 -1
  138. package/lib/chain/options.d.ts +5 -1
  139. package/lib/chain/options.d.ts.map +1 -1
  140. package/lib/chain/options.js +0 -1
  141. package/lib/chain/options.js.map +1 -1
  142. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  143. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  144. package/lib/chain/produceBlock/produceBlockBody.js +3 -2
  145. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  146. package/lib/chain/proposerTracker.d.ts +31 -0
  147. package/lib/chain/proposerTracker.d.ts.map +1 -0
  148. package/lib/chain/proposerTracker.js +75 -0
  149. package/lib/chain/proposerTracker.js.map +1 -0
  150. package/lib/chain/regen/interface.d.ts +1 -2
  151. package/lib/chain/regen/interface.d.ts.map +1 -1
  152. package/lib/chain/regen/interface.js +0 -1
  153. package/lib/chain/regen/interface.js.map +1 -1
  154. package/lib/chain/regen/queued.d.ts +1 -1
  155. package/lib/chain/regen/queued.d.ts.map +1 -1
  156. package/lib/chain/regen/queued.js +5 -3
  157. package/lib/chain/regen/queued.js.map +1 -1
  158. package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
  159. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  160. package/lib/chain/validation/executionPayloadBid.js +13 -166
  161. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  162. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  163. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  164. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  165. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  166. package/lib/db/beacon.d.ts +7 -0
  167. package/lib/db/beacon.d.ts.map +1 -1
  168. package/lib/db/beacon.js +34 -0
  169. package/lib/db/beacon.js.map +1 -1
  170. package/lib/db/dataColumnStore.d.ts +1 -1
  171. package/lib/db/dataColumnStore.d.ts.map +1 -1
  172. package/lib/db/dataColumnStore.js +1 -4
  173. package/lib/db/dataColumnStore.js.map +1 -1
  174. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  175. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  176. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  177. package/lib/db/flatFileStore/slotIndex.js +2 -2
  178. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  179. package/lib/db/interface.d.ts +1 -0
  180. package/lib/db/interface.d.ts.map +1 -1
  181. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  182. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  183. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  184. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  185. package/lib/execution/builder/apiClient.d.ts +14 -8
  186. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  187. package/lib/execution/builder/apiClient.js +12 -10
  188. package/lib/execution/builder/apiClient.js.map +1 -1
  189. package/lib/execution/builder/http.d.ts +2 -0
  190. package/lib/execution/builder/http.d.ts.map +1 -1
  191. package/lib/execution/builder/http.js +2 -0
  192. package/lib/execution/builder/http.js.map +1 -1
  193. package/lib/execution/engine/http.d.ts +2 -2
  194. package/lib/execution/engine/http.d.ts.map +1 -1
  195. package/lib/execution/engine/http.js +5 -4
  196. package/lib/execution/engine/http.js.map +1 -1
  197. package/lib/execution/engine/index.d.ts +1 -1
  198. package/lib/execution/engine/index.d.ts.map +1 -1
  199. package/lib/execution/engine/index.js +1 -1
  200. package/lib/execution/engine/index.js.map +1 -1
  201. package/lib/execution/engine/interface.d.ts +17 -3
  202. package/lib/execution/engine/interface.d.ts.map +1 -1
  203. package/lib/execution/engine/interface.js.map +1 -1
  204. package/lib/execution/engine/jsonRpcTransport.d.ts +2 -2
  205. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  206. package/lib/execution/engine/jsonRpcTransport.js +1 -1
  207. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  208. package/lib/execution/engine/restTransport.d.ts +2 -2
  209. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  210. package/lib/execution/engine/restTransport.js.map +1 -1
  211. package/lib/execution/engine/transport.d.ts +1 -12
  212. package/lib/execution/engine/transport.d.ts.map +1 -1
  213. package/lib/execution/engine/types.d.ts.map +1 -1
  214. package/lib/execution/engine/types.js +2 -2
  215. package/lib/execution/engine/types.js.map +1 -1
  216. package/lib/execution/engine/utils.d.ts.map +1 -1
  217. package/lib/execution/engine/utils.js +3 -2
  218. package/lib/execution/engine/utils.js.map +1 -1
  219. package/lib/index.d.ts +1 -0
  220. package/lib/index.d.ts.map +1 -1
  221. package/lib/index.js +2 -0
  222. package/lib/index.js.map +1 -1
  223. package/lib/metrics/metrics/lodestar.d.ts +33 -0
  224. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  225. package/lib/metrics/metrics/lodestar.js +84 -0
  226. package/lib/metrics/metrics/lodestar.js.map +1 -1
  227. package/lib/metrics/server/http.js +5 -5
  228. package/lib/metrics/server/http.js.map +1 -1
  229. package/lib/monitoring/service.js +1 -1
  230. package/lib/monitoring/service.js.map +1 -1
  231. package/lib/network/core/networkCore.d.ts +4 -1
  232. package/lib/network/core/networkCore.d.ts.map +1 -1
  233. package/lib/network/core/networkCore.js +7 -0
  234. package/lib/network/core/networkCore.js.map +1 -1
  235. package/lib/network/core/networkCoreWorker.js +2 -0
  236. package/lib/network/core/networkCoreWorker.js.map +1 -1
  237. package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
  238. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  239. package/lib/network/core/networkCoreWorkerHandler.js +6 -0
  240. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  241. package/lib/network/core/types.d.ts +6 -1
  242. package/lib/network/core/types.d.ts.map +1 -1
  243. package/lib/network/gossip/gossipsub.d.ts +1 -0
  244. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  245. package/lib/network/gossip/gossipsub.js +10 -0
  246. package/lib/network/gossip/gossipsub.js.map +1 -1
  247. package/lib/network/interface.d.ts +2 -0
  248. package/lib/network/interface.d.ts.map +1 -1
  249. package/lib/network/libp2p/index.d.ts.map +1 -1
  250. package/lib/network/libp2p/index.js +5 -1
  251. package/lib/network/libp2p/index.js.map +1 -1
  252. package/lib/network/network.d.ts +6 -1
  253. package/lib/network/network.d.ts.map +1 -1
  254. package/lib/network/network.js +53 -15
  255. package/lib/network/network.js.map +1 -1
  256. package/lib/network/options.d.ts +2 -0
  257. package/lib/network/options.d.ts.map +1 -1
  258. package/lib/network/options.js +2 -0
  259. package/lib/network/options.js.map +1 -1
  260. package/lib/network/peers/peerManager.d.ts +2 -1
  261. package/lib/network/peers/peerManager.d.ts.map +1 -1
  262. package/lib/network/peers/peerManager.js +28 -1
  263. package/lib/network/peers/peerManager.js.map +1 -1
  264. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  265. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  266. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  267. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  268. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  269. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  270. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  271. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  272. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  273. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  274. package/lib/network/peers/utils/subnetMap.js +6 -3
  275. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  276. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  277. package/lib/network/processor/gossipHandlers.js +77 -37
  278. package/lib/network/processor/gossipHandlers.js.map +1 -1
  279. package/lib/network/processor/index.d.ts +6 -0
  280. package/lib/network/processor/index.d.ts.map +1 -1
  281. package/lib/network/processor/index.js +29 -3
  282. package/lib/network/processor/index.js.map +1 -1
  283. package/lib/network/subnets/attnetsService.d.ts +35 -5
  284. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  285. package/lib/network/subnets/attnetsService.js +84 -6
  286. package/lib/network/subnets/attnetsService.js.map +1 -1
  287. package/lib/network/subnets/interface.d.ts +7 -0
  288. package/lib/network/subnets/interface.d.ts.map +1 -1
  289. package/lib/network/subnets/interface.js.map +1 -1
  290. package/lib/node/nodejs.d.ts +3 -1
  291. package/lib/node/nodejs.d.ts.map +1 -1
  292. package/lib/node/nodejs.js +47 -21
  293. package/lib/node/nodejs.js.map +1 -1
  294. package/lib/node/options.d.ts +3 -1
  295. package/lib/node/options.d.ts.map +1 -1
  296. package/lib/node/options.js +4 -2
  297. package/lib/node/options.js.map +1 -1
  298. package/lib/sync/interface.d.ts.map +1 -1
  299. package/lib/sync/interface.js.map +1 -1
  300. package/lib/sync/sync.d.ts +7 -0
  301. package/lib/sync/sync.d.ts.map +1 -1
  302. package/lib/sync/sync.js +61 -3
  303. package/lib/sync/sync.js.map +1 -1
  304. package/lib/sync/unknownBlock.d.ts.map +1 -1
  305. package/lib/sync/unknownBlock.js +42 -18
  306. package/lib/sync/unknownBlock.js.map +1 -1
  307. package/lib/util/execution.d.ts +4 -4
  308. package/lib/util/execution.d.ts.map +1 -1
  309. package/lib/util/execution.js.map +1 -1
  310. package/lib/util/file.d.ts.map +1 -1
  311. package/lib/util/file.js +8 -9
  312. package/lib/util/file.js.map +1 -1
  313. package/lib/util/queue/itemQueue.js +1 -1
  314. package/lib/util/queue/itemQueue.js.map +1 -1
  315. package/lib/util/sszBytes.d.ts +5 -0
  316. package/lib/util/sszBytes.d.ts.map +1 -1
  317. package/lib/util/sszBytes.js +35 -2
  318. package/lib/util/sszBytes.js.map +1 -1
  319. package/package.json +16 -17
  320. package/src/api/impl/api.ts +1 -1
  321. package/src/api/impl/beacon/blocks/index.ts +57 -62
  322. package/src/api/impl/beacon/index.ts +3 -1
  323. package/src/api/impl/beacon/pool/index.ts +31 -1
  324. package/src/api/impl/beacon/state/utils.ts +1 -1
  325. package/src/api/impl/validator/index.ts +47 -30
  326. package/src/api/options.ts +3 -0
  327. package/src/chain/GetBlobsTracker.ts +99 -40
  328. package/src/chain/archiveStore/archiveStore.ts +1 -0
  329. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  330. package/src/chain/blocks/importBlock.ts +60 -71
  331. package/src/chain/blocks/importExecutionPayload.ts +55 -34
  332. package/src/chain/blocks/index.ts +11 -4
  333. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  334. package/src/chain/blocks/types.ts +4 -1
  335. package/src/chain/blocks/verifyBlock.ts +31 -16
  336. package/src/chain/blocks/verifyBlocksDataAvailability.ts +10 -1
  337. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +1 -1
  338. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  339. package/src/chain/blocks/verifyBlocksSignatures.ts +7 -5
  340. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  341. package/src/chain/bls/interface.ts +2 -0
  342. package/src/chain/bls/multithread/index.ts +14 -10
  343. package/src/chain/bls/multithread/types.ts +1 -1
  344. package/src/chain/bls/multithread/worker.ts +1 -5
  345. package/src/chain/bls/singleThread.ts +1 -1
  346. package/src/chain/bls/utils.ts +1 -1
  347. package/src/chain/chain.ts +139 -8
  348. package/src/chain/emitter.ts +7 -0
  349. package/src/chain/errors/blockError.ts +1 -1
  350. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  351. package/src/chain/forkChoice/index.ts +11 -0
  352. package/src/chain/forkChoiceExecutionEngine.ts +197 -0
  353. package/src/chain/interface.ts +9 -5
  354. package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
  355. package/src/chain/opPools/attestationPool.ts +16 -4
  356. package/src/chain/opPools/index.ts +1 -0
  357. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  358. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  359. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  360. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  361. package/src/chain/opPools/utils.ts +1 -1
  362. package/src/chain/options.ts +5 -2
  363. package/src/chain/produceBlock/produceBlockBody.ts +7 -3
  364. package/src/chain/proposerTracker.ts +94 -0
  365. package/src/chain/regen/interface.ts +1 -2
  366. package/src/chain/regen/queued.ts +6 -4
  367. package/src/chain/validation/executionPayloadBid.ts +14 -193
  368. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  369. package/src/db/beacon.ts +44 -0
  370. package/src/db/dataColumnStore.ts +2 -4
  371. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  372. package/src/db/flatFileStore/slotIndex.ts +4 -3
  373. package/src/db/interface.ts +2 -0
  374. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  375. package/src/execution/builder/apiClient.ts +16 -13
  376. package/src/execution/builder/http.ts +4 -0
  377. package/src/execution/engine/http.ts +12 -13
  378. package/src/execution/engine/index.ts +1 -1
  379. package/src/execution/engine/interface.ts +19 -3
  380. package/src/execution/engine/jsonRpcTransport.ts +10 -2
  381. package/src/execution/engine/restTransport.ts +3 -1
  382. package/src/execution/engine/transport.ts +8 -14
  383. package/src/execution/engine/types.ts +3 -1
  384. package/src/execution/engine/utils.ts +4 -2
  385. package/src/index.ts +2 -0
  386. package/src/metrics/metrics/lodestar.ts +85 -0
  387. package/src/metrics/server/http.ts +5 -5
  388. package/src/monitoring/service.ts +1 -1
  389. package/src/network/core/networkCore.ts +11 -1
  390. package/src/network/core/networkCoreWorker.ts +2 -0
  391. package/src/network/core/networkCoreWorkerHandler.ts +8 -1
  392. package/src/network/core/types.ts +6 -1
  393. package/src/network/gossip/gossipsub.ts +11 -0
  394. package/src/network/interface.ts +2 -0
  395. package/src/network/libp2p/index.ts +5 -1
  396. package/src/network/network.ts +55 -19
  397. package/src/network/options.ts +4 -0
  398. package/src/network/peers/peerManager.ts +28 -3
  399. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  400. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  401. package/src/network/peers/utils/subnetMap.ts +6 -3
  402. package/src/network/processor/gossipHandlers.ts +98 -40
  403. package/src/network/processor/index.ts +25 -3
  404. package/src/network/subnets/attnetsService.ts +94 -6
  405. package/src/network/subnets/interface.ts +7 -0
  406. package/src/node/nodejs.ts +58 -22
  407. package/src/node/options.ts +9 -6
  408. package/src/sync/interface.ts +1 -0
  409. package/src/sync/sync.ts +65 -4
  410. package/src/sync/unknownBlock.ts +47 -28
  411. package/src/util/execution.ts +6 -6
  412. package/src/util/file.ts +8 -9
  413. package/src/util/queue/itemQueue.ts +1 -1
  414. package/src/util/sszBytes.ts +42 -2
@@ -0,0 +1,197 @@
1
+ import {ExecutionStatus, IForkChoice, LVHInvalidResponse} from "@lodestar/fork-choice";
2
+ import {ForkName, ForkPostFulu, ForkPreFulu, isForkPostFulu} from "@lodestar/params";
3
+ import {RootHex, bellatrix} from "@lodestar/types";
4
+ import {BlobAndProof} from "@lodestar/types/deneb";
5
+ import {BlobAndProofV2} from "@lodestar/types/fulu";
6
+ import {Logger} from "@lodestar/utils";
7
+ import {ExecutionPayloadBodyV2} from "../execution/engine/types.js";
8
+ import {DATA} from "../execution/engine/utils.js";
9
+ import {
10
+ ClientVersion,
11
+ ExecutionEngineState,
12
+ ExecutionPayloadStatus,
13
+ ForkchoiceUpdatedResult,
14
+ IExecutionEngine,
15
+ PayloadAttributes,
16
+ PayloadId,
17
+ PayloadIdCache,
18
+ VersionedHashes,
19
+ } from "../execution/index.js";
20
+ import {Metrics} from "../metrics/index.js";
21
+ import {ExecutionInvalidSource} from "./forkChoice/index.js";
22
+
23
+ export type ForkChoiceExecutionEngineModules = {
24
+ forkChoice: IForkChoice;
25
+ /** Recompute and switch the chain head, fork choice is already updated when this runs */
26
+ recomputeHeadAfterELInvalidResponse: () => void;
27
+ logger: Logger;
28
+ metrics: Metrics | null;
29
+ };
30
+
31
+ /**
32
+ * The only handle on the execution engine. Payloads are imported optimistically, so every engine verdict that can
33
+ * change fork choice is applied here.
34
+ */
35
+ export class ForkChoiceExecutionEngine {
36
+ private readonly forkChoice: IForkChoice;
37
+ private readonly recomputeHeadAfterELInvalidResponse: () => void;
38
+ private readonly logger: Logger;
39
+ private readonly metrics: Metrics | null;
40
+
41
+ constructor(
42
+ private readonly engine: IExecutionEngine,
43
+ modules: ForkChoiceExecutionEngineModules
44
+ ) {
45
+ this.forkChoice = modules.forkChoice;
46
+ this.recomputeHeadAfterELInvalidResponse = modules.recomputeHeadAfterELInvalidResponse;
47
+ this.logger = modules.logger;
48
+ this.metrics = modules.metrics;
49
+ }
50
+
51
+ get state(): ExecutionEngineState {
52
+ return this.engine.state;
53
+ }
54
+
55
+ get clientVersion(): ClientVersion | null | undefined {
56
+ return this.engine.clientVersion;
57
+ }
58
+
59
+ get payloadIdCache(): PayloadIdCache {
60
+ return this.engine.payloadIdCache;
61
+ }
62
+
63
+ notifyNewPayload(
64
+ ...args: Parameters<IExecutionEngine["notifyNewPayload"]>
65
+ ): ReturnType<IExecutionEngine["notifyNewPayload"]> {
66
+ return this.engine.notifyNewPayload(...args);
67
+ }
68
+
69
+ /**
70
+ * `headBlockRoot` is the root of the node whose payload hash is sent as `headBlockHash`, captured by the caller
71
+ * before the call: root and hash identify the exact fork choice node, gloas variant included.
72
+ *
73
+ * The verdict is applied to fork choice before returning. An INVALID verdict throws when preparing a payload so
74
+ * block production fails, otherwise it resolves to null.
75
+ */
76
+ async notifyForkchoiceUpdate(
77
+ fork: ForkName,
78
+ headBlockRoot: RootHex,
79
+ headBlockHash: RootHex,
80
+ safeBlockHash: RootHex,
81
+ finalizedBlockHash: RootHex,
82
+ payloadAttributes?: PayloadAttributes
83
+ ): Promise<PayloadId | null> {
84
+ const result = await this.engine.notifyForkchoiceUpdate(
85
+ fork,
86
+ headBlockHash,
87
+ safeBlockHash,
88
+ finalizedBlockHash,
89
+ payloadAttributes
90
+ );
91
+ this.applyForkchoiceUpdatedResult(headBlockRoot, headBlockHash, result);
92
+
93
+ if (result.payloadStatus.status === ExecutionPayloadStatus.INVALID) {
94
+ if (payloadAttributes) {
95
+ throw Error(`Invalid prepare payload, validationError=${result.payloadStatus.validationError ?? ""}`);
96
+ }
97
+ return null;
98
+ }
99
+ return result.payloadId;
100
+ }
101
+
102
+ getPayload(...args: Parameters<IExecutionEngine["getPayload"]>): ReturnType<IExecutionEngine["getPayload"]> {
103
+ return this.engine.getPayload(...args);
104
+ }
105
+
106
+ getInclusionList(): Promise<bellatrix.Transactions> {
107
+ return this.engine.getInclusionList();
108
+ }
109
+
110
+ getPayloadBodiesByHashV2(blockHashes: DATA[]): Promise<(ExecutionPayloadBodyV2 | null)[]> {
111
+ return this.engine.getPayloadBodiesByHashV2(blockHashes);
112
+ }
113
+
114
+ getBlobs(
115
+ fork: ForkPostFulu,
116
+ versionedHashes: VersionedHashes,
117
+ buffers?: Uint8Array[]
118
+ ): Promise<BlobAndProofV2[] | null>;
119
+ getBlobs(
120
+ fork: ForkPreFulu,
121
+ versionedHashes: VersionedHashes,
122
+ buffers?: Uint8Array[]
123
+ ): Promise<(BlobAndProof | null)[]>;
124
+ getBlobs(
125
+ fork: ForkName,
126
+ versionedHashes: VersionedHashes,
127
+ buffers?: Uint8Array[]
128
+ ): Promise<BlobAndProofV2[] | (BlobAndProof | null)[] | null> {
129
+ if (isForkPostFulu(fork)) {
130
+ return this.engine.getBlobs(fork, versionedHashes, buffers);
131
+ }
132
+ return this.engine.getBlobs(fork as ForkPreFulu, versionedHashes, buffers);
133
+ }
134
+
135
+ /**
136
+ * Apply an execution engine INVALID verdict to fork choice and move the chain head off the invalid chain
137
+ */
138
+ invalidateExecutionPayloads(lvh: LVHInvalidResponse, source: ExecutionInvalidSource): void {
139
+ const logCtx = {
140
+ source,
141
+ blockRoot: lvh.invalidateFromParentBlockRoot,
142
+ blockHash: lvh.invalidateFromParentBlockHash,
143
+ latestValidHash: lvh.latestValidExecHash ?? "null",
144
+ };
145
+ const applied = this.forkChoice.validateLatestHash(lvh, {strict: source === ExecutionInvalidSource.blockSegment});
146
+ if (!applied) {
147
+ this.logger.warn("Execution engine INVALID verdict not applied to fork choice", logCtx);
148
+ return;
149
+ }
150
+ this.metrics?.forkChoice.executionInvalidations.inc({source});
151
+ this.logger.warn("Invalidated execution payloads in fork choice", logCtx);
152
+
153
+ try {
154
+ this.recomputeHeadAfterELInvalidResponse();
155
+ } catch (e) {
156
+ this.logger.error("Error recomputing head after execution payload invalidation", logCtx, e as Error);
157
+ }
158
+ }
159
+
160
+ private applyForkchoiceUpdatedResult(
161
+ headBlockRoot: RootHex,
162
+ headBlockHash: RootHex,
163
+ result: ForkchoiceUpdatedResult
164
+ ): void {
165
+ const {status, latestValidHash, validationError} = result.payloadStatus;
166
+ const executionStatus = this.forkChoice.getBlockHexAndBlockHash(headBlockRoot, headBlockHash)?.executionStatus;
167
+ try {
168
+ if (status === ExecutionPayloadStatus.INVALID) {
169
+ if (executionStatus === ExecutionStatus.Invalid) {
170
+ return;
171
+ }
172
+ this.logger.error("Execution engine reported INVALID forkchoice head", {
173
+ headBlockRoot,
174
+ headBlockHash,
175
+ latestValidHash: latestValidHash ?? "null",
176
+ validationError: validationError ?? "",
177
+ });
178
+ this.invalidateExecutionPayloads(
179
+ {
180
+ executionStatus: ExecutionStatus.Invalid,
181
+ latestValidExecHash: latestValidHash,
182
+ invalidateFromParentBlockRoot: headBlockRoot,
183
+ invalidateFromParentBlockHash: headBlockHash,
184
+ },
185
+ ExecutionInvalidSource.forkchoiceUpdated
186
+ );
187
+ } else if (status === ExecutionPayloadStatus.VALID && executionStatus === ExecutionStatus.Syncing) {
188
+ this.forkChoice.validateLatestHash(
189
+ {executionStatus: ExecutionStatus.Valid, latestValidExecHash: headBlockHash, blockRoot: headBlockRoot},
190
+ {strict: false}
191
+ );
192
+ }
193
+ } catch (e) {
194
+ this.logger.error("Error applying forkchoice update result", {headBlockRoot, headBlockHash, status}, e as Error);
195
+ }
196
+ }
197
+ }
@@ -1,7 +1,7 @@
1
- import {type PubkeyCache} from "@chainsafe/lodestar-z/pubkeys";
2
1
  import {Type} from "@chainsafe/ssz";
3
2
  import {BeaconConfig} from "@lodestar/config";
4
3
  import {CheckpointWithHex, IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
4
+ import {type PubkeyCache} from "@lodestar/native/pubkeys";
5
5
  import {EpochShuffling, IBeaconStateView} from "@lodestar/state-transition";
6
6
  import {
7
7
  BeaconBlock,
@@ -25,7 +25,7 @@ import {
25
25
  } from "@lodestar/types";
26
26
  import {Logger} from "@lodestar/utils";
27
27
  import {BuilderApiClient} from "../execution/builder/apiClient.js";
28
- import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
28
+ import {IExecutionBuilder} from "../execution/index.js";
29
29
  import {Metrics} from "../metrics/metrics.js";
30
30
  import {BufferPool} from "../util/bufferPool.js";
31
31
  import {IClock} from "../util/clock.js";
@@ -42,6 +42,7 @@ import {BuilderCircuitBreaker} from "./builderCircuitBreaker.js";
42
42
  import {ColumnReconstructionTracker} from "./ColumnReconstructionTracker.js";
43
43
  import {ChainEventEmitter} from "./emitter.js";
44
44
  import {ForkchoiceCaller} from "./forkChoice/index.js";
45
+ import {ForkChoiceExecutionEngine} from "./forkChoiceExecutionEngine.js";
45
46
  import {GetBlobsTracker} from "./GetBlobsTracker.js";
46
47
  import {LightClientServer} from "./lightClient/index.js";
47
48
  import {AggregatedAttestationPool} from "./opPools/aggregatedAttestationPool.js";
@@ -53,11 +54,13 @@ import {
53
54
  OpPool,
54
55
  PayloadAttestationPool,
55
56
  ProposerPreferencesPool,
57
+ SingleAttestationPool,
56
58
  SyncCommitteeMessagePool,
57
59
  SyncContributionAndProofPool,
58
60
  } from "./opPools/index.js";
59
61
  import {IChainOptions} from "./options.js";
60
62
  import {AssembledBlockType, BlockAttributes, BlockType, ProduceResult} from "./produceBlock/produceBlockBody.js";
63
+ import {ProposerTracker} from "./proposerTracker.js";
61
64
  import {IStateRegenerator, RegenCaller} from "./regen/index.js";
62
65
  import {ReprocessController} from "./reprocess.js";
63
66
  import {
@@ -77,8 +80,7 @@ import {PayloadEnvelopeInput, SeenPayloadEnvelopeInput} from "./seenCache/seenPa
77
80
  import {ShufflingCache} from "./shufflingCache.js";
78
81
  import {ValidatorMonitor} from "./validatorMonitor.js";
79
82
 
80
- export {BlockType, type AssembledBlockType};
81
- export {type ProposerPreparationData};
83
+ export {type AssembledBlockType, BlockType, type ProposerPreparationData};
82
84
  export type BlockHash = RootHex;
83
85
 
84
86
  export type StateGetOpts = {
@@ -99,7 +101,7 @@ export interface IBeaconChain {
99
101
  readonly genesisTime: UintNum64;
100
102
  readonly genesisValidatorsRoot: Root;
101
103
  earliestAvailableSlot: Slot;
102
- readonly executionEngine: IExecutionEngine;
104
+ readonly executionEngine: ForkChoiceExecutionEngine;
103
105
  readonly executionBuilder?: IExecutionBuilder;
104
106
  readonly builderCircuitBreaker: BuilderCircuitBreaker;
105
107
  readonly builderApiClient: BuilderApiClient;
@@ -127,6 +129,8 @@ export interface IBeaconChain {
127
129
  // Ops pool
128
130
  readonly attestationPool: AttestationPool;
129
131
  readonly aggregatedAttestationPool: AggregatedAttestationPool;
132
+ readonly singleAttestationPool: SingleAttestationPool;
133
+ readonly proposerTracker: ProposerTracker;
130
134
  readonly syncCommitteeMessagePool: SyncCommitteeMessagePool;
131
135
  readonly syncContributionAndProofPool: SyncContributionAndProofPool;
132
136
  readonly executionPayloadBidPool: ExecutionPayloadBidPool;