@lodestar/beacon-node 1.38.0 → 1.39.0-dev.100ab480bb

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 (393) 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/api/impl/beacon/state/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/state/index.js +4 -5
  5. package/lib/api/impl/beacon/state/index.js.map +1 -1
  6. package/lib/api/impl/validator/index.js +1 -1
  7. package/lib/api/impl/validator/index.js.map +1 -1
  8. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  9. package/lib/chain/blocks/verifyBlock.js +1 -21
  10. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  11. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -6
  12. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  13. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +9 -128
  14. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  15. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +3 -2
  16. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  17. package/lib/chain/blocks/verifyBlocksSignatures.js +3 -2
  18. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  19. package/lib/chain/chain.d.ts +8 -12
  20. package/lib/chain/chain.d.ts.map +1 -1
  21. package/lib/chain/chain.js +25 -59
  22. package/lib/chain/chain.js.map +1 -1
  23. package/lib/chain/initState.d.ts +1 -14
  24. package/lib/chain/initState.d.ts.map +1 -1
  25. package/lib/chain/initState.js +1 -62
  26. package/lib/chain/initState.js.map +1 -1
  27. package/lib/chain/interface.d.ts +4 -9
  28. package/lib/chain/interface.d.ts.map +1 -1
  29. package/lib/chain/interface.js.map +1 -1
  30. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
  31. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  32. package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
  33. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  34. package/lib/chain/opPools/opPool.d.ts +3 -0
  35. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  36. package/lib/chain/opPools/opPool.js +9 -8
  37. package/lib/chain/opPools/opPool.js.map +1 -1
  38. package/lib/chain/options.d.ts +0 -4
  39. package/lib/chain/options.d.ts.map +1 -1
  40. package/lib/chain/options.js +0 -2
  41. package/lib/chain/options.js.map +1 -1
  42. package/lib/chain/prepareNextSlot.d.ts +0 -4
  43. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  44. package/lib/chain/prepareNextSlot.js +2 -22
  45. package/lib/chain/prepareNextSlot.js.map +1 -1
  46. package/lib/chain/produceBlock/produceBlockBody.d.ts +2 -22
  47. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  48. package/lib/chain/produceBlock/produceBlockBody.js +32 -98
  49. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  50. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
  51. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  52. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
  53. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  54. package/lib/chain/validation/aggregateAndProof.js +9 -0
  55. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  56. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  57. package/lib/chain/validation/attesterSlashing.js +2 -2
  58. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  59. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  60. package/lib/chain/validation/blobSidecar.js +2 -2
  61. package/lib/chain/validation/blobSidecar.js.map +1 -1
  62. package/lib/chain/validation/block.js +1 -1
  63. package/lib/chain/validation/block.js.map +1 -1
  64. package/lib/chain/validation/blsToExecutionChange.js +1 -1
  65. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  66. package/lib/chain/validation/dataColumnSidecar.js +2 -2
  67. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  68. package/lib/chain/validation/proposerSlashing.js +1 -1
  69. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  70. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  71. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  72. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +3 -2
  73. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  74. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -4
  75. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  76. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +3 -2
  77. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  78. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  79. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  80. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  81. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  82. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  83. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  84. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +3 -2
  85. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  86. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +2 -3
  87. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  88. package/lib/chain/validation/syncCommittee.js +1 -1
  89. package/lib/chain/validation/syncCommittee.js.map +1 -1
  90. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  91. package/lib/chain/validation/syncCommitteeContributionAndProof.js +5 -4
  92. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  93. package/lib/chain/validation/voluntaryExit.js +1 -1
  94. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  95. package/lib/db/beacon.d.ts +3 -7
  96. package/lib/db/beacon.d.ts.map +1 -1
  97. package/lib/db/beacon.js +33 -12
  98. package/lib/db/beacon.js.map +1 -1
  99. package/lib/db/buckets.d.ts +12 -6
  100. package/lib/db/buckets.d.ts.map +1 -1
  101. package/lib/db/buckets.js +6 -1
  102. package/lib/db/buckets.js.map +1 -1
  103. package/lib/db/interface.d.ts +2 -7
  104. package/lib/db/interface.d.ts.map +1 -1
  105. package/lib/db/repositories/index.d.ts +0 -3
  106. package/lib/db/repositories/index.d.ts.map +1 -1
  107. package/lib/db/repositories/index.js +0 -3
  108. package/lib/db/repositories/index.js.map +1 -1
  109. package/lib/execution/engine/http.d.ts +5 -13
  110. package/lib/execution/engine/http.d.ts.map +1 -1
  111. package/lib/execution/engine/http.js +6 -15
  112. package/lib/execution/engine/http.js.map +1 -1
  113. package/lib/execution/engine/index.d.ts.map +1 -1
  114. package/lib/execution/engine/index.js +1 -1
  115. package/lib/execution/engine/index.js.map +1 -1
  116. package/lib/execution/engine/interface.d.ts +1 -1
  117. package/lib/execution/engine/interface.d.ts.map +1 -1
  118. package/lib/execution/engine/interface.js.map +1 -1
  119. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  120. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  121. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  122. package/lib/execution/engine/jwt.d.ts.map +1 -0
  123. package/lib/execution/engine/jwt.js.map +1 -0
  124. package/lib/execution/engine/mock.d.ts +2 -6
  125. package/lib/execution/engine/mock.d.ts.map +1 -1
  126. package/lib/execution/engine/mock.js +4 -15
  127. package/lib/execution/engine/mock.js.map +1 -1
  128. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  129. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  130. package/lib/execution/engine/types.d.ts +1 -1
  131. package/lib/execution/engine/types.d.ts.map +1 -1
  132. package/lib/execution/engine/types.js +1 -1
  133. package/lib/execution/engine/types.js.map +1 -1
  134. package/lib/execution/engine/utils.d.ts +64 -2
  135. package/lib/execution/engine/utils.d.ts.map +1 -1
  136. package/lib/execution/engine/utils.js +91 -2
  137. package/lib/execution/engine/utils.js.map +1 -1
  138. package/lib/index.d.ts +1 -2
  139. package/lib/index.d.ts.map +1 -1
  140. package/lib/index.js +1 -2
  141. package/lib/index.js.map +1 -1
  142. package/lib/metrics/metrics/lodestar.d.ts +0 -49
  143. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  144. package/lib/metrics/metrics/lodestar.js +0 -134
  145. package/lib/metrics/metrics/lodestar.js.map +1 -1
  146. package/lib/network/core/events.d.ts +1 -1
  147. package/lib/network/core/events.d.ts.map +1 -1
  148. package/lib/network/core/events.js +1 -1
  149. package/lib/network/core/events.js.map +1 -1
  150. package/lib/network/events.d.ts +6 -1
  151. package/lib/network/events.d.ts.map +1 -1
  152. package/lib/network/events.js +7 -1
  153. package/lib/network/events.js.map +1 -1
  154. package/lib/node/nodejs.d.ts +6 -3
  155. package/lib/node/nodejs.d.ts.map +1 -1
  156. package/lib/node/nodejs.js +13 -10
  157. package/lib/node/nodejs.js.map +1 -1
  158. package/lib/node/notifier.d.ts.map +1 -1
  159. package/lib/node/notifier.js +0 -13
  160. package/lib/node/notifier.js.map +1 -1
  161. package/lib/node/options.d.ts +0 -2
  162. package/lib/node/options.d.ts.map +1 -1
  163. package/lib/node/options.js +0 -2
  164. package/lib/node/options.js.map +1 -1
  165. package/lib/node/utils/interop/deposits.d.ts +2 -1
  166. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  167. package/lib/node/utils/interop/deposits.js.map +1 -1
  168. package/lib/node/utils/interop/state.d.ts +1 -1
  169. package/lib/node/utils/interop/state.d.ts.map +1 -1
  170. package/lib/node/utils/state.d.ts +1 -7
  171. package/lib/node/utils/state.d.ts.map +1 -1
  172. package/lib/node/utils/state.js +1 -14
  173. package/lib/node/utils/state.js.map +1 -1
  174. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  175. package/lib/sync/backfill/backfill.js +2 -2
  176. package/lib/sync/backfill/backfill.js.map +1 -1
  177. package/lib/sync/backfill/verify.d.ts +2 -2
  178. package/lib/sync/backfill/verify.d.ts.map +1 -1
  179. package/lib/sync/backfill/verify.js +3 -3
  180. package/lib/sync/backfill/verify.js.map +1 -1
  181. package/lib/util/workerEvents.d.ts +1 -6
  182. package/lib/util/workerEvents.d.ts.map +1 -1
  183. package/lib/util/workerEvents.js +8 -8
  184. package/lib/util/workerEvents.js.map +1 -1
  185. package/package.json +14 -21
  186. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  187. package/src/api/impl/beacon/state/index.ts +4 -5
  188. package/src/api/impl/validator/index.ts +1 -1
  189. package/src/chain/blocks/verifyBlock.ts +3 -24
  190. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -161
  191. package/src/chain/blocks/verifyBlocksSignatures.ts +15 -4
  192. package/src/chain/chain.ts +35 -69
  193. package/src/chain/initState.ts +1 -97
  194. package/src/chain/interface.ts +4 -8
  195. package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
  196. package/src/chain/opPools/opPool.ts +8 -8
  197. package/src/chain/options.ts +0 -6
  198. package/src/chain/prepareNextSlot.ts +2 -29
  199. package/src/chain/produceBlock/produceBlockBody.ts +33 -132
  200. package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
  201. package/src/chain/validation/aggregateAndProof.ts +12 -0
  202. package/src/chain/validation/attesterSlashing.ts +7 -2
  203. package/src/chain/validation/blobSidecar.ts +10 -2
  204. package/src/chain/validation/block.ts +1 -1
  205. package/src/chain/validation/blsToExecutionChange.ts +1 -1
  206. package/src/chain/validation/dataColumnSidecar.ts +6 -1
  207. package/src/chain/validation/proposerSlashing.ts +6 -1
  208. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  209. package/src/chain/validation/signatureSets/contributionAndProof.ts +6 -3
  210. package/src/chain/validation/signatureSets/syncCommittee.ts +6 -2
  211. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  212. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +5 -2
  213. package/src/chain/validation/syncCommittee.ts +1 -1
  214. package/src/chain/validation/syncCommitteeContributionAndProof.ts +10 -6
  215. package/src/chain/validation/voluntaryExit.ts +1 -1
  216. package/src/db/beacon.ts +38 -16
  217. package/src/db/buckets.ts +12 -7
  218. package/src/db/interface.ts +2 -13
  219. package/src/db/repositories/index.ts +0 -3
  220. package/src/execution/engine/http.ts +12 -21
  221. package/src/execution/engine/index.ts +1 -1
  222. package/src/execution/engine/interface.ts +1 -1
  223. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  224. package/src/execution/engine/mock.ts +4 -17
  225. package/src/execution/engine/payloadIdCache.ts +1 -1
  226. package/src/execution/engine/types.ts +9 -9
  227. package/src/execution/engine/utils.ts +111 -5
  228. package/src/index.ts +1 -2
  229. package/src/metrics/metrics/lodestar.ts +0 -144
  230. package/src/network/core/events.ts +1 -1
  231. package/src/network/events.ts +7 -1
  232. package/src/node/nodejs.ts +20 -11
  233. package/src/node/notifier.ts +0 -16
  234. package/src/node/options.ts +0 -3
  235. package/src/node/utils/interop/deposits.ts +3 -1
  236. package/src/node/utils/interop/state.ts +1 -1
  237. package/src/node/utils/state.ts +3 -18
  238. package/src/sync/backfill/backfill.ts +14 -2
  239. package/src/sync/backfill/verify.ts +9 -2
  240. package/src/util/workerEvents.ts +9 -8
  241. package/lib/chain/genesis/genesis.d.ts +0 -51
  242. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  243. package/lib/chain/genesis/genesis.js +0 -123
  244. package/lib/chain/genesis/genesis.js.map +0 -1
  245. package/lib/chain/genesis/interface.d.ts +0 -13
  246. package/lib/chain/genesis/interface.d.ts.map +0 -1
  247. package/lib/chain/genesis/interface.js +0 -2
  248. package/lib/chain/genesis/interface.js.map +0 -1
  249. package/lib/chain/rewards/attestationsRewards.d.ts +0 -7
  250. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  251. package/lib/chain/rewards/attestationsRewards.js +0 -112
  252. package/lib/chain/rewards/attestationsRewards.js.map +0 -1
  253. package/lib/chain/rewards/blockRewards.d.ts +0 -14
  254. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  255. package/lib/chain/rewards/blockRewards.js +0 -94
  256. package/lib/chain/rewards/blockRewards.js.map +0 -1
  257. package/lib/chain/rewards/syncCommitteeRewards.d.ts +0 -6
  258. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  259. package/lib/chain/rewards/syncCommitteeRewards.js +0 -37
  260. package/lib/chain/rewards/syncCommitteeRewards.js.map +0 -1
  261. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  262. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  263. package/lib/db/repositories/depositDataRoot.js +0 -62
  264. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  265. package/lib/db/repositories/depositEvent.d.ts +0 -13
  266. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  267. package/lib/db/repositories/depositEvent.js +0 -27
  268. package/lib/db/repositories/depositEvent.js.map +0 -1
  269. package/lib/db/repositories/eth1Data.d.ts +0 -13
  270. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  271. package/lib/db/repositories/eth1Data.js +0 -26
  272. package/lib/db/repositories/eth1Data.js.map +0 -1
  273. package/lib/db/single/index.d.ts +0 -3
  274. package/lib/db/single/index.d.ts.map +0 -1
  275. package/lib/db/single/index.js +0 -3
  276. package/lib/db/single/index.js.map +0 -1
  277. package/lib/db/single/preGenesisState.d.ts +0 -16
  278. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  279. package/lib/db/single/preGenesisState.js +0 -29
  280. package/lib/db/single/preGenesisState.js.map +0 -1
  281. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  282. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  283. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  284. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  285. package/lib/eth1/errors.d.ts +0 -66
  286. package/lib/eth1/errors.d.ts.map +0 -1
  287. package/lib/eth1/errors.js +0 -27
  288. package/lib/eth1/errors.js.map +0 -1
  289. package/lib/eth1/eth1DataCache.d.ts +0 -19
  290. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  291. package/lib/eth1/eth1DataCache.js +0 -19
  292. package/lib/eth1/eth1DataCache.js.map +0 -1
  293. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  294. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  295. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  296. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  297. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  298. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  299. package/lib/eth1/eth1DepositsCache.js +0 -119
  300. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  301. package/lib/eth1/eth1MergeBlockTracker.d.ts +0 -65
  302. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  303. package/lib/eth1/eth1MergeBlockTracker.js +0 -262
  304. package/lib/eth1/eth1MergeBlockTracker.js.map +0 -1
  305. package/lib/eth1/index.d.ts +0 -46
  306. package/lib/eth1/index.d.ts.map +0 -1
  307. package/lib/eth1/index.js +0 -121
  308. package/lib/eth1/index.js.map +0 -1
  309. package/lib/eth1/interface.d.ts +0 -112
  310. package/lib/eth1/interface.d.ts.map +0 -1
  311. package/lib/eth1/interface.js +0 -8
  312. package/lib/eth1/interface.js.map +0 -1
  313. package/lib/eth1/options.d.ts +0 -22
  314. package/lib/eth1/options.d.ts.map +0 -1
  315. package/lib/eth1/options.js +0 -8
  316. package/lib/eth1/options.js.map +0 -1
  317. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  318. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  319. package/lib/eth1/provider/eth1Provider.js +0 -147
  320. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  321. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  322. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  323. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  324. package/lib/eth1/provider/jwt.js.map +0 -1
  325. package/lib/eth1/provider/utils.d.ts +0 -65
  326. package/lib/eth1/provider/utils.d.ts.map +0 -1
  327. package/lib/eth1/provider/utils.js +0 -120
  328. package/lib/eth1/provider/utils.js.map +0 -1
  329. package/lib/eth1/stream.d.ts +0 -15
  330. package/lib/eth1/stream.d.ts.map +0 -1
  331. package/lib/eth1/stream.js +0 -54
  332. package/lib/eth1/stream.js.map +0 -1
  333. package/lib/eth1/utils/depositContract.d.ts +0 -14
  334. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  335. package/lib/eth1/utils/depositContract.js +0 -33
  336. package/lib/eth1/utils/depositContract.js.map +0 -1
  337. package/lib/eth1/utils/deposits.d.ts +0 -8
  338. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  339. package/lib/eth1/utils/deposits.js +0 -47
  340. package/lib/eth1/utils/deposits.js.map +0 -1
  341. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  342. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  343. package/lib/eth1/utils/eth1Data.js +0 -77
  344. package/lib/eth1/utils/eth1Data.js.map +0 -1
  345. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  346. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  347. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  348. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  349. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  350. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  351. package/lib/eth1/utils/eth1Vote.js +0 -111
  352. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  353. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  354. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  355. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  356. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  357. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  358. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  359. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  360. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  361. package/src/chain/genesis/genesis.ts +0 -190
  362. package/src/chain/genesis/interface.ts +0 -14
  363. package/src/chain/rewards/attestationsRewards.ts +0 -196
  364. package/src/chain/rewards/blockRewards.ts +0 -150
  365. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  366. package/src/db/repositories/depositDataRoot.ts +0 -80
  367. package/src/db/repositories/depositEvent.ts +0 -32
  368. package/src/db/repositories/eth1Data.ts +0 -33
  369. package/src/db/single/index.ts +0 -2
  370. package/src/db/single/preGenesisState.ts +0 -37
  371. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  372. package/src/eth1/errors.ts +0 -40
  373. package/src/eth1/eth1DataCache.ts +0 -26
  374. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  375. package/src/eth1/eth1DepositsCache.ts +0 -141
  376. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  377. package/src/eth1/index.ts +0 -157
  378. package/src/eth1/interface.ts +0 -131
  379. package/src/eth1/options.ts +0 -28
  380. package/src/eth1/provider/eth1Provider.ts +0 -229
  381. package/src/eth1/provider/utils.ts +0 -136
  382. package/src/eth1/stream.ts +0 -75
  383. package/src/eth1/utils/depositContract.ts +0 -37
  384. package/src/eth1/utils/deposits.ts +0 -70
  385. package/src/eth1/utils/eth1Data.ts +0 -100
  386. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  387. package/src/eth1/utils/eth1Vote.ts +0 -142
  388. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  389. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  390. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  391. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  392. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  393. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
