@lodestar/beacon-node 1.46.0-dev.5aeaa12d3c → 1.46.0-dev.65cfb739ef

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 (588) 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.map +1 -1
  5. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  6. package/lib/api/impl/beacon/index.js.map +1 -1
  7. package/lib/api/impl/beacon/pool/index.d.ts +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  10. package/lib/api/impl/beacon/rewards/index.d.ts +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  13. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  15. package/lib/api/impl/beacon/state/index.js.map +1 -1
  16. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  17. package/lib/api/impl/config/constants.d.ts +1 -0
  18. package/lib/api/impl/config/constants.d.ts.map +1 -1
  19. package/lib/api/impl/config/constants.js +3 -1
  20. package/lib/api/impl/config/constants.js.map +1 -1
  21. package/lib/api/impl/config/index.js.map +1 -1
  22. package/lib/api/impl/debug/index.d.ts +1 -1
  23. package/lib/api/impl/debug/index.d.ts.map +1 -1
  24. package/lib/api/impl/debug/index.js.map +1 -1
  25. package/lib/api/impl/errors.js.map +1 -1
  26. package/lib/api/impl/events/index.d.ts +1 -1
  27. package/lib/api/impl/events/index.d.ts.map +1 -1
  28. package/lib/api/impl/events/index.js.map +1 -1
  29. package/lib/api/impl/lightclient/index.d.ts +1 -1
  30. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  31. package/lib/api/impl/lightclient/index.js.map +1 -1
  32. package/lib/api/impl/lodestar/attesterSlashing.js.map +1 -1
  33. package/lib/api/impl/lodestar/index.d.ts +1 -1
  34. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  35. package/lib/api/impl/lodestar/index.js.map +1 -1
  36. package/lib/api/impl/node/index.js.map +1 -1
  37. package/lib/api/impl/node/utils.js.map +1 -1
  38. package/lib/api/impl/proof/index.js.map +1 -1
  39. package/lib/api/impl/utils.js.map +1 -1
  40. package/lib/api/impl/validator/index.d.ts.map +1 -1
  41. package/lib/api/impl/validator/index.js +7 -8
  42. package/lib/api/impl/validator/index.js.map +1 -1
  43. package/lib/api/impl/validator/utils.d.ts +1 -1
  44. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  45. package/lib/api/impl/validator/utils.js.map +1 -1
  46. package/lib/api/rest/activeSockets.js.map +1 -1
  47. package/lib/api/rest/base.js.map +1 -1
  48. package/lib/api/rest/index.js.map +1 -1
  49. package/lib/api/rest/swaggerUI.js.map +1 -1
  50. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  51. package/lib/chain/GetBlobsTracker.js.map +1 -1
  52. package/lib/chain/archiveStore/archiveStore.js +1 -2
  53. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  54. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  55. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  56. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  57. package/lib/chain/archiveStore/historicalState/types.js +1 -2
  58. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  59. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  60. package/lib/chain/archiveStore/interface.js +1 -2
  61. package/lib/chain/archiveStore/interface.js.map +1 -1
  62. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  63. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +1 -2
  64. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  65. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  66. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  67. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  68. package/lib/chain/balancesCache.js.map +1 -1
  69. package/lib/chain/beaconProposerCache.js.map +1 -1
  70. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  71. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  72. package/lib/chain/blocks/blockInput/errors.js +1 -2
  73. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  74. package/lib/chain/blocks/blockInput/types.js +2 -4
  75. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  76. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  77. package/lib/chain/blocks/importBlock.js.map +1 -1
  78. package/lib/chain/blocks/importExecutionPayload.js +1 -2
  79. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  80. package/lib/chain/blocks/index.js.map +1 -1
  81. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  82. package/lib/chain/blocks/payloadEnvelopeInput/types.js +1 -2
  83. package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -1
  84. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  85. package/lib/chain/blocks/types.js +3 -6
  86. package/lib/chain/blocks/types.js.map +1 -1
  87. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  88. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  89. package/lib/chain/blocks/utils/polarBearBanner.d.ts +2 -0
  90. package/lib/chain/blocks/utils/polarBearBanner.d.ts.map +1 -0
  91. package/lib/chain/blocks/utils/polarBearBanner.js +51 -0
  92. package/lib/chain/blocks/utils/polarBearBanner.js.map +1 -0
  93. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  94. package/lib/chain/blocks/verifyBlock.js +5 -0
  95. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  96. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  97. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  98. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  99. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  100. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  101. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  102. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  103. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  104. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
  105. package/lib/chain/bls/maybeBatch.js.map +1 -1
  106. package/lib/chain/bls/multithread/index.js.map +1 -1
  107. package/lib/chain/bls/multithread/jobItem.js +1 -2
  108. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  109. package/lib/chain/bls/multithread/types.js +1 -2
  110. package/lib/chain/bls/multithread/types.js.map +1 -1
  111. package/lib/chain/bls/multithread/utils.js.map +1 -1
  112. package/lib/chain/bls/multithread/worker.js.map +1 -1
  113. package/lib/chain/bls/singleThread.js.map +1 -1
  114. package/lib/chain/bls/utils.js.map +1 -1
  115. package/lib/chain/builderCircuitBreaker.js.map +1 -1
  116. package/lib/chain/chain.d.ts +2 -2
  117. package/lib/chain/chain.d.ts.map +1 -1
  118. package/lib/chain/chain.js.map +1 -1
  119. package/lib/chain/emitter.d.ts +1 -1
  120. package/lib/chain/emitter.d.ts.map +1 -1
  121. package/lib/chain/emitter.js +1 -2
  122. package/lib/chain/emitter.js.map +1 -1
  123. package/lib/chain/errors/attestationError.js +1 -2
  124. package/lib/chain/errors/attestationError.js.map +1 -1
  125. package/lib/chain/errors/attesterSlashingError.js +1 -2
  126. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  127. package/lib/chain/errors/blobSidecarError.js +1 -2
  128. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  129. package/lib/chain/errors/blockError.js +1 -2
  130. package/lib/chain/errors/blockError.js.map +1 -1
  131. package/lib/chain/errors/blsToExecutionChangeError.js +1 -2
  132. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  133. package/lib/chain/errors/dataColumnSidecarError.js +1 -2
  134. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  135. package/lib/chain/errors/executionPayloadBid.d.ts +10 -3
  136. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  137. package/lib/chain/errors/executionPayloadBid.js +2 -2
  138. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  139. package/lib/chain/errors/executionPayloadEnvelope.js +1 -2
  140. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  141. package/lib/chain/errors/gossipValidation.js +2 -4
  142. package/lib/chain/errors/gossipValidation.js.map +1 -1
  143. package/lib/chain/errors/lightClientError.js +2 -4
  144. package/lib/chain/errors/lightClientError.js.map +1 -1
  145. package/lib/chain/errors/payloadAttestation.js +1 -2
  146. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  147. package/lib/chain/errors/proposerPreferences.js +1 -2
  148. package/lib/chain/errors/proposerPreferences.js.map +1 -1
  149. package/lib/chain/errors/proposerSlashingError.js +1 -2
  150. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  151. package/lib/chain/errors/syncCommitteeError.js +1 -2
  152. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  153. package/lib/chain/errors/voluntaryExitError.js +1 -2
  154. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  155. package/lib/chain/forkChoice/index.js +1 -2
  156. package/lib/chain/forkChoice/index.js.map +1 -1
  157. package/lib/chain/initState.d.ts +1 -1
  158. package/lib/chain/initState.d.ts.map +1 -1
  159. package/lib/chain/initState.js.map +1 -1
  160. package/lib/chain/interface.js +1 -2
  161. package/lib/chain/interface.js.map +1 -1
  162. package/lib/chain/lightClient/index.d.ts +29 -0
  163. package/lib/chain/lightClient/index.d.ts.map +1 -1
  164. package/lib/chain/lightClient/index.js.map +1 -1
  165. package/lib/chain/lightClient/proofs.js.map +1 -1
  166. package/lib/chain/opPools/aggregatedAttestationPool.js +3 -5
  167. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  168. package/lib/chain/opPools/attestationPool.js.map +1 -1
  169. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  170. package/lib/chain/opPools/opPool.js.map +1 -1
  171. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  172. package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -1
  173. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  174. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  175. package/lib/chain/opPools/types.js +2 -4
  176. package/lib/chain/opPools/types.js.map +1 -1
  177. package/lib/chain/opPools/utils.js.map +1 -1
  178. package/lib/chain/prepareNextSlot.d.ts +2 -1
  179. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  180. package/lib/chain/prepareNextSlot.js +34 -24
  181. package/lib/chain/prepareNextSlot.js.map +1 -1
  182. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  183. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  184. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  185. package/lib/chain/produceBlock/produceBlockBody.js +15 -9
  186. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  187. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  188. package/lib/chain/regen/errors.js +1 -2
  189. package/lib/chain/regen/errors.js.map +1 -1
  190. package/lib/chain/regen/interface.js +2 -4
  191. package/lib/chain/regen/interface.js.map +1 -1
  192. package/lib/chain/regen/queued.js.map +1 -1
  193. package/lib/chain/regen/regen.js.map +1 -1
  194. package/lib/chain/reprocess.js +1 -2
  195. package/lib/chain/reprocess.js.map +1 -1
  196. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  197. package/lib/chain/seenCache/seenAttestationData.js +1 -2
  198. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  199. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  200. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  201. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  202. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  203. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  204. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts +6 -5
  205. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  206. package/lib/chain/seenCache/seenExecutionPayloadBids.js +16 -8
  207. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  208. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +3 -3
  209. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  210. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  211. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +1 -1
  212. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  213. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  214. package/lib/chain/serializeState.js.map +1 -1
  215. package/lib/chain/shufflingCache.js +1 -2
  216. package/lib/chain/shufflingCache.js.map +1 -1
  217. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  218. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  219. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  220. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  221. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +45 -1
  222. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  223. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  224. package/lib/chain/stateCache/types.js +1 -2
  225. package/lib/chain/stateCache/types.js.map +1 -1
  226. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  227. package/lib/chain/validation/attestation.js.map +1 -1
  228. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  229. package/lib/chain/validation/blobSidecar.js.map +1 -1
  230. package/lib/chain/validation/block.js.map +1 -1
  231. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  232. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  233. package/lib/chain/validation/dataColumnSidecar.js +21 -16
  234. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  235. package/lib/chain/validation/executionPayloadBid.d.ts +0 -5
  236. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  237. package/lib/chain/validation/executionPayloadBid.js +74 -26
  238. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  239. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  240. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  241. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  242. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  243. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  244. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  245. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  246. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  247. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  248. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  249. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  250. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  251. package/lib/chain/validation/syncCommittee.js.map +1 -1
  252. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  253. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  254. package/lib/chain/validatorMonitor.js +1 -2
  255. package/lib/chain/validatorMonitor.js.map +1 -1
  256. package/lib/constants/network.js +2 -4
  257. package/lib/constants/network.js.map +1 -1
  258. package/lib/db/beacon.js.map +1 -1
  259. package/lib/db/buckets.d.ts +23 -23
  260. package/lib/db/buckets.d.ts.map +1 -1
  261. package/lib/db/buckets.js +1 -2
  262. package/lib/db/buckets.js.map +1 -1
  263. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  264. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  265. package/lib/db/repositories/blobSidecars.js.map +1 -1
  266. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  267. package/lib/db/repositories/block.js.map +1 -1
  268. package/lib/db/repositories/blockArchive.js.map +1 -1
  269. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  270. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  271. package/lib/db/repositories/checkpointState.js.map +1 -1
  272. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  273. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  274. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  275. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  276. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  277. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  278. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  279. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  280. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  281. package/lib/db/repositories/stateArchive.js.map +1 -1
  282. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  283. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  284. package/lib/execution/builder/cache.js.map +1 -1
  285. package/lib/execution/builder/http.js +1 -2
  286. package/lib/execution/builder/http.js.map +1 -1
  287. package/lib/execution/builder/index.js.map +1 -1
  288. package/lib/execution/engine/disabled.js.map +1 -1
  289. package/lib/execution/engine/http.d.ts.map +1 -1
  290. package/lib/execution/engine/http.js.map +1 -1
  291. package/lib/execution/engine/index.js.map +1 -1
  292. package/lib/execution/engine/interface.d.ts +1 -1
  293. package/lib/execution/engine/interface.js +2 -4
  294. package/lib/execution/engine/interface.js.map +1 -1
  295. package/lib/execution/engine/jsonRpcHttpClient.d.ts +13 -10
  296. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  297. package/lib/execution/engine/jsonRpcHttpClient.js +1 -2
  298. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  299. package/lib/execution/engine/jwt.js.map +1 -1
  300. package/lib/execution/engine/mock.js.map +1 -1
  301. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  302. package/lib/execution/engine/types.js +1 -1
  303. package/lib/execution/engine/types.js.map +1 -1
  304. package/lib/execution/engine/utils.d.ts +1 -1
  305. package/lib/execution/engine/utils.d.ts.map +1 -1
  306. package/lib/execution/engine/utils.js.map +1 -1
  307. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  308. package/lib/metrics/metrics/beacon.js.map +1 -1
  309. package/lib/metrics/metrics/lodestar.d.ts +2 -2
  310. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  311. package/lib/metrics/metrics/lodestar.js +1 -1
  312. package/lib/metrics/metrics/lodestar.js.map +1 -1
  313. package/lib/metrics/metrics.js.map +1 -1
  314. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  315. package/lib/metrics/server/http.d.ts +1 -1
  316. package/lib/metrics/server/http.d.ts.map +1 -1
  317. package/lib/metrics/server/http.js.map +1 -1
  318. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  319. package/lib/metrics/utils/gauge.js.map +1 -1
  320. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  321. package/lib/monitoring/clientStats.js.map +1 -1
  322. package/lib/monitoring/properties.js.map +1 -1
  323. package/lib/monitoring/service.js.map +1 -1
  324. package/lib/monitoring/system.d.ts.map +1 -1
  325. package/lib/monitoring/system.js.map +1 -1
  326. package/lib/monitoring/types.js +2 -4
  327. package/lib/monitoring/types.js.map +1 -1
  328. package/lib/network/core/events.d.ts.map +1 -1
  329. package/lib/network/core/events.js +2 -4
  330. package/lib/network/core/events.js.map +1 -1
  331. package/lib/network/core/metrics.d.ts +7 -6
  332. package/lib/network/core/metrics.d.ts.map +1 -1
  333. package/lib/network/core/metrics.js.map +1 -1
  334. package/lib/network/core/networkCore.d.ts +1 -1
  335. package/lib/network/core/networkCore.d.ts.map +1 -1
  336. package/lib/network/core/networkCore.js.map +1 -1
  337. package/lib/network/core/networkCoreWorker.js.map +1 -1
  338. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  339. package/lib/network/discv5/index.d.ts +1 -1
  340. package/lib/network/discv5/index.d.ts.map +1 -1
  341. package/lib/network/discv5/index.js.map +1 -1
  342. package/lib/network/discv5/utils.js +1 -2
  343. package/lib/network/discv5/utils.js.map +1 -1
  344. package/lib/network/discv5/worker.js.map +1 -1
  345. package/lib/network/events.d.ts.map +1 -1
  346. package/lib/network/events.js +2 -4
  347. package/lib/network/events.js.map +1 -1
  348. package/lib/network/forks.js.map +1 -1
  349. package/lib/network/gossip/encoding.js.map +1 -1
  350. package/lib/network/gossip/errors.js.map +1 -1
  351. package/lib/network/gossip/gossipsub.js.map +1 -1
  352. package/lib/network/gossip/interface.js +2 -4
  353. package/lib/network/gossip/interface.js.map +1 -1
  354. package/lib/network/gossip/metrics.d.ts +14 -12
  355. package/lib/network/gossip/metrics.d.ts.map +1 -1
  356. package/lib/network/gossip/metrics.js.map +1 -1
  357. package/lib/network/gossip/scoringParameters.d.ts +1 -1
  358. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  359. package/lib/network/gossip/scoringParameters.js.map +1 -1
  360. package/lib/network/gossip/topic.d.ts +669 -24
  361. package/lib/network/gossip/topic.d.ts.map +1 -1
  362. package/lib/network/gossip/topic.js +3 -3
  363. package/lib/network/gossip/topic.js.map +1 -1
  364. package/lib/network/libp2p/error.js +1 -2
  365. package/lib/network/libp2p/error.js.map +1 -1
  366. package/lib/network/libp2p/index.js.map +1 -1
  367. package/lib/network/metadata.js +2 -4
  368. package/lib/network/metadata.js.map +1 -1
  369. package/lib/network/network.d.ts +1 -1
  370. package/lib/network/network.d.ts.map +1 -1
  371. package/lib/network/network.js.map +1 -1
  372. package/lib/network/peers/client.js +1 -2
  373. package/lib/network/peers/client.js.map +1 -1
  374. package/lib/network/peers/datastore.d.ts +3 -0
  375. package/lib/network/peers/datastore.d.ts.map +1 -1
  376. package/lib/network/peers/datastore.js.map +1 -1
  377. package/lib/network/peers/discover.d.ts +7 -0
  378. package/lib/network/peers/discover.d.ts.map +1 -1
  379. package/lib/network/peers/discover.js +2 -4
  380. package/lib/network/peers/discover.js.map +1 -1
  381. package/lib/network/peers/peerManager.d.ts +1 -0
  382. package/lib/network/peers/peerManager.d.ts.map +1 -1
  383. package/lib/network/peers/peerManager.js.map +1 -1
  384. package/lib/network/peers/peersData.js +1 -2
  385. package/lib/network/peers/peersData.js.map +1 -1
  386. package/lib/network/peers/score/interface.js +2 -4
  387. package/lib/network/peers/score/interface.js.map +1 -1
  388. package/lib/network/peers/score/score.js.map +1 -1
  389. package/lib/network/peers/score/store.js.map +1 -1
  390. package/lib/network/peers/score/utils.js.map +1 -1
  391. package/lib/network/peers/utils/assertPeerRelevance.js +1 -2
  392. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  393. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  394. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  395. package/lib/network/peers/utils/prioritizePeers.js +1 -2
  396. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  397. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  398. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  399. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  400. package/lib/network/processor/gossipHandlers.js.map +1 -1
  401. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  402. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  403. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  404. package/lib/network/processor/gossipQueues/types.js +2 -4
  405. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  406. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  407. package/lib/network/processor/index.d.ts.map +1 -1
  408. package/lib/network/processor/index.js +4 -5
  409. package/lib/network/processor/index.js.map +1 -1
  410. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  411. package/lib/network/reqresp/handlers/beaconBlocksByHead.js.map +1 -1
  412. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  413. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  414. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  415. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  416. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  417. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  418. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  419. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
  420. package/lib/network/reqresp/handlers/index.js.map +1 -1
  421. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  422. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +1 -1
  423. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  424. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +1 -1
  425. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  426. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +1 -1
  427. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +6 -2
  428. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  429. package/lib/network/reqresp/interface.js +1 -2
  430. package/lib/network/reqresp/interface.js.map +1 -1
  431. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  432. package/lib/network/reqresp/protocols.js +35 -9
  433. package/lib/network/reqresp/protocols.js.map +1 -1
  434. package/lib/network/reqresp/rateLimit.js +1 -1
  435. package/lib/network/reqresp/rateLimit.js.map +1 -1
  436. package/lib/network/reqresp/score.d.ts.map +1 -1
  437. package/lib/network/reqresp/score.js +20 -3
  438. package/lib/network/reqresp/score.js.map +1 -1
  439. package/lib/network/reqresp/types.js +2 -4
  440. package/lib/network/reqresp/types.js.map +1 -1
  441. package/lib/network/reqresp/utils/collect.js.map +1 -1
  442. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +1 -2
  443. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  444. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  445. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  446. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  447. package/lib/network/statusCache.js.map +1 -1
  448. package/lib/network/subnets/attnetsService.js +1 -2
  449. package/lib/network/subnets/attnetsService.js.map +1 -1
  450. package/lib/network/subnets/interface.js.map +1 -1
  451. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  452. package/lib/network/subnets/syncnetsService.js.map +1 -1
  453. package/lib/network/subnets/util.js.map +1 -1
  454. package/lib/network/util.js.map +1 -1
  455. package/lib/node/nodejs.d.ts +2 -2
  456. package/lib/node/nodejs.d.ts.map +1 -1
  457. package/lib/node/nodejs.js +1 -2
  458. package/lib/node/nodejs.js.map +1 -1
  459. package/lib/node/notifier.js.map +1 -1
  460. package/lib/node/utils/interop/deposits.js.map +1 -1
  461. package/lib/node/utils/interop/state.d.ts +1 -1
  462. package/lib/node/utils/interop/state.d.ts.map +1 -1
  463. package/lib/node/utils/interop/state.js.map +1 -1
  464. package/lib/node/utils/lightclient.js.map +1 -1
  465. package/lib/node/utils/state.js.map +1 -1
  466. package/lib/sync/backfill/backfill.d.ts +7 -0
  467. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  468. package/lib/sync/backfill/backfill.js +3 -6
  469. package/lib/sync/backfill/backfill.js.map +1 -1
  470. package/lib/sync/backfill/errors.js +1 -2
  471. package/lib/sync/backfill/errors.js.map +1 -1
  472. package/lib/sync/backfill/verify.js.map +1 -1
  473. package/lib/sync/interface.js +1 -2
  474. package/lib/sync/interface.js.map +1 -1
  475. package/lib/sync/range/batch.d.ts.map +1 -1
  476. package/lib/sync/range/batch.js +16 -6
  477. package/lib/sync/range/batch.js.map +1 -1
  478. package/lib/sync/range/chain.d.ts +10 -0
  479. package/lib/sync/range/chain.d.ts.map +1 -1
  480. package/lib/sync/range/chain.js +1 -2
  481. package/lib/sync/range/chain.js.map +1 -1
  482. package/lib/sync/range/range.d.ts.map +1 -1
  483. package/lib/sync/range/range.js +2 -4
  484. package/lib/sync/range/range.js.map +1 -1
  485. package/lib/sync/range/utils/batches.js +1 -2
  486. package/lib/sync/range/utils/batches.js.map +1 -1
  487. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  488. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  489. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  490. package/lib/sync/range/utils/updateChains.js.map +1 -1
  491. package/lib/sync/sync.js.map +1 -1
  492. package/lib/sync/types.js +3 -6
  493. package/lib/sync/types.js.map +1 -1
  494. package/lib/sync/unknownBlock.d.ts +23 -0
  495. package/lib/sync/unknownBlock.d.ts.map +1 -1
  496. package/lib/sync/unknownBlock.js.map +1 -1
  497. package/lib/sync/utils/downloadByRange.d.ts +4 -4
  498. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  499. package/lib/sync/utils/downloadByRange.js +1 -2
  500. package/lib/sync/utils/downloadByRange.js.map +1 -1
  501. package/lib/sync/utils/downloadByRoot.d.ts +7 -7
  502. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  503. package/lib/sync/utils/downloadByRoot.js +1 -2
  504. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  505. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  506. package/lib/sync/utils/rateLimit.js.map +1 -1
  507. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  508. package/lib/sync/utils/remoteSyncType.js +2 -4
  509. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  510. package/lib/util/address.js.map +1 -1
  511. package/lib/util/array.js.map +1 -1
  512. package/lib/util/asyncIterableToEvents.js +1 -2
  513. package/lib/util/asyncIterableToEvents.js.map +1 -1
  514. package/lib/util/binarySearch.js.map +1 -1
  515. package/lib/util/bitArray.js +1 -2
  516. package/lib/util/bitArray.js.map +1 -1
  517. package/lib/util/blobs.js.map +1 -1
  518. package/lib/util/bufferPool.js +1 -2
  519. package/lib/util/bufferPool.js.map +1 -1
  520. package/lib/util/chunkify.js.map +1 -1
  521. package/lib/util/clock.js +1 -2
  522. package/lib/util/clock.js.map +1 -1
  523. package/lib/util/dataColumns.js +2 -4
  524. package/lib/util/dataColumns.js.map +1 -1
  525. package/lib/util/dependentRoot.js.map +1 -1
  526. package/lib/util/enum.js.map +1 -1
  527. package/lib/util/error.js.map +1 -1
  528. package/lib/util/eventLoop.js.map +1 -1
  529. package/lib/util/execution.js +1 -2
  530. package/lib/util/execution.js.map +1 -1
  531. package/lib/util/file.js.map +1 -1
  532. package/lib/util/forkChoice.js.map +1 -1
  533. package/lib/util/forkName.js.map +1 -1
  534. package/lib/util/graffiti.js.map +1 -1
  535. package/lib/util/hex.js.map +1 -1
  536. package/lib/util/ip.js.map +1 -1
  537. package/lib/util/itTrigger.js.map +1 -1
  538. package/lib/util/map.js.map +1 -1
  539. package/lib/util/metadata.js.map +1 -1
  540. package/lib/util/multifork.js.map +1 -1
  541. package/lib/util/numpy.js.map +1 -1
  542. package/lib/util/peerId.js.map +1 -1
  543. package/lib/util/profile.js +1 -2
  544. package/lib/util/profile.js.map +1 -1
  545. package/lib/util/promises.js.map +1 -1
  546. package/lib/util/queue/errors.js +1 -2
  547. package/lib/util/queue/errors.js.map +1 -1
  548. package/lib/util/queue/fnQueue.js.map +1 -1
  549. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  550. package/lib/util/queue/itemQueue.js.map +1 -1
  551. package/lib/util/queue/options.js +1 -2
  552. package/lib/util/queue/options.js.map +1 -1
  553. package/lib/util/serializedCache.js.map +1 -1
  554. package/lib/util/set.js.map +1 -1
  555. package/lib/util/shuffle.js.map +1 -1
  556. package/lib/util/sortBy.js.map +1 -1
  557. package/lib/util/sszBytes.js.map +1 -1
  558. package/lib/util/time.js.map +1 -1
  559. package/lib/util/timeSeries.js.map +1 -1
  560. package/lib/util/types.d.ts.map +1 -1
  561. package/lib/util/workerEvents.d.ts +1 -1
  562. package/lib/util/workerEvents.d.ts.map +1 -1
  563. package/lib/util/workerEvents.js.map +1 -1
  564. package/lib/util/wrapError.js.map +1 -1
  565. package/package.json +16 -16
  566. package/src/api/impl/config/constants.ts +4 -0
  567. package/src/api/impl/validator/index.ts +5 -4
  568. package/src/chain/blocks/utils/polarBearBanner.ts +50 -0
  569. package/src/chain/blocks/verifyBlock.ts +6 -0
  570. package/src/chain/errors/executionPayloadBid.ts +11 -3
  571. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  572. package/src/chain/prepareNextSlot.ts +59 -34
  573. package/src/chain/produceBlock/produceBlockBody.ts +15 -3
  574. package/src/chain/seenCache/seenExecutionPayloadBids.ts +22 -9
  575. package/src/chain/validation/dataColumnSidecar.ts +27 -17
  576. package/src/chain/validation/executionPayloadBid.ts +91 -27
  577. package/src/execution/engine/interface.ts +1 -1
  578. package/src/execution/engine/types.ts +1 -1
  579. package/src/metrics/metrics/lodestar.ts +1 -1
  580. package/src/network/gossip/topic.ts +4 -2
  581. package/src/network/processor/index.ts +2 -1
  582. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +1 -1
  583. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +1 -1
  584. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +6 -2
  585. package/src/network/reqresp/protocols.ts +39 -11
  586. package/src/network/reqresp/rateLimit.ts +1 -1
  587. package/src/network/reqresp/score.ts +22 -3
  588. package/src/sync/range/batch.ts +19 -2
