@lodestar/beacon-node 1.38.0-rc.0 → 1.39.0-dev.0321dbcf04

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 (398) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  3. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  4. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/state/index.js +4 -5
  6. package/lib/api/impl/beacon/state/index.js.map +1 -1
  7. package/lib/api/impl/validator/index.js +1 -1
  8. package/lib/api/impl/validator/index.js.map +1 -1
  9. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  10. package/lib/chain/blocks/verifyBlock.js +1 -21
  11. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  12. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -6
  13. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  14. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +9 -128
  15. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  16. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +3 -2
  17. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  18. package/lib/chain/blocks/verifyBlocksSignatures.js +3 -2
  19. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  20. package/lib/chain/chain.d.ts +8 -12
  21. package/lib/chain/chain.d.ts.map +1 -1
  22. package/lib/chain/chain.js +25 -59
  23. package/lib/chain/chain.js.map +1 -1
  24. package/lib/chain/initState.d.ts +1 -14
  25. package/lib/chain/initState.d.ts.map +1 -1
  26. package/lib/chain/initState.js +1 -62
  27. package/lib/chain/initState.js.map +1 -1
  28. package/lib/chain/interface.d.ts +4 -9
  29. package/lib/chain/interface.d.ts.map +1 -1
  30. package/lib/chain/interface.js.map +1 -1
  31. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +5 -6
  32. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  33. package/lib/chain/opPools/aggregatedAttestationPool.js +7 -132
  34. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  35. package/lib/chain/opPools/opPool.d.ts +3 -0
  36. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  37. package/lib/chain/opPools/opPool.js +9 -8
  38. package/lib/chain/opPools/opPool.js.map +1 -1
  39. package/lib/chain/options.d.ts +0 -4
  40. package/lib/chain/options.d.ts.map +1 -1
  41. package/lib/chain/options.js +0 -2
  42. package/lib/chain/options.js.map +1 -1
  43. package/lib/chain/prepareNextSlot.d.ts +0 -4
  44. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  45. package/lib/chain/prepareNextSlot.js +2 -22
  46. package/lib/chain/prepareNextSlot.js.map +1 -1
  47. package/lib/chain/produceBlock/produceBlockBody.d.ts +2 -22
  48. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  49. package/lib/chain/produceBlock/produceBlockBody.js +33 -99
  50. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  51. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
  52. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  53. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
  54. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  55. package/lib/chain/validation/aggregateAndProof.js +9 -0
  56. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  57. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  58. package/lib/chain/validation/attesterSlashing.js +2 -2
  59. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  60. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  61. package/lib/chain/validation/blobSidecar.js +2 -3
  62. package/lib/chain/validation/blobSidecar.js.map +1 -1
  63. package/lib/chain/validation/block.js +1 -1
  64. package/lib/chain/validation/block.js.map +1 -1
  65. package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -1
  66. package/lib/chain/validation/blsToExecutionChange.js +10 -3
  67. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  68. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  69. package/lib/chain/validation/dataColumnSidecar.js +2 -3
  70. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  71. package/lib/chain/validation/proposerSlashing.js +3 -2
  72. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  73. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  74. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  75. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +3 -2
  76. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  77. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -4
  78. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  79. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +3 -2
  80. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  81. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  82. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  83. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  84. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  85. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  86. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  87. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +3 -2
  88. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  89. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +2 -3
  90. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  91. package/lib/chain/validation/syncCommittee.js +1 -1
  92. package/lib/chain/validation/syncCommittee.js.map +1 -1
  93. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  94. package/lib/chain/validation/syncCommitteeContributionAndProof.js +5 -4
  95. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  96. package/lib/chain/validation/voluntaryExit.js +1 -1
  97. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  98. package/lib/db/beacon.d.ts +3 -7
  99. package/lib/db/beacon.d.ts.map +1 -1
  100. package/lib/db/beacon.js +33 -12
  101. package/lib/db/beacon.js.map +1 -1
  102. package/lib/db/buckets.d.ts +12 -6
  103. package/lib/db/buckets.d.ts.map +1 -1
  104. package/lib/db/buckets.js +6 -1
  105. package/lib/db/buckets.js.map +1 -1
  106. package/lib/db/interface.d.ts +2 -7
  107. package/lib/db/interface.d.ts.map +1 -1
  108. package/lib/db/repositories/index.d.ts +0 -3
  109. package/lib/db/repositories/index.d.ts.map +1 -1
  110. package/lib/db/repositories/index.js +0 -3
  111. package/lib/db/repositories/index.js.map +1 -1
  112. package/lib/execution/engine/http.d.ts +5 -13
  113. package/lib/execution/engine/http.d.ts.map +1 -1
  114. package/lib/execution/engine/http.js +6 -15
  115. package/lib/execution/engine/http.js.map +1 -1
  116. package/lib/execution/engine/index.d.ts.map +1 -1
  117. package/lib/execution/engine/index.js +1 -1
  118. package/lib/execution/engine/index.js.map +1 -1
  119. package/lib/execution/engine/interface.d.ts +1 -1
  120. package/lib/execution/engine/interface.d.ts.map +1 -1
  121. package/lib/execution/engine/interface.js.map +1 -1
  122. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  123. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  124. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  125. package/lib/execution/engine/jwt.d.ts.map +1 -0
  126. package/lib/execution/engine/jwt.js.map +1 -0
  127. package/lib/execution/engine/mock.d.ts +11 -12
  128. package/lib/execution/engine/mock.d.ts.map +1 -1
  129. package/lib/execution/engine/mock.js +38 -22
  130. package/lib/execution/engine/mock.js.map +1 -1
  131. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  132. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  133. package/lib/execution/engine/types.d.ts +1 -1
  134. package/lib/execution/engine/types.d.ts.map +1 -1
  135. package/lib/execution/engine/types.js +1 -1
  136. package/lib/execution/engine/types.js.map +1 -1
  137. package/lib/execution/engine/utils.d.ts +64 -2
  138. package/lib/execution/engine/utils.d.ts.map +1 -1
  139. package/lib/execution/engine/utils.js +91 -2
  140. package/lib/execution/engine/utils.js.map +1 -1
  141. package/lib/index.d.ts +1 -2
  142. package/lib/index.d.ts.map +1 -1
  143. package/lib/index.js +1 -2
  144. package/lib/index.js.map +1 -1
  145. package/lib/metrics/metrics/lodestar.d.ts +0 -49
  146. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  147. package/lib/metrics/metrics/lodestar.js +0 -134
  148. package/lib/metrics/metrics/lodestar.js.map +1 -1
  149. package/lib/network/core/events.d.ts +1 -1
  150. package/lib/network/core/events.d.ts.map +1 -1
  151. package/lib/network/core/events.js +1 -1
  152. package/lib/network/core/events.js.map +1 -1
  153. package/lib/network/events.d.ts +6 -1
  154. package/lib/network/events.d.ts.map +1 -1
  155. package/lib/network/events.js +7 -1
  156. package/lib/network/events.js.map +1 -1
  157. package/lib/network/peers/discover.d.ts.map +1 -1
  158. package/lib/network/peers/discover.js.map +1 -1
  159. package/lib/node/nodejs.d.ts +6 -3
  160. package/lib/node/nodejs.d.ts.map +1 -1
  161. package/lib/node/nodejs.js +30 -12
  162. package/lib/node/nodejs.js.map +1 -1
  163. package/lib/node/notifier.d.ts.map +1 -1
  164. package/lib/node/notifier.js +0 -13
  165. package/lib/node/notifier.js.map +1 -1
  166. package/lib/node/options.d.ts +0 -2
  167. package/lib/node/options.d.ts.map +1 -1
  168. package/lib/node/options.js +0 -2
  169. package/lib/node/options.js.map +1 -1
  170. package/lib/node/utils/interop/deposits.d.ts +2 -1
  171. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  172. package/lib/node/utils/interop/deposits.js.map +1 -1
  173. package/lib/node/utils/interop/state.d.ts +1 -1
  174. package/lib/node/utils/interop/state.d.ts.map +1 -1
  175. package/lib/node/utils/state.d.ts +1 -7
  176. package/lib/node/utils/state.d.ts.map +1 -1
  177. package/lib/node/utils/state.js +1 -14
  178. package/lib/node/utils/state.js.map +1 -1
  179. package/lib/sync/backfill/backfill.js +2 -2
  180. package/lib/sync/backfill/backfill.js.map +1 -1
  181. package/lib/sync/backfill/verify.d.ts +2 -2
  182. package/lib/sync/backfill/verify.d.ts.map +1 -1
  183. package/lib/sync/backfill/verify.js +2 -2
  184. package/lib/sync/backfill/verify.js.map +1 -1
  185. package/lib/util/workerEvents.d.ts +1 -6
  186. package/lib/util/workerEvents.d.ts.map +1 -1
  187. package/lib/util/workerEvents.js +8 -8
  188. package/lib/util/workerEvents.js.map +1 -1
  189. package/package.json +28 -27
  190. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  191. package/src/api/impl/beacon/state/index.ts +4 -5
  192. package/src/api/impl/validator/index.ts +1 -1
  193. package/src/chain/blocks/verifyBlock.ts +3 -24
  194. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -161
  195. package/src/chain/blocks/verifyBlocksSignatures.ts +15 -4
  196. package/src/chain/chain.ts +35 -69
  197. package/src/chain/initState.ts +1 -97
  198. package/src/chain/interface.ts +4 -8
  199. package/src/chain/opPools/aggregatedAttestationPool.ts +9 -184
  200. package/src/chain/opPools/opPool.ts +8 -8
  201. package/src/chain/options.ts +0 -6
  202. package/src/chain/prepareNextSlot.ts +2 -29
  203. package/src/chain/produceBlock/produceBlockBody.ts +34 -133
  204. package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
  205. package/src/chain/validation/aggregateAndProof.ts +12 -0
  206. package/src/chain/validation/attesterSlashing.ts +14 -2
  207. package/src/chain/validation/blobSidecar.ts +11 -3
  208. package/src/chain/validation/block.ts +1 -1
  209. package/src/chain/validation/blsToExecutionChange.ts +10 -8
  210. package/src/chain/validation/dataColumnSidecar.ts +8 -3
  211. package/src/chain/validation/proposerSlashing.ts +8 -2
  212. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  213. package/src/chain/validation/signatureSets/contributionAndProof.ts +6 -3
  214. package/src/chain/validation/signatureSets/syncCommittee.ts +6 -2
  215. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  216. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +5 -2
  217. package/src/chain/validation/syncCommittee.ts +1 -1
  218. package/src/chain/validation/syncCommitteeContributionAndProof.ts +10 -6
  219. package/src/chain/validation/voluntaryExit.ts +1 -1
  220. package/src/db/beacon.ts +38 -16
  221. package/src/db/buckets.ts +12 -7
  222. package/src/db/interface.ts +2 -13
  223. package/src/db/repositories/index.ts +0 -3
  224. package/src/execution/engine/http.ts +12 -21
  225. package/src/execution/engine/index.ts +1 -1
  226. package/src/execution/engine/interface.ts +1 -1
  227. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  228. package/src/execution/engine/mock.ts +44 -30
  229. package/src/execution/engine/payloadIdCache.ts +1 -1
  230. package/src/execution/engine/types.ts +9 -9
  231. package/src/execution/engine/utils.ts +111 -5
  232. package/src/index.ts +1 -2
  233. package/src/metrics/metrics/lodestar.ts +0 -144
  234. package/src/network/core/events.ts +1 -1
  235. package/src/network/events.ts +7 -1
  236. package/src/network/peers/discover.ts +3 -3
  237. package/src/node/nodejs.ts +37 -13
  238. package/src/node/notifier.ts +0 -16
  239. package/src/node/options.ts +0 -3
  240. package/src/node/utils/interop/deposits.ts +3 -1
  241. package/src/node/utils/interop/state.ts +1 -1
  242. package/src/node/utils/state.ts +3 -18
  243. package/src/sync/backfill/backfill.ts +2 -2
  244. package/src/sync/backfill/verify.ts +4 -3
  245. package/src/util/workerEvents.ts +9 -8
  246. package/lib/chain/genesis/genesis.d.ts +0 -51
  247. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  248. package/lib/chain/genesis/genesis.js +0 -123
  249. package/lib/chain/genesis/genesis.js.map +0 -1
  250. package/lib/chain/genesis/interface.d.ts +0 -13
  251. package/lib/chain/genesis/interface.d.ts.map +0 -1
  252. package/lib/chain/genesis/interface.js +0 -2
  253. package/lib/chain/genesis/interface.js.map +0 -1
  254. package/lib/chain/rewards/attestationsRewards.d.ts +0 -7
  255. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  256. package/lib/chain/rewards/attestationsRewards.js +0 -112
  257. package/lib/chain/rewards/attestationsRewards.js.map +0 -1
  258. package/lib/chain/rewards/blockRewards.d.ts +0 -14
  259. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  260. package/lib/chain/rewards/blockRewards.js +0 -94
  261. package/lib/chain/rewards/blockRewards.js.map +0 -1
  262. package/lib/chain/rewards/syncCommitteeRewards.d.ts +0 -6
  263. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  264. package/lib/chain/rewards/syncCommitteeRewards.js +0 -37
  265. package/lib/chain/rewards/syncCommitteeRewards.js.map +0 -1
  266. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  267. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  268. package/lib/db/repositories/depositDataRoot.js +0 -62
  269. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  270. package/lib/db/repositories/depositEvent.d.ts +0 -13
  271. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  272. package/lib/db/repositories/depositEvent.js +0 -27
  273. package/lib/db/repositories/depositEvent.js.map +0 -1
  274. package/lib/db/repositories/eth1Data.d.ts +0 -13
  275. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  276. package/lib/db/repositories/eth1Data.js +0 -26
  277. package/lib/db/repositories/eth1Data.js.map +0 -1
  278. package/lib/db/single/index.d.ts +0 -3
  279. package/lib/db/single/index.d.ts.map +0 -1
  280. package/lib/db/single/index.js +0 -3
  281. package/lib/db/single/index.js.map +0 -1
  282. package/lib/db/single/preGenesisState.d.ts +0 -16
  283. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  284. package/lib/db/single/preGenesisState.js +0 -29
  285. package/lib/db/single/preGenesisState.js.map +0 -1
  286. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  287. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  288. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  289. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  290. package/lib/eth1/errors.d.ts +0 -66
  291. package/lib/eth1/errors.d.ts.map +0 -1
  292. package/lib/eth1/errors.js +0 -27
  293. package/lib/eth1/errors.js.map +0 -1
  294. package/lib/eth1/eth1DataCache.d.ts +0 -19
  295. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  296. package/lib/eth1/eth1DataCache.js +0 -19
  297. package/lib/eth1/eth1DataCache.js.map +0 -1
  298. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  299. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  300. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  301. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  302. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  303. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  304. package/lib/eth1/eth1DepositsCache.js +0 -119
  305. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  306. package/lib/eth1/eth1MergeBlockTracker.d.ts +0 -65
  307. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  308. package/lib/eth1/eth1MergeBlockTracker.js +0 -262
  309. package/lib/eth1/eth1MergeBlockTracker.js.map +0 -1
  310. package/lib/eth1/index.d.ts +0 -46
  311. package/lib/eth1/index.d.ts.map +0 -1
  312. package/lib/eth1/index.js +0 -121
  313. package/lib/eth1/index.js.map +0 -1
  314. package/lib/eth1/interface.d.ts +0 -112
  315. package/lib/eth1/interface.d.ts.map +0 -1
  316. package/lib/eth1/interface.js +0 -8
  317. package/lib/eth1/interface.js.map +0 -1
  318. package/lib/eth1/options.d.ts +0 -22
  319. package/lib/eth1/options.d.ts.map +0 -1
  320. package/lib/eth1/options.js +0 -8
  321. package/lib/eth1/options.js.map +0 -1
  322. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  323. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  324. package/lib/eth1/provider/eth1Provider.js +0 -147
  325. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  326. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  327. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  328. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  329. package/lib/eth1/provider/jwt.js.map +0 -1
  330. package/lib/eth1/provider/utils.d.ts +0 -65
  331. package/lib/eth1/provider/utils.d.ts.map +0 -1
  332. package/lib/eth1/provider/utils.js +0 -120
  333. package/lib/eth1/provider/utils.js.map +0 -1
  334. package/lib/eth1/stream.d.ts +0 -15
  335. package/lib/eth1/stream.d.ts.map +0 -1
  336. package/lib/eth1/stream.js +0 -54
  337. package/lib/eth1/stream.js.map +0 -1
  338. package/lib/eth1/utils/depositContract.d.ts +0 -14
  339. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  340. package/lib/eth1/utils/depositContract.js +0 -33
  341. package/lib/eth1/utils/depositContract.js.map +0 -1
  342. package/lib/eth1/utils/deposits.d.ts +0 -8
  343. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  344. package/lib/eth1/utils/deposits.js +0 -47
  345. package/lib/eth1/utils/deposits.js.map +0 -1
  346. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  347. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  348. package/lib/eth1/utils/eth1Data.js +0 -77
  349. package/lib/eth1/utils/eth1Data.js.map +0 -1
  350. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  351. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  352. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  353. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  354. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  355. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  356. package/lib/eth1/utils/eth1Vote.js +0 -111
  357. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  358. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  359. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  360. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  361. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  362. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  363. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  364. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  365. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  366. package/src/chain/genesis/genesis.ts +0 -190
  367. package/src/chain/genesis/interface.ts +0 -14
  368. package/src/chain/rewards/attestationsRewards.ts +0 -196
  369. package/src/chain/rewards/blockRewards.ts +0 -150
  370. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  371. package/src/db/repositories/depositDataRoot.ts +0 -80
  372. package/src/db/repositories/depositEvent.ts +0 -32
  373. package/src/db/repositories/eth1Data.ts +0 -33
  374. package/src/db/single/index.ts +0 -2
  375. package/src/db/single/preGenesisState.ts +0 -37
  376. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  377. package/src/eth1/errors.ts +0 -40
  378. package/src/eth1/eth1DataCache.ts +0 -26
  379. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  380. package/src/eth1/eth1DepositsCache.ts +0 -141
  381. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  382. package/src/eth1/index.ts +0 -157
  383. package/src/eth1/interface.ts +0 -131
  384. package/src/eth1/options.ts +0 -28
  385. package/src/eth1/provider/eth1Provider.ts +0 -229
  386. package/src/eth1/provider/utils.ts +0 -136
  387. package/src/eth1/stream.ts +0 -75
  388. package/src/eth1/utils/depositContract.ts +0 -37
  389. package/src/eth1/utils/deposits.ts +0 -70
  390. package/src/eth1/utils/eth1Data.ts +0 -100
  391. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  392. package/src/eth1/utils/eth1Vote.ts +0 -142
  393. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  394. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  395. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  396. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  397. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  398. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
