@lodestar/beacon-node 1.41.0-dev.bb33751bfd → 1.41.0-dev.c11b797bd6

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 (746) hide show
  1. package/lib/api/impl/api.js.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.d.ts +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/blocks/index.js +3 -2
  5. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  6. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  7. package/lib/api/impl/beacon/index.js.map +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts +1 -1
  9. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts +1 -1
  12. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -1
  13. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  16. package/lib/api/impl/beacon/state/index.js.map +1 -1
  17. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  18. package/lib/api/impl/config/constants.js.map +1 -1
  19. package/lib/api/impl/config/index.js.map +1 -1
  20. package/lib/api/impl/debug/index.d.ts +1 -1
  21. package/lib/api/impl/debug/index.d.ts.map +1 -1
  22. package/lib/api/impl/debug/index.js.map +1 -1
  23. package/lib/api/impl/errors.d.ts.map +1 -1
  24. package/lib/api/impl/errors.js.map +1 -1
  25. package/lib/api/impl/events/index.d.ts +1 -1
  26. package/lib/api/impl/events/index.d.ts.map +1 -1
  27. package/lib/api/impl/events/index.js.map +1 -1
  28. package/lib/api/impl/lightclient/index.d.ts +1 -1
  29. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  30. package/lib/api/impl/lightclient/index.js.map +1 -1
  31. package/lib/api/impl/lodestar/index.d.ts +1 -1
  32. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  33. package/lib/api/impl/lodestar/index.js.map +1 -1
  34. package/lib/api/impl/node/index.js.map +1 -1
  35. package/lib/api/impl/node/utils.js.map +1 -1
  36. package/lib/api/impl/proof/index.js.map +1 -1
  37. package/lib/api/impl/utils.js.map +1 -1
  38. package/lib/api/impl/validator/index.d.ts.map +1 -1
  39. package/lib/api/impl/validator/index.js +30 -12
  40. package/lib/api/impl/validator/index.js.map +1 -1
  41. package/lib/api/impl/validator/utils.d.ts +1 -1
  42. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  43. package/lib/api/impl/validator/utils.js.map +1 -1
  44. package/lib/api/rest/activeSockets.d.ts.map +1 -1
  45. package/lib/api/rest/activeSockets.js.map +1 -1
  46. package/lib/api/rest/base.d.ts.map +1 -1
  47. package/lib/api/rest/base.js.map +1 -1
  48. package/lib/api/rest/index.d.ts.map +1 -1
  49. package/lib/api/rest/index.js.map +1 -1
  50. package/lib/api/rest/swaggerUI.js.map +1 -1
  51. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -1
  52. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  53. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  54. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  55. package/lib/chain/GetBlobsTracker.js.map +1 -1
  56. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  57. package/lib/chain/archiveStore/archiveStore.js +2 -1
  58. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  59. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  60. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  61. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  62. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  63. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  64. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  65. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  66. package/lib/chain/archiveStore/interface.js +2 -1
  67. package/lib/chain/archiveStore/interface.js.map +1 -1
  68. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +1 -1
  69. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  70. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -1
  71. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  72. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  73. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  74. package/lib/chain/archiveStore/utils/archiveBlocks.js +1 -1
  75. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  76. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -1
  77. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  78. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  79. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  80. package/lib/chain/balancesCache.d.ts.map +1 -1
  81. package/lib/chain/balancesCache.js.map +1 -1
  82. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  83. package/lib/chain/beaconProposerCache.js.map +1 -1
  84. package/lib/chain/blocks/blockInput/blockInput.d.ts +5 -0
  85. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  86. package/lib/chain/blocks/blockInput/blockInput.js +24 -0
  87. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  88. package/lib/chain/blocks/blockInput/errors.js +2 -1
  89. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  90. package/lib/chain/blocks/blockInput/types.d.ts +16 -0
  91. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  92. package/lib/chain/blocks/blockInput/types.js +4 -2
  93. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  94. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  95. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  96. package/lib/chain/blocks/importBlock.js +27 -4
  97. package/lib/chain/blocks/importBlock.js.map +1 -1
  98. package/lib/chain/blocks/index.d.ts.map +1 -1
  99. package/lib/chain/blocks/index.js.map +1 -1
  100. package/lib/chain/blocks/types.js +6 -3
  101. package/lib/chain/blocks/types.js.map +1 -1
  102. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  103. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  104. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  105. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  106. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  107. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  108. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  109. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  110. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  111. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  112. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  113. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  114. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  115. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  116. package/lib/chain/bls/maybeBatch.js.map +1 -1
  117. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  118. package/lib/chain/bls/multithread/index.js.map +1 -1
  119. package/lib/chain/bls/multithread/jobItem.js +2 -1
  120. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  121. package/lib/chain/bls/multithread/types.js +2 -1
  122. package/lib/chain/bls/multithread/types.js.map +1 -1
  123. package/lib/chain/bls/multithread/utils.js.map +1 -1
  124. package/lib/chain/bls/multithread/worker.js.map +1 -1
  125. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  126. package/lib/chain/bls/singleThread.js.map +1 -1
  127. package/lib/chain/bls/utils.js.map +1 -1
  128. package/lib/chain/chain.d.ts +4 -4
  129. package/lib/chain/chain.d.ts.map +1 -1
  130. package/lib/chain/chain.js +13 -12
  131. package/lib/chain/chain.js.map +1 -1
  132. package/lib/chain/emitter.d.ts +4 -6
  133. package/lib/chain/emitter.d.ts.map +1 -1
  134. package/lib/chain/emitter.js +2 -1
  135. package/lib/chain/emitter.js.map +1 -1
  136. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  137. package/lib/chain/errors/attestationError.js +2 -1
  138. package/lib/chain/errors/attestationError.js.map +1 -1
  139. package/lib/chain/errors/attesterSlashingError.js +2 -1
  140. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  141. package/lib/chain/errors/blobSidecarError.js +2 -1
  142. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  143. package/lib/chain/errors/blockError.d.ts.map +1 -1
  144. package/lib/chain/errors/blockError.js +2 -1
  145. package/lib/chain/errors/blockError.js.map +1 -1
  146. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  147. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  148. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  149. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  150. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  151. package/lib/chain/errors/executionPayloadBid.js +2 -1
  152. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  153. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  154. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  155. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  156. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  157. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  158. package/lib/chain/errors/gossipValidation.js +4 -2
  159. package/lib/chain/errors/gossipValidation.js.map +1 -1
  160. package/lib/chain/errors/lightClientError.js +4 -2
  161. package/lib/chain/errors/lightClientError.js.map +1 -1
  162. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  163. package/lib/chain/errors/payloadAttestation.js +2 -1
  164. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  165. package/lib/chain/errors/proposerSlashingError.js +2 -1
  166. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  167. package/lib/chain/errors/syncCommitteeError.js +2 -1
  168. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  169. package/lib/chain/errors/voluntaryExitError.js +2 -1
  170. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  171. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  172. package/lib/chain/forkChoice/index.js +32 -25
  173. package/lib/chain/forkChoice/index.js.map +1 -1
  174. package/lib/chain/initState.d.ts +1 -1
  175. package/lib/chain/initState.d.ts.map +1 -1
  176. package/lib/chain/initState.js.map +1 -1
  177. package/lib/chain/interface.js +2 -1
  178. package/lib/chain/interface.js.map +1 -1
  179. package/lib/chain/lightClient/index.d.ts +0 -29
  180. package/lib/chain/lightClient/index.d.ts.map +1 -1
  181. package/lib/chain/lightClient/index.js.map +1 -1
  182. package/lib/chain/lightClient/proofs.js.map +1 -1
  183. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  184. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  185. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  186. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  187. package/lib/chain/opPools/attestationPool.js.map +1 -1
  188. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  189. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  190. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  191. package/lib/chain/opPools/opPool.js.map +1 -1
  192. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  193. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  194. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  195. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  196. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  197. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  198. package/lib/chain/opPools/types.js +4 -2
  199. package/lib/chain/opPools/types.js.map +1 -1
  200. package/lib/chain/opPools/utils.js.map +1 -1
  201. package/lib/chain/prepareNextSlot.d.ts +1 -2
  202. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  203. package/lib/chain/prepareNextSlot.js.map +1 -1
  204. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +0 -1
  205. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  206. package/lib/chain/produceBlock/computeNewStateRoot.js +4 -3
  207. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  208. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  209. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  210. package/lib/chain/produceBlock/produceBlockBody.js +7 -5
  211. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  212. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  213. package/lib/chain/regen/errors.d.ts.map +1 -1
  214. package/lib/chain/regen/errors.js +2 -1
  215. package/lib/chain/regen/errors.js.map +1 -1
  216. package/lib/chain/regen/interface.js +4 -2
  217. package/lib/chain/regen/interface.js.map +1 -1
  218. package/lib/chain/regen/queued.d.ts.map +1 -1
  219. package/lib/chain/regen/queued.js +4 -1
  220. package/lib/chain/regen/queued.js.map +1 -1
  221. package/lib/chain/regen/regen.d.ts.map +1 -1
  222. package/lib/chain/regen/regen.js +6 -2
  223. package/lib/chain/regen/regen.js.map +1 -1
  224. package/lib/chain/reprocess.d.ts.map +1 -1
  225. package/lib/chain/reprocess.js +2 -1
  226. package/lib/chain/reprocess.js.map +1 -1
  227. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  228. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  229. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  230. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  231. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  232. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  233. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  234. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  235. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  236. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  237. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  238. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  239. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  240. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  241. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  242. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  243. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  244. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  245. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  246. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  247. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  248. package/lib/chain/seenCache/seenGossipBlockInput.js +23 -9
  249. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  250. package/lib/chain/serializeState.js +1 -0
  251. package/lib/chain/serializeState.js.map +1 -1
  252. package/lib/chain/shufflingCache.d.ts.map +1 -1
  253. package/lib/chain/shufflingCache.js +2 -1
  254. package/lib/chain/shufflingCache.js.map +1 -1
  255. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  256. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  257. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  258. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  259. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  260. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  261. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  262. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  263. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -41
  264. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  265. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  266. package/lib/chain/stateCache/types.js +2 -1
  267. package/lib/chain/stateCache/types.js.map +1 -1
  268. package/lib/chain/validation/aggregateAndProof.js +1 -1
  269. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  270. package/lib/chain/validation/attestation.d.ts.map +1 -1
  271. package/lib/chain/validation/attestation.js +10 -6
  272. package/lib/chain/validation/attestation.js.map +1 -1
  273. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  274. package/lib/chain/validation/attesterSlashing.js +8 -1
  275. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  276. package/lib/chain/validation/blobSidecar.js +2 -2
  277. package/lib/chain/validation/blobSidecar.js.map +1 -1
  278. package/lib/chain/validation/block.d.ts.map +1 -1
  279. package/lib/chain/validation/block.js +6 -3
  280. package/lib/chain/validation/block.js.map +1 -1
  281. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  282. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  283. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  284. package/lib/chain/validation/executionPayloadBid.js +1 -2
  285. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  286. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  287. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  288. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  289. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  290. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  291. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  292. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  293. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  294. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  295. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  296. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  297. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  298. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  299. package/lib/chain/validation/syncCommittee.js.map +1 -1
  300. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  301. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  302. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  303. package/lib/chain/validatorMonitor.js +2 -1
  304. package/lib/chain/validatorMonitor.js.map +1 -1
  305. package/lib/constants/network.js +4 -2
  306. package/lib/constants/network.js.map +1 -1
  307. package/lib/db/beacon.d.ts.map +1 -1
  308. package/lib/db/beacon.js.map +1 -1
  309. package/lib/db/buckets.d.ts +23 -23
  310. package/lib/db/buckets.d.ts.map +1 -1
  311. package/lib/db/buckets.js +2 -1
  312. package/lib/db/buckets.js.map +1 -1
  313. package/lib/db/index.d.ts +1 -0
  314. package/lib/db/index.d.ts.map +1 -1
  315. package/lib/db/index.js +1 -0
  316. package/lib/db/index.js.map +1 -1
  317. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  318. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  319. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  320. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  321. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  322. package/lib/db/repositories/blobSidecars.js.map +1 -1
  323. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  324. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  325. package/lib/db/repositories/block.d.ts.map +1 -1
  326. package/lib/db/repositories/block.js.map +1 -1
  327. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  328. package/lib/db/repositories/blockArchive.js.map +1 -1
  329. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  330. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  331. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  332. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  333. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  334. package/lib/db/repositories/checkpointState.js.map +1 -1
  335. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  336. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  337. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  338. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  339. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -1
  340. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  341. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -1
  342. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  343. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  344. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  345. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  346. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  347. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  348. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  349. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  350. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  351. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  352. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  353. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  354. package/lib/db/repositories/stateArchive.js.map +1 -1
  355. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  356. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  357. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  358. package/lib/execution/builder/cache.d.ts.map +1 -1
  359. package/lib/execution/builder/cache.js.map +1 -1
  360. package/lib/execution/builder/http.d.ts.map +1 -1
  361. package/lib/execution/builder/http.js +2 -1
  362. package/lib/execution/builder/http.js.map +1 -1
  363. package/lib/execution/builder/index.js.map +1 -1
  364. package/lib/execution/builder/utils.js.map +1 -1
  365. package/lib/execution/engine/disabled.d.ts.map +1 -1
  366. package/lib/execution/engine/disabled.js.map +1 -1
  367. package/lib/execution/engine/http.d.ts.map +1 -1
  368. package/lib/execution/engine/http.js.map +1 -1
  369. package/lib/execution/engine/index.js.map +1 -1
  370. package/lib/execution/engine/interface.js +4 -2
  371. package/lib/execution/engine/interface.js.map +1 -1
  372. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  373. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  374. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  375. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  376. package/lib/execution/engine/jwt.js.map +1 -1
  377. package/lib/execution/engine/mock.d.ts.map +1 -1
  378. package/lib/execution/engine/mock.js.map +1 -1
  379. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  380. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  381. package/lib/execution/engine/types.js.map +1 -1
  382. package/lib/execution/engine/utils.d.ts +1 -1
  383. package/lib/execution/engine/utils.d.ts.map +1 -1
  384. package/lib/execution/engine/utils.js.map +1 -1
  385. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  386. package/lib/metrics/metrics/beacon.js.map +1 -1
  387. package/lib/metrics/metrics/lodestar.d.ts +8 -6
  388. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  389. package/lib/metrics/metrics/lodestar.js +18 -10
  390. package/lib/metrics/metrics/lodestar.js.map +1 -1
  391. package/lib/metrics/metrics.js.map +1 -1
  392. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  393. package/lib/metrics/server/http.d.ts +1 -1
  394. package/lib/metrics/server/http.d.ts.map +1 -1
  395. package/lib/metrics/server/http.js.map +1 -1
  396. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  397. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  398. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  399. package/lib/metrics/utils/gauge.js.map +1 -1
  400. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  401. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  402. package/lib/monitoring/clientStats.js.map +1 -1
  403. package/lib/monitoring/properties.d.ts.map +1 -1
  404. package/lib/monitoring/properties.js.map +1 -1
  405. package/lib/monitoring/service.d.ts.map +1 -1
  406. package/lib/monitoring/service.js.map +1 -1
  407. package/lib/monitoring/system.d.ts.map +1 -1
  408. package/lib/monitoring/system.js.map +1 -1
  409. package/lib/monitoring/types.js +4 -2
  410. package/lib/monitoring/types.js.map +1 -1
  411. package/lib/network/core/events.d.ts +1 -3
  412. package/lib/network/core/events.d.ts.map +1 -1
  413. package/lib/network/core/events.js +4 -2
  414. package/lib/network/core/events.js.map +1 -1
  415. package/lib/network/core/metrics.d.ts +6 -7
  416. package/lib/network/core/metrics.d.ts.map +1 -1
  417. package/lib/network/core/metrics.js.map +1 -1
  418. package/lib/network/core/networkCore.d.ts +1 -1
  419. package/lib/network/core/networkCore.d.ts.map +1 -1
  420. package/lib/network/core/networkCore.js.map +1 -1
  421. package/lib/network/core/networkCoreWorker.js.map +1 -1
  422. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  423. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  424. package/lib/network/discv5/index.d.ts +1 -3
  425. package/lib/network/discv5/index.d.ts.map +1 -1
  426. package/lib/network/discv5/index.js.map +1 -1
  427. package/lib/network/discv5/utils.d.ts +1 -1
  428. package/lib/network/discv5/utils.d.ts.map +1 -1
  429. package/lib/network/discv5/utils.js +7 -5
  430. package/lib/network/discv5/utils.js.map +1 -1
  431. package/lib/network/discv5/worker.js.map +1 -1
  432. package/lib/network/events.d.ts +1 -3
  433. package/lib/network/events.d.ts.map +1 -1
  434. package/lib/network/events.js +4 -2
  435. package/lib/network/events.js.map +1 -1
  436. package/lib/network/forks.js.map +1 -1
  437. package/lib/network/gossip/encoding.d.ts.map +1 -1
  438. package/lib/network/gossip/encoding.js.map +1 -1
  439. package/lib/network/gossip/errors.d.ts.map +1 -1
  440. package/lib/network/gossip/errors.js.map +1 -1
  441. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  442. package/lib/network/gossip/gossipsub.js +9 -6
  443. package/lib/network/gossip/gossipsub.js.map +1 -1
  444. package/lib/network/gossip/interface.js +4 -2
  445. package/lib/network/gossip/interface.js.map +1 -1
  446. package/lib/network/gossip/metrics.d.ts +12 -14
  447. package/lib/network/gossip/metrics.d.ts.map +1 -1
  448. package/lib/network/gossip/metrics.js.map +1 -1
  449. package/lib/network/gossip/scoringParameters.d.ts +1 -1
  450. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  451. package/lib/network/gossip/scoringParameters.js.map +1 -1
  452. package/lib/network/gossip/topic.d.ts +2867 -2920
  453. package/lib/network/gossip/topic.d.ts.map +1 -1
  454. package/lib/network/gossip/topic.js.map +1 -1
  455. package/lib/network/libp2p/error.js +2 -1
  456. package/lib/network/libp2p/error.js.map +1 -1
  457. package/lib/network/libp2p/index.d.ts +1 -1
  458. package/lib/network/libp2p/index.d.ts.map +1 -1
  459. package/lib/network/libp2p/index.js +35 -17
  460. package/lib/network/libp2p/index.js.map +1 -1
  461. package/lib/network/metadata.d.ts +1 -0
  462. package/lib/network/metadata.d.ts.map +1 -1
  463. package/lib/network/metadata.js +5 -2
  464. package/lib/network/metadata.js.map +1 -1
  465. package/lib/network/network.d.ts +1 -1
  466. package/lib/network/network.d.ts.map +1 -1
  467. package/lib/network/network.js +1 -1
  468. package/lib/network/network.js.map +1 -1
  469. package/lib/network/options.d.ts +2 -0
  470. package/lib/network/options.d.ts.map +1 -1
  471. package/lib/network/options.js +3 -0
  472. package/lib/network/options.js.map +1 -1
  473. package/lib/network/peers/client.js +2 -1
  474. package/lib/network/peers/client.js.map +1 -1
  475. package/lib/network/peers/datastore.d.ts +0 -3
  476. package/lib/network/peers/datastore.d.ts.map +1 -1
  477. package/lib/network/peers/datastore.js.map +1 -1
  478. package/lib/network/peers/discover.d.ts +2 -7
  479. package/lib/network/peers/discover.d.ts.map +1 -1
  480. package/lib/network/peers/discover.js +45 -12
  481. package/lib/network/peers/discover.js.map +1 -1
  482. package/lib/network/peers/peerManager.d.ts +0 -1
  483. package/lib/network/peers/peerManager.d.ts.map +1 -1
  484. package/lib/network/peers/peerManager.js.map +1 -1
  485. package/lib/network/peers/peersData.d.ts.map +1 -1
  486. package/lib/network/peers/peersData.js +2 -1
  487. package/lib/network/peers/peersData.js.map +1 -1
  488. package/lib/network/peers/score/interface.js +4 -2
  489. package/lib/network/peers/score/interface.js.map +1 -1
  490. package/lib/network/peers/score/score.d.ts.map +1 -1
  491. package/lib/network/peers/score/score.js.map +1 -1
  492. package/lib/network/peers/score/store.d.ts.map +1 -1
  493. package/lib/network/peers/score/store.js.map +1 -1
  494. package/lib/network/peers/score/utils.js.map +1 -1
  495. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  496. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  497. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  498. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  499. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  500. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  501. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  502. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  503. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  504. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  505. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  506. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  507. package/lib/network/processor/gossipHandlers.js +1 -0
  508. package/lib/network/processor/gossipHandlers.js.map +1 -1
  509. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  510. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  511. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  512. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  513. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  514. package/lib/network/processor/gossipQueues/types.js +4 -2
  515. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  516. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  517. package/lib/network/processor/index.d.ts.map +1 -1
  518. package/lib/network/processor/index.js +4 -2
  519. package/lib/network/processor/index.js.map +1 -1
  520. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  521. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  522. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  523. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  524. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  525. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  526. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  527. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  528. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  529. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  530. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  531. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  532. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  533. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  534. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  535. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  536. package/lib/network/reqresp/handlers/index.js.map +1 -1
  537. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  538. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  539. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  540. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  541. package/lib/network/reqresp/interface.js +2 -1
  542. package/lib/network/reqresp/interface.js.map +1 -1
  543. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  544. package/lib/network/reqresp/protocols.js.map +1 -1
  545. package/lib/network/reqresp/rateLimit.js.map +1 -1
  546. package/lib/network/reqresp/score.js.map +1 -1
  547. package/lib/network/reqresp/types.js +4 -2
  548. package/lib/network/reqresp/types.js.map +1 -1
  549. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  550. package/lib/network/reqresp/utils/collect.js.map +1 -1
  551. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  552. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  553. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  554. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  555. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  556. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  557. package/lib/network/statusCache.d.ts.map +1 -1
  558. package/lib/network/statusCache.js.map +1 -1
  559. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  560. package/lib/network/subnets/attnetsService.js +2 -1
  561. package/lib/network/subnets/attnetsService.js.map +1 -1
  562. package/lib/network/subnets/interface.js.map +1 -1
  563. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  564. package/lib/network/subnets/syncnetsService.js.map +1 -1
  565. package/lib/network/subnets/util.js.map +1 -1
  566. package/lib/network/util.js.map +1 -1
  567. package/lib/node/nodejs.d.ts +2 -2
  568. package/lib/node/nodejs.d.ts.map +1 -1
  569. package/lib/node/nodejs.js +2 -1
  570. package/lib/node/nodejs.js.map +1 -1
  571. package/lib/node/notifier.js.map +1 -1
  572. package/lib/node/utils/interop/deposits.js.map +1 -1
  573. package/lib/node/utils/interop/state.d.ts +1 -1
  574. package/lib/node/utils/interop/state.d.ts.map +1 -1
  575. package/lib/node/utils/interop/state.js.map +1 -1
  576. package/lib/node/utils/lightclient.js.map +1 -1
  577. package/lib/node/utils/state.js.map +1 -1
  578. package/lib/sync/backfill/backfill.d.ts +1 -10
  579. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  580. package/lib/sync/backfill/backfill.js +6 -3
  581. package/lib/sync/backfill/backfill.js.map +1 -1
  582. package/lib/sync/backfill/errors.js +2 -1
  583. package/lib/sync/backfill/errors.js.map +1 -1
  584. package/lib/sync/backfill/verify.js.map +1 -1
  585. package/lib/sync/interface.js +2 -1
  586. package/lib/sync/interface.js.map +1 -1
  587. package/lib/sync/range/batch.d.ts.map +1 -1
  588. package/lib/sync/range/batch.js +4 -2
  589. package/lib/sync/range/batch.js.map +1 -1
  590. package/lib/sync/range/chain.d.ts +0 -10
  591. package/lib/sync/range/chain.d.ts.map +1 -1
  592. package/lib/sync/range/chain.js +2 -1
  593. package/lib/sync/range/chain.js.map +1 -1
  594. package/lib/sync/range/range.d.ts +1 -3
  595. package/lib/sync/range/range.d.ts.map +1 -1
  596. package/lib/sync/range/range.js +4 -2
  597. package/lib/sync/range/range.js.map +1 -1
  598. package/lib/sync/range/utils/batches.js.map +1 -1
  599. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  600. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  601. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  602. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  603. package/lib/sync/range/utils/updateChains.js.map +1 -1
  604. package/lib/sync/sync.d.ts.map +1 -1
  605. package/lib/sync/sync.js.map +1 -1
  606. package/lib/sync/types.js +4 -2
  607. package/lib/sync/types.js.map +1 -1
  608. package/lib/sync/unknownBlock.d.ts +0 -14
  609. package/lib/sync/unknownBlock.d.ts.map +1 -1
  610. package/lib/sync/unknownBlock.js.map +1 -1
  611. package/lib/sync/utils/downloadByRange.d.ts +4 -4
  612. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  613. package/lib/sync/utils/downloadByRange.js +2 -1
  614. package/lib/sync/utils/downloadByRange.js.map +1 -1
  615. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  616. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  617. package/lib/sync/utils/downloadByRoot.js +2 -1
  618. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  619. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  620. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  621. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  622. package/lib/sync/utils/remoteSyncType.js +4 -2
  623. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  624. package/lib/util/address.js.map +1 -1
  625. package/lib/util/array.d.ts.map +1 -1
  626. package/lib/util/array.js.map +1 -1
  627. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  628. package/lib/util/asyncIterableToEvents.js +2 -1
  629. package/lib/util/asyncIterableToEvents.js.map +1 -1
  630. package/lib/util/binarySearch.d.ts.map +1 -1
  631. package/lib/util/binarySearch.js.map +1 -1
  632. package/lib/util/bitArray.js +2 -1
  633. package/lib/util/bitArray.js.map +1 -1
  634. package/lib/util/blobs.js.map +1 -1
  635. package/lib/util/bufferPool.d.ts.map +1 -1
  636. package/lib/util/bufferPool.js +2 -1
  637. package/lib/util/bufferPool.js.map +1 -1
  638. package/lib/util/chunkify.js.map +1 -1
  639. package/lib/util/clock.d.ts.map +1 -1
  640. package/lib/util/clock.js +2 -1
  641. package/lib/util/clock.js.map +1 -1
  642. package/lib/util/dataColumns.d.ts.map +1 -1
  643. package/lib/util/dataColumns.js +4 -2
  644. package/lib/util/dataColumns.js.map +1 -1
  645. package/lib/util/dependentRoot.js.map +1 -1
  646. package/lib/util/enum.js.map +1 -1
  647. package/lib/util/error.js.map +1 -1
  648. package/lib/util/eventLoop.js.map +1 -1
  649. package/lib/util/execution.js +2 -1
  650. package/lib/util/execution.js.map +1 -1
  651. package/lib/util/file.js.map +1 -1
  652. package/lib/util/forkChoice.js.map +1 -1
  653. package/lib/util/forkName.js.map +1 -1
  654. package/lib/util/graffiti.js.map +1 -1
  655. package/lib/util/hex.js.map +1 -1
  656. package/lib/util/ip.js.map +1 -1
  657. package/lib/util/itTrigger.d.ts.map +1 -1
  658. package/lib/util/itTrigger.js.map +1 -1
  659. package/lib/util/map.d.ts.map +1 -1
  660. package/lib/util/map.js.map +1 -1
  661. package/lib/util/metadata.js.map +1 -1
  662. package/lib/util/multifork.js.map +1 -1
  663. package/lib/util/numpy.js.map +1 -1
  664. package/lib/util/peerId.js.map +1 -1
  665. package/lib/util/profile.js +2 -1
  666. package/lib/util/profile.js.map +1 -1
  667. package/lib/util/promises.js.map +1 -1
  668. package/lib/util/queue/errors.js +2 -1
  669. package/lib/util/queue/errors.js.map +1 -1
  670. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  671. package/lib/util/queue/fnQueue.js.map +1 -1
  672. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  673. package/lib/util/queue/itemQueue.js.map +1 -1
  674. package/lib/util/queue/options.js +2 -1
  675. package/lib/util/queue/options.js.map +1 -1
  676. package/lib/util/serializedCache.d.ts +4 -4
  677. package/lib/util/serializedCache.d.ts.map +1 -1
  678. package/lib/util/serializedCache.js +6 -4
  679. package/lib/util/serializedCache.js.map +1 -1
  680. package/lib/util/set.d.ts.map +1 -1
  681. package/lib/util/set.js.map +1 -1
  682. package/lib/util/shuffle.js.map +1 -1
  683. package/lib/util/sortBy.js.map +1 -1
  684. package/lib/util/sszBytes.js.map +1 -1
  685. package/lib/util/time.js.map +1 -1
  686. package/lib/util/timeSeries.d.ts.map +1 -1
  687. package/lib/util/timeSeries.js.map +1 -1
  688. package/lib/util/types.d.ts.map +1 -1
  689. package/lib/util/workerEvents.d.ts +1 -1
  690. package/lib/util/workerEvents.d.ts.map +1 -1
  691. package/lib/util/workerEvents.js.map +1 -1
  692. package/lib/util/wrapError.js.map +1 -1
  693. package/package.json +29 -28
  694. package/src/api/impl/beacon/blocks/index.ts +3 -2
  695. package/src/api/impl/validator/index.ts +26 -12
  696. package/src/chain/archiveStore/archiveStore.ts +5 -5
  697. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -5
  698. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  699. package/src/chain/blocks/blockInput/blockInput.ts +35 -0
  700. package/src/chain/blocks/blockInput/types.ts +17 -0
  701. package/src/chain/blocks/importBlock.ts +35 -4
  702. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  703. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  704. package/src/chain/chain.ts +31 -19
  705. package/src/chain/emitter.ts +3 -3
  706. package/src/chain/errors/executionPayloadBid.ts +1 -1
  707. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  708. package/src/chain/errors/payloadAttestation.ts +1 -1
  709. package/src/chain/forkChoice/index.ts +39 -21
  710. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  711. package/src/chain/produceBlock/computeNewStateRoot.ts +4 -3
  712. package/src/chain/produceBlock/produceBlockBody.ts +1 -2
  713. package/src/chain/regen/queued.ts +7 -2
  714. package/src/chain/regen/regen.ts +9 -3
  715. package/src/chain/seenCache/seenGossipBlockInput.ts +40 -11
  716. package/src/chain/validation/aggregateAndProof.ts +1 -1
  717. package/src/chain/validation/attestation.ts +10 -6
  718. package/src/chain/validation/attesterSlashing.ts +9 -0
  719. package/src/chain/validation/blobSidecar.ts +2 -2
  720. package/src/chain/validation/block.ts +9 -4
  721. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  722. package/src/chain/validation/executionPayloadBid.ts +1 -2
  723. package/src/chain/validation/executionPayloadEnvelope.ts +4 -4
  724. package/src/chain/validation/payloadAttestationMessage.ts +1 -2
  725. package/src/db/index.ts +1 -0
  726. package/src/metrics/metrics/lodestar.ts +18 -10
  727. package/src/network/discv5/utils.ts +5 -4
  728. package/src/network/gossip/gossipsub.ts +12 -7
  729. package/src/network/libp2p/index.ts +40 -18
  730. package/src/network/metadata.ts +1 -0
  731. package/src/network/network.ts +2 -1
  732. package/src/network/options.ts +5 -1
  733. package/src/network/peers/discover.ts +46 -11
  734. package/src/network/processor/gossipHandlers.ts +6 -1
  735. package/src/network/processor/gossipValidatorFn.ts +1 -1
  736. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  737. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  738. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  739. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  740. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  741. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  742. package/src/network/reqresp/utils/collect.ts +1 -1
  743. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  744. package/src/sync/utils/downloadByRoot.ts +1 -1
  745. package/src/sync/utils/remoteSyncType.ts +1 -1
  746. package/src/util/serializedCache.ts +7 -5
