@lodestar/beacon-node 1.39.0-dev.b37f2bd1bd → 1.39.0-dev.c151a164f2

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 (338) hide show
  1. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  3. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  4. package/lib/chain/blocks/verifyBlock.js +1 -1
  5. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  6. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -1
  7. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  8. package/lib/chain/blocks/verifyBlocksSignatures.js +2 -2
  9. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  10. package/lib/chain/chain.d.ts +1 -4
  11. package/lib/chain/chain.d.ts.map +1 -1
  12. package/lib/chain/chain.js +8 -16
  13. package/lib/chain/chain.js.map +1 -1
  14. package/lib/chain/initState.d.ts +1 -14
  15. package/lib/chain/initState.d.ts.map +1 -1
  16. package/lib/chain/initState.js +1 -62
  17. package/lib/chain/initState.js.map +1 -1
  18. package/lib/chain/interface.d.ts +0 -2
  19. package/lib/chain/interface.d.ts.map +1 -1
  20. package/lib/chain/interface.js.map +1 -1
  21. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
  22. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  23. package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
  24. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  25. package/lib/chain/opPools/opPool.d.ts +3 -0
  26. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  27. package/lib/chain/opPools/opPool.js +9 -8
  28. package/lib/chain/opPools/opPool.js.map +1 -1
  29. package/lib/chain/prepareNextSlot.d.ts +0 -4
  30. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  31. package/lib/chain/prepareNextSlot.js +1 -21
  32. package/lib/chain/prepareNextSlot.js.map +1 -1
  33. package/lib/chain/produceBlock/produceBlockBody.d.ts +0 -1
  34. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  35. package/lib/chain/produceBlock/produceBlockBody.js +8 -11
  36. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  37. package/lib/chain/rewards/attestationsRewards.d.ts +2 -1
  38. package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -1
  39. package/lib/chain/rewards/attestationsRewards.js +8 -8
  40. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  41. package/lib/chain/rewards/blockRewards.d.ts +2 -1
  42. package/lib/chain/rewards/blockRewards.d.ts.map +1 -1
  43. package/lib/chain/rewards/blockRewards.js +5 -5
  44. package/lib/chain/rewards/blockRewards.js.map +1 -1
  45. package/lib/chain/rewards/syncCommitteeRewards.d.ts +2 -1
  46. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -1
  47. package/lib/chain/rewards/syncCommitteeRewards.js +2 -2
  48. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  49. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
  50. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  51. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
  52. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  53. package/lib/chain/validation/attesterSlashing.js +1 -1
  54. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  55. package/lib/chain/validation/block.js +1 -1
  56. package/lib/chain/validation/block.js.map +1 -1
  57. package/lib/chain/validation/blsToExecutionChange.js +1 -1
  58. package/lib/chain/validation/proposerSlashing.js +1 -1
  59. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  60. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  61. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  62. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -1
  63. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  64. package/lib/chain/validation/signatureSets/contributionAndProof.js +2 -2
  65. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  66. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -1
  67. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  68. package/lib/chain/validation/signatureSets/syncCommittee.js +2 -2
  69. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  70. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  71. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  72. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  73. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  74. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -1
  75. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  76. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -2
  77. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  78. package/lib/chain/validation/syncCommittee.js +1 -1
  79. package/lib/chain/validation/syncCommittee.js.map +1 -1
  80. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  81. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -3
  82. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  83. package/lib/chain/validation/voluntaryExit.js +1 -1
  84. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  85. package/lib/db/beacon.d.ts +3 -7
  86. package/lib/db/beacon.d.ts.map +1 -1
  87. package/lib/db/beacon.js +33 -12
  88. package/lib/db/beacon.js.map +1 -1
  89. package/lib/db/buckets.d.ts +12 -6
  90. package/lib/db/buckets.d.ts.map +1 -1
  91. package/lib/db/buckets.js +6 -1
  92. package/lib/db/buckets.js.map +1 -1
  93. package/lib/db/interface.d.ts +2 -7
  94. package/lib/db/interface.d.ts.map +1 -1
  95. package/lib/db/repositories/index.d.ts +0 -3
  96. package/lib/db/repositories/index.d.ts.map +1 -1
  97. package/lib/db/repositories/index.js +0 -3
  98. package/lib/db/repositories/index.js.map +1 -1
  99. package/lib/execution/engine/http.d.ts +1 -1
  100. package/lib/execution/engine/http.d.ts.map +1 -1
  101. package/lib/execution/engine/http.js +2 -3
  102. package/lib/execution/engine/http.js.map +1 -1
  103. package/lib/execution/engine/index.d.ts.map +1 -1
  104. package/lib/execution/engine/index.js +1 -1
  105. package/lib/execution/engine/index.js.map +1 -1
  106. package/lib/execution/engine/interface.d.ts +1 -1
  107. package/lib/execution/engine/interface.d.ts.map +1 -1
  108. package/lib/execution/engine/interface.js.map +1 -1
  109. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  110. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  111. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  112. package/lib/execution/engine/jwt.d.ts.map +1 -0
  113. package/lib/execution/engine/jwt.js.map +1 -0
  114. package/lib/execution/engine/mock.d.ts.map +1 -1
  115. package/lib/execution/engine/mock.js +1 -1
  116. package/lib/execution/engine/mock.js.map +1 -1
  117. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  118. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  119. package/lib/execution/engine/types.d.ts +1 -1
  120. package/lib/execution/engine/types.d.ts.map +1 -1
  121. package/lib/execution/engine/types.js +1 -1
  122. package/lib/execution/engine/types.js.map +1 -1
  123. package/lib/execution/engine/utils.d.ts +64 -2
  124. package/lib/execution/engine/utils.d.ts.map +1 -1
  125. package/lib/execution/engine/utils.js +91 -2
  126. package/lib/execution/engine/utils.js.map +1 -1
  127. package/lib/index.d.ts +1 -2
  128. package/lib/index.d.ts.map +1 -1
  129. package/lib/index.js +1 -2
  130. package/lib/index.js.map +1 -1
  131. package/lib/metrics/metrics/lodestar.d.ts +0 -35
  132. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  133. package/lib/metrics/metrics/lodestar.js +0 -90
  134. package/lib/metrics/metrics/lodestar.js.map +1 -1
  135. package/lib/node/nodejs.d.ts.map +1 -1
  136. package/lib/node/nodejs.js +10 -9
  137. package/lib/node/nodejs.js.map +1 -1
  138. package/lib/node/options.d.ts +0 -2
  139. package/lib/node/options.d.ts.map +1 -1
  140. package/lib/node/options.js +0 -2
  141. package/lib/node/options.js.map +1 -1
  142. package/lib/node/utils/interop/deposits.d.ts +2 -1
  143. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  144. package/lib/node/utils/interop/deposits.js.map +1 -1
  145. package/lib/node/utils/interop/state.d.ts +1 -1
  146. package/lib/node/utils/interop/state.d.ts.map +1 -1
  147. package/lib/node/utils/state.d.ts +1 -7
  148. package/lib/node/utils/state.d.ts.map +1 -1
  149. package/lib/node/utils/state.js +1 -14
  150. package/lib/node/utils/state.js.map +1 -1
  151. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  152. package/lib/sync/backfill/backfill.js +2 -4
  153. package/lib/sync/backfill/backfill.js.map +1 -1
  154. package/lib/sync/backfill/verify.d.ts +1 -1
  155. package/lib/sync/backfill/verify.d.ts.map +1 -1
  156. package/lib/sync/backfill/verify.js +2 -2
  157. package/lib/sync/backfill/verify.js.map +1 -1
  158. package/package.json +14 -20
  159. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  160. package/src/chain/blocks/verifyBlock.ts +1 -0
  161. package/src/chain/blocks/verifyBlocksSignatures.ts +3 -1
  162. package/src/chain/chain.ts +7 -19
  163. package/src/chain/initState.ts +1 -97
  164. package/src/chain/interface.ts +0 -2
  165. package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
  166. package/src/chain/opPools/opPool.ts +8 -8
  167. package/src/chain/prepareNextSlot.ts +1 -28
  168. package/src/chain/produceBlock/produceBlockBody.ts +8 -12
  169. package/src/chain/rewards/attestationsRewards.ts +13 -4
  170. package/src/chain/rewards/blockRewards.ts +6 -3
  171. package/src/chain/rewards/syncCommitteeRewards.ts +3 -1
  172. package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
  173. package/src/chain/validation/attesterSlashing.ts +1 -1
  174. package/src/chain/validation/block.ts +1 -1
  175. package/src/chain/validation/blsToExecutionChange.ts +1 -1
  176. package/src/chain/validation/proposerSlashing.ts +1 -1
  177. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  178. package/src/chain/validation/signatureSets/contributionAndProof.ts +3 -1
  179. package/src/chain/validation/signatureSets/syncCommittee.ts +3 -1
  180. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  181. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -1
  182. package/src/chain/validation/syncCommittee.ts +1 -1
  183. package/src/chain/validation/syncCommitteeContributionAndProof.ts +8 -3
  184. package/src/chain/validation/voluntaryExit.ts +1 -1
  185. package/src/db/beacon.ts +38 -16
  186. package/src/db/buckets.ts +12 -7
  187. package/src/db/interface.ts +2 -13
  188. package/src/db/repositories/index.ts +0 -3
  189. package/src/execution/engine/http.ts +8 -9
  190. package/src/execution/engine/index.ts +1 -1
  191. package/src/execution/engine/interface.ts +1 -1
  192. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  193. package/src/execution/engine/mock.ts +1 -2
  194. package/src/execution/engine/payloadIdCache.ts +1 -1
  195. package/src/execution/engine/types.ts +9 -9
  196. package/src/execution/engine/utils.ts +111 -5
  197. package/src/index.ts +1 -2
  198. package/src/metrics/metrics/lodestar.ts +0 -92
  199. package/src/node/nodejs.ts +11 -9
  200. package/src/node/options.ts +0 -3
  201. package/src/node/utils/interop/deposits.ts +3 -1
  202. package/src/node/utils/interop/state.ts +1 -1
  203. package/src/node/utils/state.ts +3 -18
  204. package/src/sync/backfill/backfill.ts +8 -3
  205. package/src/sync/backfill/verify.ts +3 -1
  206. package/lib/chain/genesis/genesis.d.ts +0 -51
  207. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  208. package/lib/chain/genesis/genesis.js +0 -123
  209. package/lib/chain/genesis/genesis.js.map +0 -1
  210. package/lib/chain/genesis/interface.d.ts +0 -13
  211. package/lib/chain/genesis/interface.d.ts.map +0 -1
  212. package/lib/chain/genesis/interface.js +0 -2
  213. package/lib/chain/genesis/interface.js.map +0 -1
  214. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  215. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  216. package/lib/db/repositories/depositDataRoot.js +0 -62
  217. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  218. package/lib/db/repositories/depositEvent.d.ts +0 -13
  219. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  220. package/lib/db/repositories/depositEvent.js +0 -27
  221. package/lib/db/repositories/depositEvent.js.map +0 -1
  222. package/lib/db/repositories/eth1Data.d.ts +0 -13
  223. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  224. package/lib/db/repositories/eth1Data.js +0 -26
  225. package/lib/db/repositories/eth1Data.js.map +0 -1
  226. package/lib/db/single/index.d.ts +0 -3
  227. package/lib/db/single/index.d.ts.map +0 -1
  228. package/lib/db/single/index.js +0 -3
  229. package/lib/db/single/index.js.map +0 -1
  230. package/lib/db/single/preGenesisState.d.ts +0 -16
  231. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  232. package/lib/db/single/preGenesisState.js +0 -29
  233. package/lib/db/single/preGenesisState.js.map +0 -1
  234. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  235. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  236. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  237. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  238. package/lib/eth1/errors.d.ts +0 -66
  239. package/lib/eth1/errors.d.ts.map +0 -1
  240. package/lib/eth1/errors.js +0 -27
  241. package/lib/eth1/errors.js.map +0 -1
  242. package/lib/eth1/eth1DataCache.d.ts +0 -19
  243. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  244. package/lib/eth1/eth1DataCache.js +0 -19
  245. package/lib/eth1/eth1DataCache.js.map +0 -1
  246. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  247. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  248. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  249. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  250. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  251. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  252. package/lib/eth1/eth1DepositsCache.js +0 -119
  253. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  254. package/lib/eth1/index.d.ts +0 -31
  255. package/lib/eth1/index.d.ts.map +0 -1
  256. package/lib/eth1/index.js +0 -71
  257. package/lib/eth1/index.js.map +0 -1
  258. package/lib/eth1/interface.d.ts +0 -74
  259. package/lib/eth1/interface.d.ts.map +0 -1
  260. package/lib/eth1/interface.js +0 -8
  261. package/lib/eth1/interface.js.map +0 -1
  262. package/lib/eth1/options.d.ts +0 -22
  263. package/lib/eth1/options.d.ts.map +0 -1
  264. package/lib/eth1/options.js +0 -8
  265. package/lib/eth1/options.js.map +0 -1
  266. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  267. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  268. package/lib/eth1/provider/eth1Provider.js +0 -147
  269. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  270. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  271. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  272. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  273. package/lib/eth1/provider/jwt.js.map +0 -1
  274. package/lib/eth1/provider/utils.d.ts +0 -65
  275. package/lib/eth1/provider/utils.d.ts.map +0 -1
  276. package/lib/eth1/provider/utils.js +0 -120
  277. package/lib/eth1/provider/utils.js.map +0 -1
  278. package/lib/eth1/stream.d.ts +0 -15
  279. package/lib/eth1/stream.d.ts.map +0 -1
  280. package/lib/eth1/stream.js +0 -54
  281. package/lib/eth1/stream.js.map +0 -1
  282. package/lib/eth1/utils/depositContract.d.ts +0 -14
  283. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  284. package/lib/eth1/utils/depositContract.js +0 -33
  285. package/lib/eth1/utils/depositContract.js.map +0 -1
  286. package/lib/eth1/utils/deposits.d.ts +0 -8
  287. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  288. package/lib/eth1/utils/deposits.js +0 -47
  289. package/lib/eth1/utils/deposits.js.map +0 -1
  290. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  291. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  292. package/lib/eth1/utils/eth1Data.js +0 -77
  293. package/lib/eth1/utils/eth1Data.js.map +0 -1
  294. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  295. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  296. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  297. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  298. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  299. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  300. package/lib/eth1/utils/eth1Vote.js +0 -111
  301. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  302. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  303. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  304. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  305. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  306. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  307. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  308. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  309. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  310. package/src/chain/genesis/genesis.ts +0 -190
  311. package/src/chain/genesis/interface.ts +0 -14
  312. package/src/db/repositories/depositDataRoot.ts +0 -80
  313. package/src/db/repositories/depositEvent.ts +0 -32
  314. package/src/db/repositories/eth1Data.ts +0 -33
  315. package/src/db/single/index.ts +0 -2
  316. package/src/db/single/preGenesisState.ts +0 -37
  317. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  318. package/src/eth1/errors.ts +0 -40
  319. package/src/eth1/eth1DataCache.ts +0 -26
  320. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  321. package/src/eth1/eth1DepositsCache.ts +0 -141
  322. package/src/eth1/index.ts +0 -94
  323. package/src/eth1/interface.ts +0 -87
  324. package/src/eth1/options.ts +0 -28
  325. package/src/eth1/provider/eth1Provider.ts +0 -229
  326. package/src/eth1/provider/utils.ts +0 -136
  327. package/src/eth1/stream.ts +0 -75
  328. package/src/eth1/utils/depositContract.ts +0 -37
  329. package/src/eth1/utils/deposits.ts +0 -70
  330. package/src/eth1/utils/eth1Data.ts +0 -100
  331. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  332. package/src/eth1/utils/eth1Vote.ts +0 -142
  333. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  334. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  335. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  336. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  337. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  338. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