@@ -1,37 +1,11 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
2
  import {ZERO_HASH} from "@lodestar/params";
3
- import {
4
- BeaconStateAllForks,
5
- CachedBeaconStateAllForks,
6
- computeEpochAtSlot,
7
- computeStartSlotAtEpoch,
8
- } from "@lodestar/state-transition";
3
+ import {BeaconStateAllForks, computeEpochAtSlot, computeStartSlotAtEpoch} from "@lodestar/state-transition";
9
4
  import {SignedBeaconBlock, ssz} from "@lodestar/types";
10
5
  import {Logger, toHex, toRootHex} from "@lodestar/utils";
11
6
  import {GENESIS_SLOT} from "../constants/index.js";
12
7
  import {IBeaconDb} from "../db/index.js";
13
- import {Eth1Provider} from "../eth1/index.js";
14
- import {Eth1Options} from "../eth1/options.js";
15
8
  import {Metrics} from "../metrics/index.js";
16
- import {GenesisBuilder} from "./genesis/genesis.js";
17
- import {GenesisResult} from "./genesis/interface.js";
18
-
19
- export async function persistGenesisResult(
20
- db: IBeaconDb,
21
- genesisResult: GenesisResult,
22
- genesisBlock: SignedBeaconBlock
23
- ): Promise<void> {
24
- await Promise.all([
25
- db.stateArchive.add(genesisResult.state),
26
- db.blockArchive.add(genesisBlock),
27
- db.depositDataRoot.putList(genesisResult.depositTree.getAllReadonlyValues()),
28
- db.eth1Data.put(genesisResult.block.timestamp, {
29
- ...genesisResult.block,
30
- depositCount: genesisResult.depositTree.length,
31
- depositRoot: genesisResult.depositTree.hashTreeRoot(),
32
- }),
33
- ]);
34
- }
35
9
 