@@ -461,7 +461,8 @@ export class NetworkProcessor {
461
461
  break;
462
462
  }
463
463
  case GossipType.execution_payload_bid: {
464
- // instead of searching for the message root, this searches for the parent root
464
+ // Search for the parent independently of current head compatibility. A bid may arrive
465
+ // before its parent block, so compatibility is checked later during gossip validation.
465
466
  const parentBlockRoot = getParentBlockRootFromSignedExecutionPayloadBidSerialized(message.msg.data);
466
467
  const parentBlockHash = getParentBlockHashFromSignedExecutionPayloadBidSerialized(message.msg.data);
467
468
  if (
@@ -12,7 +12,7 @@ export async function* onLightClientFinalityUpdate(chain: IBeaconChain): AsyncIt
12
12
  throw new ResponseError(RespStatus.RESOURCE_UNAVAILABLE, "No latest finality update available");
13
13
  }
14
14
 
15
- const boundary = chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(update.signatureSlot));
15
+ const boundary = chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(update.attestedHeader.beacon.slot));
16
16
  const type = responseSszTypeByMethod[ReqRespMethod.LightClientFinalityUpdate](boundary.fork, 0);
17
17
  yield {
18
18
  data: type.serialize(update),
@@ -12,7 +12,7 @@ export async function* onLightClientOptimisticUpdate(chain: IBeaconChain): Async
12
12
  throw new ResponseError(RespStatus.RESOURCE_UNAVAILABLE, "No latest optimistic update available");
13
13
  }
