@lodestar/beacon-node 1.39.0-dev.3bf4734ba9 → 1.39.0-dev.882891d89c

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 (353) hide show
  1. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  3. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  4. package/lib/chain/blocks/verifyBlock.js +1 -1
  5. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  6. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -1
  7. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  8. package/lib/chain/blocks/verifyBlocksSignatures.js +2 -2
  9. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  10. package/lib/chain/chain.d.ts +1 -4
  11. package/lib/chain/chain.d.ts.map +1 -1
  12. package/lib/chain/chain.js +8 -16
  13. package/lib/chain/chain.js.map +1 -1
  14. package/lib/chain/initState.d.ts +1 -14
  15. package/lib/chain/initState.d.ts.map +1 -1
  16. package/lib/chain/initState.js +1 -62
  17. package/lib/chain/initState.js.map +1 -1
  18. package/lib/chain/interface.d.ts +0 -2
  19. package/lib/chain/interface.d.ts.map +1 -1
  20. package/lib/chain/interface.js.map +1 -1
  21. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
  22. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  23. package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
  24. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  25. package/lib/chain/opPools/opPool.d.ts +3 -0
  26. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  27. package/lib/chain/opPools/opPool.js +9 -8
  28. package/lib/chain/opPools/opPool.js.map +1 -1
  29. package/lib/chain/prepareNextSlot.d.ts +0 -4
  30. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  31. package/lib/chain/prepareNextSlot.js +1 -21
  32. package/lib/chain/prepareNextSlot.js.map +1 -1
  33. package/lib/chain/produceBlock/produceBlockBody.d.ts +0 -1
  34. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  35. package/lib/chain/produceBlock/produceBlockBody.js +8 -11
  36. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  37. package/lib/chain/rewards/attestationsRewards.d.ts +2 -1
  38. package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -1
  39. package/lib/chain/rewards/attestationsRewards.js +8 -8
  40. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  41. package/lib/chain/rewards/blockRewards.d.ts +2 -1
  42. package/lib/chain/rewards/blockRewards.d.ts.map +1 -1
  43. package/lib/chain/rewards/blockRewards.js +5 -5
  44. package/lib/chain/rewards/blockRewards.js.map +1 -1
  45. package/lib/chain/rewards/syncCommitteeRewards.d.ts +2 -1
  46. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -1
  47. package/lib/chain/rewards/syncCommitteeRewards.js +2 -2
  48. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  49. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
  50. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  51. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
  52. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  53. package/lib/chain/validation/attesterSlashing.js +1 -1
  54. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  55. package/lib/chain/validation/block.js +1 -1
  56. package/lib/chain/validation/block.js.map +1 -1
  57. package/lib/chain/validation/blsToExecutionChange.js +1 -1
  58. package/lib/chain/validation/proposerSlashing.js +1 -1
  59. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  60. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  61. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  62. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -1
  63. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  64. package/lib/chain/validation/signatureSets/contributionAndProof.js +2 -2
  65. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  66. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -1
  67. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  68. package/lib/chain/validation/signatureSets/syncCommittee.js +2 -2
  69. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  70. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  71. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  72. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  73. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  74. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -1
  75. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  76. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -2
  77. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  78. package/lib/chain/validation/syncCommittee.js +1 -1
  79. package/lib/chain/validation/syncCommittee.js.map +1 -1
  80. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  81. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -3
  82. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  83. package/lib/chain/validation/voluntaryExit.js +1 -1
  84. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  85. package/lib/db/beacon.d.ts +3 -7
  86. package/lib/db/beacon.d.ts.map +1 -1
  87. package/lib/db/beacon.js +33 -12
  88. package/lib/db/beacon.js.map +1 -1
  89. package/lib/db/buckets.d.ts +12 -6
  90. package/lib/db/buckets.d.ts.map +1 -1
  91. package/lib/db/buckets.js +6 -1
  92. package/lib/db/buckets.js.map +1 -1
  93. package/lib/db/interface.d.ts +2 -7
  94. package/lib/db/interface.d.ts.map +1 -1
  95. package/lib/db/repositories/index.d.ts +0 -3
  96. package/lib/db/repositories/index.d.ts.map +1 -1
  97. package/lib/db/repositories/index.js +0 -3
  98. package/lib/db/repositories/index.js.map +1 -1
  99. package/lib/execution/engine/http.d.ts +1 -1
  100. package/lib/execution/engine/http.d.ts.map +1 -1
  101. package/lib/execution/engine/http.js +2 -3
  102. package/lib/execution/engine/http.js.map +1 -1
  103. package/lib/execution/engine/index.d.ts.map +1 -1
  104. package/lib/execution/engine/index.js +1 -1
  105. package/lib/execution/engine/index.js.map +1 -1
  106. package/lib/execution/engine/interface.d.ts +1 -1
  107. package/lib/execution/engine/interface.d.ts.map +1 -1
  108. package/lib/execution/engine/interface.js.map +1 -1
  109. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  110. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  111. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  112. package/lib/execution/engine/jwt.d.ts.map +1 -0
  113. package/lib/execution/engine/jwt.js.map +1 -0
  114. package/lib/execution/engine/mock.d.ts.map +1 -1
  115. package/lib/execution/engine/mock.js +1 -1
  116. package/lib/execution/engine/mock.js.map +1 -1
  117. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  118. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  119. package/lib/execution/engine/types.d.ts +1 -1
  120. package/lib/execution/engine/types.d.ts.map +1 -1
  121. package/lib/execution/engine/types.js +1 -1
  122. package/lib/execution/engine/types.js.map +1 -1
  123. package/lib/execution/engine/utils.d.ts +64 -2
  124. package/lib/execution/engine/utils.d.ts.map +1 -1
  125. package/lib/execution/engine/utils.js +91 -2
  126. package/lib/execution/engine/utils.js.map +1 -1
  127. package/lib/index.d.ts +1 -2
  128. package/lib/index.d.ts.map +1 -1
  129. package/lib/index.js +1 -2
  130. package/lib/index.js.map +1 -1
  131. package/lib/metrics/metrics/lodestar.d.ts +0 -35
  132. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  133. package/lib/metrics/metrics/lodestar.js +0 -90
  134. package/lib/metrics/metrics/lodestar.js.map +1 -1
  135. package/lib/network/core/events.d.ts +1 -1
  136. package/lib/network/core/events.d.ts.map +1 -1
  137. package/lib/network/core/events.js +1 -1
  138. package/lib/network/core/events.js.map +1 -1
  139. package/lib/network/events.d.ts +6 -1
  140. package/lib/network/events.d.ts.map +1 -1
  141. package/lib/network/events.js +7 -1
  142. package/lib/network/events.js.map +1 -1
  143. package/lib/node/nodejs.d.ts.map +1 -1
  144. package/lib/node/nodejs.js +10 -9
  145. package/lib/node/nodejs.js.map +1 -1
  146. package/lib/node/options.d.ts +0 -2
  147. package/lib/node/options.d.ts.map +1 -1
  148. package/lib/node/options.js +0 -2
  149. package/lib/node/options.js.map +1 -1
  150. package/lib/node/utils/interop/deposits.d.ts +2 -1
  151. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  152. package/lib/node/utils/interop/deposits.js.map +1 -1
  153. package/lib/node/utils/interop/state.d.ts +1 -1
  154. package/lib/node/utils/interop/state.d.ts.map +1 -1
  155. package/lib/node/utils/state.d.ts +1 -7
  156. package/lib/node/utils/state.d.ts.map +1 -1
  157. package/lib/node/utils/state.js +1 -14
  158. package/lib/node/utils/state.js.map +1 -1
  159. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  160. package/lib/sync/backfill/backfill.js +2 -4
  161. package/lib/sync/backfill/backfill.js.map +1 -1
  162. package/lib/sync/backfill/verify.d.ts +1 -1
  163. package/lib/sync/backfill/verify.d.ts.map +1 -1
  164. package/lib/sync/backfill/verify.js +2 -2
  165. package/lib/sync/backfill/verify.js.map +1 -1
  166. package/lib/util/workerEvents.d.ts +1 -6
  167. package/lib/util/workerEvents.d.ts.map +1 -1
  168. package/lib/util/workerEvents.js +8 -8
  169. package/lib/util/workerEvents.js.map +1 -1
  170. package/package.json +14 -20
  171. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  172. package/src/chain/blocks/verifyBlock.ts +1 -0
  173. package/src/chain/blocks/verifyBlocksSignatures.ts +3 -1
  174. package/src/chain/chain.ts +7 -19
  175. package/src/chain/initState.ts +1 -97
  176. package/src/chain/interface.ts +0 -2
  177. package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
  178. package/src/chain/opPools/opPool.ts +8 -8
  179. package/src/chain/prepareNextSlot.ts +1 -28
  180. package/src/chain/produceBlock/produceBlockBody.ts +8 -12
  181. package/src/chain/rewards/attestationsRewards.ts +13 -4
  182. package/src/chain/rewards/blockRewards.ts +6 -3
  183. package/src/chain/rewards/syncCommitteeRewards.ts +3 -1
  184. package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
  185. package/src/chain/validation/attesterSlashing.ts +1 -1
  186. package/src/chain/validation/block.ts +1 -1
  187. package/src/chain/validation/blsToExecutionChange.ts +1 -1
  188. package/src/chain/validation/proposerSlashing.ts +1 -1
  189. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  190. package/src/chain/validation/signatureSets/contributionAndProof.ts +3 -1
  191. package/src/chain/validation/signatureSets/syncCommittee.ts +3 -1
  192. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  193. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -1
  194. package/src/chain/validation/syncCommittee.ts +1 -1
  195. package/src/chain/validation/syncCommitteeContributionAndProof.ts +8 -3
  196. package/src/chain/validation/voluntaryExit.ts +1 -1
  197. package/src/db/beacon.ts +38 -16
  198. package/src/db/buckets.ts +12 -7
  199. package/src/db/interface.ts +2 -13
  200. package/src/db/repositories/index.ts +0 -3
  201. package/src/execution/engine/http.ts +8 -9
  202. package/src/execution/engine/index.ts +1 -1
  203. package/src/execution/engine/interface.ts +1 -1
  204. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  205. package/src/execution/engine/mock.ts +1 -2
  206. package/src/execution/engine/payloadIdCache.ts +1 -1
  207. package/src/execution/engine/types.ts +9 -9
  208. package/src/execution/engine/utils.ts +111 -5
  209. package/src/index.ts +1 -2
  210. package/src/metrics/metrics/lodestar.ts +0 -92
  211. package/src/network/core/events.ts +1 -1
  212. package/src/network/events.ts +7 -1
  213. package/src/node/nodejs.ts +11 -9
  214. package/src/node/options.ts +0 -3
  215. package/src/node/utils/interop/deposits.ts +3 -1
  216. package/src/node/utils/interop/state.ts +1 -1
  217. package/src/node/utils/state.ts +3 -18
  218. package/src/sync/backfill/backfill.ts +8 -3
  219. package/src/sync/backfill/verify.ts +3 -1
  220. package/src/util/workerEvents.ts +9 -8
  221. package/lib/chain/genesis/genesis.d.ts +0 -51
  222. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  223. package/lib/chain/genesis/genesis.js +0 -123
  224. package/lib/chain/genesis/genesis.js.map +0 -1
  225. package/lib/chain/genesis/interface.d.ts +0 -13
  226. package/lib/chain/genesis/interface.d.ts.map +0 -1
  227. package/lib/chain/genesis/interface.js +0 -2
  228. package/lib/chain/genesis/interface.js.map +0 -1
  229. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  230. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  231. package/lib/db/repositories/depositDataRoot.js +0 -62
  232. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  233. package/lib/db/repositories/depositEvent.d.ts +0 -13
  234. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  235. package/lib/db/repositories/depositEvent.js +0 -27
  236. package/lib/db/repositories/depositEvent.js.map +0 -1
  237. package/lib/db/repositories/eth1Data.d.ts +0 -13
  238. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  239. package/lib/db/repositories/eth1Data.js +0 -26
  240. package/lib/db/repositories/eth1Data.js.map +0 -1
  241. package/lib/db/single/index.d.ts +0 -3
  242. package/lib/db/single/index.d.ts.map +0 -1
  243. package/lib/db/single/index.js +0 -3
  244. package/lib/db/single/index.js.map +0 -1
  245. package/lib/db/single/preGenesisState.d.ts +0 -16
  246. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  247. package/lib/db/single/preGenesisState.js +0 -29
  248. package/lib/db/single/preGenesisState.js.map +0 -1
  249. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  250. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  251. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  252. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  253. package/lib/eth1/errors.d.ts +0 -66
  254. package/lib/eth1/errors.d.ts.map +0 -1
  255. package/lib/eth1/errors.js +0 -27
  256. package/lib/eth1/errors.js.map +0 -1
  257. package/lib/eth1/eth1DataCache.d.ts +0 -19
  258. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  259. package/lib/eth1/eth1DataCache.js +0 -19
  260. package/lib/eth1/eth1DataCache.js.map +0 -1
  261. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  262. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  263. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  264. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  265. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  266. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  267. package/lib/eth1/eth1DepositsCache.js +0 -119
  268. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  269. package/lib/eth1/index.d.ts +0 -31
  270. package/lib/eth1/index.d.ts.map +0 -1
  271. package/lib/eth1/index.js +0 -71
  272. package/lib/eth1/index.js.map +0 -1
  273. package/lib/eth1/interface.d.ts +0 -74
  274. package/lib/eth1/interface.d.ts.map +0 -1
  275. package/lib/eth1/interface.js +0 -8
  276. package/lib/eth1/interface.js.map +0 -1
  277. package/lib/eth1/options.d.ts +0 -22
  278. package/lib/eth1/options.d.ts.map +0 -1
  279. package/lib/eth1/options.js +0 -8
  280. package/lib/eth1/options.js.map +0 -1
  281. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  282. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  283. package/lib/eth1/provider/eth1Provider.js +0 -147
  284. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  285. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  286. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  287. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  288. package/lib/eth1/provider/jwt.js.map +0 -1
  289. package/lib/eth1/provider/utils.d.ts +0 -65
  290. package/lib/eth1/provider/utils.d.ts.map +0 -1
  291. package/lib/eth1/provider/utils.js +0 -120
  292. package/lib/eth1/provider/utils.js.map +0 -1
  293. package/lib/eth1/stream.d.ts +0 -15
  294. package/lib/eth1/stream.d.ts.map +0 -1
  295. package/lib/eth1/stream.js +0 -54
  296. package/lib/eth1/stream.js.map +0 -1
  297. package/lib/eth1/utils/depositContract.d.ts +0 -14
  298. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  299. package/lib/eth1/utils/depositContract.js +0 -33
  300. package/lib/eth1/utils/depositContract.js.map +0 -1
  301. package/lib/eth1/utils/deposits.d.ts +0 -8
  302. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  303. package/lib/eth1/utils/deposits.js +0 -47
  304. package/lib/eth1/utils/deposits.js.map +0 -1
  305. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  306. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  307. package/lib/eth1/utils/eth1Data.js +0 -77
  308. package/lib/eth1/utils/eth1Data.js.map +0 -1
  309. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  310. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  311. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  312. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  313. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  314. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  315. package/lib/eth1/utils/eth1Vote.js +0 -111
  316. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  317. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  318. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  319. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  320. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  321. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  322. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  323. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  324. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  325. package/src/chain/genesis/genesis.ts +0 -190
  326. package/src/chain/genesis/interface.ts +0 -14
  327. package/src/db/repositories/depositDataRoot.ts +0 -80
  328. package/src/db/repositories/depositEvent.ts +0 -32
  329. package/src/db/repositories/eth1Data.ts +0 -33
  330. package/src/db/single/index.ts +0 -2
  331. package/src/db/single/preGenesisState.ts +0 -37
  332. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  333. package/src/eth1/errors.ts +0 -40
  334. package/src/eth1/eth1DataCache.ts +0 -26
  335. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  336. package/src/eth1/eth1DepositsCache.ts +0 -141
  337. package/src/eth1/index.ts +0 -94
  338. package/src/eth1/interface.ts +0 -87
  339. package/src/eth1/options.ts +0 -28
  340. package/src/eth1/provider/eth1Provider.ts +0 -229
  341. package/src/eth1/provider/utils.ts +0 -136
  342. package/src/eth1/stream.ts +0 -75
  343. package/src/eth1/utils/depositContract.ts +0 -37
  344. package/src/eth1/utils/deposits.ts +0 -70
  345. package/src/eth1/utils/eth1Data.ts +0 -100
  346. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  347. package/src/eth1/utils/eth1Vote.ts +0 -142
  348. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  349. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  350. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  351. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  352. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  353. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.39.0-dev.3bf4734ba9",