@@ -4,9 +4,11 @@ import {
4
4
  ForkChoice,
5
5
  ForkChoiceStore,
6
6
  JustifiedBalancesGetter,
7
+ PayloadStatus,
7
8
  ProtoArray,
8
9
  ProtoBlock,
9
10
  ForkChoiceOpts as RawForkChoiceOpts,
11
+ getCheckpointPayloadStatus,
10
12
  } from "@lodestar/fork-choice";
11
13
  import {ZERO_HASH_HEX} from "@lodestar/params";
12
14
  import {
@@ -104,6 +106,14 @@ export function initializeForkChoiceFromFinalizedState(
104
106
  // production code use ForkChoice constructor directly
105
107
  const forkchoiceConstructor = opts.forkchoiceConstructor ?? ForkChoice;
106
108
 
109
+ const isForkPostGloas = (state as CachedBeaconStateGloas).latestBlockHash !== undefined;
110
+
111
+ // Determine justified checkpoint payload status
112
+ const justifiedPayloadStatus = getCheckpointPayloadStatus(state, justifiedCheckpoint.epoch);
113
+
114
+ // Determine finalized checkpoint payload status
115
+ const finalizedPayloadStatus = getCheckpointPayloadStatus(state, finalizedCheckpoint.epoch);
116
+
107
117
  return new forkchoiceConstructor(
108
118
  config,
109
119
 
@@ -113,6 +123,8 @@ export function initializeForkChoiceFromFinalizedState(
113
123
  finalizedCheckpoint,
114
124
  justifiedBalances,
115
125
  justifiedBalancesGetter,
126
+ justifiedPayloadStatus,
127
+ finalizedPayloadStatus,
116
128
  {
117
129
  onJustified: (cp) => emitter.emit(ChainEvent.forkChoiceJustified, cp),
118
130
  onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
@@ -145,15 +157,12 @@ export function initializeForkChoiceFromFinalizedState(
145
157
  : {executionPayloadBlockHash: null, executionStatus: ExecutionStatus.PreMerge}),
146
158
 
147
159
  dataAvailabilityStatus: DataAvailabilityStatus.PreData,
148
- ...(computeEpochAtSlot(blockHeader.slot) < state.config.GLOAS_FORK_EPOCH
149
- ? {
150
- builderIndex: undefined,
151
- blockHashHex: undefined,
152
- }
153
- : {
154
- builderIndex: (state as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex,
155
- blockHashHex: toRootHex((state as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash),
156
- }),
160
+ payloadStatus: isForkPostGloas ? PayloadStatus.PENDING : PayloadStatus.FULL, // TODO GLOAS: Post-gloas how do we know if the checkpoint payload is FULL or EMPTY?
161
+ builderIndex: isForkPostGloas ? (state as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex : null,
162
+ blockHashFromBid: isForkPostGloas
163
+ ? toRootHex((state as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash)
164
+ : null,
165
+ parentBlockHash: isForkPostGloas ? toRootHex((state as CachedBeaconStateGloas).latestBlockHash) : null,
157
166
  },
158
167
  currentSlot
159
168
  ),
@@ -196,12 +205,22 @@ export function initializeForkChoiceFromUnfinalizedState(
196
205
 
197
206
  // this is not the justified state, but there is no other ways to get justified balances
198
207
  const justifiedBalances = getEffectiveBalanceIncrementsZeroInactive(unfinalizedState);
208
+
209
+ const isForkPostGloas = (unfinalizedState as CachedBeaconStateGloas).latestBlockHash !== undefined;
210
+
211
+ // For unfinalized state, use getCheckpointPayloadStatus to determine the correct status.
212
+ // It checks state.execution_payload_availability to determine EMPTY vs FULL.
213
+ const justifiedPayloadStatus = getCheckpointPayloadStatus(unfinalizedState, justifiedCheckpoint.epoch);
214
+ const finalizedPayloadStatus = getCheckpointPayloadStatus(unfinalizedState, finalizedCheckpoint.epoch);
215
+
199
216
  const store = new ForkChoiceStore(
200
217
  currentSlot,
201
218
  justifiedCheckpoint,
202
219
  finalizedCheckpoint,
203
220
  justifiedBalances,
204
221
  justifiedBalancesGetter,
222
+ justifiedPayloadStatus,
223
+ finalizedPayloadStatus,
205
224
  {
206
225
  onJustified: (cp) => emitter.emit(ChainEvent.forkChoiceJustified, cp),
207
226
  onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
@@ -235,15 +254,14 @@ export function initializeForkChoiceFromUnfinalizedState(
235
254
  : {executionPayloadBlockHash: null, executionStatus: ExecutionStatus.PreMerge}),
236
255
 
237
256
  dataAvailabilityStatus: DataAvailabilityStatus.PreData,
238
- ...(computeEpochAtSlot(blockHeader.slot) < unfinalizedState.config.GLOAS_FORK_EPOCH
239
- ? {
240
- builderIndex: undefined,
241
- blockHashHex: undefined,
242
- }
243
- : {
244
- builderIndex: (unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex,
245
- blockHashHex: toRootHex((unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash),
246
- }),
257
+ payloadStatus: isForkPostGloas ? PayloadStatus.PENDING : PayloadStatus.FULL, // TODO GLOAS: Post-gloas how do we know if the checkpoint payload is FULL or EMPTY?
258
+ builderIndex: isForkPostGloas
259
+ ? (unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex
260
+ : null,
261
+ blockHashFromBid: isForkPostGloas
262
+ ? toRootHex((unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash)
263
+ : null,
264
+ parentBlockHash: isForkPostGloas ? toRootHex((unfinalizedState as CachedBeaconStateGloas).latestBlockHash) : null,
247
265
  };
248
266
 
249
267
  const parentSlot = blockHeader.slot - 1;
@@ -285,9 +303,9 @@ export function initializeForkChoiceFromUnfinalizedState(
285
303
  };
286
304
 
287
305
  const protoArray = ProtoArray.initialize(finalizedBlock, currentSlot);
288
- protoArray.onBlock(justifiedBlock, currentSlot);
289
- protoArray.onBlock(parentBlock, currentSlot);
290
- protoArray.onBlock(headBlock, currentSlot);
306
+ protoArray.onBlock(justifiedBlock, currentSlot, null);
307
+ protoArray.onBlock(parentBlock, currentSlot, null);
308
+ protoArray.onBlock(headBlock, currentSlot, null);
291
309
 
292
310
  logger?.verbose("Initialized protoArray successfully", {...logCtx, length: protoArray.length()});
293
311
 
@@ -864,7 +864,7 @@ function isValidShuffling(
864
864
  // attestation's shuffling is the same as the current state's.
865
865
  // To account for skipped slots, find the first block at *or before* the pivot slot.
866
866
  const beaconBlockRootHex = blockRootHex;
867
- const beaconBlock = forkChoice.getBlockHex(beaconBlockRootHex);
867
+ const beaconBlock = forkChoice.getBlockHexDefaultStatus(beaconBlockRootHex);
868
868
  if (!beaconBlock) {
869
869
  return InvalidAttestationData.BlockNotInForkChoice;
870
870
  }
@@ -61,7 +61,6 @@ export function computeNewStateRoot(
61
61
  * Compute the state root after processing an execution payload envelope.
62
62
  * Similar to `computeNewStateRoot` but for payload envelope processing.
63
63
  *
64
- * The `postBlockState` is mutated in place, callers must ensure it is not needed afterward.
65
64
  */
66
65
  export function computeEnvelopeStateRoot(
67
66
  metrics: Metrics | null,
@@ -74,13 +73,15 @@ export function computeEnvelopeStateRoot(
74
73
  };
75
74
 
76
75
  const processEnvelopeTimer = metrics?.blockPayload.executionPayloadEnvelopeProcessingTime.startTimer();
77
- processExecutionPayloadEnvelope(postBlockState, signedEnvelope, false);
76
+ const postEnvelopeState = processExecutionPayloadEnvelope(postBlockState, signedEnvelope, false, {
77
+ dontTransferCache: true,
78
+ });
78
79
  processEnvelopeTimer?.();
79
80
 
80
81
  const hashTreeRootTimer = metrics?.stateHashTreeRootTime.startTimer({
81
82
  source: StateHashTreeRootSource.computeEnvelopeStateRoot,
82
83
  });
83
- const stateRoot = postBlockState.hashTreeRoot();
84
+ const stateRoot = postEnvelopeState.hashTreeRoot();
84
85
  hashTreeRootTimer?.();
85
86
 
86
87
  return stateRoot;
@@ -723,8 +723,7 @@ export function getPayloadAttributesForSSE(
723
723
 
724
724
  let parentBlockNumber: number;
725
725
  if (isForkPostGloas(fork)) {
726
- // TODO GLOAS: revisit this after fork choice changes are merged
727
- const parentBlock = chain.forkChoice.getBlock(parentBlockRoot);
726
+ const parentBlock = chain.forkChoice.getBlockHexAndBlockHash(toRootHex(parentBlockRoot), toRootHex(parentHash));
728
727
  if (parentBlock?.executionPayloadBlockHash == null) {
729
728
  throw Error(`Parent block not found in fork choice root=${toRootHex(parentBlockRoot)}`);
730
729
  }
@@ -1,7 +1,7 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
3
3
  import {CachedBeaconStateAllForks, computeEpochAtSlot} from "@lodestar/state-transition";
4
- import {BeaconBlock, Epoch, RootHex, Slot, phase0} from "@lodestar/types";
4
+ import {BeaconBlock, Epoch, RootHex, Slot, isGloasBeaconBlock, phase0} from "@lodestar/types";
5
5
  import {Logger, toRootHex} from "@lodestar/utils";
6
6
  import {Metrics} from "../../metrics/index.js";
7
7
  import {JobItemQueue} from "../../util/queue/index.js";
@@ -88,7 +88,12 @@ export class QueuedStateRegenerator implements IStateRegenerator {
88
88
  */
89
89
  getPreStateSync(block: BeaconBlock): CachedBeaconStateAllForks | null {
90
90
  const parentRoot = toRootHex(block.parentRoot);
91
- const parentBlock = this.forkChoice.getBlockHex(parentRoot);
91
+ const parentBlock = isGloasBeaconBlock(block)
92
+ ? this.forkChoice.getBlockHexAndBlockHash(
93
+ parentRoot,
94
+ toRootHex(block.body.signedExecutionPayloadBid.message.parentBlockHash)
95
+ )
96
+ : this.forkChoice.getBlockHexDefaultStatus(parentRoot);
92
97
  if (!parentBlock) {
93
98
  throw new RegenError({
94
99
  code: RegenErrorCode.BLOCK_NOT_IN_FORKCHOICE,
@@ -11,7 +11,7 @@ import {
11
11
  processSlots,
12
12
  stateTransition,
13
13
  } from "@lodestar/state-transition";
14
- import {BeaconBlock, RootHex, SignedBeaconBlock, Slot} from "@lodestar/types";
14
+ import {BeaconBlock, RootHex, SignedBeaconBlock, Slot, isGloasBeaconBlock} from "@lodestar/types";
15
15
  import {Logger, fromHex, toRootHex} from "@lodestar/utils";
16
16
  import {IBeaconDb} from "../../db/index.js";
17
17
  import {Metrics} from "../../metrics/index.js";
@@ -58,7 +58,13 @@ export class StateRegenerator implements IStateRegeneratorInternal {
58
58
  opts: StateRegenerationOpts,
59
59
  regenCaller: RegenCaller
60
60
  ): Promise<CachedBeaconStateAllForks> {
61
- const parentBlock = this.modules.forkChoice.getBlock(block.parentRoot);
61
+ const parentRoot = toRootHex(block.parentRoot);
62
+ const parentBlock = isGloasBeaconBlock(block)
63
+ ? this.modules.forkChoice.getBlockHexAndBlockHash(
64
+ parentRoot,
65
+ toRootHex(block.body.signedExecutionPayloadBid.message.parentBlockHash)
66
+ )
67
+ : this.modules.forkChoice.getBlockHexDefaultStatus(parentRoot);
62
68
  if (!parentBlock) {
63
69
  throw new RegenError({
64
70
  code: RegenErrorCode.BLOCK_NOT_IN_FORKCHOICE,
@@ -152,7 +158,7 @@ export class StateRegenerator implements IStateRegeneratorInternal {
152
158
 
153
159
  const getSeedStateTimer = this.modules.metrics?.regenGetState.getSeedState.startTimer({caller});
154
160
  // iterateAncestorBlocks only returns ancestor blocks, not the block itself
155
- for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot)) {
161
+ for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot, block.payloadStatus)) {
156
162
  state = this.modules.blockStateCache.get(b.stateRoot);
157
163
  if (state) {
158
164
  break;
@@ -17,6 +17,7 @@ import {Metrics} from "../../metrics/metrics.js";
17
17
  import {MAX_LOOK_AHEAD_EPOCHS} from "../../sync/constants.js";
18
18
  import {IClock} from "../../util/clock.js";
19
19
  import {CustodyConfig} from "../../util/dataColumns.js";
20
+ import {SerializedCache} from "../../util/serializedCache.js";
20
21
  import {
21
22
  BlockInput,
22
23
  BlockInputBlobs,
@@ -55,6 +56,7 @@ export type SeenBlockInputCacheModules = {
55
56
  chainEvents: ChainEventEmitter;
56
57
  signal: AbortSignal;
57
58
  custodyConfig: CustodyConfig;
59
+ serializedCache: SerializedCache;
58
60
  metrics: Metrics | null;
59
61
  logger?: Logger;
60
62
  };
@@ -101,6 +103,7 @@ export class SeenBlockInput {
101
103
  private readonly clock: IClock;
102
104
  private readonly chainEvents: ChainEventEmitter;
103
105
  private readonly signal: AbortSignal;
106
+ private readonly serializedCache: SerializedCache;
104
107
  private readonly metrics: Metrics | null;
105
108
  private readonly logger?: Logger;
106
109
  private blockInputs = new Map<RootHex, IBlockInput>();
@@ -109,19 +112,35 @@ export class SeenBlockInput {
109
112
  // and the signature to ensure we only skip verification if both match
110
113
  private verifiedProposerSignatures = new Map<Slot, Map<RootHex, BLSSignature>>();
111
114
 
112
- constructor({config, custodyConfig, clock, chainEvents, signal, metrics, logger}: SeenBlockInputCacheModules) {
115
+ constructor({
116
+ config,
117
+ custodyConfig,
118
+ clock,
119
+ chainEvents,
120
+ signal,
121
+ serializedCache,
122
+ metrics,
123
+ logger,
124
+ }: SeenBlockInputCacheModules) {
113
125
  this.config = config;
114
126
  this.custodyConfig = custodyConfig;
115
127
  this.clock = clock;
116
128
  this.chainEvents = chainEvents;
117
129
  this.signal = signal;
130
+ this.serializedCache = serializedCache;
118
131
  this.metrics = metrics;
119
132
  this.logger = logger;
120
133
 
121
134
  if (metrics) {
122
- metrics.seenCache.blockInput.blockInputCount.addCollect(() =>
123
- metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size)
124
- );
135
+ metrics.seenCache.blockInput.blockInputCount.addCollect(() => {
136
+ metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size);
137
+ metrics.seenCache.blockInput.serializedObjectRefs.set(
138
+ Array.from(this.blockInputs.values()).reduce(
139
+ (count, blockInput) => count + blockInput.getSerializedCacheKeys().length,
140
+ 0
141
+ )
142
+ );
143
+ });
125
144
  }
126
145
 
127
146
  this.chainEvents.on(ChainEvent.forkChoiceFinalized, this.onFinalized);
@@ -142,7 +161,10 @@ export class SeenBlockInput {
142
161
  * Removes the single BlockInput from the cache
143
162
  */
144
163
  remove(rootHex: RootHex): void {
145
- this.blockInputs.delete(rootHex);
164
+ const blockInput = this.blockInputs.get(rootHex);
165
+ if (blockInput) {
166
+ this.evictBlockInput(blockInput);
167
+ }
146
168
  }
147
169
 
148
170
  /**
@@ -154,7 +176,7 @@ export class SeenBlockInput {
154
176
  let deletedCount = 0;
155
177
  while (blockInput) {
156
178
  deletedCount++;
157
- this.blockInputs.delete(blockInput.blockRootHex);
179
+ this.evictBlockInput(blockInput);
158
180
  blockInput = this.blockInputs.get(parentRootHex ?? "");
159
181
  parentRootHex = blockInput?.parentRootHex;
160
182
  }
@@ -165,10 +187,10 @@ export class SeenBlockInput {
165
187
  onFinalized = (checkpoint: CheckpointWithHex) => {
166
188
  let deletedCount = 0;
167
189
  const cutoffSlot = computeStartSlotAtEpoch(checkpoint.epoch);
168
- for (const [rootHex, blockInput] of this.blockInputs) {
190
+ for (const [, blockInput] of this.blockInputs) {
169
191
  if (blockInput.slot < cutoffSlot) {
170
192
  deletedCount++;
171
- this.blockInputs.delete(rootHex);
193
+ this.evictBlockInput(blockInput);
172
194
  }
173
195
  }
174
196
  this.logger?.debug(`BlockInputCache.onFinalized deleted ${deletedCount} cached BlockInputs`);
@@ -228,6 +250,7 @@ export class SeenBlockInput {
228
250
  peerIdStr,
229
251
  });
230
252
  }
253
+ this.metrics?.seenCache.blockInput.createdByBlock.inc();
231
254
  this.blockInputs.set(blockInput.blockRootHex, blockInput);
232
255
  }
233
256
 
@@ -327,7 +350,7 @@ export class SeenBlockInput {
327
350
  custodyColumns: this.custodyConfig.custodyColumns,
328
351
  sampledColumns: this.custodyConfig.sampledColumns,
329
352
  });
330
- this.metrics?.seenCache.blockInput.createdByBlob.inc();
353
+ this.metrics?.seenCache.blockInput.createdByColumn.inc();
331
354
  this.blockInputs.set(blockRootHex, blockInput);
332
355
  }
333
356
 
@@ -408,14 +431,20 @@ export class SeenBlockInput {
408
431
 
409
432
  if (itemsToDelete > 0) {
410
433
  const sorted = [...this.blockInputs.entries()].sort((a, b) => a[1].slot - b[1].slot);
411
- for (const [rootHex] of sorted) {
412
- this.blockInputs.delete(rootHex);
434
+ for (const [, blockInput] of sorted) {
435
+ this.evictBlockInput(blockInput);
413
436
  itemsToDelete--;
414
437
  if (itemsToDelete <= 0) return;
415
438
  }
416
439
  }
417
440
  pruneSetToMax(this.verifiedProposerSignatures, MAX_BLOCK_INPUT_CACHE_SIZE);
418
441
  }
442
+
443
+ private evictBlockInput(blockInput: IBlockInput): void {
444
+ // Without forcefully clearing this cache, we would rely on WeakMap to evict memory which is not reliable
445
+ this.serializedCache.delete(blockInput.getSerializedCacheKeys());
446
+ this.blockInputs.delete(blockInput.blockRootHex);
447
+ }
419
448
  }
420
449
 
421
450
  enum SeenBlockInputCacheErrorCode {
@@ -81,7 +81,7 @@ async function validateAggregateAndProof(
81
81
  });
82
82
  }
83
83
  // [REJECT] `aggregate.data.index == 0` if `block.slot == aggregate.data.slot`.
84
- const block = chain.forkChoice.getBlock(attData.beaconBlockRoot);
84
+ const block = chain.forkChoice.getBlockDefaultStatus(attData.beaconBlockRoot);
85
85
 
86
86
  // If block is unknown, we don't handle it here. It will throw error later on at `verifyHeadBlockAndTargetRoot()`
87
87
  if (block !== null && block.slot === attData.slot && attData.index !== 0) {
@@ -186,7 +186,7 @@ export async function validateGossipAttestationsSameAttData(
186
186
  chain.seenAttesters.add(targetEpoch, validatorIndex);
187
187
  } else {
188
188
  step0ResultOrErrors[oldIndex] = {
189
- err: new AttestationError(GossipAction.IGNORE, {
189
+ err: new AttestationError(GossipAction.REJECT, {
190
190
  code: AttestationErrorCode.INVALID_SIGNATURE,
191
191
  }),
192
192
  };
@@ -307,7 +307,7 @@ async function validateAttestationNoSignatureCheck(
307
307
  }
308
308
 
309
309
  // [REJECT] `attestation.data.index == 0` if `block.slot == attestation.data.slot`.
310
- const block = chain.forkChoice.getBlock(attData.beaconBlockRoot);
310
+ const block = chain.forkChoice.getBlockDefaultStatus(attData.beaconBlockRoot);
311
311
 
312
312
  // block being null will be handled by `verifyHeadBlockAndTargetRoot`
313
313
  if (block !== null && block.slot === attSlot && attData.index !== 0) {
@@ -604,10 +604,14 @@ export function verifyPropagationSlotRange(fork: ForkName, chain: IBeaconChain,
604
604
  //
605
605
  // see: https://github.com/ethereum/consensus-specs/pull/3360
606
606
  if (ForkSeq[fork] < ForkSeq.deneb) {
607
+ const currentSlot = chain.clock.currentSlot;
608
+ const withinPastDisparity = currentSlot > 0 && chain.clock.isCurrentSlotGivenGossipDisparity(currentSlot - 1);
607
609
  const earliestPermissibleSlot = Math.max(
608
- // slot with past tolerance of MAXIMUM_GOSSIP_CLOCK_DISPARITY
609
- chain.clock.slotWithPastTolerance(chain.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY / 1000) -
610
- chain.config.ATTESTATION_PROPAGATION_SLOT_RANGE,
610
+ // Pre-Deneb propagation is time-bounded: an attestation remains valid at the exact old
611
+ // boundary `compute_time_at_slot(slot + range + 1) + MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
612
+ // Model that boundary by extending the lower slot bound by one additional slot only while
613
+ // the clock still considers the previous slot current given gossip disparity.
614
+ currentSlot - chain.config.ATTESTATION_PROPAGATION_SLOT_RANGE - (withinPastDisparity ? 1 : 0),
611
615
  0
612
616
  );
613
617
 
@@ -756,7 +760,7 @@ export function getAttestationDataSigningRoot(config: BeaconConfig, data: phase0
756
760
  function verifyHeadBlockIsKnown(chain: IBeaconChain, beaconBlockRoot: Root): ProtoBlock {
757
761
  // TODO (LH): Enforce a maximum skip distance for unaggregated attestations.
758
762
 
759
- const headBlock = chain.forkChoice.getBlock(beaconBlockRoot);
763
+ const headBlock = chain.forkChoice.getBlockDefaultStatus(beaconBlockRoot);
760
764
  if (headBlock === null) {
761
765
  throw new AttestationError(GossipAction.IGNORE, {
762
766
  code: AttestationErrorCode.UNKNOWN_OR_PREFINALIZED_BEACON_BLOCK_ROOT,
@@ -2,6 +2,7 @@ import {
2
2
  assertValidAttesterSlashing,
3
3
  getAttesterSlashableIndices,
4
4
  getAttesterSlashingSignatureSets,
5
+ isSlashableValidator,
5
6
  } from "@lodestar/state-transition";
6
7
  import {AttesterSlashing} from "@lodestar/types";
7
8
  import {AttesterSlashingError, AttesterSlashingErrorCode, GossipAction} from "../errors/index.js";
@@ -58,6 +59,14 @@ export async function validateAttesterSlashing(
58
59
  });
59
60
  }
60
61
 
62
+ const currentEpoch = state.epochCtx.epoch;
63
+ if (!intersectingIndices.some((index) => isSlashableValidator(state.validators.getReadonly(index), currentEpoch))) {
64
+ throw new AttesterSlashingError(GossipAction.REJECT, {
65
+ code: AttesterSlashingErrorCode.INVALID,
66
+ error: Error("AttesterSlashing has no slashable validators"),
67
+ });
68
+ }
69
+
61
70
  const signatureSets = getAttesterSlashingSignatureSets(chain.config, state.slot, attesterSlashing);
62
71
  if (!(await chain.bls.verifySignatureSets(signatureSets, {batchable: true, priority: prioritizeBls}))) {
63
72
  throw new AttesterSlashingError(GossipAction.REJECT, {
@@ -78,7 +78,7 @@ export async function validateGossipBlobSidecar(
78
78
  // already know this block.
79
79
  const blockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(blobSidecar.signedBlockHeader.message);
80
80
  const blockHex = toRootHex(blockRoot);
81
- if (chain.forkChoice.getBlockHex(blockHex) !== null) {
81
+ if (chain.forkChoice.getBlockHexDefaultStatus(blockHex) !== null) {
82
82
  throw new BlobSidecarGossipError(GossipAction.IGNORE, {code: BlobSidecarErrorCode.ALREADY_KNOWN, root: blockHex});
83
83
  }
84
84
 
@@ -89,7 +89,7 @@ export async function validateGossipBlobSidecar(
89
89
  // gossip and non-gossip sources) (a client MAY queue blocks for processing once the parent block is
90
90
  // retrieved).
91
91
  const parentRoot = toRootHex(blobSidecar.signedBlockHeader.message.parentRoot);
92
- const parentBlock = chain.forkChoice.getBlockHex(parentRoot);
92
+ const parentBlock = chain.forkChoice.getBlockHexDefaultStatus(parentRoot);
93
93
  if (parentBlock === null) {
94
94
  // If fork choice does *not* consider the parent to be a descendant of the finalized block,
95
95
  // then there are two more cases:
@@ -9,7 +9,7 @@ import {
9
9
  isExecutionEnabled,
10
10
  isExecutionStateType,
11
11
  } from "@lodestar/state-transition";
12
- import {SignedBeaconBlock, deneb, gloas} from "@lodestar/types";
12
+ import {SignedBeaconBlock, deneb, gloas, isGloasBeaconBlock} from "@lodestar/types";
13
13
  import {byteArrayEquals, sleep, toRootHex} from "@lodestar/utils";
14
14
  import {BlockErrorCode, BlockGossipError, GossipAction} from "../errors/index.js";
15
15
  import {IBeaconChain} from "../interface.js";
@@ -56,7 +56,7 @@ export async function validateGossipBlock(
56
56
  // check, we will load the parent and state from disk only to find out later that we
57
57
  // already know this block.
58
58
  const blockRoot = toRootHex(config.getForkTypes(blockSlot).BeaconBlock.hashTreeRoot(block));
59
- if (chain.forkChoice.getBlockHex(blockRoot) !== null) {
59
+ if (chain.forkChoice.getBlockHexDefaultStatus(blockRoot) !== null) {
60
60
  throw new BlockGossipError(GossipAction.IGNORE, {code: BlockErrorCode.ALREADY_KNOWN, root: blockRoot});
61
61
  }
62
62
 
@@ -72,7 +72,12 @@ export async function validateGossipBlock(
72
72
  // [REJECT] The current finalized_checkpoint is an ancestor of block -- i.e.
73
73
  // get_ancestor(store, block.parent_root, compute_start_slot_at_epoch(store.finalized_checkpoint.epoch)) == store.finalized_checkpoint.root
74
74
  const parentRoot = toRootHex(block.parentRoot);
75
- const parentBlock = chain.forkChoice.getBlockHex(parentRoot);
75
+ const parentBlock = isGloasBeaconBlock(block)
76
+ ? chain.forkChoice.getBlockHexAndBlockHash(
77
+ parentRoot,
78
+ toRootHex(block.body.signedExecutionPayloadBid.message.parentBlockHash)
79
+ )
80
+ : chain.forkChoice.getBlockHexDefaultStatus(parentRoot);
76
81
  if (parentBlock === null) {
77
82
  // If fork choice does *not* consider the parent to be a descendant of the finalized block,
78
83
  // then there are two more cases:
@@ -104,7 +109,7 @@ export async function validateGossipBlock(
104
109
 
105
110
  // [REJECT] The block is from a higher slot than its parent.
106
111
  if (parentBlock.slot >= blockSlot) {
107
- throw new BlockGossipError(GossipAction.IGNORE, {
112
+ throw new BlockGossipError(GossipAction.REJECT, {
108
113
  code: BlockErrorCode.NOT_LATER_THAN_PARENT,
109
114
  parentSlot: parentBlock.slot,
110
115
  slot: blockSlot,
@@ -73,7 +73,7 @@ export async function validateGossipDataColumnSidecar(
73
73
  // 6) [IGNORE] The sidecar's block's parent (defined by block_header.parent_root) has been seen (via gossip
74
74
  // or non-gossip sources)
75
75
  const parentRoot = toRootHex(blockHeader.parentRoot);
76
- const parentBlock = chain.forkChoice.getBlockHex(parentRoot);
76
+ const parentBlock = chain.forkChoice.getBlockHexDefaultStatus(parentRoot);
77
77
  if (parentBlock === null) {
78
78
  // If fork choice does *not* consider the parent to be a descendant of the finalized block,
79
79
  // then there are two more cases:
@@ -113,8 +113,7 @@ async function validateExecutionPayloadBid(
113
113
 
114
114
  // [IGNORE] `bid.parent_block_root` is the hash tree root of a known beacon
115
115
  // block in fork choice.
116
- const block = chain.forkChoice.getBlock(bid.parentBlockRoot);
117
- if (block === null) {
116
+ if (!chain.forkChoice.hasBlock(bid.parentBlockRoot)) {
118
117
  throw new ExecutionPayloadBidError(GossipAction.IGNORE, {
119
118
  code: ExecutionPayloadBidErrorCode.UNKNOWN_BLOCK_ROOT,
120
119
  parentBlockRoot: parentBlockRootHex,
@@ -37,7 +37,7 @@ async function validateExecutionPayloadEnvelope(
37
37
  // the block is retrieved).
38
38
  // TODO GLOAS: Need to review this, we should queue the envelope for later
39
39
  // processing if the block is not yet known, otherwise we would ignore it here
40
- const block = chain.forkChoice.getBlock(envelope.beaconBlockRoot);
40
+ const block = chain.forkChoice.getBlockDefaultStatus(envelope.beaconBlockRoot);
41
41
  if (block === null) {
42
42
  throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
43
43
  code: ExecutionPayloadEnvelopeErrorCode.BLOCK_ROOT_UNKNOWN,
@@ -79,7 +79,7 @@ async function validateExecutionPayloadEnvelope(
79
79
  });
80
80
  }
81
81
 
82
- if (block.builderIndex === undefined || block.blockHashHex === undefined) {
82
+ if (block.builderIndex == null || block.blockHashFromBid == null) {
83
83
  // This indicates this block is a pre-gloas block which is wrong
84
84
  throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
85
85
  code: ExecutionPayloadEnvelopeErrorCode.CACHE_FAIL,
@@ -97,11 +97,11 @@ async function validateExecutionPayloadEnvelope(
97
97
  }
98
98
 
99
99
  // [REJECT] `payload.block_hash == bid.block_hash`
100
- if (toRootHex(payload.blockHash) !== block.blockHashHex) {
100
+ if (toRootHex(payload.blockHash) !== block.blockHashFromBid) {
101
101
  throw new ExecutionPayloadEnvelopeError(GossipAction.REJECT, {
102
102
  code: ExecutionPayloadEnvelopeErrorCode.BLOCK_HASH_MISMATCH,
103
103
  envelopeBlockHash: toRootHex(payload.blockHash),
104
- bidBlockHash: block.blockHashHex,
104
+ bidBlockHash: block.blockHashFromBid,
105
105
  });
106
106
  }
107
107
 
@@ -59,8 +59,7 @@ async function validatePayloadAttestationMessage(
59
59
  // [IGNORE] The message's block `data.beacon_block_root` has been seen (via
60
60
  // gossip or non-gossip sources) (a client MAY queue attestation for processing
61
61
  // once the block is retrieved. Note a client might want to request payload after).
62
- const block = chain.forkChoice.getBlock(data.beaconBlockRoot);
63
- if (block === null) {
62
+ if (!chain.forkChoice.hasBlock(data.beaconBlockRoot)) {
64
63
  throw new PayloadAttestationError(GossipAction.IGNORE, {
65
64
  code: PayloadAttestationErrorCode.UNKNOWN_BLOCK_ROOT,
66
65
  blockRoot: toRootHex(data.beaconBlockRoot),
package/src/db/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export {BeaconDb} from "./beacon.js";
2
+ export {Bucket} from "./buckets.js";
2
3
  export type {IBeaconDb} from "./interface.js";
@@ -1461,29 +1461,37 @@ export function createLodestarMetrics(
1461
1461
  name: "lodestar_seen_block_input_cache_size",
1462
1462
  help: "Number of cached BlockInputs",
1463
1463
  }),
1464
- duplicateBlockCount: register.gauge<{source: BlockInputSource}>({
1465
- name: "lodestar_seen_block_input_cache_duplicate_block_count",
1464
+ serializedObjectRefs: register.gauge({
1465
+ name: "lodestar_seen_block_input_cache_serialized_object_refs",
1466
+ help: "Number of serialized-cache object refs retained by cached BlockInputs",
1467
+ }),
1468
+ duplicateBlockCount: register.counter<{source: BlockInputSource}>({
1469
+ name: "lodestar_seen_block_input_cache_duplicate_block_total",
1466
1470
  help: "Total number of duplicate blocks that pass validation and attempt to be cached but are known",
1467
1471
  labelNames: ["source"],
1468
1472
  }),
1469
- duplicateBlobCount: register.gauge<{source: BlockInputSource}>({
1470
- name: "lodestar_seen_block_input_cache_duplicate_blob_count",
1473
+ duplicateBlobCount: register.counter<{source: BlockInputSource}>({
1474
+ name: "lodestar_seen_block_input_cache_duplicate_blob_total",
1471
1475
  help: "Total number of duplicate blobs that pass validation and attempt to be cached but are known",
1472
1476
  labelNames: ["source"],
1473
1477
  }),
1474
- duplicateColumnCount: register.gauge<{source: BlockInputSource}>({
1475
- name: "lodestar_seen_block_input_cache_duplicate_column_count",
1478
+ duplicateColumnCount: register.counter<{source: BlockInputSource}>({
1479
+ name: "lodestar_seen_block_input_cache_duplicate_column_total",
1476
1480
  help: "Total number of duplicate columns that pass validation and attempt to be cached but are known",
1477
1481
  labelNames: ["source"],
1478
1482
  }),
1479
- createdByBlock: register.gauge({
1480
- name: "lodestar_seen_block_input_cache_items_created_by_block",
1483
+ createdByBlock: register.counter({
1484
+ name: "lodestar_seen_block_input_cache_items_created_by_block_total",
1481
1485
  help: "Number of BlockInputs created via a block being seen first",
1482
1486
  }),
1483
- createdByBlob: register.gauge({
1484
- name: "lodestar_seen_block_input_cache_items_created_by_blob",
1487
+ createdByBlob: register.counter({
1488
+ name: "lodestar_seen_block_input_cache_items_created_by_blob_total",
1485
1489
  help: "Number of BlockInputs created via a blob being seen first",
1486
1490
  }),
1491
+ createdByColumn: register.counter({
1492
+ name: "lodestar_seen_block_input_cache_items_created_by_column_total",
1493
+ help: "Number of BlockInputs created via a data column being seen first",
1494
+ }),
1487
1495
  },
1488
1496
  },
1489
1497
 
@@ -4,7 +4,7 @@ import {IClock} from "../../util/clock.js";
4
4
  import {ENRKey} from "../metadata.js";
5
5
 
6
6
  export enum ENRRelevance {
7
- no_tcp = "no_tcp",
7
+ no_transport = "no_transport",
8
8
  no_eth2 = "no_eth2",
9
9
  // biome-ignore lint/style/useNamingConvention: Need to use the this name for network convention
10
10
  unknown_forkDigest = "unknown_forkDigest",
@@ -13,10 +13,11 @@ export enum ENRRelevance {
13
13
  }
14
14
 
15
15
  export function enrRelevance(enr: ENR, config: BeaconConfig, clock: IClock): ENRRelevance {
16
- // We are not interested in peers that don't advertise their tcp addr
16
+ // We are not interested in peers that don't advertise at least one transport (tcp or quic)
17
17
  const multiaddrTCP = enr.getLocationMultiaddr(ENRKey.tcp);
18
- if (!multiaddrTCP) {
19
- return ENRRelevance.no_tcp;
18
+ const multiaddrQUIC = enr.getLocationMultiaddr(ENRKey.quic);
19
+ if (!multiaddrTCP && !multiaddrQUIC) {
20
+ return ENRRelevance.no_transport;
20
21
  }
21
22
 
22
23
  // Check if the ENR.eth2 field matches and is of interest