@lodestar/beacon-node 1.39.0-dev.d4a47659a5 → 1.39.0-dev.dd21e36997

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 (368) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  3. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  4. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  5. package/lib/chain/blocks/verifyBlock.js +1 -1
  6. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  7. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  8. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +4 -2
  9. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  10. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -1
  11. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  12. package/lib/chain/blocks/verifyBlocksSignatures.js +3 -2
  13. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  14. package/lib/chain/chain.d.ts +8 -12
  15. package/lib/chain/chain.d.ts.map +1 -1
  16. package/lib/chain/chain.js +23 -47
  17. package/lib/chain/chain.js.map +1 -1
  18. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  19. package/lib/chain/forkChoice/index.js +3 -3
  20. package/lib/chain/forkChoice/index.js.map +1 -1
  21. package/lib/chain/initState.d.ts +1 -14
  22. package/lib/chain/initState.d.ts.map +1 -1
  23. package/lib/chain/initState.js +1 -62
  24. package/lib/chain/initState.js.map +1 -1
  25. package/lib/chain/interface.d.ts +4 -9
  26. package/lib/chain/interface.d.ts.map +1 -1
  27. package/lib/chain/interface.js.map +1 -1
  28. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
  29. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  30. package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
  31. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  32. package/lib/chain/opPools/opPool.d.ts +3 -0
  33. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  34. package/lib/chain/opPools/opPool.js +9 -8
  35. package/lib/chain/opPools/opPool.js.map +1 -1
  36. package/lib/chain/prepareNextSlot.d.ts +0 -4
  37. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  38. package/lib/chain/prepareNextSlot.js +1 -21
  39. package/lib/chain/prepareNextSlot.js.map +1 -1
  40. package/lib/chain/produceBlock/produceBlockBody.d.ts +0 -1
  41. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  42. package/lib/chain/produceBlock/produceBlockBody.js +9 -12
  43. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  44. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
  45. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  46. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
  47. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  48. package/lib/chain/validation/aggregateAndProof.js +9 -0
  49. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  50. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  51. package/lib/chain/validation/attesterSlashing.js +1 -1
  52. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  53. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  54. package/lib/chain/validation/blobSidecar.js +2 -3
  55. package/lib/chain/validation/blobSidecar.js.map +1 -1
  56. package/lib/chain/validation/block.d.ts.map +1 -1
  57. package/lib/chain/validation/block.js +3 -3
  58. package/lib/chain/validation/block.js.map +1 -1
  59. package/lib/chain/validation/blsToExecutionChange.js +1 -1
  60. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  61. package/lib/chain/validation/dataColumnSidecar.js +2 -3
  62. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  63. package/lib/chain/validation/proposerSlashing.js +1 -1
  64. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  65. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  66. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  67. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -1
  68. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  69. package/lib/chain/validation/signatureSets/contributionAndProof.js +2 -2
  70. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  71. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -1
  72. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  73. package/lib/chain/validation/signatureSets/syncCommittee.js +2 -2
  74. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  75. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  76. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  77. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  78. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  79. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -1
  80. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  81. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -2
  82. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  83. package/lib/chain/validation/syncCommittee.js +1 -1
  84. package/lib/chain/validation/syncCommittee.js.map +1 -1
  85. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  86. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -3
  87. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  88. package/lib/chain/validation/voluntaryExit.js +1 -1
  89. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  90. package/lib/db/beacon.d.ts +3 -7
  91. package/lib/db/beacon.d.ts.map +1 -1
  92. package/lib/db/beacon.js +33 -12
  93. package/lib/db/beacon.js.map +1 -1
  94. package/lib/db/buckets.d.ts +12 -6
  95. package/lib/db/buckets.d.ts.map +1 -1
  96. package/lib/db/buckets.js +6 -1
  97. package/lib/db/buckets.js.map +1 -1
  98. package/lib/db/interface.d.ts +2 -7
  99. package/lib/db/interface.d.ts.map +1 -1
  100. package/lib/db/repositories/index.d.ts +0 -3
  101. package/lib/db/repositories/index.d.ts.map +1 -1
  102. package/lib/db/repositories/index.js +0 -3
  103. package/lib/db/repositories/index.js.map +1 -1
  104. package/lib/execution/engine/http.d.ts +1 -1
  105. package/lib/execution/engine/http.d.ts.map +1 -1
  106. package/lib/execution/engine/http.js +2 -3
  107. package/lib/execution/engine/http.js.map +1 -1
  108. package/lib/execution/engine/index.d.ts.map +1 -1
  109. package/lib/execution/engine/index.js +1 -1
  110. package/lib/execution/engine/index.js.map +1 -1
  111. package/lib/execution/engine/interface.d.ts +1 -1
  112. package/lib/execution/engine/interface.d.ts.map +1 -1
  113. package/lib/execution/engine/interface.js.map +1 -1
  114. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  115. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  116. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  117. package/lib/execution/engine/jwt.d.ts.map +1 -0
  118. package/lib/execution/engine/jwt.js.map +1 -0
  119. package/lib/execution/engine/mock.d.ts.map +1 -1
  120. package/lib/execution/engine/mock.js +1 -1
  121. package/lib/execution/engine/mock.js.map +1 -1
  122. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  123. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  124. package/lib/execution/engine/types.d.ts +1 -1
  125. package/lib/execution/engine/types.d.ts.map +1 -1
  126. package/lib/execution/engine/types.js +1 -1
  127. package/lib/execution/engine/types.js.map +1 -1
  128. package/lib/execution/engine/utils.d.ts +64 -2
  129. package/lib/execution/engine/utils.d.ts.map +1 -1
  130. package/lib/execution/engine/utils.js +91 -2
  131. package/lib/execution/engine/utils.js.map +1 -1
  132. package/lib/index.d.ts +1 -2
  133. package/lib/index.d.ts.map +1 -1
  134. package/lib/index.js +1 -2
  135. package/lib/index.js.map +1 -1
  136. package/lib/metrics/metrics/lodestar.d.ts +0 -35
  137. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  138. package/lib/metrics/metrics/lodestar.js +0 -90
  139. package/lib/metrics/metrics/lodestar.js.map +1 -1
  140. package/lib/network/peers/discover.d.ts.map +1 -1
  141. package/lib/network/peers/discover.js.map +1 -1
  142. package/lib/node/nodejs.d.ts +6 -3
  143. package/lib/node/nodejs.d.ts.map +1 -1
  144. package/lib/node/nodejs.js +13 -10
  145. package/lib/node/nodejs.js.map +1 -1
  146. package/lib/node/notifier.d.ts.map +1 -1
  147. package/lib/node/notifier.js +9 -6
  148. package/lib/node/notifier.js.map +1 -1
  149. package/lib/node/options.d.ts +0 -2
  150. package/lib/node/options.d.ts.map +1 -1
  151. package/lib/node/options.js +0 -2
  152. package/lib/node/options.js.map +1 -1
  153. package/lib/node/utils/interop/deposits.d.ts +2 -1
  154. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  155. package/lib/node/utils/interop/deposits.js.map +1 -1
  156. package/lib/node/utils/interop/state.d.ts +1 -1
  157. package/lib/node/utils/interop/state.d.ts.map +1 -1
  158. package/lib/node/utils/state.d.ts +1 -7
  159. package/lib/node/utils/state.d.ts.map +1 -1
  160. package/lib/node/utils/state.js +1 -14
  161. package/lib/node/utils/state.js.map +1 -1
  162. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  163. package/lib/sync/backfill/backfill.js +2 -4
  164. package/lib/sync/backfill/backfill.js.map +1 -1
  165. package/lib/sync/backfill/verify.d.ts +2 -2
  166. package/lib/sync/backfill/verify.d.ts.map +1 -1
  167. package/lib/sync/backfill/verify.js +3 -3
  168. package/lib/sync/backfill/verify.js.map +1 -1
  169. package/package.json +28 -26
  170. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  171. package/src/chain/blocks/verifyBlock.ts +1 -0
  172. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  173. package/src/chain/blocks/verifyBlocksSignatures.ts +13 -3
  174. package/src/chain/chain.ts +33 -56
  175. package/src/chain/forkChoice/index.ts +3 -2
  176. package/src/chain/initState.ts +1 -97
  177. package/src/chain/interface.ts +4 -8
  178. package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
  179. package/src/chain/opPools/opPool.ts +8 -8
  180. package/src/chain/prepareNextSlot.ts +1 -28
  181. package/src/chain/produceBlock/produceBlockBody.ts +9 -13
  182. package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
  183. package/src/chain/validation/aggregateAndProof.ts +12 -0
  184. package/src/chain/validation/attesterSlashing.ts +6 -1
  185. package/src/chain/validation/blobSidecar.ts +3 -3
  186. package/src/chain/validation/block.ts +3 -2
  187. package/src/chain/validation/blsToExecutionChange.ts +1 -1
  188. package/src/chain/validation/dataColumnSidecar.ts +3 -3
  189. package/src/chain/validation/proposerSlashing.ts +6 -1
  190. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  191. package/src/chain/validation/signatureSets/contributionAndProof.ts +3 -1
  192. package/src/chain/validation/signatureSets/syncCommittee.ts +3 -1
  193. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  194. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -1
  195. package/src/chain/validation/syncCommittee.ts +1 -1
  196. package/src/chain/validation/syncCommitteeContributionAndProof.ts +8 -3
  197. package/src/chain/validation/voluntaryExit.ts +1 -1
  198. package/src/db/beacon.ts +38 -16
  199. package/src/db/buckets.ts +12 -7
  200. package/src/db/interface.ts +2 -13
  201. package/src/db/repositories/index.ts +0 -3
  202. package/src/execution/engine/http.ts +8 -9
  203. package/src/execution/engine/index.ts +1 -1
  204. package/src/execution/engine/interface.ts +1 -1
  205. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  206. package/src/execution/engine/mock.ts +1 -2
  207. package/src/execution/engine/payloadIdCache.ts +1 -1
  208. package/src/execution/engine/types.ts +9 -9
  209. package/src/execution/engine/utils.ts +111 -5
  210. package/src/index.ts +1 -2
  211. package/src/metrics/metrics/lodestar.ts +0 -92
  212. package/src/network/peers/discover.ts +3 -3
  213. package/src/node/nodejs.ts +20 -11
  214. package/src/node/notifier.ts +13 -7
  215. package/src/node/options.ts +0 -3
  216. package/src/node/utils/interop/deposits.ts +3 -1
  217. package/src/node/utils/interop/state.ts +1 -1
  218. package/src/node/utils/state.ts +3 -18
  219. package/src/sync/backfill/backfill.ts +2 -9
  220. package/src/sync/backfill/verify.ts +3 -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/chain/rewards/attestationsRewards.d.ts +0 -7
  230. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  231. package/lib/chain/rewards/attestationsRewards.js +0 -112
  232. package/lib/chain/rewards/attestationsRewards.js.map +0 -1
  233. package/lib/chain/rewards/blockRewards.d.ts +0 -14
  234. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  235. package/lib/chain/rewards/blockRewards.js +0 -94
  236. package/lib/chain/rewards/blockRewards.js.map +0 -1
  237. package/lib/chain/rewards/syncCommitteeRewards.d.ts +0 -6
  238. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  239. package/lib/chain/rewards/syncCommitteeRewards.js +0 -36
  240. package/lib/chain/rewards/syncCommitteeRewards.js.map +0 -1
  241. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  242. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  243. package/lib/db/repositories/depositDataRoot.js +0 -62
  244. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  245. package/lib/db/repositories/depositEvent.d.ts +0 -13
  246. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  247. package/lib/db/repositories/depositEvent.js +0 -27
  248. package/lib/db/repositories/depositEvent.js.map +0 -1
  249. package/lib/db/repositories/eth1Data.d.ts +0 -13
  250. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  251. package/lib/db/repositories/eth1Data.js +0 -26
  252. package/lib/db/repositories/eth1Data.js.map +0 -1
  253. package/lib/db/single/index.d.ts +0 -3
  254. package/lib/db/single/index.d.ts.map +0 -1
  255. package/lib/db/single/index.js +0 -3
  256. package/lib/db/single/index.js.map +0 -1
  257. package/lib/db/single/preGenesisState.d.ts +0 -16
  258. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  259. package/lib/db/single/preGenesisState.js +0 -29
  260. package/lib/db/single/preGenesisState.js.map +0 -1
  261. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  262. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  263. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  264. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  265. package/lib/eth1/errors.d.ts +0 -66
  266. package/lib/eth1/errors.d.ts.map +0 -1
  267. package/lib/eth1/errors.js +0 -27
  268. package/lib/eth1/errors.js.map +0 -1
  269. package/lib/eth1/eth1DataCache.d.ts +0 -19
  270. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  271. package/lib/eth1/eth1DataCache.js +0 -19
  272. package/lib/eth1/eth1DataCache.js.map +0 -1
  273. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  274. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  275. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  276. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  277. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  278. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  279. package/lib/eth1/eth1DepositsCache.js +0 -119
  280. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  281. package/lib/eth1/index.d.ts +0 -31
  282. package/lib/eth1/index.d.ts.map +0 -1
  283. package/lib/eth1/index.js +0 -71
  284. package/lib/eth1/index.js.map +0 -1
  285. package/lib/eth1/interface.d.ts +0 -74
  286. package/lib/eth1/interface.d.ts.map +0 -1
  287. package/lib/eth1/interface.js +0 -8
  288. package/lib/eth1/interface.js.map +0 -1
  289. package/lib/eth1/options.d.ts +0 -22
  290. package/lib/eth1/options.d.ts.map +0 -1
  291. package/lib/eth1/options.js +0 -8
  292. package/lib/eth1/options.js.map +0 -1
  293. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  294. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  295. package/lib/eth1/provider/eth1Provider.js +0 -147
  296. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  297. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  298. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  299. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  300. package/lib/eth1/provider/jwt.js.map +0 -1
  301. package/lib/eth1/provider/utils.d.ts +0 -65
  302. package/lib/eth1/provider/utils.d.ts.map +0 -1
  303. package/lib/eth1/provider/utils.js +0 -120
  304. package/lib/eth1/provider/utils.js.map +0 -1
  305. package/lib/eth1/stream.d.ts +0 -15
  306. package/lib/eth1/stream.d.ts.map +0 -1
  307. package/lib/eth1/stream.js +0 -54
  308. package/lib/eth1/stream.js.map +0 -1
  309. package/lib/eth1/utils/depositContract.d.ts +0 -14
  310. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  311. package/lib/eth1/utils/depositContract.js +0 -33
  312. package/lib/eth1/utils/depositContract.js.map +0 -1
  313. package/lib/eth1/utils/deposits.d.ts +0 -8
  314. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  315. package/lib/eth1/utils/deposits.js +0 -47
  316. package/lib/eth1/utils/deposits.js.map +0 -1
  317. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  318. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  319. package/lib/eth1/utils/eth1Data.js +0 -77
  320. package/lib/eth1/utils/eth1Data.js.map +0 -1
  321. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  322. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  323. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  324. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  325. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  326. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  327. package/lib/eth1/utils/eth1Vote.js +0 -111
  328. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  329. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  330. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  331. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  332. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  333. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  334. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  335. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  336. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  337. package/src/chain/genesis/genesis.ts +0 -190
  338. package/src/chain/genesis/interface.ts +0 -14
  339. package/src/chain/rewards/attestationsRewards.ts +0 -197
  340. package/src/chain/rewards/blockRewards.ts +0 -150
  341. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  342. package/src/db/repositories/depositDataRoot.ts +0 -80
  343. package/src/db/repositories/depositEvent.ts +0 -32
  344. package/src/db/repositories/eth1Data.ts +0 -33
  345. package/src/db/single/index.ts +0 -2
  346. package/src/db/single/preGenesisState.ts +0 -37
  347. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  348. package/src/eth1/errors.ts +0 -40
  349. package/src/eth1/eth1DataCache.ts +0 -26
  350. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  351. package/src/eth1/eth1DepositsCache.ts +0 -141
  352. package/src/eth1/index.ts +0 -94
  353. package/src/eth1/interface.ts +0 -87
  354. package/src/eth1/options.ts +0 -28
  355. package/src/eth1/provider/eth1Provider.ts +0 -229
  356. package/src/eth1/provider/utils.ts +0 -136
  357. package/src/eth1/stream.ts +0 -75
  358. package/src/eth1/utils/depositContract.ts +0 -37
  359. package/src/eth1/utils/deposits.ts +0 -70
  360. package/src/eth1/utils/eth1Data.ts +0 -100
  361. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  362. package/src/eth1/utils/eth1Vote.ts +0 -142
  363. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  364. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  365. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  366. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  367. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  368. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