14
+ "version": "1.39.0-dev.882891d89c",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -39,11 +39,6 @@
39
39
  "types": "./lib/db/index.d.ts",
40
40
  "import": "./lib/db/index.js"
41
41
  },
42
- "./eth1": {
43
- "bun": "./src/eth1/index.ts",
44
- "types": "./lib/eth1/index.d.ts",
45
- "import": "./lib/eth1/index.js"
46
- },
47
42
  "./metrics": {
48
43
  "bun": "./src/metrics/index.ts",
49
44
  "types": "./lib/metrics/index.d.ts",
@@ -126,7 +121,6 @@
126
121
  "@chainsafe/ssz": "^1.2.2",
127
122
  "@chainsafe/threads": "^1.11.3",
128
123
  "@crate-crypto/node-eth-kzg": "0.9.1",
129
- "@ethersproject/abi": "^5.7.0",
130
124
  "@fastify/bearer-auth": "^10.0.1",
131
125
  "@fastify/cors": "^10.0.1",
132
126
  "@fastify/swagger": "^9.0.0",
@@ -140,18 +134,18 @@
140
134
  "@libp2p/peer-id": "^5.1.0",
141
135
  "@libp2p/prometheus-metrics": "^4.3.15",
142
136
  "@libp2p/tcp": "^10.1.8",
143
- "@lodestar/api": "1.39.0-dev.3bf4734ba9",
144
- "@lodestar/config": "1.39.0-dev.3bf4734ba9",
145
- "@lodestar/db": "1.39.0-dev.3bf4734ba9",
146
- "@lodestar/fork-choice": "1.39.0-dev.3bf4734ba9",
147
- "@lodestar/light-client": "1.39.0-dev.3bf4734ba9",
148
- "@lodestar/logger": "1.39.0-dev.3bf4734ba9",
149
- "@lodestar/params": "1.39.0-dev.3bf4734ba9",
150
- "@lodestar/reqresp": "1.39.0-dev.3bf4734ba9",
151
- "@lodestar/state-transition": "1.39.0-dev.3bf4734ba9",
152
- "@lodestar/types": "1.39.0-dev.3bf4734ba9",
153
- "@lodestar/utils": "1.39.0-dev.3bf4734ba9",
154
- "@lodestar/validator": "1.39.0-dev.3bf4734ba9",
137
+ "@lodestar/api": "1.39.0-dev.882891d89c",
138
+ "@lodestar/config": "1.39.0-dev.882891d89c",
139
+ "@lodestar/db": "1.39.0-dev.882891d89c",
140
+ "@lodestar/fork-choice": "1.39.0-dev.882891d89c",
141
+ "@lodestar/light-client": "1.39.0-dev.882891d89c",
142
+ "@lodestar/logger": "1.39.0-dev.882891d89c",
143
+ "@lodestar/params": "1.39.0-dev.882891d89c",
144
+ "@lodestar/reqresp": "1.39.0-dev.882891d89c",
145
+ "@lodestar/state-transition": "1.39.0-dev.882891d89c",
146
+ "@lodestar/types": "1.39.0-dev.882891d89c",
147
+ "@lodestar/utils": "1.39.0-dev.882891d89c",
148
+ "@lodestar/validator": "1.39.0-dev.882891d89c",
155
149
  "@multiformats/multiaddr": "^12.1.3",
156
150
  "datastore-core": "^10.0.2",
157
151
  "datastore-fs": "^10.0.6",
@@ -186,5 +180,5 @@
186
180
  "beacon",
187
181
  "blockchain"
188
182
  ],