14
14
 
15
- const boundary = chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(update.signatureSlot));
15
+ const boundary = chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(update.attestedHeader.beacon.slot));
16
16
  const type = responseSszTypeByMethod[ReqRespMethod.LightClientOptimisticUpdate](boundary.fork, 0);
17
17
  yield {
18
18
  data: type.serialize(update),
@@ -19,11 +19,15 @@ export async function* onLightClientUpdatesByRange(
19
19
  assertLightClientServer(chain.lightClientServer);
20
20
 
21
21
  const count = Math.min(MAX_REQUEST_LIGHT_CLIENT_UPDATES, requestBody.count);
22
+ if (!Number.isSafeInteger(requestBody.startPeriod)) {
23
+ throw new ResponseError(RespStatus.INVALID_REQUEST, "startPeriod out of range");
24
+ }
22
25
  let started = false;
23
- for (let period = requestBody.startPeriod; period < requestBody.startPeriod + count; period++) {
26
+ for (let i = 0; i < count; i++) {
27
+ const period = requestBody.startPeriod + i;
24
28
  try {
25
29
  const update = await chain.lightClientServer.getUpdate(period);
26
- const boundary = chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(update.signatureSlot));
30
+ const boundary = chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(update.attestedHeader.beacon.slot));
27
31
  const type = responseSszTypeByMethod[ReqRespMethod.LightClientUpdatesByRange](boundary.fork, 0);
28
32
 
29
33
  yield {
@@ -1,6 +1,6 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
- import {ForkName} from "@lodestar/params";
3
- import {ContextBytesFactory, ContextBytesType, Encoding} from "@lodestar/reqresp";
2
+ import {ForkName, MAX_DATA_COLUMN_SIDECAR_SIZE, isForkPostGloas} from "@lodestar/params";
3
+ import {ContextBytesFactory, ContextBytesType, Encoding, TypeSizes} from "@lodestar/reqresp";
4
4
  import {rateLimitQuotas} from "./rateLimit.js";
5
5
  import {ProtocolNoHandler, ReqRespMethod, Version, requestSszTypeByMethod, responseSszTypeByMethod} from "./types.js";
6
6
 
@@ -143,15 +143,43 @@ type ProtocolSummary = {
143
143
  };
144
144
 
145
145
  function toProtocol(protocol: ProtocolSummary) {
146
- return (fork: ForkName, config: BeaconConfig): ProtocolNoHandler => ({
147
- method: protocol.method,
148
- version: protocol.version,
149
- encoding: Encoding.SSZ_SNAPPY,
150
- contextBytes: toContextBytes(protocol.contextBytesType, config),
151
- inboundRateLimits: rateLimitQuotas(fork, config)[protocol.method],
152
- requestSizes: requestSszTypeByMethod(fork, config)[protocol.method],
153
- responseSizes: (fork) => responseSszTypeByMethod[protocol.method](fork, protocol.version),
154
- });
146
+ return (fork: ForkName, config: BeaconConfig): ProtocolNoHandler => {
147
+ const requestType = requestSszTypeByMethod(fork, config)[protocol.method];
148
+ return {
149
+ method: protocol.method,
150
+ version: protocol.version,
151
+ encoding: Encoding.SSZ_SNAPPY,
152
+ contextBytes: toContextBytes(protocol.contextBytesType, config),
153
+ inboundRateLimits: rateLimitQuotas(fork, config)[protocol.method],
154
+ requestSizes: requestType === null ? null : clampTypeSizes(requestType, protocol.method, fork, config),
155
+ responseSizes: (fork) =>
156
+ clampTypeSizes(responseSszTypeByMethod[protocol.method](fork, protocol.version), protocol.method, fork, config),
157
+ };
158
+ };
159
+ }
160
+
161
+ /**
162
+ * Bound the sizes accepted from the ssz-snappy length-prefix. Gloas progressive containers have broad
163
+ * theoretical SSZ max sizes so the preset p2p bounds must be used instead.
164
+ *
165
+ * The length-prefix must be within the size bounds derived from the payload SSZ type or `MAX_PAYLOAD_SIZE`,
166
+ * whichever is smaller, see
167
+ * https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.12/specs/phase0/p2p-interface.md#encoding-strategies.
168
+ * Type-specific SSZ bounds supersede the bounds derived from the SSZ type, see
169
+ * https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.12/specs/gloas/p2p-interface.md#type-specific-ssz-bounds.
170
+ */
171
+ function clampTypeSizes(type: TypeSizes, method: ReqRespMethod, fork: ForkName, config: BeaconConfig): TypeSizes {
172
+ let typeSpecificBound = config.MAX_PAYLOAD_SIZE;
173
+ if (isForkPostGloas(fork)) {
174
+ switch (method) {
175
+ case ReqRespMethod.DataColumnSidecarsByRange:
176
+ case ReqRespMethod.DataColumnSidecarsByRoot:
177
+ typeSpecificBound = MAX_DATA_COLUMN_SIDECAR_SIZE;
178
+ break;
179
+ }
180
+ }
181
+
182
+ return {minSize: type.minSize, maxSize: Math.min(type.maxSize, typeSpecificBound)};
155
183
  }
156
184
 
157
185
  function toContextBytes(type: ContextBytesType, config: BeaconConfig): ContextBytesFactory {
@@ -87,7 +87,7 @@ export const rateLimitQuotas: (fork: ForkName, config: BeaconConfig) => Record<R
87
87
  ),
88
88
  },
89
89
  [ReqRespMethod.ExecutionPayloadEnvelopesByRange]: {
90
- byPeer: {quota: config.MAX_REQUEST_BLOCKS_DENEB, quotaTimeMs: 10_000},
90
+ byPeer: {quota: config.MAX_REQUEST_PAYLOADS, quotaTimeMs: 10_000},
91
91
  getRequestCount: getRequestCountFn(
92
92
  fork,
93
93
  config,
@@ -33,9 +33,28 @@ export function onOutgoingReqRespError(e: RequestError, method: ReqRespMethod):
33
33
 
34
34
  case RequestErrorCode.DIAL_TIMEOUT:
35
35
  case RequestErrorCode.DIAL_ERROR:
36
- return e.message.includes(multiStreamSelectErrorCodes.protocolSelectionFailed) && method === ReqRespMethod.Ping
37
- ? PeerAction.Fatal
38
- : PeerAction.LowToleranceError;
36
+ // `RequestError` renders `e.message` as just the error code (see `renderErrorMessage`), so the
37
+ // multistream "protocol selection failed" text is only on the wrapped inner error, which is
38
+ // available on `DIAL_ERROR` via `e.type.error` (`DIAL_TIMEOUT` carries no inner error).
39
+ if (
40
+ e.type.code === RequestErrorCode.DIAL_ERROR &&
41
+ e.type.error.message.includes(multiStreamSelectErrorCodes.protocolSelectionFailed)
42
+ ) {
43
+ // Peer does not support the protocol, a real incompatibility rather than a transient
44
+ // failure, so keep the stronger penalty (Fatal for Ping, as before).
45
+ return method === ReqRespMethod.Ping ? PeerAction.Fatal : PeerAction.LowToleranceError;
46
+ }
47
+ switch (method) {
48
+ // Ping and Status are liveness probes; their dial timeouts are dominated by transient
49
+ // network congestion rather than peer misbehavior, so penalize leniently to avoid
50
+ // self-inflicted peer starvation (https://github.com/ChainSafe/lodestar/issues/9562),
51
+ // while still applying some penalty so genuinely dead peers eventually free the slot.
52
+ case ReqRespMethod.Ping:
53
+ case ReqRespMethod.Status:
54
+ return PeerAction.HighToleranceError;
55
+ default:
56
+ return PeerAction.LowToleranceError;
57
+ }
39
58
  // TODO: Detect SSZDecodeError and return PeerAction.Fatal
40
59
 
41
60
  case RequestErrorCode.RESP_TIMEOUT:
@@ -5,6 +5,7 @@ import {LodestarError, byteArrayEquals, prettyPrintIndices, toRootHex} from "@lo
5
5
  import {isBlockInputColumns} from "../../chain/blocks/blockInput/blockInput.js";
6
6
  import {IBlockInput} from "../../chain/blocks/blockInput/types.js";
7
7
  import {isDaOutOfRange} from "../../chain/blocks/blockInput/utils.js";
8
+ import {PayloadError, PayloadErrorCode} from "../../chain/blocks/importExecutionPayload.js";
8
9
  import {PayloadEnvelopeInput} from "../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
9
10
  import {BlockError, BlockErrorCode} from "../../chain/errors/index.js";
10
11
  import {ZERO_HASH} from "../../constants/constants.js";
@@ -702,7 +703,7 @@ export class Batch {
702
703
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.Processing));
703
704
  }
704
705
 
705
- if (err instanceof BlockError && err.type.code === BlockErrorCode.EXECUTION_ENGINE_ERROR) {
706
+ if (isExecutionEngineError(err)) {
706
707
  this.onExecutionEngineError(this.state.attempt);
707
708
  } else {
708
709
  this.onProcessingError(this.state.attempt);
@@ -717,7 +718,7 @@ export class Batch {
717
718
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingValidation));
718
719
  }
719
720
 
720
- if (err instanceof BlockError && err.type.code === BlockErrorCode.EXECUTION_ENGINE_ERROR) {
721
+ if (isExecutionEngineError(err)) {
721
722
  this.onExecutionEngineError(this.state.attempt);
722
723
  } else {
723
724
  this.onProcessingError(this.state.attempt);
@@ -787,3 +788,19 @@ type BatchErrorMetadata = {
787
788
  };
788
789
 
789
790
  export class BatchError extends LodestarError<BatchErrorType & BatchErrorMetadata> {}
791
+
792
+ function isExecutionEngineError(err: Error): boolean {
793
+ if (!(err instanceof BlockError)) {
794
+ return false;
795
+ }
796
+
797
+ if (err.type.code === BlockErrorCode.EXECUTION_ENGINE_ERROR) {
798
+ return true;
799
+ }
800
+
801
+ return (
802
+ err.type.code === BlockErrorCode.BEACON_CHAIN_ERROR &&
803
+ err.type.error instanceof PayloadError &&
804
+ err.type.error.type.code === PayloadErrorCode.EXECUTION_ENGINE_ERROR
805
+ );
806
+ }