@@ -11,7 +11,6 @@ import {
11
11
  import {ExecutionPayload, RootHex, bellatrix, deneb, ssz} from "@lodestar/types";
12
12
  import {fromHex, toRootHex} from "@lodestar/utils";
13
13
  import {ZERO_HASH_HEX} from "../../constants/index.js";
14
- import {quantityToNum} from "../../eth1/provider/utils.js";
15
14
  import {INTEROP_BLOCK_HASH} from "../../node/utils/interop/state.js";
16
15
  import {kzgCommitmentToVersionedHash} from "../../util/blobs.js";
17
16
  import {kzg} from "../../util/kzg.js";
@@ -29,7 +28,7 @@ import {
29
28
  serializeExecutionPayload,
30
29
  serializeExecutionRequests,
31
30
  } from "./types.js";
32
- import {JsonRpcBackend} from "./utils.js";
31
+ import {JsonRpcBackend, quantityToNum} from "./utils.js";
33
32
 
34
33
  const INTEROP_GAS_LIMIT = 30e6;
35
34
  const PRUNE_PAYLOAD_ID_AFTER_MS = 5000;
@@ -1,7 +1,7 @@
1
1
  import {SLOTS_PER_EPOCH} from "@lodestar/params";
2
2
  import {pruneSetToMax} from "@lodestar/utils";
3
- import {DATA, QUANTITY} from "../../eth1/provider/utils.js";
4
3
  import {PayloadAttributesRpc} from "./types.js";
4
+ import {DATA, QUANTITY} from "./utils.js";
5
5
 
6
6
  // Idealy this only need to be set to the max head reorgs number
7
7
  const MAX_PAYLOAD_IDS = SLOTS_PER_EPOCH;
@@ -23,6 +23,14 @@ import {
23
23
  } from "@lodestar/types";
24
24
  import {BlobAndProof} from "@lodestar/types/deneb";
25
25
  import {BlobAndProofV2} from "@lodestar/types/fulu";
26
+ import {
27
+ ExecutionPayloadStatus,
28
+ ExecutionRequestType,
29
+ PayloadAttributes,
30
+ VersionedHashes,
31
+ isExecutionRequestType,
32
+ } from "./interface.js";
33
+ import {WithdrawalV1} from "./payloadIdCache.js";
26
34
  import {
27
35
  DATA,
28
36
  QUANTITY,
@@ -32,15 +40,7 @@ import {
32
40
  numToQuantity,
33
41
  quantityToBigint,
34
42
  quantityToNum,
35
- } from "../../eth1/provider/utils.js";
36
- import {
37
- ExecutionPayloadStatus,
38
- ExecutionRequestType,
39
- PayloadAttributes,
40
- VersionedHashes,
41
- isExecutionRequestType,
42
- } from "./interface.js";
43
- import {WithdrawalV1} from "./payloadIdCache.js";
43
+ } from "./utils.js";
44
44
 
45
45
  export type EngineApiRpcParamTypes = {
46
46
  /**
@@ -1,14 +1,120 @@
1
- import {isErrorAborted, isFetchError} from "@lodestar/utils";
2
- import {IJson, RpcPayload} from "../../eth1/interface.js";
1
+ import {bigIntToBytes, bytesToBigInt, fromHex, fromHexInto, isErrorAborted, isFetchError, toHex} from "@lodestar/utils";
2
+ import {isQueueErrorAborted} from "../../util/queue/errors.js";
3
+ import {ExecutionEngineState, ExecutionPayloadStatus} from "./interface.js";
3
4
  import {
4
5
  ErrorJsonRpcResponse,
5
6
  HttpRpcError,
6
7
  IJsonRpcHttpClient,
7
8
  JsonRpcHttpClientEvent,
8
9
  JsonRpcHttpClientEventEmitter,
9
- } from "../../eth1/provider/jsonRpcHttpClient.js";
10
- import {isQueueErrorAborted} from "../../util/queue/errors.js";
11
- import {ExecutionEngineState, ExecutionPayloadStatus} from "./interface.js";
10
+ } from "./jsonRpcHttpClient.js";
11
+
12
+ /** QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API */
13
+ export type QUANTITY = string;
14
+ /** DATA as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API */
15
+ export type DATA = string;
16
+
17
+ export const rootHexRegex = /^0x[a-fA-F0-9]{64}$/;
18
+
19
+ export type IJson = string | number | boolean | undefined | IJson[] | {[key: string]: IJson};
20
+
21
+ export interface RpcPayload<P = IJson[]> {
22
+ method: string;
23
+ params: P;
24
+ }
25
+
26
+ /**
27
+ * QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
28
+ *
29
+ * When encoding QUANTITIES (integers, numbers): encode as hex, prefix with “0x”, the most compact representation (slight exception: zero should be represented as “0x0”). Examples:
30
+ * - 0x41 (65 in decimal)
31
+ * - 0x400 (1024 in decimal)
32
+ * - WRONG: 0x (should always have at least one digit - zero is “0x0”)
33
+ * - WRONG: 0x0400 (no leading zeroes allowed)
34
+ * - WRONG: ff (must be prefixed 0x)
35
+ */
36
+ export function numToQuantity(num: number | bigint): QUANTITY {
37
+ return "0x" + num.toString(16);
38
+ }
39
+
40
+ /**
41
+ * QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
42
+ */
43
+ export function quantityToNum(hex: QUANTITY, id = ""): number {
44
+ const num = parseInt(hex, 16);
45
+ if (Number.isNaN(num) || num < 0) throw Error(`Invalid hex decimal ${id} '${hex}'`);
46
+ return num;
47
+ }
48
+
49
+ /**
50
+ * QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API.
51
+ * Typesafe fn to convert hex string to bigint. The BigInt constructor param is any
52
+ */
53
+ export function quantityToBigint(hex: QUANTITY, id = ""): bigint {
54
+ try {
55
+ return BigInt(hex);
56
+ } catch (e) {
57
+ throw Error(`Invalid hex bigint ${id} '${hex}': ${(e as Error).message}`);
58
+ }
59
+ }
60
+
61
+ /**
62
+ * QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API.
63
+ */
64
+ export function quantityToBytes(hex: QUANTITY): Uint8Array {
65
+ const bn = quantityToBigint(hex);
66
+ return bigIntToBytes(bn, 32, "le");
67
+ }
68
+
69
+ /**
70
+ * QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API.
71
+ * Compress a 32 ByteVector into a QUANTITY
72
+ */
73
+ export function bytesToQuantity(bytes: Uint8Array): QUANTITY {
74
+ const bn = bytesToBigInt(bytes, "le");
75
+ return numToQuantity(bn);
76
+ }
77
+
78
+ /**
79
+ * DATA as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
80
+ *
81
+ * When encoding UNFORMATTED DATA (byte arrays, account addresses, hashes, bytecode arrays): encode as hex, prefix with
82
+ * “0x”, two hex digits per byte. Examples:
83
+ *
84
+ * - 0x41 (size 1, “A”)
85
+ * - 0x004200 (size 3, “\0B\0”)
86
+ * - 0x (size 0, “”)
87
+ * - WRONG: 0xf0f0f (must be even number of digits)
88
+ * - WRONG: 004200 (must be prefixed 0x)
89
+ */
90
+ export function bytesToData(bytes: Uint8Array): DATA {
91
+ return toHex(bytes);
92
+ }
93
+
94
+ /**
95
+ * DATA as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
96
+ */
97
+ export function dataToBytes(hex: DATA, fixedLength: number | null): Uint8Array {
98
+ try {
99
+ const bytes = fromHex(hex);
100
+ if (fixedLength != null && bytes.length !== fixedLength) {
101
+ throw Error(`Wrong data length ${bytes.length} expected ${fixedLength}`);
102
+ }
103
+ return bytes;
104
+ } catch (e) {
105
+ (e as Error).message = `Invalid hex string: ${(e as Error).message}`;
106
+ throw e;
107
+ }
108
+ }
109
+
110
+ /**
111
+ * Convert DATA into a preallocated buffer
112
+ * fromHexInto will throw if buffer's length is not the same as the decoded hex length
113
+ */
114
+ export function dataIntoBytes(hex: DATA, buffer: Uint8Array): Uint8Array {
115
+ fromHexInto(hex, buffer);
116
+ return buffer;
117
+ }
12
118
 
13
119
  export type JsonRpcBackend = {
14
120
  // biome-ignore lint/suspicious/noExplicitAny: We need to use `any` type here
package/src/index.ts CHANGED
@@ -2,11 +2,10 @@
2
2
 
3
3
  export type {RestApiServerMetrics, RestApiServerModules, RestApiServerOpts} from "./api/rest/base.js";
4
4
  export {RestApiServer} from "./api/rest/base.js";
5
- export {checkAndPersistAnchorState, initStateFromDb, initStateFromEth1} from "./chain/index.js";
5
+ export {checkAndPersistAnchorState, initStateFromDb} from "./chain/index.js";
6
6
  export {DbCPStateDatastore} from "./chain/stateCache/datastore/db.js";
7
7
  export {FileCPStateDatastore} from "./chain/stateCache/datastore/file.js";
8
8
  export {BeaconDb, type IBeaconDb} from "./db/index.js";
9
- export {Eth1Provider, type IEth1Provider} from "./eth1/index.js";
10
9
  // Export metrics utilities to de-duplicate validator metrics
11
10
  export {
12
11
  type HttpMetricsServer,
@@ -1619,98 +1619,6 @@ export function createLodestarMetrics(
1619
1619
  }),
1620
1620
  },
1621
1621
 
1622
- eth1: {
1623
- depositTrackerIsCaughtup: register.gauge({
1624
- name: "lodestar_eth1_deposit_tracker_is_caughtup",
1625
- help: "Eth1 deposit is caught up 0=false 1=true",
1626
- }),
1627
- depositTrackerUpdateErrors: register.gauge({
1628
- name: "lodestar_eth1_deposit_tracker_update_errors_total",
1629
- help: "Eth1 deposit update loop errors total",
1630
- }),
1631
- remoteHighestBlock: register.gauge({
1632
- name: "lodestar_eth1_remote_highest_block",
1633
- help: "Eth1 current highest block number",
1634
- }),
1635
- depositEventsFetched: register.gauge({
1636
- name: "lodestar_eth1_deposit_events_fetched_total",
1637
- help: "Eth1 deposit events fetched total",
1638
- }),
1639
- lastProcessedDepositBlockNumber: register.gauge({
1640
- name: "lodestar_eth1_last_processed_deposit_block_number",
1641
- help: "Eth1 deposit tracker lastProcessedDepositBlockNumber",
1642
- }),
1643
- blocksFetched: register.gauge({
1644
- name: "lodestar_eth1_blocks_fetched_total",
1645
- help: "Eth1 blocks fetched total",
1646
- }),
1647
- lastFetchedBlockBlockNumber: register.gauge({
1648
- name: "lodestar_eth1_last_fetched_block_block_number",
1649
- help: "Eth1 deposit tracker last fetched block's block number",
1650
- }),
1651
- lastFetchedBlockTimestamp: register.gauge({
1652
- name: "lodestar_eth1_last_fetched_block_timestamp",
1653
- help: "Eth1 deposit tracker last fetched block's timestamp",
1654
- }),
1655
- eth1FollowDistanceSecondsConfig: register.gauge({
1656
- name: "lodestar_eth1_follow_distance_seconds_config",
1657
- help: "Constant with value = SECONDS_PER_ETH1_BLOCK * ETH1_FOLLOW_DISTANCE",
1658
- }),
1659
- eth1FollowDistanceDynamic: register.gauge({
1660
- name: "lodestar_eth1_follow_distance_dynamic",
1661
- help: "Eth1 dynamic follow distance changed by the deposit tracker if blocks are slow",
1662
- }),
1663
- eth1GetBlocksBatchSizeDynamic: register.gauge({
1664
- name: "lodestar_eth1_blocks_batch_size_dynamic",
1665
- help: "Dynamic batch size to fetch blocks",
1666
- }),
1667
- eth1GetLogsBatchSizeDynamic: register.gauge({
1668
- name: "lodestar_eth1_logs_batch_size_dynamic",
1669
- help: "Dynamic batch size to fetch deposit logs",
1670
- }),
1671
- },
1672
-
1673
- eth1HttpClient: {
1674
- requestTime: register.histogram<{routeId: string}>({
1675
- name: "lodestar_eth1_http_client_request_time_seconds",
1676
- help: "eth1 JsonHttpClient - histogram or roundtrip request times",
1677
- labelNames: ["routeId"],
1678
- // Provide max resolution on problematic values around 1 second
1679
- buckets: [0.1, 0.5, 1, 2, 5, 15],
1680
- }),
1681
- streamTime: register.histogram<{routeId: string}>({
1682
- name: "lodestar_eth1_http_client_stream_time_seconds",
1683
- help: "eth1 JsonHttpClient - streaming time by routeId",
1684
- labelNames: ["routeId"],
1685
- // Provide max resolution on problematic values around 1 second
1686
- buckets: [0.1, 0.5, 1, 2, 5, 15],
1687
- }),
1688
- requestErrors: register.gauge<{routeId: string}>({
1689
- name: "lodestar_eth1_http_client_request_errors_total",
1690
- help: "eth1 JsonHttpClient - total count of request errors",
1691
- labelNames: ["routeId"],
1692
- }),
1693
- retryCount: register.gauge<{routeId: string}>({
1694
- name: "lodestar_eth1_http_client_request_retries_total",
1695
- help: "eth1 JsonHttpClient - total count of request retries",
1696
- labelNames: ["routeId"],
1697
- }),
1698
- requestUsedFallbackUrl: register.gauge<{routeId: string}>({
1699
- name: "lodestar_eth1_http_client_request_used_fallback_url_total",
1700
- help: "eth1 JsonHttpClient - total count of requests on fallback url(s)",
1701
- labelNames: ["routeId"],
1702
- }),
1703
- activeRequests: register.gauge<{routeId: string}>({
1704
- name: "lodestar_eth1_http_client_active_requests",
1705
- help: "eth1 JsonHttpClient - current count of active requests",
1706
- labelNames: ["routeId"],
1707
- }),
1708
- configUrlsCount: register.gauge({
1709
- name: "lodestar_eth1_http_client_config_urls_count",
1710
- help: "eth1 JsonHttpClient - static config urls count",
1711
- }),
1712
- },
1713
-
1714
1622
  executionEnginerHttpClient: {
1715
1623
  requestTime: register.histogram<{routeId: string}>({
1716
1624
  name: "lodestar_execution_engine_http_client_request_time_seconds",
@@ -1,4 +1,4 @@
1
- import type {PeerId, PeerInfo, PrivateKey} from "@libp2p/interface";
1
+ import type {PeerId, PeerInfo, PendingDial, PrivateKey} from "@libp2p/interface";
2
2
  import {Multiaddr} from "@multiformats/multiaddr";
3
3
  import {ENR} from "@chainsafe/enr";
4
4
  import {BeaconConfig} from "@lodestar/config";
@@ -217,7 +217,7 @@ export class PeerDiscovery {
217
217
  const pendingDials = new Set(
218
218
  this.libp2p.services.components.connectionManager
219
219
  .getDialQueue()
220
- .map((pendingDial) => pendingDial.peerId?.toString())
220
+ .map((pendingDial: PendingDial) => pendingDial.peerId?.toString())
221
221
  );
222
222
  for (const [id, cachedENR] of this.cachedENRs.entries()) {
223
223
  if (
@@ -458,7 +458,7 @@ export class PeerDiscovery {
458
458
  if (
459
459
  this.libp2p.services.components.connectionManager
460
460
  .getDialQueue()
461
- .find((pendingDial) => pendingDial.peerId?.equals(peerId))
461
+ .find((pendingDial: PendingDial) => pendingDial.peerId?.equals(peerId))
462
462
  ) {
463
463
  return DiscoveredPeerStatus.already_dialing;
464
464
  }
@@ -2,10 +2,11 @@ import {setMaxListeners} from "node:events";
2
2
  import {PrivateKey} from "@libp2p/interface";
3
3
  import {Registry} from "prom-client";
4
4
  import {hasher} from "@chainsafe/persistent-merkle-tree";
5
+ import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
5
6
  import {BeaconApiMethods} from "@lodestar/api/beacon/server";
6
7
  import {BeaconConfig} from "@lodestar/config";
7
8
  import type {LoggerNode} from "@lodestar/logger/node";
8
- import {BeaconStateAllForks} from "@lodestar/state-transition";
9
+ import {CachedBeaconStateAllForks, Index2PubkeyCache} from "@lodestar/state-transition";
9
10
  import {phase0} from "@lodestar/types";
10
11
  import {sleep} from "@lodestar/utils";
11
12
  import {ProcessShutdownCallback} from "@lodestar/validator";
@@ -13,7 +14,6 @@ import {BeaconRestApiServer, getApi} from "../api/index.js";
13
14
  import {BeaconChain, IBeaconChain, initBeaconMetrics} from "../chain/index.js";
14
15
  import {ValidatorMonitor, createValidatorMonitor} from "../chain/validatorMonitor.js";
15
16
  import {IBeaconDb} from "../db/index.js";
16
- import {initializeEth1ForBlockProduction} from "../eth1/index.js";
17
17
  import {initializeExecutionBuilder, initializeExecutionEngine} from "../execution/index.js";
18
18
  import {HttpMetricsServer, Metrics, createMetrics, getHttpMetricsServer} from "../metrics/index.js";
19
19
  import {MonitoringService} from "../monitoring/index.js";
@@ -46,13 +46,15 @@ export type BeaconNodeModules = {
46
46
  export type BeaconNodeInitModules = {
47
47
  opts: IBeaconNodeOptions;
48
48
  config: BeaconConfig;
49
+ pubkey2index: PubkeyIndexMap;
50
+ index2pubkey: Index2PubkeyCache;
49
51
  db: IBeaconDb;
50
52
  logger: LoggerNode;
51
53
  processShutdownCallback: ProcessShutdownCallback;
52
54
  privateKey: PrivateKey;
53
55
  dataDir: string;
54
56
  peerStoreDir?: string;
55
- anchorState: BeaconStateAllForks;
57
+ anchorState: CachedBeaconStateAllForks;
56
58
  isAnchorStateFinalized: boolean;
57
59
  wsCheckpoint?: phase0.Checkpoint;
58
60
  metricsRegistries?: Registry[];
@@ -68,7 +70,6 @@ enum LoggerModule {
68
70
  api = "api",
69
71
  backfill = "backfill",
70
72
  chain = "chain",
71
- eth1 = "eth1",
72
73
  execution = "execution",
73
74
  metrics = "metrics",
74
75
  monitoring = "monitoring",
@@ -148,6 +149,8 @@ export class BeaconNode {
148
149
  static async init<T extends BeaconNode = BeaconNode>({
149
150
  opts,
150
151
  config,
152
+ pubkey2index,
153
+ index2pubkey,
151
154
  db,
152
155
  logger,
153
156
  processShutdownCallback,
@@ -199,6 +202,17 @@ export class BeaconNode {
199
202
  // TODO: Should this call be awaited?
200
203
  await db.pruneHotDb();
201
204
 
205
+ // Delete deprecated eth1 data to free up disk space for users
206
+ logger.debug("Deleting deprecated eth1 data from database");
207
+ const startTime = Date.now();
208
+ db.deleteDeprecatedEth1Data()
209
+ .then(() => {
210
+ logger.debug("Deleted deprecated eth1 data", {durationMs: Date.now() - startTime});
211
+ })
212
+ .catch((e) => {
213
+ logger.error("Failed to delete deprecated eth1 data", {}, e);
214
+ });
215
+
202
216
  const monitoring = opts.monitoring.endpoint
203
217
  ? new MonitoringService(
204
218
  "beacon",
@@ -211,6 +225,8 @@ export class BeaconNode {
211
225
  privateKey,
212
226
  config,
213
227
  clock,
228
+ pubkey2index,
229
+ index2pubkey,
214
230
  dataDir,
215
231
  db,
216
232
  dbName: opts.db.name,
@@ -220,13 +236,6 @@ export class BeaconNode {
220
236
  validatorMonitor,
221
237
  anchorState,
222
238
  isAnchorStateFinalized,
223
- eth1: initializeEth1ForBlockProduction(opts.eth1, {
224
- config,
225
- db,
226
- metrics,
227
- logger: logger.child({module: LoggerModule.eth1}),
228
- signal,
229
- }),
230
239
  executionEngine: initializeExecutionEngine(opts.executionEngine, {
231
240
  metrics,
232
241
  signal,
@@ -6,6 +6,7 @@ import {
6
6
  computeEpochAtSlot,
7
7
  computeStartSlotAtEpoch,
8
8
  isExecutionCachedStateType,
9
+ isMergeTransitionComplete,
9
10
  } from "@lodestar/state-transition";
10
11
  import {Epoch} from "@lodestar/types";
11
12
  import {ErrorAborted, Logger, prettyBytes, prettyBytesShort, sleep} from "@lodestar/utils";
@@ -171,13 +172,18 @@ function getHeadExecutionInfo(
171
172
 
172
173
  // Add execution status to notifier only if head is on/post bellatrix
173
174
  if (isExecutionCachedStateType(headState)) {
174
- const executionPayloadHashInfo =
175
- headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadBlockHash : "empty";
176
- const executionPayloadNumberInfo =
177
- headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadNumber : NaN;
178
- return [
179
- `exec-block: ${executionStatusStr}(${executionPayloadNumberInfo} ${prettyBytesShort(executionPayloadHashInfo)})`,
180
- ];
175
+ if (isMergeTransitionComplete(headState)) {
176
+ const executionPayloadHashInfo =
177
+ headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadBlockHash : "empty";
178
+ const executionPayloadNumberInfo =
179
+ headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadNumber : NaN;
180
+ return [
181
+ `exec-block: ${executionStatusStr}(${executionPayloadNumberInfo} ${prettyBytesShort(
182
+ executionPayloadHashInfo
183
+ )})`,
184
+ ];
185
+ }
186
+ return [`exec-block: ${executionStatusStr}`];
181
187
  }
182
188
 
183
189
  return [];
@@ -2,7 +2,6 @@ import {ApiOptions, defaultApiOptions} from "../api/options.js";
2
2
  import {ArchiveMode, DEFAULT_ARCHIVE_MODE, IChainOptions, defaultChainOptions} from "../chain/options.js";
3
3
  import {ValidatorMonitorOpts, defaultValidatorMonitorOpts} from "../chain/validatorMonitor.js";
4
4
  import {DatabaseOptions, defaultDbOptions} from "../db/options.js";
5
- import {Eth1Options, defaultEth1Options} from "../eth1/options.js";
6
5
  import {
7
6
  ExecutionBuilderOpts,
8
7
  ExecutionEngineOpts,
@@ -26,7 +25,6 @@ export interface IBeaconNodeOptions {
26
25
  api: ApiOptions;
27
26
  chain: IChainOptions;
28
27
  db: DatabaseOptions;
29
- eth1: Eth1Options;
30
28
  executionEngine: ExecutionEngineOpts;
31
29
  executionBuilder: ExecutionBuilderOpts;
32
30
  metrics: MetricsOptions;
@@ -40,7 +38,6 @@ export const defaultOptions: IBeaconNodeOptions = {
40
38
  api: defaultApiOptions,
41
39
  chain: defaultChainOptions,
42
40
  db: defaultDbOptions,
43
- eth1: defaultEth1Options,
44
41
  executionEngine: defaultExecutionEngineOpts,
45
42
  executionBuilder: defaultExecutionBuilderOpts,
46
43
  metrics: defaultMetricsOptions,
@@ -1,5 +1,6 @@
1
1
  import {digest} from "@chainsafe/as-sha256";
2
2
  import {Tree, toGindex} from "@chainsafe/persistent-merkle-tree";
3
+ import {ByteVectorType, CompositeViewDU, ListCompositeType} from "@chainsafe/ssz";
3
4
  import {ChainConfig} from "@lodestar/config";
4
5
  import {
5
6
  BLS_WITHDRAWAL_PREFIX,
@@ -9,7 +10,8 @@ import {
9
10
  } from "@lodestar/params";
10
11
  import {ZERO_HASH, computeDomain, computeSigningRoot, interopSecretKeys} from "@lodestar/state-transition";
11
12
  import {phase0, ssz} from "@lodestar/types";
12
- import {DepositTree} from "../../../db/repositories/depositDataRoot.js";
13
+
14
+ export type DepositTree = CompositeViewDU<ListCompositeType<ByteVectorType>>;
13
15
 
14
16
  /**
15
17
  * Compute and return deposit data from other validators.
@@ -6,7 +6,7 @@ import {
6
6
  initializeBeaconStateFromEth1,
7
7
  } from "@lodestar/state-transition";
8
8
  import {Bytes32, TimeSeconds, phase0, ssz, sszTypesFor} from "@lodestar/types";
9
- import {DepositTree} from "../../../db/repositories/depositDataRoot.js";
9
+ import {DepositTree} from "./deposits.js";
10
10
 
11
11
  export const INTEROP_BLOCK_HASH = Buffer.alloc(32, "B");
12
12
  export const INTEROP_TIMESTAMP = Math.pow(2, 40);
@@ -1,7 +1,6 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
2
  import {BeaconStateAllForks} from "@lodestar/state-transition";
3
- import {phase0, ssz} from "@lodestar/types";
4
- import {IBeaconDb} from "../../db/index.js";
3
+ import {ssz} from "@lodestar/types";
5
4
  import {interopDeposits} from "./interop/deposits.js";
6
5
  import {InteropStateOpts, getInteropState} from "./interop/state.js";
7
6
 
@@ -12,26 +11,12 @@ export function initDevState(
12
11
  config: ChainForkConfig,
13
12
  validatorCount: number,
14
13
  interopStateOpts: InteropStateOpts
15
- ): {deposits: phase0.Deposit[]; state: BeaconStateAllForks} {
14
+ ): BeaconStateAllForks {
16
15
  const deposits = interopDeposits(
17
16
  config,
18
17
  ssz.phase0.DepositDataRootList.defaultViewDU(),
19
18
  validatorCount,
20
19
  interopStateOpts
21
20
  );
22
- const state = getInteropState(config, interopStateOpts, deposits);
23
- return {deposits, state};
24
- }
25
-
26
- export async function writeDeposits(db: IBeaconDb, deposits: phase0.Deposit[]): Promise<void> {
27
- for (let i = 0; i < deposits.length; i++) {
28
- await Promise.all([
29
- db.depositEvent.put(i, {
30
- blockNumber: i,
31
- index: i,
32
- depositData: deposits[i].data,
33
- }),
34
- db.depositDataRoot.put(i, ssz.phase0.DepositData.hashTreeRoot(deposits[i].data)),
35
- ]);
36
- }
21
+ return getInteropState(config, interopStateOpts, deposits);
37
22
  }
@@ -750,9 +750,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
750
750
 
751
751
  // GENESIS_SLOT doesn't has valid signature
752
752
  if (anchorBlock.message.slot === GENESIS_SLOT) return;
753
- await verifyBlockProposerSignature(this.chain.index2pubkey, this.chain.bls, this.chain.getHeadState(), [
754
- anchorBlock,
755
- ]);
753
+ await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, [anchorBlock]);
756
754
 
757
755
  // We can write to the disk if this is ahead of prevFinalizedCheckpointBlock otherwise
758
756
  // we will need to go make checks on the top of sync loop before writing as it might
@@ -817,12 +815,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
817
815
 
818
816
  // If any of the block's proposer signature fail, we can't trust this peer at all
819
817
  if (verifiedBlocks.length > 0) {
820
- await verifyBlockProposerSignature(
821
- this.chain.index2pubkey,
822
- this.chain.bls,
823
- this.chain.getHeadState(),
824
- verifiedBlocks
825
- );
818
+ await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, verifiedBlocks);
826
819
 
827
820
  // This is bad, like super bad. Abort the backfill
828
821
  if (!nextAnchor)
@@ -1,11 +1,6 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {GENESIS_SLOT} from "@lodestar/params";
3
- import {
4
- CachedBeaconStateAllForks,
5
- ISignatureSet,
6
- Index2PubkeyCache,
7
- getBlockProposerSignatureSet,
8
- } from "@lodestar/state-transition";
3
+ import {ISignatureSet, Index2PubkeyCache, getBlockProposerSignatureSet} from "@lodestar/state-transition";
9
4
  import {Root, SignedBeaconBlock, Slot, ssz} from "@lodestar/types";
10
5
  import {IBlsVerifier} from "../../chain/bls/index.js";
11
6
  import {BackfillSyncError, BackfillSyncErrorCode} from "./errors.js";
@@ -46,15 +41,15 @@ export function verifyBlockSequence(
46
41
  }
47
42
 
48
43
  export async function verifyBlockProposerSignature(
44
+ config: BeaconConfig,
49
45
  index2pubkey: Index2PubkeyCache,
50
46
  bls: IBlsVerifier,
51
- state: CachedBeaconStateAllForks,
52
47
  blocks: SignedBeaconBlock[]
53
48
  ): Promise<void> {
54
49
  if (blocks.length === 1 && blocks[0].message.slot === GENESIS_SLOT) return;
55
50
  const signatures = blocks.reduce((sigs: ISignatureSet[], block) => {
56
51
  // genesis block doesn't have valid signature
57
- if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(index2pubkey, state, block));
52
+ if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(config, index2pubkey, block));
58
53
  return sigs;
59
54
  }, []);
60
55
 
@@ -1,51 +0,0 @@
1
- import { ChainForkConfig } from "@lodestar/config";
2
- import { BeaconStateAllForks, CachedBeaconStateAllForks } from "@lodestar/state-transition";
3
- import { Logger } from "@lodestar/utils";
4
- import { DepositTree } from "../../db/repositories/depositDataRoot.js";
5
- import { IEth1Provider } from "../../eth1/index.js";
6
- import { GenesisResult, IGenesisBuilder } from "./interface.js";
7
- export type GenesisBuilderKwargs = {
8
- config: ChainForkConfig;
9
- eth1Provider: IEth1Provider;
10
- logger: Logger;
11
- /** Use to restore pending progress */
12
- pendingStatus?: {
13
- state: BeaconStateAllForks;
14
- depositTree: DepositTree;
15
- lastProcessedBlockNumber: number;
16
- };
17
- signal?: AbortSignal;
18
- maxBlocksPerPoll?: number;
19
- };
20
- export declare class GenesisBuilder implements IGenesisBuilder {
21
- readonly state: CachedBeaconStateAllForks;
22
- readonly depositTree: DepositTree;
23
- /** Is null if no block has been processed yet */
24
- lastProcessedBlockNumber: number | null;
25
- private readonly config;
26
- private readonly eth1Provider;
27
- private readonly logger;
28
- private readonly signal?;
29
- private readonly eth1Params;
30
- private readonly depositCache;
31
- private readonly fromBlock;
32
- private readonly logEvery;
33
- private lastLog;
34
- /** Current count of active validators in the state */
35
- private activatedValidatorCount;
36
- constructor({ config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll }: GenesisBuilderKwargs);
37
- /**
38
- * Get eth1 deposit events and blocks and apply to this.state until we found genesis.
39
- */
40
- waitForGenesis(): Promise<GenesisResult>;
41
- /**
42
- * First phase of waiting for genesis.
43
- * Stream deposits events in batches as big as possible without querying block data
44
- * @returns Block number at which there are enough active validators is state for genesis
45
- */
46
- private waitForGenesisValidators;
47
- private applyDeposits;
48
- /** Throttle genesis generation status log to prevent spamming */
49
- private throttledLog;
50
- }
51
- //# sourceMappingURL=genesis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../../src/chain/genesis/genesis.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAS1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,mBAAmB,CAAC;QAC3B,WAAW,EAAE,WAAW,CAAC;QACzB,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IAEF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,cAAe,YAAW,eAAe;IAEpD,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,iDAAiD;IACjD,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,OAAO,CAAK;IACpB,sDAAsD;IACtD,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAC,EAAE,oBAAoB;IAmCzG;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAsC9C;;;;OAIG;YACW,wBAAwB;IAoBtC,OAAO,CAAC,aAAa;IAuBrB,iEAAiE;IACjE,OAAO,CAAC,YAAY;CAMrB"}