189
- "gitHead": "890675f6ac97591d1111b6f61ed0e2079f264906"
183
+ "gitHead": "d61f386f2dfd87549476c464c05867b0d740c366"
190
184
  }
@@ -5,7 +5,7 @@ import {blockToHeader} from "@lodestar/state-transition";
5
5
  import {RootHex, SignedBeaconBlock, Slot} from "@lodestar/types";
6
6
  import {IBeaconChain} from "../../../../chain/interface.js";
7
7
  import {GENESIS_SLOT} from "../../../../constants/index.js";
8
- import {rootHexRegex} from "../../../../eth1/provider/utils.js";
8
+ import {rootHexRegex} from "../../../../execution/engine/utils.js";
9
9
  import {ApiError, ValidationError} from "../../errors.js";
10
10
 
11
11
  export function toBeaconHeaderResponse(
@@ -139,6 +139,7 @@ export async function verifyBlocksInEpoch(
139
139
  // All signatures at once
140
140
  opts.skipVerifyBlockSignatures !== true
141
141
  ? verifyBlocksSignatures(
142
+ this.config,
142
143
  this.index2pubkey,
143
144
  this.bls,
144
145
  this.logger,
@@ -1,3 +1,4 @@
1
+ import {BeaconConfig} from "@lodestar/config";
1
2
  import {CachedBeaconStateAllForks, Index2PubkeyCache, getBlockSignatureSets} from "@lodestar/state-transition";
2
3
  import {IndexedAttestation, SignedBeaconBlock} from "@lodestar/types";
3
4
  import {Logger} from "@lodestar/utils";
@@ -15,6 +16,7 @@ import {ImportBlockOpts} from "./types.js";
15
16
  * Since all data is known in advance all signatures are verified at once in parallel.
16
17
  */
17
18
  export async function verifyBlocksSignatures(
19
+ config: BeaconConfig,
18
20
  index2pubkey: Index2PubkeyCache,
19
21
  bls: IBlsVerifier,
20
22
  logger: Logger,
@@ -39,7 +41,7 @@ export async function verifyBlocksSignatures(
39
41
  : //
40
42
  // Verify signatures per block to track which block is invalid
41
43
  bls.verifySignatureSets(
42
- getBlockSignatureSets(index2pubkey, preState0, block, indexedAttestationsByBlock[i], {
44
+ getBlockSignatureSets(config, index2pubkey, preState0, block, indexedAttestationsByBlock[i], {
43
45
  skipProposerSignature: opts.validProposerSignature,
44
46
  })
45
47
  );
@@ -43,7 +43,6 @@ import {Logger, fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRoot
43
43
  import {ProcessShutdownCallback} from "@lodestar/validator";
44
44
  import {GENESIS_EPOCH, ZERO_HASH} from "../constants/index.js";
45
45
  import {IBeaconDb} from "../db/index.js";
46
- import {IEth1ForBlockProduction} from "../eth1/index.js";
47
46
  import {BuilderStatus} from "../execution/builder/http.js";
48
47
  import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
49
48
  import {Metrics} from "../metrics/index.js";
@@ -117,7 +116,6 @@ const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
117
116
  export class BeaconChain implements IBeaconChain {
118
117
  readonly genesisTime: UintNum64;
119
118
  readonly genesisValidatorsRoot: Root;
120
- readonly eth1: IEth1ForBlockProduction;
121
119
  readonly executionEngine: IExecutionEngine;
122
120
  readonly executionBuilder?: IExecutionBuilder;
123
121
  // Expose config for convenience in modularized functions
@@ -144,7 +142,7 @@ export class BeaconChain implements IBeaconChain {
144
142
  readonly aggregatedAttestationPool: AggregatedAttestationPool;
145
143
  readonly syncCommitteeMessagePool: SyncCommitteeMessagePool;
146
144
  readonly syncContributionAndProofPool;
147
- readonly opPool = new OpPool();
145
+ readonly opPool: OpPool;
148
146
 
149
147
  // Gossip seen cache
150
148
  readonly seenAttesters = new SeenAttesters();
@@ -216,7 +214,6 @@ export class BeaconChain implements IBeaconChain {
216
214
  validatorMonitor,
217
215
  anchorState,
218
216
  isAnchorStateFinalized,
219
- eth1,
220
217
  executionEngine,
221
218
  executionBuilder,
222
219
  }: {
@@ -233,7 +230,6 @@ export class BeaconChain implements IBeaconChain {
233
230
  validatorMonitor: ValidatorMonitor | null;
234
231
  anchorState: BeaconStateAllForks;
235
232
  isAnchorStateFinalized: boolean;
236
- eth1: IEth1ForBlockProduction;
237
233
  executionEngine: IExecutionEngine;
238
234
  executionBuilder?: IExecutionBuilder;
239
235
  }
@@ -248,7 +244,6 @@ export class BeaconChain implements IBeaconChain {
248
244
  this.genesisTime = anchorState.genesisTime;
249
245
  this.anchorStateLatestBlockSlot = anchorState.latestBlockHeader.slot;
250
246
  this.genesisValidatorsRoot = anchorState.genesisValidatorsRoot;
251
- this.eth1 = eth1;
252
247
  this.executionEngine = executionEngine;
253
248
  this.executionBuilder = executionBuilder;
254
249
  const signal = this.abortController.signal;
@@ -265,6 +260,7 @@ export class BeaconChain implements IBeaconChain {
265
260
  this.aggregatedAttestationPool = new AggregatedAttestationPool(this.config, metrics);
266
261
  this.syncCommitteeMessagePool = new SyncCommitteeMessagePool(config, clock, this.opts?.preaggregateSlotDistance);
267
262
  this.syncContributionAndProofPool = new SyncContributionAndProofPool(config, clock, metrics, logger);
263
+ this.opPool = new OpPool(config);
268
264
 
269
265
  this.seenAggregatedAttestations = new SeenAggregatedAttestations(metrics);
270
266
  this.seenContributionAndProof = new SeenContributionAndProof(metrics);
@@ -294,7 +290,7 @@ export class BeaconChain implements IBeaconChain {
294
290
  // Restore state caches
295
291
  // anchorState may already by a CachedBeaconState. If so, don't create the cache again, since deserializing all
296
292
  // pubkeys takes ~30 seconds for 350k keys (mainnet 2022Q2).
297
- // When the BeaconStateCache is created in eth1 genesis builder it may be incorrect. Until we can ensure that
293
+ // When the BeaconStateCache is created in initializeBeaconStateFromEth1 it may be incorrect. Until we can ensure that
298
294
  // it's safe to re-use _ANY_ BeaconStateCache, this option is disabled by default and only used in tests.
299
295
  const cachedState =
300
296
  isCachedBeaconState(anchorState) && opts.skipCreateStateCacheIfAvailable
@@ -339,6 +335,7 @@ export class BeaconChain implements IBeaconChain {
339
335
  this.cpStateDatastore = fileDataStore ? new FileCPStateDatastore(dataDir) : new DbCPStateDatastore(this.db);
340
336
  checkpointStateCache = new PersistentCheckpointStateCache(
341
337
  {
338
+ config,
342
339
  metrics,
343
340
  logger,
344
341
  clock,
@@ -417,15 +414,6 @@ export class BeaconChain implements IBeaconChain {
417
414
  signal
418
415
  );
419
416
 
420
- // Stop polling eth1 data if anchor state is in Electra AND deposit_requests_start_index is reached
421
- const anchorStateFork = this.config.getForkName(anchorState.slot);
422
- if (isForkPostElectra(anchorStateFork)) {
423
- const {eth1DepositIndex, depositRequestsStartIndex} = anchorState as BeaconStateElectra;
424
- if (eth1DepositIndex === Number(depositRequestsStartIndex)) {
425
- this.eth1.stopPollingEth1Data();
426
- }
427
- }
428
-
429
417
  // always run PrepareNextSlotScheduler except for fork_choice spec tests
430
418
  if (!opts?.disablePrepareNextSlot) {
431
419
  new PrepareNextSlotScheduler(this, this.config, metrics, this.logger, signal);
@@ -1320,7 +1308,7 @@ export class BeaconChain implements IBeaconChain {
1320
1308
 
1321
1309
  const postState = this.regen.getStateSync(toRootHex(block.stateRoot)) ?? undefined;
1322
1310
 
1323
- return computeBlockRewards(block, preState.clone(), postState?.clone());
1311
+ return computeBlockRewards(this.config, block, preState.clone(), postState?.clone());
1324
1312
  }
1325
1313
 
1326
1314
  async getAttestationsRewards(
@@ -1344,7 +1332,7 @@ export class BeaconChain implements IBeaconChain {
1344
1332
  throw Error(`State is not in cache for slot ${slot}`);
1345
1333
  }
1346
1334
 
1347
- const rewards = await computeAttestationsRewards(this.pubkey2index, cachedState, validatorIds);
1335
+ const rewards = await computeAttestationsRewards(this.config, this.pubkey2index, cachedState, validatorIds);
1348
1336
 
1349
1337
  return {rewards, executionOptimistic, finalized};
1350
1338
  }
@@ -1361,6 +1349,6 @@ export class BeaconChain implements IBeaconChain {
1361
1349
 
1362
1350
  preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
1363
1351
 
1364
- return computeSyncCommitteeRewards(this.index2pubkey, block, preState.clone(), validatorIds);
1352
+ return computeSyncCommitteeRewards(this.config, this.index2pubkey, block, preState.clone(), validatorIds);
1365
1353
  }
1366
1354
  }
@@ -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
  */
@@ -25,7 +25,6 @@ import {
25
25
  phase0,
26
26
  } from "@lodestar/types";
27
27
  import {Logger} from "@lodestar/utils";
28
- import {IEth1ForBlockProduction} from "../eth1/index.js";
29
28
  import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
30
29
  import {Metrics} from "../metrics/metrics.js";
31
30
  import {BufferPool} from "../util/bufferPool.js";
@@ -88,7 +87,6 @@ export interface IBeaconChain {
88
87
  readonly genesisTime: UintNum64;
89
88
  readonly genesisValidatorsRoot: Root;
90
89
  readonly earliestAvailableSlot: Slot;
91
- readonly eth1: IEth1ForBlockProduction;
92
90
  readonly executionEngine: IExecutionEngine;
93
91
  readonly executionBuilder?: IExecutionBuilder;
94
92
  // Expose config for convenience in modularized functions
@@ -1,6 +1,6 @@
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,
@@ -162,7 +162,7 @@ export class AggregatedAttestationPool {
162
162
  private lowestPermissibleSlot = 0;
163
163
 
164
164
  constructor(
165
- private readonly config: ChainForkConfig,
165
+ private readonly config: BeaconConfig,
166
166
  private readonly metrics: Metrics | null = null
167
167
  ) {
168
168
  metrics?.opPool.aggregatedAttestationPool.attDataPerSlot.addCollect(() => this.onScrapeMetrics(metrics));
@@ -249,7 +249,7 @@ export class AggregatedAttestationPool {
249
249
  const stateEpoch = state.epochCtx.epoch;
250
250
  const statePrevEpoch = stateEpoch - 1;
251
251
 
252
- const notSeenValidatorsFn = getNotSeenValidatorsFn(state);
252
+ const notSeenValidatorsFn = getNotSeenValidatorsFn(this.config, state);
253
253
  const validateAttestationDataFn = getValidateAttestationDataFn(forkChoice, state);
254
254
 
255
255
  const attestationsByScore: AttestationWithScore[] = [];
@@ -362,7 +362,7 @@ export class AggregatedAttestationPool {
362
362
  const statePrevEpoch = stateEpoch - 1;
363
363
  const rootCache = new RootCache(state);
364
364
 
365
- const notSeenValidatorsFn = getNotSeenValidatorsFn(state);
365
+ const notSeenValidatorsFn = getNotSeenValidatorsFn(this.config, state);
366
366
  const validateAttestationDataFn = getValidateAttestationDataFn(forkChoice, state);
367
367
 
368
368
  const slots = Array.from(this.attestationGroupByIndexByDataHexBySlot.keys()).sort((a, b) => b - a);
@@ -656,7 +656,7 @@ export class MatchingDataAttestationGroup {
656
656
  private readonly attestations: AttestationWithIndex[] = [];
657
657
 
658
658
  constructor(
659
- private readonly config: ChainForkConfig,
659
+ private readonly config: BeaconConfig,
660
660
  readonly committee: Uint32Array,
661
661
  readonly data: phase0.AttestationData
662
662
  ) {}
@@ -864,9 +864,9 @@ export function aggregateConsolidation({byCommittee, attData}: AttestationsConso
864
864
  * Pre-compute participation from a CachedBeaconStateAllForks, for use to check if an attestation's committee
865
865
  * has already attested or not.
866
866
  */
867
- export function getNotSeenValidatorsFn(state: CachedBeaconStateAllForks): GetNotSeenValidatorsFn {
867
+ export function getNotSeenValidatorsFn(config: BeaconConfig, state: CachedBeaconStateAllForks): GetNotSeenValidatorsFn {
868
868
  const stateSlot = state.slot;
869
- if (state.config.getForkName(stateSlot) === ForkName.phase0) {
869
+ if (config.getForkName(stateSlot) === ForkName.phase0) {
870
870
  // Get attestations to be included in a phase0 block.
871
871
  // As we are close to altair, this is not really important, it's mainly for e2e.
872
872
  // The performance is not great due to the different BeaconState data structure to altair.
@@ -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,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,
@@ -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
  }
@@ -45,7 +45,7 @@ import {
45
45
  } from "@lodestar/types";
46
46
  import {Logger, sleep, toHex, toPubkeyHex, toRootHex} from "@lodestar/utils";
47
47
  import {ZERO_HASH_HEX} from "../../constants/index.js";
48
- import {numToQuantity} from "../../eth1/provider/utils.js";
48
+ import {numToQuantity} from "../../execution/engine/utils.js";
49
49
  import {
50
50
  IExecutionBuilder,
51
51
  IExecutionEngine,
@@ -78,7 +78,6 @@ export enum BlockProductionStep {
78
78
  voluntaryExits = "voluntaryExits",
79
79
  blsToExecutionChanges = "blsToExecutionChanges",
80
80
  attestations = "attestations",
81
- eth1DataAndDeposits = "eth1DataAndDeposits",
82
81
  syncAggregate = "syncAggregate",
83
82
  executionPayload = "executionPayload",
84
83
  }
@@ -166,7 +165,7 @@ export async function produceBlockBody<T extends BlockType>(
166
165
  // even though shouldOverrideBuilder is relevant for the engine response, for simplicity of typing
167
166
  // we just return it undefined for the builder which anyway doesn't get consumed downstream
168
167
  let shouldOverrideBuilder: boolean | undefined;
169
- const fork = currentState.config.getForkName(blockSlot);
168
+ const fork = this.config.getForkName(blockSlot);
170
169
  const produceResult = {
171
170
  type: blockType,
172
171
  fork,
@@ -645,7 +644,7 @@ export async function produceCommonBlockBody<T extends BlockType>(
645
644
  ? this.metrics?.executionBlockProductionTimeSteps
646
645
  : this.metrics?.builderBlockProductionTimeSteps;
647
646
 
648
- const fork = currentState.config.getForkName(slot);
647
+ const fork = this.config.getForkName(slot);
649
648
 
650
649
  // TODO:
651
650
  // Iterate through the naive aggregation pool and ensure all the attestations from there
@@ -667,20 +666,17 @@ export async function produceCommonBlockBody<T extends BlockType>(
667
666
  step: BlockProductionStep.attestations,
668
667
  });
669
668
 
670
- const endEth1DataAndDeposits = stepsMetrics?.startTimer();
671
- const {eth1Data, deposits} = await this.eth1.getEth1DataAndDeposits(currentState);
672
- endEth1DataAndDeposits?.({
673
- step: BlockProductionStep.eth1DataAndDeposits,
674
- });
675
-
676
669
  const blockBody: Omit<CommonBlockBody, "blsToExecutionChanges" | "syncAggregate"> = {
677
670
  randaoReveal,
678
671
  graffiti,
679
- eth1Data,
672
+ // Eth1 data voting is no longer required since electra
673
+ eth1Data: currentState.eth1Data,
680
674
  proposerSlashings,
681
675
  attesterSlashings,
682
676
  attestations,
683
- deposits,
677
+ // Since electra, deposits are processed by the execution layer,
678
+ // we no longer support handling deposits from earlier forks.
679
+ deposits: [],
684
680
  voluntaryExits,
685
681
  };
686
682
 
@@ -1,5 +1,6 @@
1
1
  import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
2
2
  import {routes} from "@lodestar/api";
3
+ import {BeaconConfig} from "@lodestar/config";
3
4
  import {
4
5
  EFFECTIVE_BALANCE_INCREMENT,
5
6
  ForkName,
@@ -38,11 +39,12 @@ const defaultAttestationsReward = {head: 0, target: 0, source: 0, inclusionDelay
38
39
  const defaultAttestationsPenalty = {target: 0, source: 0};
39
40
 
40
41
  export async function computeAttestationsRewards(
42
+ config: BeaconConfig,
41
43
  pubkey2index: PubkeyIndexMap,
42
44
  state: CachedBeaconStateAllForks,
43
45
  validatorIds?: (ValidatorIndex | string)[]
44
46
  ): Promise<AttestationsRewards> {
45
- const fork = state.config.getForkName(state.slot);
47
+ const fork = config.getForkName(state.slot);
46
48
  if (fork === ForkName.phase0) {
47
49
  throw Error("Unsupported fork. Attestations rewards calculation is not available in phase0");
48
50
  }
@@ -50,8 +52,13 @@ export async function computeAttestationsRewards(
50
52
  const stateAltair = state as CachedBeaconStateAltair;
51
53
  const transitionCache = beforeProcessEpoch(stateAltair);
52
54
 
53
- const [idealRewards, penalties] = computeIdealAttestationsRewardsAndPenaltiesAltair(stateAltair, transitionCache);
55
+ const [idealRewards, penalties] = computeIdealAttestationsRewardsAndPenaltiesAltair(
56
+ config,
57
+ stateAltair,
58
+ transitionCache
59
+ );
54
60
  const totalRewards = computeTotalAttestationsRewardsAltair(
61
+ config,
55
62
  pubkey2index,
56
63
  stateAltair,
57
64
  transitionCache,
@@ -64,12 +71,13 @@ export async function computeAttestationsRewards(
64
71
  }
65
72
 
66
73
  function computeIdealAttestationsRewardsAndPenaltiesAltair(
74
+ config: BeaconConfig,
67
75
  state: CachedBeaconStateAllForks,
68
76
  transitionCache: EpochTransitionCache
69
77
  ): [IdealAttestationsReward[], AttestationsPenalty[]] {
70
78
  const baseRewardPerIncrement = transitionCache.baseRewardPerIncrement;
71
79
  const activeBalanceByIncrement = transitionCache.totalActiveStakeByIncrement;
72
- const fork = state.config.getForkName(state.slot);
80
+ const fork = config.getForkName(state.slot);
73
81
  const maxEffectiveBalance = isForkPostElectra(fork) ? MAX_EFFECTIVE_BALANCE_ELECTRA : MAX_EFFECTIVE_BALANCE;
74
82
  const maxEffectiveBalanceByIncrement = Math.floor(maxEffectiveBalance / EFFECTIVE_BALANCE_INCREMENT);
75
83
 
@@ -139,6 +147,7 @@ function computeIdealAttestationsRewardsAndPenaltiesAltair(
139
147
 
140
148
  // Same calculation as `getRewardsAndPenaltiesAltair` but returns the breakdown of rewards instead of aggregated
141
149
  function computeTotalAttestationsRewardsAltair(
150
+ config: BeaconConfig,
142
151
  pubkey2index: PubkeyIndexMap,
143
152
  state: CachedBeaconStateAltair,
144
153
  transitionCache: EpochTransitionCache,
@@ -148,7 +157,7 @@ function computeTotalAttestationsRewardsAltair(
148
157
  ): TotalAttestationsReward[] {
149
158
  const rewards = [];
150
159
  const {flags} = transitionCache;
151
- const {epochCtx, config} = state;
160
+ const {epochCtx} = state;
152
161
  const validatorIndices = validatorIds
153
162
  .map((id) => (typeof id === "number" ? id : pubkey2index.get(fromHex(id))))
154
163
  .filter((index) => index !== undefined); // Validator indices to include in the result