@@ -3,7 +3,7 @@ import {PrivateKey} from "@libp2p/interface";
3
3
  import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
4
4
  import {CompositeTypeAny, TreeView, Type} from "@chainsafe/ssz";
5
5
  import {BeaconConfig} from "@lodestar/config";
6
- import {CheckpointWithHex, ExecutionStatus, IForkChoice, ProtoBlock, UpdateHeadOpt} from "@lodestar/fork-choice";
6
+ import {CheckpointWithHex, IForkChoice, ProtoBlock, UpdateHeadOpt} from "@lodestar/fork-choice";
7
7
  import {LoggerNode} from "@lodestar/logger/node";
8
8
  import {EFFECTIVE_BALANCE_INCREMENT, GENESIS_SLOT, SLOTS_PER_EPOCH, isForkPostElectra} from "@lodestar/params";
9
9
  import {
@@ -14,13 +14,14 @@ import {
14
14
  EpochShuffling,
15
15
  Index2PubkeyCache,
16
16
  computeAnchorCheckpoint,
17
+ computeAttestationsRewards,
18
+ computeBlockRewards,
17
19
  computeEndSlotAtEpoch,
18
20
  computeEpochAtSlot,
19
21
  computeStartSlotAtEpoch,
20
- createCachedBeaconState,
22
+ computeSyncCommitteeRewards,
21
23
  getEffectiveBalanceIncrementsZeroInactive,
22
24
  getEffectiveBalancesFromStateBytes,
23
- isCachedBeaconState,
24
25
  processSlots,
25
26
  } from "@lodestar/state-transition";
26
27
  import {
@@ -38,12 +39,12 @@ import {
38
39
  Wei,
39
40
  isBlindedBeaconBlock,
40
41
  phase0,
42
+ rewards,
41
43
  } from "@lodestar/types";
42
44
  import {Logger, fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRootHex} from "@lodestar/utils";
43
45
  import {ProcessShutdownCallback} from "@lodestar/validator";
44
46
  import {GENESIS_EPOCH, ZERO_HASH} from "../constants/index.js";
45
47
  import {IBeaconDb} from "../db/index.js";
46
- import {IEth1ForBlockProduction} from "../eth1/index.js";
47
48
  import {BuilderStatus} from "../execution/builder/http.js";
48
49
  import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
49
50
  import {Metrics} from "../metrics/index.js";
@@ -80,9 +81,6 @@ import {AssembledBlockType, BlockType, ProduceResult} from "./produceBlock/index
80
81
  import {BlockAttributes, produceBlockBody, produceCommonBlockBody} from "./produceBlock/produceBlockBody.js";
81
82
  import {QueuedStateRegenerator, RegenCaller} from "./regen/index.js";
82
83
  import {ReprocessController} from "./reprocess.js";
83
- import {AttestationsRewards, computeAttestationsRewards} from "./rewards/attestationsRewards.js";
84
- import {BlockRewards, computeBlockRewards} from "./rewards/blockRewards.js";
85
- import {SyncCommitteeRewards, computeSyncCommitteeRewards} from "./rewards/syncCommitteeRewards.js";
86
84
  import {
87
85
  SeenAggregators,
88
86
  SeenAttesters,
@@ -117,7 +115,6 @@ const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
117
115
  export class BeaconChain implements IBeaconChain {
118
116
  readonly genesisTime: UintNum64;
119
117
  readonly genesisValidatorsRoot: Root;
120
- readonly eth1: IEth1ForBlockProduction;
121
118
  readonly executionEngine: IExecutionEngine;
122
119
  readonly executionBuilder?: IExecutionBuilder;
123
120
  // Expose config for convenience in modularized functions
@@ -144,7 +141,7 @@ export class BeaconChain implements IBeaconChain {
144
141
  readonly aggregatedAttestationPool: AggregatedAttestationPool;
145
142
  readonly syncCommitteeMessagePool: SyncCommitteeMessagePool;
146
143
  readonly syncContributionAndProofPool;
147
- readonly opPool = new OpPool();
144
+ readonly opPool: OpPool;
148
145
 
149
146
  // Gossip seen cache
150
147
  readonly seenAttesters = new SeenAttesters();
@@ -206,6 +203,8 @@ export class BeaconChain implements IBeaconChain {
206
203
  {
207
204
  privateKey,
208
205
  config,
206
+ pubkey2index,
207
+ index2pubkey,
209
208
  db,
210
209
  dbName,
211
210
  dataDir,
@@ -216,12 +215,13 @@ export class BeaconChain implements IBeaconChain {
216
215
  validatorMonitor,
217
216
  anchorState,
218
217
  isAnchorStateFinalized,
219
- eth1,
220
218
  executionEngine,
221
219
  executionBuilder,
222
220
  }: {
223
221
  privateKey: PrivateKey;
224
222
  config: BeaconConfig;
223
+ pubkey2index: PubkeyIndexMap;
224
+ index2pubkey: Index2PubkeyCache;
225
225
  db: IBeaconDb;
226
226
  dbName: string;
227
227
  dataDir: string;
@@ -231,9 +231,8 @@ export class BeaconChain implements IBeaconChain {
231
231
  clock?: IClock;
232
232
  metrics: Metrics | null;
233
233
  validatorMonitor: ValidatorMonitor | null;
234
- anchorState: BeaconStateAllForks;
234
+ anchorState: CachedBeaconStateAllForks;
235
235
  isAnchorStateFinalized: boolean;
236
- eth1: IEth1ForBlockProduction;
237
236
  executionEngine: IExecutionEngine;
238
237
  executionBuilder?: IExecutionBuilder;
239
238
  }
@@ -248,7 +247,6 @@ export class BeaconChain implements IBeaconChain {
248
247
  this.genesisTime = anchorState.genesisTime;
249
248
  this.anchorStateLatestBlockSlot = anchorState.latestBlockHeader.slot;
250
249
  this.genesisValidatorsRoot = anchorState.genesisValidatorsRoot;
251
- this.eth1 = eth1;
252
250
  this.executionEngine = executionEngine;
253
251
  this.executionBuilder = executionBuilder;
254
252
  const signal = this.abortController.signal;
@@ -265,6 +263,7 @@ export class BeaconChain implements IBeaconChain {
265
263
  this.aggregatedAttestationPool = new AggregatedAttestationPool(this.config, metrics);
266
264
  this.syncCommitteeMessagePool = new SyncCommitteeMessagePool(config, clock, this.opts?.preaggregateSlotDistance);
267
265
  this.syncContributionAndProofPool = new SyncContributionAndProofPool(config, clock, metrics, logger);
266
+ this.opPool = new OpPool(config);
268
267
 
269
268
  this.seenAggregatedAttestations = new SeenAggregatedAttestations(metrics);
270
269
  this.seenContributionAndProof = new SeenContributionAndProof(metrics);
@@ -291,39 +290,25 @@ export class BeaconChain implements IBeaconChain {
291
290
  logger,
292
291
  });
293
292
 
294
- // Restore state caches
295
- // anchorState may already by a CachedBeaconState. If so, don't create the cache again, since deserializing all
296
- // 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
298
- // it's safe to re-use _ANY_ BeaconStateCache, this option is disabled by default and only used in tests.
299
- const cachedState =
300
- isCachedBeaconState(anchorState) && opts.skipCreateStateCacheIfAvailable
301
- ? anchorState
302
- : createCachedBeaconState(anchorState, {
303
- config,
304
- pubkey2index: new PubkeyIndexMap(),
305
- index2pubkey: [],
306
- });
307
- this._earliestAvailableSlot = cachedState.slot;
308
-
309
- this.shufflingCache = cachedState.epochCtx.shufflingCache = new ShufflingCache(metrics, logger, this.opts, [
293
+ this._earliestAvailableSlot = anchorState.slot;
294
+ this.shufflingCache = anchorState.epochCtx.shufflingCache = new ShufflingCache(metrics, logger, this.opts, [
310
295
  {
311
- shuffling: cachedState.epochCtx.previousShuffling,
312
- decisionRoot: cachedState.epochCtx.previousDecisionRoot,
296
+ shuffling: anchorState.epochCtx.previousShuffling,
297
+ decisionRoot: anchorState.epochCtx.previousDecisionRoot,
313
298
  },
314
299
  {
315
- shuffling: cachedState.epochCtx.currentShuffling,
316
- decisionRoot: cachedState.epochCtx.currentDecisionRoot,
300
+ shuffling: anchorState.epochCtx.currentShuffling,
301
+ decisionRoot: anchorState.epochCtx.currentDecisionRoot,
317
302
  },
318
303
  {
319
- shuffling: cachedState.epochCtx.nextShuffling,
320
- decisionRoot: cachedState.epochCtx.nextDecisionRoot,
304
+ shuffling: anchorState.epochCtx.nextShuffling,
305
+ decisionRoot: anchorState.epochCtx.nextDecisionRoot,
321
306
  },
322
307
  ]);
323
308
 
324
- // Persist single global instance of state caches
325
- this.pubkey2index = cachedState.epochCtx.pubkey2index;
326
- this.index2pubkey = cachedState.epochCtx.index2pubkey;
309
+ // Global cache of validators pubkey/index mapping
310
+ this.pubkey2index = pubkey2index;
311
+ this.index2pubkey = index2pubkey;
327
312
 
328
313
  const fileDataStore = opts.nHistoricalStatesFileDataStore ?? true;
329
314
  const blockStateCache = this.opts.nHistoricalStates
@@ -339,6 +324,7 @@ export class BeaconChain implements IBeaconChain {
339
324
  this.cpStateDatastore = fileDataStore ? new FileCPStateDatastore(dataDir) : new DbCPStateDatastore(this.db);
340
325
  checkpointStateCache = new PersistentCheckpointStateCache(
341
326
  {
327
+ config,
342
328
  metrics,
343
329
  logger,
344
330
  clock,
@@ -353,15 +339,15 @@ export class BeaconChain implements IBeaconChain {
353
339
  }
354
340
 
355
341
  const {checkpoint} = computeAnchorCheckpoint(config, anchorState);
356
- blockStateCache.add(cachedState);
357
- blockStateCache.setHeadState(cachedState);
358
- checkpointStateCache.add(checkpoint, cachedState);
342
+ blockStateCache.add(anchorState);
343
+ blockStateCache.setHeadState(anchorState);
344
+ checkpointStateCache.add(checkpoint, anchorState);
359
345
 
360
346
  const forkChoice = initializeForkChoice(
361
347
  config,
362
348
  emitter,
363
349
  clock.currentSlot,
364
- cachedState,
350
+ anchorState,
365
351
  isAnchorStateFinalized,
366
352
  opts,
367
353
  this.justifiedBalancesGetter.bind(this),
@@ -417,15 +403,6 @@ export class BeaconChain implements IBeaconChain {
417
403
  signal
418
404
  );
419
405
 
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
406
  // always run PrepareNextSlotScheduler except for fork_choice spec tests
430
407
  if (!opts?.disablePrepareNextSlot) {
431
408
  new PrepareNextSlotScheduler(this, this.config, metrics, this.logger, signal);
@@ -757,7 +734,7 @@ export class BeaconChain implements IBeaconChain {
757
734
  RegenCaller.produceBlock
758
735
  );
759
736
  const proposerIndex = state.epochCtx.getBeaconProposer(slot);
760
- const proposerPubKey = state.epochCtx.index2pubkey[proposerIndex].toBytes();
737
+ const proposerPubKey = this.index2pubkey[proposerIndex].toBytes();
761
738
 
762
739
  const {body, produceResult, executionPayloadValue, shouldOverrideBuilder} = await produceBlockBody.call(
763
740
  this,
@@ -1177,17 +1154,6 @@ export class BeaconChain implements IBeaconChain {
1177
1154
  this.seenAggregatedAttestations.prune(epoch);
1178
1155
  this.seenBlockAttesters.prune(epoch);
1179
1156
  this.beaconProposerCache.prune(epoch);
1180
-
1181
- // Poll for merge block in the background to speed-up block production. Only if:
1182
- // - after BELLATRIX_FORK_EPOCH
1183
- // - Beacon node synced
1184
- // - head state not isMergeTransitionComplete
1185
- if (this.config.BELLATRIX_FORK_EPOCH - epoch < 1) {
1186
- const head = this.forkChoice.getHead();
1187
- if (epoch - computeEpochAtSlot(head.slot) < 5 && head.executionStatus === ExecutionStatus.PreMerge) {
1188
- this.eth1.startPollingMergeBlock();
1189
- }
1190
- }
1191
1157
  }
1192
1158
 
1193
1159
  protected onNewHead(head: ProtoBlock): void {
@@ -1320,7 +1286,7 @@ export class BeaconChain implements IBeaconChain {
1320
1286
  }
1321
1287
  }
1322
1288
 
1323
- async getBlockRewards(block: BeaconBlock | BlindedBeaconBlock): Promise<BlockRewards> {
1289
+ async getBlockRewards(block: BeaconBlock | BlindedBeaconBlock): Promise<rewards.BlockRewards> {
1324
1290
  let preState = this.regen.getPreStateSync(block);
1325
1291
 
1326
1292
  if (preState === null) {
@@ -1331,13 +1297,13 @@ export class BeaconChain implements IBeaconChain {
1331
1297
 
1332
1298
  const postState = this.regen.getStateSync(toRootHex(block.stateRoot)) ?? undefined;
1333
1299
 
1334
- return computeBlockRewards(block, preState.clone(), postState?.clone());
1300
+ return computeBlockRewards(this.config, block, preState.clone(), postState?.clone());
1335
1301
  }
1336
1302
 
1337
1303
  async getAttestationsRewards(
1338
1304
  epoch: Epoch,
1339
1305
  validatorIds?: (ValidatorIndex | string)[]
1340
- ): Promise<{rewards: AttestationsRewards; executionOptimistic: boolean; finalized: boolean}> {
1306
+ ): Promise<{rewards: rewards.AttestationsRewards; executionOptimistic: boolean; finalized: boolean}> {
1341
1307
  // We use end slot of (epoch + 1) to ensure we have seen all attestations. On-time or late. Any late attestation beyond this slot is not considered
1342
1308
  const slot = computeEndSlotAtEpoch(epoch + 1);
1343
1309
  const stateResult = await this.getStateBySlot(slot, {allowRegen: false}); // No regen if state not in cache
@@ -1355,7 +1321,7 @@ export class BeaconChain implements IBeaconChain {
1355
1321
  throw Error(`State is not in cache for slot ${slot}`);
1356
1322
  }
1357
1323
 
1358
- const rewards = await computeAttestationsRewards(epoch, cachedState, this.config, validatorIds);
1324
+ const rewards = await computeAttestationsRewards(this.config, this.pubkey2index, cachedState, validatorIds);
1359
1325
 
1360
1326
  return {rewards, executionOptimistic, finalized};
1361
1327
  }
@@ -1363,7 +1329,7 @@ export class BeaconChain implements IBeaconChain {
1363
1329
  async getSyncCommitteeRewards(
1364
1330
  block: BeaconBlock | BlindedBeaconBlock,
1365
1331
  validatorIds?: (ValidatorIndex | string)[]
1366
- ): Promise<SyncCommitteeRewards> {
1332
+ ): Promise<rewards.SyncCommitteeRewards> {
1367
1333
  let preState = this.regen.getPreStateSync(block);
1368
1334
 
1369
1335
  if (preState === null) {
@@ -1372,6 +1338,6 @@ export class BeaconChain implements IBeaconChain {
1372
1338
 
1373
1339
  preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
1374
1340
 
1375
- return computeSyncCommitteeRewards(block, preState.clone(), validatorIds);
1341
+ return computeSyncCommitteeRewards(this.config, this.index2pubkey, block, preState.clone(), validatorIds);
1376
1342
  }
1377
1343
  }
@@ -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,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,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
  }