@lodestar/beacon-node 1.42.0-dev.7b5ce3932d → 1.42.0-dev.7df0e2c8fa

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 (346) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/pool/index.js +1 -1
  4. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  5. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  6. package/lib/api/impl/beacon/state/index.js +27 -32
  7. package/lib/api/impl/beacon/state/index.js.map +1 -1
  8. package/lib/api/impl/beacon/state/utils.d.ts +4 -4
  9. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/state/utils.js +7 -10
  11. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  12. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  13. package/lib/api/impl/lodestar/index.js +4 -6
  14. package/lib/api/impl/lodestar/index.js.map +1 -1
  15. package/lib/api/impl/proof/index.d.ts.map +1 -1
  16. package/lib/api/impl/proof/index.js +2 -6
  17. package/lib/api/impl/proof/index.js.map +1 -1
  18. package/lib/api/impl/validator/index.d.ts.map +1 -1
  19. package/lib/api/impl/validator/index.js +27 -27
  20. package/lib/api/impl/validator/index.js.map +1 -1
  21. package/lib/api/impl/validator/utils.d.ts +2 -2
  22. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  23. package/lib/api/impl/validator/utils.js +3 -3
  24. package/lib/api/impl/validator/utils.js.map +1 -1
  25. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +2 -6
  26. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  27. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +3 -23
  28. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  29. package/lib/chain/archiveStore/historicalState/worker.js +1 -0
  30. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  31. package/lib/chain/balancesCache.d.ts +2 -2
  32. package/lib/chain/balancesCache.d.ts.map +1 -1
  33. package/lib/chain/balancesCache.js +4 -4
  34. package/lib/chain/balancesCache.js.map +1 -1
  35. package/lib/chain/blocks/blockInput/types.d.ts +1 -0
  36. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  37. package/lib/chain/blocks/blockInput/types.js +1 -0
  38. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  39. package/lib/chain/blocks/importBlock.d.ts +3 -3
  40. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  41. package/lib/chain/blocks/importBlock.js +9 -9
  42. package/lib/chain/blocks/importBlock.js.map +1 -1
  43. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  44. package/lib/chain/blocks/importExecutionPayload.js +4 -5
  45. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  46. package/lib/chain/blocks/index.js +1 -1
  47. package/lib/chain/blocks/index.js.map +1 -1
  48. package/lib/chain/blocks/types.d.ts +2 -2
  49. package/lib/chain/blocks/types.d.ts.map +1 -1
  50. package/lib/chain/blocks/types.js.map +1 -1
  51. package/lib/chain/blocks/utils/checkpoint.d.ts +2 -2
  52. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -1
  53. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  54. package/lib/chain/blocks/verifyBlock.d.ts +2 -2
  55. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  56. package/lib/chain/blocks/verifyBlock.js +4 -4
  57. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  58. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +3 -3
  59. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  60. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +3 -3
  61. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  62. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  63. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  64. package/lib/chain/blocks/verifyBlocksSignatures.js +1 -1
  65. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  66. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -3
  67. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  68. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -3
  69. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  70. package/lib/chain/chain.d.ts +12 -12
  71. package/lib/chain/chain.d.ts.map +1 -1
  72. package/lib/chain/chain.js +47 -39
  73. package/lib/chain/chain.js.map +1 -1
  74. package/lib/chain/emitter.d.ts +2 -2
  75. package/lib/chain/emitter.d.ts.map +1 -1
  76. package/lib/chain/errors/blockError.d.ts +4 -4
  77. package/lib/chain/errors/blockError.d.ts.map +1 -1
  78. package/lib/chain/forkChoice/index.d.ts +4 -4
  79. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  80. package/lib/chain/forkChoice/index.js +27 -23
  81. package/lib/chain/forkChoice/index.js.map +1 -1
  82. package/lib/chain/initState.d.ts +2 -2
  83. package/lib/chain/initState.d.ts.map +1 -1
  84. package/lib/chain/initState.js +1 -1
  85. package/lib/chain/initState.js.map +1 -1
  86. package/lib/chain/interface.d.ts +11 -12
  87. package/lib/chain/interface.d.ts.map +1 -1
  88. package/lib/chain/lightClient/index.d.ts +2 -2
  89. package/lib/chain/lightClient/index.d.ts.map +1 -1
  90. package/lib/chain/lightClient/index.js +4 -4
  91. package/lib/chain/lightClient/index.js.map +1 -1
  92. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -6
  93. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  94. package/lib/chain/opPools/aggregatedAttestationPool.js +10 -13
  95. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  96. package/lib/chain/opPools/opPool.d.ts +3 -3
  97. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  98. package/lib/chain/opPools/opPool.js +7 -7
  99. package/lib/chain/opPools/opPool.js.map +1 -1
  100. package/lib/chain/opPools/utils.d.ts +2 -2
  101. package/lib/chain/opPools/utils.d.ts.map +1 -1
  102. package/lib/chain/opPools/utils.js +1 -1
  103. package/lib/chain/opPools/utils.js.map +1 -1
  104. package/lib/chain/prepareNextSlot.d.ts +2 -2
  105. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  106. package/lib/chain/prepareNextSlot.js +3 -3
  107. package/lib/chain/prepareNextSlot.js.map +1 -1
  108. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +4 -4
  109. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  110. package/lib/chain/produceBlock/computeNewStateRoot.js +3 -4
  111. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  112. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
  113. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  114. package/lib/chain/produceBlock/produceBlockBody.js +12 -16
  115. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  116. package/lib/chain/regen/interface.d.ts +13 -13
  117. package/lib/chain/regen/interface.d.ts.map +1 -1
  118. package/lib/chain/regen/queued.d.ts +14 -14
  119. package/lib/chain/regen/queued.d.ts.map +1 -1
  120. package/lib/chain/regen/queued.js.map +1 -1
  121. package/lib/chain/regen/regen.d.ts +6 -5
  122. package/lib/chain/regen/regen.d.ts.map +1 -1
  123. package/lib/chain/regen/regen.js +6 -6
  124. package/lib/chain/regen/regen.js.map +1 -1
  125. package/lib/chain/serializeState.d.ts +2 -2
  126. package/lib/chain/serializeState.d.ts.map +1 -1
  127. package/lib/chain/serializeState.js +1 -1
  128. package/lib/chain/serializeState.js.map +1 -1
  129. package/lib/chain/shufflingCache.d.ts +2 -2
  130. package/lib/chain/shufflingCache.d.ts.map +1 -1
  131. package/lib/chain/shufflingCache.js +3 -4
  132. package/lib/chain/shufflingCache.js.map +1 -1
  133. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +6 -6
  134. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  135. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  136. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +11 -11
  137. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  138. package/lib/chain/stateCache/persistentCheckpointsCache.js +12 -16
  139. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  140. package/lib/chain/stateCache/types.d.ts +14 -14
  141. package/lib/chain/stateCache/types.d.ts.map +1 -1
  142. package/lib/chain/stateCache/types.js.map +1 -1
  143. package/lib/chain/validation/attesterSlashing.js +3 -3
  144. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  145. package/lib/chain/validation/blobSidecar.js +1 -1
  146. package/lib/chain/validation/blobSidecar.js.map +1 -1
  147. package/lib/chain/validation/block.d.ts.map +1 -1
  148. package/lib/chain/validation/block.js +3 -3
  149. package/lib/chain/validation/block.js.map +1 -1
  150. package/lib/chain/validation/blsToExecutionChange.js +2 -2
  151. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  152. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  153. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  154. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  155. package/lib/chain/validation/executionPayloadBid.js +4 -4
  156. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  157. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  158. package/lib/chain/validation/executionPayloadEnvelope.js +2 -3
  159. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  160. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  161. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  162. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  163. package/lib/chain/validation/proposerSlashing.js +1 -1
  164. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  165. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  166. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  167. package/lib/chain/validation/signatureSets/contributionAndProof.js +1 -1
  168. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  169. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  170. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  171. package/lib/chain/validation/signatureSets/syncCommittee.js +1 -1
  172. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  173. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -2
  174. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  175. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  176. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  177. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  178. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -1
  179. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  180. package/lib/chain/validation/syncCommittee.d.ts +4 -4
  181. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  182. package/lib/chain/validation/syncCommittee.js +13 -12
  183. package/lib/chain/validation/syncCommittee.js.map +1 -1
  184. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  185. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  186. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  187. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  188. package/lib/chain/validation/voluntaryExit.js +3 -3
  189. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  190. package/lib/chain/validatorMonitor.d.ts +3 -3
  191. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  192. package/lib/chain/validatorMonitor.js +9 -7
  193. package/lib/chain/validatorMonitor.js.map +1 -1
  194. package/lib/metrics/metrics/lodestar.d.ts +12 -4
  195. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  196. package/lib/metrics/metrics/lodestar.js +19 -15
  197. package/lib/metrics/metrics/lodestar.js.map +1 -1
  198. package/lib/network/gossip/encoding.d.ts.map +1 -1
  199. package/lib/network/gossip/encoding.js +15 -0
  200. package/lib/network/gossip/encoding.js.map +1 -1
  201. package/lib/network/interface.d.ts +4 -2
  202. package/lib/network/interface.d.ts.map +1 -1
  203. package/lib/network/libp2p/index.d.ts.map +1 -1
  204. package/lib/network/libp2p/index.js +5 -0
  205. package/lib/network/libp2p/index.js.map +1 -1
  206. package/lib/network/network.d.ts +4 -2
  207. package/lib/network/network.d.ts.map +1 -1
  208. package/lib/network/network.js +9 -3
  209. package/lib/network/network.js.map +1 -1
  210. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  211. package/lib/network/processor/extractSlotRootFns.js +1 -1
  212. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  213. package/lib/network/processor/gossipHandlers.js +9 -7
  214. package/lib/network/processor/gossipHandlers.js.map +1 -1
  215. package/lib/network/processor/index.d.ts +12 -7
  216. package/lib/network/processor/index.d.ts.map +1 -1
  217. package/lib/network/processor/index.js +99 -78
  218. package/lib/network/processor/index.js.map +1 -1
  219. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  220. package/lib/network/reqresp/ReqRespBeaconNode.js +9 -0
  221. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  222. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts +8 -0
  223. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -0
  224. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +69 -0
  225. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -0
  226. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts +6 -0
  227. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -0
  228. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +28 -0
  229. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -0
  230. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  231. package/lib/network/reqresp/handlers/index.js +11 -1
  232. package/lib/network/reqresp/handlers/index.js.map +1 -1
  233. package/lib/network/reqresp/protocols.d.ts +2 -0
  234. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  235. package/lib/network/reqresp/protocols.js +10 -0
  236. package/lib/network/reqresp/protocols.js.map +1 -1
  237. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  238. package/lib/network/reqresp/rateLimit.js +8 -0
  239. package/lib/network/reqresp/rateLimit.js.map +1 -1
  240. package/lib/network/reqresp/score.d.ts.map +1 -1
  241. package/lib/network/reqresp/score.js +2 -0
  242. package/lib/network/reqresp/score.js.map +1 -1
  243. package/lib/network/reqresp/types.d.ts +8 -2
  244. package/lib/network/reqresp/types.d.ts.map +1 -1
  245. package/lib/network/reqresp/types.js +7 -1
  246. package/lib/network/reqresp/types.js.map +1 -1
  247. package/lib/node/nodejs.d.ts +2 -2
  248. package/lib/node/nodejs.d.ts.map +1 -1
  249. package/lib/node/nodejs.js +1 -4
  250. package/lib/node/nodejs.js.map +1 -1
  251. package/lib/node/notifier.d.ts.map +1 -1
  252. package/lib/node/notifier.js +3 -3
  253. package/lib/node/notifier.js.map +1 -1
  254. package/lib/sync/backfill/backfill.d.ts +2 -2
  255. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  256. package/lib/sync/backfill/backfill.js +2 -2
  257. package/lib/sync/backfill/backfill.js.map +1 -1
  258. package/lib/sync/unknownBlock.d.ts +3 -9
  259. package/lib/sync/unknownBlock.d.ts.map +1 -1
  260. package/lib/sync/unknownBlock.js +8 -41
  261. package/lib/sync/unknownBlock.js.map +1 -1
  262. package/lib/util/types.d.ts +2 -0
  263. package/lib/util/types.d.ts.map +1 -1
  264. package/lib/util/types.js +1 -0
  265. package/lib/util/types.js.map +1 -1
  266. package/package.json +16 -16
  267. package/src/api/impl/beacon/blocks/index.ts +1 -1
  268. package/src/api/impl/beacon/pool/index.ts +1 -1
  269. package/src/api/impl/beacon/state/index.ts +29 -41
  270. package/src/api/impl/beacon/state/utils.ts +11 -25
  271. package/src/api/impl/lodestar/index.ts +4 -8
  272. package/src/api/impl/proof/index.ts +2 -9
  273. package/src/api/impl/validator/index.ts +29 -41
  274. package/src/api/impl/validator/utils.ts +4 -7
  275. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +6 -36
  276. package/src/chain/archiveStore/historicalState/worker.ts +1 -0
  277. package/src/chain/balancesCache.ts +5 -11
  278. package/src/chain/blocks/blockInput/types.ts +1 -0
  279. package/src/chain/blocks/importBlock.ts +11 -14
  280. package/src/chain/blocks/importExecutionPayload.ts +6 -11
  281. package/src/chain/blocks/index.ts +1 -1
  282. package/src/chain/blocks/types.ts +2 -2
  283. package/src/chain/blocks/utils/checkpoint.ts +2 -2
  284. package/src/chain/blocks/verifyBlock.ts +5 -10
  285. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +5 -10
  286. package/src/chain/blocks/verifyBlocksSignatures.ts +3 -3
  287. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -8
  288. package/src/chain/chain.ts +75 -67
  289. package/src/chain/emitter.ts +2 -2
  290. package/src/chain/errors/blockError.ts +4 -4
  291. package/src/chain/forkChoice/index.ts +33 -42
  292. package/src/chain/initState.ts +7 -2
  293. package/src/chain/interface.ts +12 -13
  294. package/src/chain/lightClient/index.ts +9 -22
  295. package/src/chain/opPools/aggregatedAttestationPool.ts +15 -21
  296. package/src/chain/opPools/opPool.ts +13 -14
  297. package/src/chain/opPools/utils.ts +3 -3
  298. package/src/chain/prepareNextSlot.ts +6 -8
  299. package/src/chain/produceBlock/computeNewStateRoot.ts +6 -10
  300. package/src/chain/produceBlock/produceBlockBody.ts +22 -49
  301. package/src/chain/regen/interface.ts +13 -17
  302. package/src/chain/regen/queued.ts +16 -20
  303. package/src/chain/regen/regen.ts +16 -17
  304. package/src/chain/serializeState.ts +3 -3
  305. package/src/chain/shufflingCache.ts +5 -7
  306. package/src/chain/stateCache/fifoBlockStateCache.ts +7 -7
  307. package/src/chain/stateCache/persistentCheckpointsCache.ts +27 -42
  308. package/src/chain/stateCache/types.ts +14 -18
  309. package/src/chain/validation/attesterSlashing.ts +3 -3
  310. package/src/chain/validation/blobSidecar.ts +1 -1
  311. package/src/chain/validation/block.ts +2 -4
  312. package/src/chain/validation/blsToExecutionChange.ts +2 -2
  313. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  314. package/src/chain/validation/executionPayloadBid.ts +3 -7
  315. package/src/chain/validation/executionPayloadEnvelope.ts +2 -8
  316. package/src/chain/validation/payloadAttestationMessage.ts +2 -4
  317. package/src/chain/validation/proposerSlashing.ts +1 -1
  318. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -7
  319. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -7
  320. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -2
  321. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -7
  322. package/src/chain/validation/syncCommittee.ts +21 -20
  323. package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -10
  324. package/src/chain/validation/voluntaryExit.ts +3 -8
  325. package/src/chain/validatorMonitor.ts +12 -11
  326. package/src/metrics/metrics/lodestar.ts +23 -19
  327. package/src/network/gossip/encoding.ts +16 -0
  328. package/src/network/interface.ts +15 -2
  329. package/src/network/libp2p/index.ts +5 -0
  330. package/src/network/network.ts +32 -4
  331. package/src/network/processor/extractSlotRootFns.ts +1 -1
  332. package/src/network/processor/gossipHandlers.ts +9 -8
  333. package/src/network/processor/index.ts +110 -89
  334. package/src/network/reqresp/ReqRespBeaconNode.ts +13 -0
  335. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +94 -0
  336. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +43 -0
  337. package/src/network/reqresp/handlers/index.ts +12 -0
  338. package/src/network/reqresp/protocols.ts +12 -0
  339. package/src/network/reqresp/rateLimit.ts +18 -0
  340. package/src/network/reqresp/score.ts +2 -0
  341. package/src/network/reqresp/types.ts +13 -0
  342. package/src/node/nodejs.ts +3 -5
  343. package/src/node/notifier.ts +4 -10
  344. package/src/sync/backfill/backfill.ts +3 -3
  345. package/src/sync/unknownBlock.ts +10 -50
  346. package/src/util/types.ts +6 -0