@@ -89,7 +89,7 @@ async function validateSyncCommitteeSigOnly(
89
89
  syncCommittee: altair.SyncCommitteeMessage,
90
90
  prioritizeBls = false
91
91
  ): Promise<void> {
92
- const signatureSet = getSyncCommitteeSignatureSet(chain.index2pubkey, headState, syncCommittee);
92
+ const signatureSet = getSyncCommitteeSignatureSet(chain.config, chain.index2pubkey, headState, syncCommittee);
93
93
  if (!(await chain.bls.verifySignatureSets([signatureSet], {batchable: true, priority: prioritizeBls}))) {
94
94
  throw new SyncCommitteeError(GossipAction.REJECT, {
95
95
  code: SyncCommitteeErrorCode.INVALID_SIGNATURE,
@@ -78,14 +78,19 @@ export async function validateSyncCommitteeGossipContributionAndProof(
78
78
  const signatureSets = [
79
79
  // [REJECT] The contribution_and_proof.selection_proof is a valid signature of the SyncAggregatorSelectionData
80
80
  // derived from the contribution by the validator with index contribution_and_proof.aggregator_index.
81
- getSyncCommitteeSelectionProofSignatureSet(index2pubkey, headState, contributionAndProof),
81
+ getSyncCommitteeSelectionProofSignatureSet(chain.config, index2pubkey, headState, contributionAndProof),
82
82
 
83
83
  // [REJECT] The aggregator signature, signed_contribution_and_proof.signature, is valid.
84
- getContributionAndProofSignatureSet(index2pubkey, headState, signedContributionAndProof),
84
+ getContributionAndProofSignatureSet(chain.config, index2pubkey, headState, signedContributionAndProof),
85
85
 
86
86
  // [REJECT] The aggregate signature is valid for the message beacon_block_root and aggregate pubkey derived from
87
87
  // the participation info in aggregation_bits for the subcommittee specified by the contribution.subcommittee_index.
88
- getSyncCommitteeContributionSignatureSet(headState as CachedBeaconStateAltair, contribution, participantPubkeys),
88
+ getSyncCommitteeContributionSignatureSet(
89
+ chain.config,
90
+ headState as CachedBeaconStateAltair,
91
+ contribution,
92
+ participantPubkeys
93
+ ),
89
94
  ];
90
95
 
91
96
  if (!(await chain.bls.verifySignatureSets(signatureSets, {batchable: true}))) {
@@ -59,7 +59,7 @@ async function validateVoluntaryExit(
59
59
  });
60
60
  }
61
61
 
62
- const signatureSet = getVoluntaryExitSignatureSet(chain.index2pubkey, state, voluntaryExit);
62
+ const signatureSet = getVoluntaryExitSignatureSet(chain.config, chain.index2pubkey, state, voluntaryExit);
63
63
  if (!(await chain.bls.verifySignatureSets([signatureSet], {batchable: true, priority: prioritizeBls}))) {
64
64
  throw new VoluntaryExitError(GossipAction.REJECT, {
65
65
  code: VoluntaryExitErrorCode.INVALID_SIGNATURE,
package/src/db/beacon.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
- import {Db, LevelDbControllerMetrics} from "@lodestar/db";
2
+ import {Db, LevelDbControllerMetrics, encodeKey} from "@lodestar/db";
3
+ import {Bucket} from "./buckets.js";
3
4
  import {IBeaconDb} from "./interface.js";
4
5
  import {CheckpointStateRepository} from "./repositories/checkpointState.js";
5
6
  import {
@@ -14,16 +15,12 @@ import {
14
15
  CheckpointHeaderRepository,
15
16
  DataColumnSidecarArchiveRepository,
16
17
  DataColumnSidecarRepository,
17
- DepositDataRootRepository,
18
- DepositEventRepository,
19
- Eth1DataRepository,
20
18
  ProposerSlashingRepository,
21
19
  StateArchiveRepository,
22
20
  SyncCommitteeRepository,
23
21
  SyncCommitteeWitnessRepository,
24
22
  VoluntaryExitRepository,
25
23
  } from "./repositories/index.js";
26
- import {PreGenesisState, PreGenesisStateLastProcessedBlock} from "./single/index.js";
27
24
 
28
25
  export type BeaconDbModules = {
29
26
  config: ChainForkConfig;
@@ -45,14 +42,8 @@ export class BeaconDb implements IBeaconDb {
45
42
  voluntaryExit: VoluntaryExitRepository;
46
43
  proposerSlashing: ProposerSlashingRepository;
47
44
  attesterSlashing: AttesterSlashingRepository;
48
- depositEvent: DepositEventRepository;
49
45
  blsToExecutionChange: BLSToExecutionChangeRepository;
50
46
 
51
- depositDataRoot: DepositDataRootRepository;
52
- eth1Data: Eth1DataRepository;
53
- preGenesisState: PreGenesisState;
54
- preGenesisStateLastProcessedBlock: PreGenesisStateLastProcessedBlock;
55
-
56
47
  // lightclient
57
48
  bestLightClientUpdate: BestLightClientUpdateRepository;
58
49
  checkpointHeader: CheckpointHeaderRepository;
@@ -80,11 +71,6 @@ export class BeaconDb implements IBeaconDb {
80
71
  this.blsToExecutionChange = new BLSToExecutionChangeRepository(config, db);
81
72
  this.proposerSlashing = new ProposerSlashingRepository(config, db);
82
73
  this.attesterSlashing = new AttesterSlashingRepository(config, db);
83
- this.depositEvent = new DepositEventRepository(config, db);
84
- this.depositDataRoot = new DepositDataRootRepository(config, db);
85
- this.eth1Data = new Eth1DataRepository(config, db);
86
- this.preGenesisState = new PreGenesisState(config, db);
87
- this.preGenesisStateLastProcessedBlock = new PreGenesisStateLastProcessedBlock(config, db);
88
74
 
89
75
  // lightclient
90
76
  this.bestLightClientUpdate = new BestLightClientUpdateRepository(config, db);
@@ -110,4 +96,40 @@ export class BeaconDb implements IBeaconDb {
110
96
  // TODO: Enable once it's deemed safe
111
97
  // await this.block.batchDelete(await this.block.keys());
112
98
  }
99
+
100
+ async deleteDeprecatedEth1Data(): Promise<void> {
101
+ const deprecatedBuckets = [
102
+ Bucket.phase0_eth1Data,
103
+ Bucket.index_depositDataRoot,
104
+ Bucket.phase0_depositData,
105
+ Bucket.phase0_depositEvent,
106
+ Bucket.phase0_preGenesisState,
107
+ Bucket.phase0_preGenesisStateLastProcessedBlock,
108
+ ];
109
+
110
+ for (const bucket of deprecatedBuckets) {
111
+ await this.deleteBucketData(bucket);
112
+ }
113
+ }
114
+
115
+ private async deleteBucketData(bucket: Bucket): Promise<void> {
116
+ const minKey = encodeKey(bucket, Buffer.alloc(0));
117
+ const maxKey = encodeKey(bucket + 1, Buffer.alloc(0));
118
+
119
+ // Batch delete to avoid loading all keys into memory at once
120
+ const BATCH_DELETE_SIZE = 1000;
121
+ let keysBatch: Uint8Array[] = [];
122
+
123
+ for await (const key of this.db.keysStream({gte: minKey, lt: maxKey})) {
124
+ keysBatch.push(key);
125
+ if (keysBatch.length >= BATCH_DELETE_SIZE) {
126
+ await this.db.batchDelete(keysBatch);
127
+ keysBatch = [];
128
+ }
129
+ }
130
+
131
+ if (keysBatch.length > 0) {
132
+ await this.db.batchDelete(keysBatch);
133
+ }
134
+ }
113
135
  }
package/src/db/buckets.ts CHANGED
@@ -16,14 +16,16 @@ export enum Bucket {
16
16
  index_mainChain = 6, // Slot -> Root<BeaconBlock>
17
17
  // justified, finalized state and block hashes
18
18
  index_chainInfo = 7, // Key -> Number64 | stateHash | blockHash
19
- // eth1 processing
20
- phase0_eth1Data = 8, // timestamp -> Eth1Data
21
- index_depositDataRoot = 9, // depositIndex -> Root<DepositData>
19
+ /** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
20
+ phase0_eth1Data = 8,
21
+ /** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
22
+ index_depositDataRoot = 9,
22
23
 
23
24
  // op pool
24
25
  // phase0_attestation = 10, // DEPRECATED on v0.25.0
25
26
  // phase0_aggregateAndProof = 11, // Root -> AggregateAndProof, DEPRECATED on v.27.0
26
- phase0_depositData = 12, // [DEPRECATED] index -> DepositData
27
+ /** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
28
+ phase0_depositData = 12,
27
29
  phase0_exit = 13, // ValidatorIndex -> VoluntaryExit
28
30
  phase0_proposerSlashing = 14, // ValidatorIndex -> ProposerSlashing
29
31
  allForks_attesterSlashing = 15, // Root -> AttesterSlashing
@@ -32,15 +34,18 @@ export enum Bucket {
32
34
  allForks_checkpointState = 17, // Root -> BeaconState
33
35
 
34
36
  // allForks_pendingBlock = 25, // Root -> SignedBeaconBlock // DEPRECATED on v0.30.0
35
- phase0_depositEvent = 19, // depositIndex -> DepositEvent
37
+ /** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
38
+ phase0_depositEvent = 19,
36
39
 
37
40
  index_stateArchiveRootIndex = 26, // State Root -> slot
38
41
 
39
42
  deneb_blobSidecars = 27, // DENEB BeaconBlockRoot -> BlobSidecars
40
43
  deneb_blobSidecarsArchive = 28, // DENEB BeaconBlockSlot -> BlobSidecars
41
44
 
42
- phase0_preGenesisState = 30, // Single = phase0.BeaconState
43
- phase0_preGenesisStateLastProcessedBlock = 31, // Single = Uint8
45
+ /** @deprecated Genesis from eth1 is no longer supported, only kept around to delete data from existing databases */
46
+ phase0_preGenesisState = 30,
47
+ /** @deprecated Genesis from eth1 is no longer supported, only kept around to delete data from existing databases */
48
+ phase0_preGenesisStateLastProcessedBlock = 31,
44
49
 
45
50
  // Lightclient server
46
51
  // altair_bestUpdatePerCommitteePeriod = 30, // DEPRECATED on v0.32.0
@@ -12,16 +12,12 @@ import {
12
12
  CheckpointHeaderRepository,
13
13
  DataColumnSidecarArchiveRepository,
14
14
  DataColumnSidecarRepository,
15
- DepositDataRootRepository,
16
- DepositEventRepository,
17
- Eth1DataRepository,
18
15
  ProposerSlashingRepository,
19
16
  StateArchiveRepository,
20
17
  SyncCommitteeRepository,
21
18
  SyncCommitteeWitnessRepository,
22
19
  VoluntaryExitRepository,
23
20
  } from "./repositories/index.js";
24
- import {PreGenesisState, PreGenesisStateLastProcessedBlock} from "./single/index.js";
25
21
 
26
22
  /**
27
23
  * The DB service manages the data layer of the beacon chain
@@ -48,17 +44,8 @@ export interface IBeaconDb {
48
44
  voluntaryExit: VoluntaryExitRepository;
49
45
  proposerSlashing: ProposerSlashingRepository;
50
46
  attesterSlashing: AttesterSlashingRepository;
51
- depositEvent: DepositEventRepository;
52
47
  blsToExecutionChange: BLSToExecutionChangeRepository;
53
48
 
54
- // eth1 processing
55
- preGenesisState: PreGenesisState;
56
- preGenesisStateLastProcessedBlock: PreGenesisStateLastProcessedBlock;
57
-
58
- // all deposit data roots and merkle tree
59
- depositDataRoot: DepositDataRootRepository;
60
- eth1Data: Eth1DataRepository;
61
-
62
49
  // lightclient
63
50
  bestLightClientUpdate: BestLightClientUpdateRepository;
64
51
  checkpointHeader: CheckpointHeaderRepository;
@@ -69,6 +56,8 @@ export interface IBeaconDb {
69
56
 
70
57
  pruneHotDb(): Promise<void>;
71
58
 
59
+ deleteDeprecatedEth1Data(): Promise<void>;
60
+
72
61
  /** Close the connection to the db instance and close the db store. */
73
62
  close(): Promise<void>;
74
63
  /** To inject metrics after CLI initialization */
@@ -8,9 +8,6 @@ export {BlockArchiveRepository} from "./blockArchive.js";
8
8
  export {BLSToExecutionChangeRepository} from "./blsToExecutionChange.js";
9
9
  export {DataColumnSidecarRepository} from "./dataColumnSidecar.js";
10
10
  export {DataColumnSidecarArchiveRepository} from "./dataColumnSidecarArchive.js";
11
- export {DepositDataRootRepository} from "./depositDataRoot.js";
12
- export {DepositEventRepository} from "./depositEvent.js";
13
- export {Eth1DataRepository} from "./eth1Data.js";
14
11
  export {BestLightClientUpdateRepository} from "./lightclientBestUpdate.js";
15
12
  export {CheckpointHeaderRepository} from "./lightclientCheckpointHeader.js";
16
13
  export {SyncCommitteeRepository} from "./lightclientSyncCommittee.js";
@@ -4,14 +4,6 @@ import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei} fr
4
4
  import {BlobAndProof} from "@lodestar/types/deneb";
5
5
  import {BlobAndProofV2} from "@lodestar/types/fulu";
6
6
  import {strip0xPrefix} from "@lodestar/utils";
7
- import {
8
- ErrorJsonRpcResponse,
9
- HttpRpcError,
10
- IJsonRpcHttpClient,
11
- JsonRpcHttpClientEvent,
12
- ReqOpts,
13
- } from "../../eth1/provider/jsonRpcHttpClient.js";
14
- import {bytesToData, numToQuantity} from "../../eth1/provider/utils.js";
15
7
  import {Metrics} from "../../metrics/index.js";
16
8
  import {EPOCHS_PER_BATCH} from "../../sync/constants.js";
17
9
  import {getLodestarClientVersion} from "../../util/metadata.js";
@@ -27,6 +19,13 @@ import {
27
19
  PayloadId,
28
20
  VersionedHashes,
29
21
  } from "./interface.js";
22
+ import {
23
+ ErrorJsonRpcResponse,
24
+ HttpRpcError,
25
+ IJsonRpcHttpClient,
26
+ JsonRpcHttpClientEvent,
27
+ ReqOpts,
28
+ } from "./jsonRpcHttpClient.js";
30
29
  import {PayloadIdCache} from "./payloadIdCache.js";
31
30
  import {
32
31
  BLOB_AND_PROOF_V2_RPC_BYTES,
@@ -45,7 +44,7 @@ import {
45
44
  serializePayloadAttributes,
46
45
  serializeVersionedHashes,
47
46
  } from "./types.js";
48
- import {getExecutionEngineState} from "./utils.js";
47
+ import {bytesToData, getExecutionEngineState, numToQuantity} from "./utils.js";
49
48
 
50
49
  export type ExecutionEngineModules = {
51
50
  signal: AbortSignal;
@@ -1,5 +1,4 @@
1
1
  import {fromHex, toPrintableUrl} from "@lodestar/utils";
2
- import {JsonRpcHttpClient} from "../../eth1/provider/jsonRpcHttpClient.js";
3
2
  import {ExecutionEngineDisabled} from "./disabled.js";
4
3
  import {
5
4
  ExecutionEngineHttp,
@@ -8,6 +7,7 @@ import {
8
7
  defaultExecutionEngineHttpOpts,
9
8
  } from "./http.js";
10
9
  import {IExecutionEngine} from "./interface.js";
10
+ import {JsonRpcHttpClient} from "./jsonRpcHttpClient.js";
11
11
  import {ExecutionEngineMockBackend, ExecutionEngineMockOpts} from "./mock.js";
12
12
  import {ExecutionEngineMockJsonRpcClient, JsonRpcBackend} from "./utils.js";
13
13
 
@@ -9,9 +9,9 @@ import {
9
9
  import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, capella} from "@lodestar/types";
10
10
  import {BlobAndProof} from "@lodestar/types/deneb";
11
11
  import {BlobAndProofV2} from "@lodestar/types/fulu";
12
- import {DATA} from "../../eth1/provider/utils.js";
13
12
  import {PayloadId, PayloadIdCache, WithdrawalV1} from "./payloadIdCache.js";
14
13
  import {ExecutionPayloadBody} from "./types.js";
14
+ import {DATA} from "./utils.js";
15
15
 
16
16
  export {PayloadIdCache, type PayloadId, type WithdrawalV1};
17
17
 
@@ -1,8 +1,8 @@
1
1
  import {EventEmitter} from "node:events";
2
2
  import {StrictEventEmitter} from "strict-event-emitter-types";
3
3
  import {ErrorAborted, Gauge, Histogram, TimeoutError, fetch, isValidHttpUrl, retry} from "@lodestar/utils";
4
- import {IJson, RpcPayload} from "../interface.js";
5
4
  import {JwtClaim, encodeJwtToken} from "./jwt.js";
5
+ import {IJson, RpcPayload} from "./utils.js";
6
6
 
7
7
  export enum JsonRpcHttpClientEvent {
8
8
  /**
@@ -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",
@@ -13,7 +13,6 @@ import {BeaconRestApiServer, getApi} from "../api/index.js";
13
13
  import {BeaconChain, IBeaconChain, initBeaconMetrics} from "../chain/index.js";
14
14
  import {ValidatorMonitor, createValidatorMonitor} from "../chain/validatorMonitor.js";
15
15
  import {IBeaconDb} from "../db/index.js";
16
- import {initializeEth1ForBlockProduction} from "../eth1/index.js";
17
16
  import {initializeExecutionBuilder, initializeExecutionEngine} from "../execution/index.js";
18
17
  import {HttpMetricsServer, Metrics, createMetrics, getHttpMetricsServer} from "../metrics/index.js";
19
18
  import {MonitoringService} from "../monitoring/index.js";
@@ -68,7 +67,6 @@ enum LoggerModule {
68
67
  api = "api",
69
68
  backfill = "backfill",
70
69
  chain = "chain",
71
- eth1 = "eth1",
72
70
  execution = "execution",
73
71
  metrics = "metrics",
74
72
  monitoring = "monitoring",
@@ -199,6 +197,17 @@ export class BeaconNode {
199
197
  // TODO: Should this call be awaited?
200
198
  await db.pruneHotDb();
201
199
 
200
+ // Delete deprecated eth1 data to free up disk space for users
201
+ logger.debug("Deleting deprecated eth1 data from database");
202
+ const startTime = Date.now();
203
+ db.deleteDeprecatedEth1Data()
204
+ .then(() => {
205
+ logger.debug("Deleted deprecated eth1 data", {durationMs: Date.now() - startTime});
206
+ })
207
+ .catch((e) => {
208
+ logger.error("Failed to delete deprecated eth1 data", {}, e);
209
+ });
210
+
202
211
  const monitoring = opts.monitoring.endpoint
203
212
  ? new MonitoringService(
204
213
  "beacon",
@@ -220,13 +229,6 @@ export class BeaconNode {
220
229
  validatorMonitor,
221
230
  anchorState,
222
231
  isAnchorStateFinalized,
223
- eth1: initializeEth1ForBlockProduction(opts.eth1, {
224
- config,
225
- db,
226
- metrics,
227
- logger: logger.child({module: LoggerModule.eth1}),
228
- signal,
229
- }),
230
232
  executionEngine: initializeExecutionEngine(opts.executionEngine, {
231
233
  metrics,
232
234
  signal,