36
10
  export async function persistAnchorState(
37
11
  config: ChainForkConfig,
@@ -75,76 +49,6 @@ export function createGenesisBlock(config: ChainForkConfig, genesisState: Beacon
75
49
  return genesisBlock;
76
50
  }
77
51
 
78
- /**
79
- * Initialize and persist a genesis state and related data
80
- */
81
- export async function initStateFromEth1({
82
- config,
83
- db,
84
- logger,
85
- opts,
86
- signal,
87
- }: {
88
- config: ChainForkConfig;
89
- db: IBeaconDb;
90
- logger: Logger;
91
- opts: Eth1Options;
92
- signal: AbortSignal;
93
- }): Promise<CachedBeaconStateAllForks> {
94
- logger.info("Listening to eth1 for genesis state");
95
-
96
- const statePreGenesis = await db.preGenesisState.get();
97
- const depositTree = await db.depositDataRoot.getDepositRootTree();
98
- const lastProcessedBlockNumber = await db.preGenesisStateLastProcessedBlock.get();
99
-
100
- const builder = new GenesisBuilder({
101
- config,
102
- eth1Provider: new Eth1Provider(config, {...opts, logger}, signal),
103
- logger,
104
- signal,
105
- pendingStatus:
106
- statePreGenesis && depositTree !== undefined && lastProcessedBlockNumber != null
107
- ? {state: statePreGenesis, depositTree, lastProcessedBlockNumber}
108
- : undefined,
109
- });
110
-
111
- try {
112
- const genesisResult = await builder.waitForGenesis();
113
-
114
- // Note: .hashTreeRoot() automatically commits()
115
- const genesisBlock = createGenesisBlock(config, genesisResult.state);
116
- const types = config.getForkTypes(GENESIS_SLOT);
117
- const stateRoot = genesisResult.state.hashTreeRoot();
118
- const blockRoot = types.BeaconBlock.hashTreeRoot(genesisBlock.message);
119
-
120
- logger.info("Initializing genesis state", {
121
- stateRoot: toRootHex(stateRoot),
122
- blockRoot: toRootHex(blockRoot),
123
- validatorCount: genesisResult.state.validators.length,
124
- });
125
-
126
- await persistGenesisResult(db, genesisResult, genesisBlock);
127
-
128
- logger.verbose("Clearing pending genesis state if any");
129
- await db.preGenesisState.delete();
130
- await db.preGenesisStateLastProcessedBlock.delete();
131
-
132
- return genesisResult.state;
133
- } catch (e) {
134
- if (builder.lastProcessedBlockNumber != null) {
135
- logger.info("Persisting genesis state", {block: builder.lastProcessedBlockNumber});
136
-
137
- // Commit changed before serializing
138
- builder.state.commit();
139
-
140
- await db.preGenesisState.put(builder.state);
141
- await db.depositDataRoot.putList(builder.depositTree.getAllReadonlyValues());
142
- await db.preGenesisStateLastProcessedBlock.put(builder.lastProcessedBlockNumber);
143
- }
144
- throw e;
145
- }
146
- }
147
-
148
52
  /**
149
53
  * Restore the latest beacon state from db
150
54
  */
@@ -23,9 +23,9 @@ import {
23
23
  altair,
24
24
  capella,
25
25
  phase0,
26
+ rewards,
26
27
  } from "@lodestar/types";
27
28
  import {Logger} from "@lodestar/utils";
28
- import {IEth1ForBlockProduction} from "../eth1/index.js";
29
29
  import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
30
30
  import {Metrics} from "../metrics/metrics.js";
31
31
  import {BufferPool} from "../util/bufferPool.js";
@@ -49,9 +49,6 @@ import {IChainOptions} from "./options.js";
49
49
  import {AssembledBlockType, BlockAttributes, BlockType, ProduceResult} from "./produceBlock/produceBlockBody.js";
50
50
  import {IStateRegenerator, RegenCaller} from "./regen/index.js";
51
51
  import {ReprocessController} from "./reprocess.js";
52
- import {AttestationsRewards} from "./rewards/attestationsRewards.js";
53
- import {BlockRewards} from "./rewards/blockRewards.js";
54
- import {SyncCommitteeRewards} from "./rewards/syncCommitteeRewards.js";
55
52
  import {
56
53
  SeenAggregators,
57
54
  SeenAttesters,
@@ -88,7 +85,6 @@ export interface IBeaconChain {
88
85
  readonly genesisTime: UintNum64;
89
86
  readonly genesisValidatorsRoot: Root;
90
87
  readonly earliestAvailableSlot: Slot;
91
- readonly eth1: IEth1ForBlockProduction;
92
88
  readonly executionEngine: IExecutionEngine;
93
89
  readonly executionBuilder?: IExecutionBuilder;
94
90
  // Expose config for convenience in modularized functions
@@ -257,15 +253,15 @@ export interface IBeaconChain {
257
253
  regenCanAcceptWork(): boolean;
258
254
  blsThreadPoolCanAcceptWork(): boolean;
259
255
 
260
- getBlockRewards(blockRef: BeaconBlock | BlindedBeaconBlock): Promise<BlockRewards>;
256
+ getBlockRewards(blockRef: BeaconBlock | BlindedBeaconBlock): Promise<rewards.BlockRewards>;
261
257
  getAttestationsRewards(
262
258
  epoch: Epoch,
263
259
  validatorIds?: (ValidatorIndex | string)[]
264
- ): Promise<{rewards: AttestationsRewards; executionOptimistic: boolean; finalized: boolean}>;
260
+ ): Promise<{rewards: rewards.AttestationsRewards; executionOptimistic: boolean; finalized: boolean}>;
265
261
  getSyncCommitteeRewards(
266
262
  blockRef: BeaconBlock | BlindedBeaconBlock,
267
263
  validatorIds?: (ValidatorIndex | string)[]
268
- ): Promise<SyncCommitteeRewards>;
264
+ ): Promise<rewards.SyncCommitteeRewards>;
269
265
  }
270
266
 
271
267
  export type SSZObjectType =
@@ -1,11 +1,10 @@
1
1
  import {Signature, aggregateSignatures} from "@chainsafe/blst";
2
2
  import {BitArray} from "@chainsafe/ssz";
3
- import {ChainForkConfig} from "@lodestar/config";
3
+ import {BeaconConfig} from "@lodestar/config";
4
4
  import {IForkChoice} from "@lodestar/fork-choice";
5
5
  import {
6
6
  ForkName,
7
7
  ForkSeq,
8
- MAX_ATTESTATIONS,
9
8
  MAX_ATTESTATIONS_ELECTRA,
10
9
  MAX_COMMITTEES_PER_SLOT,
11
10
  MIN_ATTESTATION_INCLUSION_DELAY,
@@ -23,7 +22,6 @@ import {
23
22
  CachedBeaconStateAllForks,
24
23
  CachedBeaconStateAltair,
25
24
  CachedBeaconStateGloas,
26
- CachedBeaconStatePhase0,
27
25
  EffectiveBalanceIncrements,
28
26
  RootCache,
29
27
  computeEpochAtSlot,
@@ -32,17 +30,7 @@ import {
32
30
  getAttestationParticipationStatus,
33
31
  getBlockRootAtSlot,
34
32
  } from "@lodestar/state-transition";
35
- import {
36
- Attestation,
37
- Epoch,
38
- RootHex,
39
- Slot,
40
- ValidatorIndex,
41
- electra,
42
- isElectraAttestation,
43
- phase0,
44
- ssz,
45
- } from "@lodestar/types";
33
+ import {Attestation, Epoch, RootHex, Slot, electra, isElectraAttestation, phase0, ssz} from "@lodestar/types";
46
34
  import {MapDef, assert, toRootHex} from "@lodestar/utils";
47
35
  import {Metrics} from "../../metrics/metrics.js";
48
36
  import {IntersectResult, intersectUint8Arrays} from "../../util/bitArray.js";
@@ -54,8 +42,6 @@ type DataRootHex = string;
54
42
 
55
43
  type CommitteeIndex = number;
56
44
 
57
- // for pre-electra
58
- type AttestationWithScore = {attestation: Attestation; score: number};
59
45
  /**
60
46
  * for electra, this is to consolidate aggregated attestations of the same attestation data into a single attestation to be included in block
61
47
  * note that this is local definition in this file and it's NOT validator consolidation
@@ -110,15 +96,6 @@ const MAX_RETAINED_ATTESTATIONS_PER_GROUP = 4;
110
96
  */
111
97
  const MAX_RETAINED_ATTESTATIONS_PER_GROUP_ELECTRA = 8;
112
98
 
113
- /**
114
- * Pre-electra, each slot has 64 committees, and each block has 128 attestations max so in average
115
- * we get 2 attestation per groups.
116
- * Starting from Jan 2024, we have a performance issue getting attestations for a block. Based on the
117
- * fact that lot of groups will have only 1 full participation attestation, increase this number
118
- * a bit higher than average. This also help decrease number of slots to search for attestations.
119
- */
120
- const MAX_ATTESTATIONS_PER_GROUP = 3;
121
-
122
99
  /**
123
100
  * For electra, there is on chain aggregation of attestations across committees, so we can just pick up to 8
124
101
  * attestations per group, sort by scores to get first 8.
@@ -162,7 +139,7 @@ export class AggregatedAttestationPool {
162
139
  private lowestPermissibleSlot = 0;
163
140
 
164
141
  constructor(
165
- private readonly config: ChainForkConfig,
142
+ private readonly config: BeaconConfig,
166
143
  private readonly metrics: Metrics | null = null
167
144
  ) {
168
145
  metrics?.opPool.aggregatedAttestationPool.attDataPerSlot.addCollect(() => this.onScrapeMetrics(metrics));
@@ -245,108 +222,7 @@ export class AggregatedAttestationPool {
245
222
  forkChoice: IForkChoice,
246
223
  state: CachedBeaconStateAllForks
247
224
  ): phase0.Attestation[] {
248
- const stateSlot = state.slot;
249
- const stateEpoch = state.epochCtx.epoch;
250
- const statePrevEpoch = stateEpoch - 1;
251
-
252
- const notSeenValidatorsFn = getNotSeenValidatorsFn(state);
253
- const validateAttestationDataFn = getValidateAttestationDataFn(forkChoice, state);
254
-
255
- const attestationsByScore: AttestationWithScore[] = [];
256
-
257
- const slots = Array.from(this.attestationGroupByIndexByDataHexBySlot.keys()).sort((a, b) => b - a);
258
- let minScore = Number.MAX_SAFE_INTEGER;
259
- let slotCount = 0;
260
- slot: for (const slot of slots) {
261
- slotCount++;
262
- const attestationGroupByIndexByDataHash = this.attestationGroupByIndexByDataHexBySlot.get(slot);
263
- // should not happen
264
- if (!attestationGroupByIndexByDataHash) {
265
- throw Error(`No aggregated attestation pool for slot=${slot}`);
266
- }
267
-
268
- const epoch = computeEpochAtSlot(slot);
269
- // validateAttestation condition: Attestation target epoch not in previous or current epoch
270
- if (!(epoch === stateEpoch || epoch === statePrevEpoch)) {
271
- continue; // Invalid attestations
272
- }
273
- // validateAttestation condition: Attestation slot not within inclusion window
274
- if (
275
- !(
276
- slot + MIN_ATTESTATION_INCLUSION_DELAY <= stateSlot &&
277
- // Post deneb, attestations are valid for current and previous epoch
278
- (ForkSeq[fork] >= ForkSeq.deneb || stateSlot <= slot + SLOTS_PER_EPOCH)
279
- )
280
- ) {
281
- continue; // Invalid attestations
282
- }
283
-
284
- const inclusionDistance = stateSlot - slot;
285
- for (const attestationGroupByIndex of attestationGroupByIndexByDataHash.values()) {
286
- for (const [committeeIndex, attestationGroup] of attestationGroupByIndex.entries()) {
287
- const notSeenCommitteeMembers = notSeenValidatorsFn(epoch, slot, committeeIndex);
288
- if (notSeenCommitteeMembers === null || notSeenCommitteeMembers.size === 0) {
289
- continue;
290
- }
291
-
292
- if (
293
- slotCount > 2 &&
294
- attestationsByScore.length >= MAX_ATTESTATIONS &&
295
- notSeenCommitteeMembers.size / inclusionDistance < minScore
296
- ) {
297
- // after 2 slots, there are a good chance that we have 2 * MAX_ATTESTATIONS attestations and break the for loop early
298
- // if not, we may have to scan all slots in the pool
299
- // if we have enough attestations and the max possible score is lower than scores of `attestationsByScore`, we should skip
300
- // otherwise it takes time to check attestation, add it and remove it later after the sort by score
301
- continue;
302
- }
303
-
304
- if (validateAttestationDataFn(attestationGroup.data) !== null) {
305
- continue;
306
- }
307
-
308
- // TODO: Is it necessary to validateAttestation for:
309
- // - Attestation committee index not within current committee count
310
- // - Attestation aggregation bits length does not match committee length
311
- //
312
- // These properties should not change after being validate in gossip
313
- // IF they have to be validated, do it only with one attestation per group since same data
314
- // The committeeCountPerSlot can be precomputed once per slot
315
- const getAttestationsResult = attestationGroup.getAttestationsForBlock(
316
- fork,
317
- state.epochCtx.effectiveBalanceIncrements,
318
- notSeenCommitteeMembers,
319
- MAX_ATTESTATIONS_PER_GROUP
320
- );
321
- for (const {attestation, newSeenEffectiveBalance} of getAttestationsResult.result) {
322
- const score = newSeenEffectiveBalance / inclusionDistance;
323
- if (score < minScore) {
324
- minScore = score;
325
- }
326
- attestationsByScore.push({
327
- attestation,
328
- score,
329
- });
330
- }
331
-
332
- // Stop accumulating attestations there are enough that may have good scoring
333
- if (attestationsByScore.length >= MAX_ATTESTATIONS * 2) {
334
- break slot;
335
- }
336
- }
337
- }
338
- }
339
-
340
- const sortedAttestationsByScore = attestationsByScore.sort((a, b) => b.score - a.score);
341
- const attestationsForBlock: phase0.Attestation[] = [];
342
- for (const [i, attestationWithScore] of sortedAttestationsByScore.entries()) {
343
- if (i >= MAX_ATTESTATIONS) {
344
- break;
345
- }
346
- // attestations could be modified in this op pool, so we need to clone for block
347
- attestationsForBlock.push(ssz.phase0.Attestation.clone(attestationWithScore.attestation));
348
- }
349
- return attestationsForBlock;
225
+ throw new Error("Does not support producing blocks for pre-electra forks anymore");
350
226
  }
351
227
 
352
228
  /**
@@ -362,7 +238,7 @@ export class AggregatedAttestationPool {
362
238
  const statePrevEpoch = stateEpoch - 1;
363
239
  const rootCache = new RootCache(state);
364
240
 
365
- const notSeenValidatorsFn = getNotSeenValidatorsFn(state);
241
+ const notSeenValidatorsFn = getNotSeenValidatorsFn(this.config, state);
366
242
  const validateAttestationDataFn = getValidateAttestationDataFn(forkChoice, state);
367
243
 
368
244
  const slots = Array.from(this.attestationGroupByIndexByDataHexBySlot.keys()).sort((a, b) => b - a);
@@ -656,7 +532,7 @@ export class MatchingDataAttestationGroup {
656
532
  private readonly attestations: AttestationWithIndex[] = [];
657
533
 
658
534
  constructor(
659
- private readonly config: ChainForkConfig,
535
+ private readonly config: BeaconConfig,
660
536
  readonly committee: Uint32Array,
661
537
  readonly data: phase0.AttestationData
662
538
  ) {}
@@ -864,41 +740,10 @@ export function aggregateConsolidation({byCommittee, attData}: AttestationsConso
864
740
  * Pre-compute participation from a CachedBeaconStateAllForks, for use to check if an attestation's committee
865
741
  * has already attested or not.
866
742
  */
867
- export function getNotSeenValidatorsFn(state: CachedBeaconStateAllForks): GetNotSeenValidatorsFn {
743
+ export function getNotSeenValidatorsFn(config: BeaconConfig, state: CachedBeaconStateAllForks): GetNotSeenValidatorsFn {
868
744
  const stateSlot = state.slot;
869
- if (state.config.getForkName(stateSlot) === ForkName.phase0) {
870
- // Get attestations to be included in a phase0 block.
871
- // As we are close to altair, this is not really important, it's mainly for e2e.
872
- // The performance is not great due to the different BeaconState data structure to altair.
873
- // check for phase0 block already
874
- const phase0State = state as CachedBeaconStatePhase0;
875
- const stateEpoch = computeEpochAtSlot(stateSlot);
876
-
877
- const previousEpochParticipants = extractParticipationPhase0(
878
- phase0State.previousEpochAttestations.getAllReadonly(),
879
- state
880
- );
881
- const currentEpochParticipants = extractParticipationPhase0(
882
- phase0State.currentEpochAttestations.getAllReadonly(),
883
- state
884
- );
885
-
886
- return (epoch: Epoch, slot: Slot, committeeIndex: number) => {
887
- const participants =
888
- epoch === stateEpoch ? currentEpochParticipants : epoch === stateEpoch - 1 ? previousEpochParticipants : null;
889
- if (participants === null) {
890
- return null;
891
- }
892
- const committee = state.epochCtx.getBeaconCommittee(slot, committeeIndex);
893
-
894
- const notSeenCommitteeMembers = new Set<number>();
895
- for (const [i, validatorIndex] of committee.entries()) {
896
- if (!participants.has(validatorIndex)) {
897
- notSeenCommitteeMembers.add(i);
898
- }
899
- }
900
- return notSeenCommitteeMembers.size === 0 ? null : notSeenCommitteeMembers;
901
- };
745
+ if (config.getForkName(stateSlot) === ForkName.phase0) {
746
+ throw new Error("getNotSeenValidatorsFn is not supported phase0 state");
902
747
  }
903
748
 
904
749
  // altair and future forks
@@ -942,26 +787,6 @@ export function getNotSeenValidatorsFn(state: CachedBeaconStateAllForks): GetNot
942
787
  };
943
788
  }
944
789
 
945
- export function extractParticipationPhase0(
946
- attestations: phase0.PendingAttestation[],
947
- state: CachedBeaconStateAllForks
948
- ): Set<ValidatorIndex> {
949
- const {epochCtx} = state;
950
- const allParticipants = new Set<ValidatorIndex>();
951
- for (const att of attestations) {
952
- const aggregationBits = att.aggregationBits;
953
- const attData = att.data;
954
- const attSlot = attData.slot;
955
- const committeeIndex = attData.index;
956
- const committee = epochCtx.getBeaconCommittee(attSlot, committeeIndex);
957
- const participants = aggregationBits.intersectValues(committee);
958
- for (const participant of participants) {
959
- allParticipants.add(participant);
960
- }
961
- }
962
- return allParticipants;
963
- }
964
-
965
790
  /**
966
791
  * This returns a function to validate if an attestation data is compatible to a state.
967
792
  *
@@ -1,3 +1,4 @@
1
+ import {BeaconConfig} from "@lodestar/config";
1
2
  import {Id, Repository} from "@lodestar/db";
2
3
  import {
3
4
  BLS_WITHDRAWAL_PREFIX,
@@ -51,6 +52,8 @@ export class OpPool {
51
52
  /** Map of validator index -> SignedBLSToExecutionChange */
52
53
  private readonly blsToExecutionChanges = new Map<ValidatorIndex, SignedBLSToExecutionChangeVersioned>();
53
54
 
55
+ constructor(private readonly config: BeaconConfig) {}
56
+
54
57
  // Getters for metrics
55
58
 
56
59
  get attesterSlashingsSize(): number {
@@ -191,9 +194,8 @@ export class OpPool {
191
194
  phase0.SignedVoluntaryExit[],
192
195
  capella.SignedBLSToExecutionChange[],
193
196
  ] {
194
- const {config} = state;
195
197
  const stateEpoch = computeEpochAtSlot(state.slot);
196
- const stateFork = config.getForkSeq(state.slot);
198
+ const stateFork = this.config.getForkSeq(state.slot);
197
199
  const toBeSlashedIndices = new Set<ValidatorIndex>();
198
200
  const proposerSlashings: phase0.ProposerSlashing[] = [];
199
201
 
@@ -265,7 +267,7 @@ export class OpPool {
265
267
  // a future fork.
266
268
  isVoluntaryExitSignatureIncludable(
267
269
  stateFork,
268
- config.getForkSeq(computeStartSlotAtEpoch(voluntaryExit.message.epoch))
270
+ this.config.getForkSeq(computeStartSlotAtEpoch(voluntaryExit.message.epoch))
269
271
  )
270
272
  ) {
271
273
  voluntaryExits.push(voluntaryExit);
@@ -368,14 +370,13 @@ export class OpPool {
368
370
  * Prune if validator has already exited at or before the finalized checkpoint of the head.
369
371
  */
370
372
  private pruneVoluntaryExits(headState: CachedBeaconStateAllForks): void {
371
- const {config} = headState;
372
- const headStateFork = config.getForkSeq(headState.slot);
373
+ const headStateFork = this.config.getForkSeq(headState.slot);
373
374
  const finalizedEpoch = headState.finalizedCheckpoint.epoch;
374
375
 
375
376
  for (const [key, voluntaryExit] of this.voluntaryExits.entries()) {
376
377
  // VoluntaryExit messages signed in the previous fork become invalid and can never be included in any future
377
378
  // block, so just drop as the head state advances into the next fork.
378
- if (config.getForkSeq(computeStartSlotAtEpoch(voluntaryExit.message.epoch)) < headStateFork) {
379
+ if (this.config.getForkSeq(computeStartSlotAtEpoch(voluntaryExit.message.epoch)) < headStateFork) {
379
380
  this.voluntaryExits.delete(key);
380
381
  }
381
382
 
@@ -392,9 +393,8 @@ export class OpPool {
392
393
  * to opPool once gossipsub seen cache TTL passes.
393
394
  */
394
395
  private pruneBlsToExecutionChanges(headBlock: SignedBeaconBlock, headState: CachedBeaconStateAllForks): void {
395
- const {config} = headState;
396
396
  const recentBlsToExecutionChanges =
397
- config.getForkSeq(headBlock.message.slot) >= ForkSeq.capella
397
+ this.config.getForkSeq(headBlock.message.slot) >= ForkSeq.capella
398
398
  ? (headBlock as capella.SignedBeaconBlock).message.body.blsToExecutionChanges
399
399
  : [];
400
400
 
@@ -1,4 +1,3 @@
1
- import {SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY} from "@lodestar/params";
2
1
  import {defaultOptions as defaultValidatorOptions} from "@lodestar/validator";
3
2
  import {DEFAULT_ARCHIVE_MODE} from "./archiveStore/constants.js";
4
3
  import {ArchiveMode, ArchiveStoreOpts} from "./archiveStore/interface.js";
@@ -56,10 +55,6 @@ export type BlockProcessOpts = {
56
55
  * Will double processing times. Use only for debugging purposes.
57
56
  */
58
57
  disableBlsBatchVerify?: boolean;
59
- /**
60
- * Override SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY
61
- */
62
- safeSlotsToImportOptimistically?: number;
63
58
  /**
64
59
  * Assert progressive balances the same to EpochTransitionCache
65
60
  */
@@ -109,7 +104,6 @@ export const defaultChainOptions: IChainOptions = {
109
104
  proposerBoost: true,
110
105
  proposerBoostReorg: true,
111
106
  computeUnrealized: true,
112
- safeSlotsToImportOptimistically: SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY,
113
107
  suggestedFeeRecipient: defaultValidatorOptions.suggestedFeeRecipient,
114
108
  serveHistoricalState: false,
115
109
  assertCorrectProgressiveBalances: false,
@@ -1,9 +1,8 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ChainForkConfig} from "@lodestar/config";
3
3
  import {getSafeExecutionBlockHash} from "@lodestar/fork-choice";
4
- import {ForkPostBellatrix, ForkSeq, SLOTS_PER_EPOCH, isForkPostElectra} from "@lodestar/params";
4
+ import {ForkPostBellatrix, ForkSeq, SLOTS_PER_EPOCH} from "@lodestar/params";
5
5
  import {
6
- BeaconStateElectra,
7
6
  CachedBeaconStateAllForks,
8
7
  CachedBeaconStateExecutions,
9
8
  StateHashTreeRootSource,
@@ -197,7 +196,7 @@ export class PrepareNextSlotScheduler {
197
196
  this.chain.opts.emitPayloadAttributes === true &&
198
197
  this.chain.emitter.listenerCount(routes.events.EventType.payloadAttributes)
199
198
  ) {
200
- const data = await getPayloadAttributesForSSE(fork as ForkPostBellatrix, this.chain, {
199
+ const data = getPayloadAttributesForSSE(fork as ForkPostBellatrix, this.chain, {
201
200
  prepareState: updatedPrepareState,
202
201
  prepareSlot,
203
202
  parentBlockRoot: fromHex(headRoot),
@@ -222,9 +221,6 @@ export class PrepareNextSlotScheduler {
222
221
  }
223
222
  this.metrics?.precomputeNextEpochTransition.hits.set(previousHits ?? 0);
224
223
 
225
- // Check if we can stop polling eth1 data
226
- this.stopEth1Polling();
227
-
228
224
  this.logger.verbose("Completed PrepareNextSlotScheduler epoch transition", {
229
225
  nextEpoch,
230
226
  headSlot,
@@ -252,27 +248,4 @@ export class PrepareNextSlotScheduler {
252
248
  state.hashTreeRoot();
253
249
  hashTreeRootTimer?.();
254
250
  }
255
-
256
- /**
257
- * Stop eth1 data polling after eth1_deposit_index has reached deposit_requests_start_index in Electra as described in EIP-6110
258
- */
259
- stopEth1Polling(): void {
260
- // Only continue if eth1 is still polling and finalized checkpoint is in Electra. State regen is expensive
261
- if (this.chain.eth1.isPollingEth1Data()) {
262
- const finalizedCheckpoint = this.chain.forkChoice.getFinalizedCheckpoint();
263
- const checkpointFork = this.config.getForkInfoAtEpoch(finalizedCheckpoint.epoch).name;
264
-
265
- if (isForkPostElectra(checkpointFork)) {
266
- const finalizedState = this.chain.getStateByCheckpoint(finalizedCheckpoint)?.state;
267
-
268
- if (
269
- finalizedState !== undefined &&
270
- finalizedState.eth1DepositIndex === Number((finalizedState as BeaconStateElectra).depositRequestsStartIndex)
271
- ) {
272
- // Signal eth1 to stop polling eth1Data
273
- this.chain.eth1.stopPollingEth1Data();
274
- }
275
- }
276
- }
277
- }
278
251
  }