@@ -1,13 +1,7 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {ExecutionStatus, ProtoBlock} from "@lodestar/fork-choice";
3
3
  import {EPOCHS_PER_SYNC_COMMITTEE_PERIOD, SLOTS_PER_EPOCH} from "@lodestar/params";
4
- import {
5
- CachedBeaconStateAllForks,
6
- computeEpochAtSlot,
7
- computeStartSlotAtEpoch,
8
- isExecutionCachedStateType,
9
- isMergeTransitionComplete,
10
- } from "@lodestar/state-transition";
4
+ import {IBeaconStateView, computeEpochAtSlot, computeStartSlotAtEpoch} from "@lodestar/state-transition";
11
5
  import {Epoch} from "@lodestar/types";
12
6
  import {ErrorAborted, Logger, prettyBytes, prettyBytesShort, sleep} from "@lodestar/utils";
13
7
  import {IBeaconChain} from "../chain/index.js";
@@ -161,7 +155,7 @@ function timeToNextHalfSlot(config: BeaconConfig, chain: IBeaconChain, isFirstTi
161
155
  function getHeadExecutionInfo(
162
156
  config: BeaconConfig,
163
157
  clockEpoch: Epoch,
164
- headState: CachedBeaconStateAllForks,
158
+ headState: IBeaconStateView,
165
159
  headInfo: ProtoBlock
166
160
  ): string[] {
167
161
  if (clockEpoch < config.BELLATRIX_FORK_EPOCH) {
@@ -171,8 +165,8 @@ function getHeadExecutionInfo(
171
165
  const executionStatusStr = headInfo.executionStatus.toLowerCase();
172
166
 
173
167
  // Add execution status to notifier only if head is on/post bellatrix
174
- if (isExecutionCachedStateType(headState)) {
175
- if (isMergeTransitionComplete(headState)) {
168
+ if (headState.isExecutionStateType) {
169
+ if (headState.isMergeTransitionComplete) {
176
170
  const executionPayloadHashInfo =
177
171
  headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadBlockHash : "empty";
178
172
  const executionPayloadNumberInfo =
@@ -2,7 +2,7 @@ import {EventEmitter} from "node:events";
2
2
  import {StrictEventEmitter} from "strict-event-emitter-types";
3
3
  import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
4
4
  import {SLOTS_PER_EPOCH} from "@lodestar/params";
5
- import {BeaconStateAllForks, blockToHeader, computeAnchorCheckpoint} from "@lodestar/state-transition";
5
+ import {IBeaconStateView, blockToHeader} from "@lodestar/state-transition";
6
6
  import {Root, SignedBeaconBlock, Slot, phase0, ssz} from "@lodestar/types";
7
7
  import {ErrorAborted, Logger, byteArrayEquals, sleep, toRootHex} from "@lodestar/utils";
8
8
  import {IBeaconChain} from "../../chain/index.js";
@@ -29,7 +29,7 @@ export type BackfillSyncModules = {
29
29
  config: BeaconConfig;
30
30
  logger: Logger;
31
31
  metrics: Metrics | null;
32
- anchorState: BeaconStateAllForks;
32
+ anchorState: IBeaconStateView;
33
33
  wsCheckpoint?: phase0.Checkpoint;
34
34
  signal: AbortSignal;
35
35
  };
@@ -231,7 +231,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
231
231
  ): Promise<T> {
232
232
  const {config, anchorState, db, wsCheckpoint, logger} = modules;
233
233
 
234
- const {checkpoint: anchorCp} = computeAnchorCheckpoint(config, anchorState);
234
+ const {checkpoint: anchorCp} = anchorState.computeAnchorCheckpoint();
235
235
  const anchorSlot = anchorState.latestBlockHeader.slot;
236
236
  const syncAnchor = {
237
237
  anchorBlock: null,
@@ -64,7 +64,7 @@ enum FetchResult {
64
64
  *
65
65
  * - publishBlock
66
66
  * - gossipHandlers
67
- * - searchUnknownSlotRoot
67
+ * - searchUnknownBlock
68
68
  * = produceSyncCommitteeContribution
69
69
  * = validateGossipFnRetryUnknownRoot
70
70
  * * submitPoolAttestationsV2
@@ -481,7 +481,7 @@ export class BlockInputSync {
481
481
  * From a set of shuffled peers:
482
482
  * - fetch the block
483
483
  * - from deneb, fetch all missing blobs
484
- * - from peerDAS, fetch sampled colmns
484
+ * - from peerDAS, fetch sampled columns
485
485
  * TODO: this means we only have block root, and nothing else. Consider to reflect this in the function name
486
486
  * prefulu, will attempt a max of `MAX_ATTEMPTS_PER_BLOCK` on different peers, postfulu we may attempt more as defined in `getMaxDownloadAttempts()` function
487
487
  * Also verifies the received block root + returns the peer that provided the block for future downscoring.
@@ -489,10 +489,7 @@ export class BlockInputSync {
489
489
  private async fetchBlockInput(cacheItem: BlockInputSyncCacheItem): Promise<PendingBlockInput> {
490
490
  const rootHex = getBlockInputSyncCacheItemRootHex(cacheItem);
491
491
  const excludedPeers = new Set<PeerIdStr>();
492
- const defaultPendingColumns =
493
- this.config.getForkSeq(this.chain.clock.currentSlot) >= ForkSeq.fulu
494
- ? new Set(this.network.custodyConfig.sampledColumns)
495
- : null;
492
+ const defaultPendingColumns = new Set(this.network.custodyConfig.sampledColumns);
496
493
 
497
494
  const fetchStartSec = Date.now() / 1000;
498
495
  let slot = isPendingBlockInput(cacheItem) ? cacheItem.blockInput.slot : undefined;
@@ -506,14 +503,10 @@ export class BlockInputSync {
506
503
  isPendingBlockInput(cacheItem) && isBlockInputColumns(cacheItem.blockInput)
507
504
  ? new Set(cacheItem.blockInput.getMissingSampledColumnMeta().missing)
508
505
  : defaultPendingColumns;
509
- // pendingDataColumns is null pre-fulu
510
506
  const peerMeta = this.peerBalancer.bestPeerForPendingColumns(pendingColumns, excludedPeers);
511
507
  if (peerMeta === null) {
512
508
  // no more peer with needed columns to try, throw error
513
- let message = `Error fetching UnknownBlockRoot slot=${slot} root=${rootHex} after ${i}: cannot find peer`;
514
- if (pendingColumns) {
515
- message += ` with needed columns=${prettyPrintIndices(Array.from(pendingColumns))}`;
516
- }
509
+ const message = `Error fetching UnknownBlockRoot slot=${slot} root=${rootHex} after ${i}: cannot find peer with needed columns=${prettyPrintIndices(Array.from(pendingColumns))}`;
517
510
  this.metrics?.blockInputSync.fetchTimeSec.observe(
518
511
  {result: FetchResult.FailureTriedAllPeers},
519
512
  Date.now() / 1000 - fetchStartSec
@@ -650,7 +643,7 @@ export class BlockInputSync {
650
643
  // TODO(fulu): why is this commented out here?
651
644
  //
652
645
  // this.knownBadBlocks.add(block.blockRootHex);
653
- // for (const peerIdStr of block.peerIdStrs) {
646
+ // for (const peerIdStr of block.peerIdStrings) {
654
647
  // // TODO: Refactor peerRpcScores to work with peerIdStr only
655
648
  // this.network.reportPeer(peerIdStr, PeerAction.LowToleranceError, "BadBlockByRoot");
656
649
  // }
@@ -729,11 +722,11 @@ export class UnknownBlockPeerBalancer {
729
722
  }
730
723
 
731
724
  /**
732
- * called from fetchUnknownBlockRoot() where we only have block root and nothing else
725
+ * called from fetchBlockInput() where we only have block root and nothing else
733
726
  * excludedPeers are the peers that we requested already so we don't want to try again
734
727
  * pendingColumns is empty for prefulu, or the 1st time we we download a block by root
735
728
  */
736
- bestPeerForPendingColumns(pendingColumns: Set<number> | null, excludedPeers: Set<PeerIdStr>): PeerSyncMeta | null {
729
+ bestPeerForPendingColumns(pendingColumns: Set<number>, excludedPeers: Set<PeerIdStr>): PeerSyncMeta | null {
737
730
  const eligiblePeers = this.filterPeers(pendingColumns, excludedPeers);
738
731
  if (eligiblePeers.length === 0) {
739
732
  return null;
@@ -750,37 +743,6 @@ export class UnknownBlockPeerBalancer {
750
743
  return this.peersMeta.get(bestPeerId) ?? null;
751
744
  }
752
745
 
753
- /**
754
- * called from fetchUnavailableBlockInput() where we have either BlockInput or NullBlockInput
755
- * excludedPeers are the peers that we requested already so we don't want to try again
756
- */
757
- bestPeerForBlockInput(blockInput: IBlockInput, excludedPeers: Set<PeerIdStr>): PeerSyncMeta | null {
758
- const eligiblePeers: PeerIdStr[] = [];
759
-
760
- if (isBlockInputColumns(blockInput)) {
761
- const pendingDataColumns: Set<number> = new Set(blockInput.getMissingSampledColumnMeta().missing);
762
- // there could be no pending column in case when block is still missing
763
- eligiblePeers.push(...this.filterPeers(pendingDataColumns, excludedPeers));
764
- } else {
765
- // prefulu
766
- eligiblePeers.push(...this.filterPeers(null, excludedPeers));
767
- }
768
-
769
- if (eligiblePeers.length === 0) {
770
- return null;
771
- }
772
-
773
- const sortedEligiblePeers = sortBy(
774
- shuffle(eligiblePeers),
775
- // prefer peers with least active req
776
- (peerId) => this.activeRequests.get(peerId) ?? 0
777
- );
778
-
779
- const bestPeerId = sortedEligiblePeers[0];
780
- this.onRequest(bestPeerId);
781
- return this.peersMeta.get(bestPeerId) ?? null;
782
- }
783
-
784
746
  /**
785
747
  * Consumers don't need to call this method directly, it is called internally by bestPeer*() methods
786
748
  * make this public for testing
@@ -804,8 +766,7 @@ export class UnknownBlockPeerBalancer {
804
766
  return totalActiveRequests;
805
767
  }
806
768
 
807
- // pendingDataColumns could be null for prefulu
808
- private filterPeers(pendingDataColumns: Set<number> | null, excludedPeers: Set<PeerIdStr>): PeerIdStr[] {
769
+ private filterPeers(pendingDataColumns: Set<number>, excludedPeers: Set<PeerIdStr>): PeerIdStr[] {
809
770
  let maxColumnCount = 0;
810
771
  const considerPeers: {peerId: PeerIdStr; columnCount: number}[] = [];
811
772
  for (const [peerId, syncMeta] of this.peersMeta.entries()) {
@@ -820,13 +781,12 @@ export class UnknownBlockPeerBalancer {
820
781
  continue;
821
782
  }
822
783
 
823
- if (pendingDataColumns === null || pendingDataColumns.size === 0) {
824
- // prefulu, no pending columns
784
+ if (pendingDataColumns.size === 0) {
825
785
  considerPeers.push({peerId, columnCount: 0});
826
786
  continue;
827
787
  }
828
788
 
829
- // postfulu, find peers that have custody columns that we need
789
+ // find peers that have custody columns that we need
830
790
  const {custodyColumns: peerColumns} = syncMeta;
831
791
  // check if the peer has all needed columns
832
792
  // get match
package/src/util/types.ts CHANGED
@@ -29,3 +29,9 @@ export type BlobSidecarsByRootRequest = ValueOf<ReturnType<typeof BlobSidecarsBy
29
29
  export const DataColumnSidecarsByRootRequestType = (config: BeaconConfig) =>
30
30
  new ListCompositeType(ssz.fulu.DataColumnsByRootIdentifier, config.MAX_REQUEST_BLOCKS_DENEB);
31
31
  export type DataColumnSidecarsByRootRequest = ValueOf<ReturnType<typeof DataColumnSidecarsByRootRequestType>>;
32
+
33
+ export const ExecutionPayloadEnvelopesByRootRequestType = (config: BeaconConfig) =>
34
+ new ListCompositeType(ssz.Root, config.MAX_REQUEST_PAYLOADS);
35
+ export type ExecutionPayloadEnvelopesByRootRequest = ValueOf<
36
+ ReturnType<typeof ExecutionPayloadEnvelopesByRootRequestType>
37
+ >;