@lodestar/beacon-node 1.38.0 → 1.39.0-dev.39dac0f03d

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 (388) hide show
  1. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  3. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/state/index.js +4 -5
  5. package/lib/api/impl/beacon/state/index.js.map +1 -1
  6. package/lib/api/impl/validator/index.js +1 -1
  7. package/lib/api/impl/validator/index.js.map +1 -1
  8. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  9. package/lib/chain/blocks/verifyBlock.js +1 -21
  10. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  11. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -6
  12. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  13. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +9 -128
  14. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  15. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +3 -2
  16. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  17. package/lib/chain/blocks/verifyBlocksSignatures.js +2 -2
  18. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  19. package/lib/chain/chain.d.ts +1 -4
  20. package/lib/chain/chain.d.ts.map +1 -1
  21. package/lib/chain/chain.js +10 -28
  22. package/lib/chain/chain.js.map +1 -1
  23. package/lib/chain/initState.d.ts +1 -14
  24. package/lib/chain/initState.d.ts.map +1 -1
  25. package/lib/chain/initState.js +1 -62
  26. package/lib/chain/initState.js.map +1 -1
  27. package/lib/chain/interface.d.ts +0 -2
  28. package/lib/chain/interface.d.ts.map +1 -1
  29. package/lib/chain/interface.js.map +1 -1
  30. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
  31. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  32. package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
  33. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  34. package/lib/chain/opPools/opPool.d.ts +3 -0
  35. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  36. package/lib/chain/opPools/opPool.js +9 -8
  37. package/lib/chain/opPools/opPool.js.map +1 -1
  38. package/lib/chain/options.d.ts +0 -4
  39. package/lib/chain/options.d.ts.map +1 -1
  40. package/lib/chain/options.js +0 -2
  41. package/lib/chain/options.js.map +1 -1
  42. package/lib/chain/prepareNextSlot.d.ts +0 -4
  43. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  44. package/lib/chain/prepareNextSlot.js +2 -22
  45. package/lib/chain/prepareNextSlot.js.map +1 -1
  46. package/lib/chain/produceBlock/produceBlockBody.d.ts +2 -22
  47. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  48. package/lib/chain/produceBlock/produceBlockBody.js +32 -98
  49. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  50. package/lib/chain/rewards/attestationsRewards.d.ts +3 -2
  51. package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -1
  52. package/lib/chain/rewards/attestationsRewards.js +9 -9
  53. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  54. package/lib/chain/rewards/blockRewards.d.ts +2 -1
  55. package/lib/chain/rewards/blockRewards.d.ts.map +1 -1
  56. package/lib/chain/rewards/blockRewards.js +5 -5
  57. package/lib/chain/rewards/blockRewards.js.map +1 -1
  58. package/lib/chain/rewards/syncCommitteeRewards.d.ts +3 -2
  59. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -1
  60. package/lib/chain/rewards/syncCommitteeRewards.js +2 -3
  61. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  62. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
  63. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  64. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
  65. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  66. package/lib/chain/validation/attesterSlashing.js +2 -2
  67. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  68. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  69. package/lib/chain/validation/blobSidecar.js +2 -2
  70. package/lib/chain/validation/blobSidecar.js.map +1 -1
  71. package/lib/chain/validation/block.js +1 -1
  72. package/lib/chain/validation/block.js.map +1 -1
  73. package/lib/chain/validation/blsToExecutionChange.js +1 -1
  74. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  75. package/lib/chain/validation/dataColumnSidecar.js +2 -2
  76. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  77. package/lib/chain/validation/proposerSlashing.js +1 -1
  78. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  79. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  80. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  81. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +3 -2
  82. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  83. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -4
  84. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  85. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +3 -2
  86. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  87. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  88. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  89. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  90. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  91. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  92. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  93. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +3 -2
  94. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  95. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +2 -3
  96. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  97. package/lib/chain/validation/syncCommittee.js +1 -1
  98. package/lib/chain/validation/syncCommittee.js.map +1 -1
  99. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  100. package/lib/chain/validation/syncCommitteeContributionAndProof.js +5 -4
  101. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  102. package/lib/chain/validation/voluntaryExit.js +1 -1
  103. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  104. package/lib/db/beacon.d.ts +3 -7
  105. package/lib/db/beacon.d.ts.map +1 -1
  106. package/lib/db/beacon.js +33 -12
  107. package/lib/db/beacon.js.map +1 -1
  108. package/lib/db/buckets.d.ts +12 -6
  109. package/lib/db/buckets.d.ts.map +1 -1
  110. package/lib/db/buckets.js +6 -1
  111. package/lib/db/buckets.js.map +1 -1
  112. package/lib/db/interface.d.ts +2 -7
  113. package/lib/db/interface.d.ts.map +1 -1
  114. package/lib/db/repositories/index.d.ts +0 -3
  115. package/lib/db/repositories/index.d.ts.map +1 -1
  116. package/lib/db/repositories/index.js +0 -3
  117. package/lib/db/repositories/index.js.map +1 -1
  118. package/lib/execution/engine/http.d.ts +5 -13
  119. package/lib/execution/engine/http.d.ts.map +1 -1
  120. package/lib/execution/engine/http.js +6 -15
  121. package/lib/execution/engine/http.js.map +1 -1
  122. package/lib/execution/engine/index.d.ts.map +1 -1
  123. package/lib/execution/engine/index.js +1 -1
  124. package/lib/execution/engine/index.js.map +1 -1
  125. package/lib/execution/engine/interface.d.ts +1 -1
  126. package/lib/execution/engine/interface.d.ts.map +1 -1
  127. package/lib/execution/engine/interface.js.map +1 -1
  128. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  129. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  130. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  131. package/lib/execution/engine/jwt.d.ts.map +1 -0
  132. package/lib/execution/engine/jwt.js.map +1 -0
  133. package/lib/execution/engine/mock.d.ts +2 -6
  134. package/lib/execution/engine/mock.d.ts.map +1 -1
  135. package/lib/execution/engine/mock.js +4 -15
  136. package/lib/execution/engine/mock.js.map +1 -1
  137. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  138. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  139. package/lib/execution/engine/types.d.ts +1 -1
  140. package/lib/execution/engine/types.d.ts.map +1 -1
  141. package/lib/execution/engine/types.js +1 -1
  142. package/lib/execution/engine/types.js.map +1 -1
  143. package/lib/execution/engine/utils.d.ts +64 -2
  144. package/lib/execution/engine/utils.d.ts.map +1 -1
  145. package/lib/execution/engine/utils.js +91 -2
  146. package/lib/execution/engine/utils.js.map +1 -1
  147. package/lib/index.d.ts +1 -2
  148. package/lib/index.d.ts.map +1 -1
  149. package/lib/index.js +1 -2
  150. package/lib/index.js.map +1 -1
  151. package/lib/metrics/metrics/lodestar.d.ts +0 -49
  152. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  153. package/lib/metrics/metrics/lodestar.js +0 -134
  154. package/lib/metrics/metrics/lodestar.js.map +1 -1
  155. package/lib/network/core/events.d.ts +1 -1
  156. package/lib/network/core/events.d.ts.map +1 -1
  157. package/lib/network/core/events.js +1 -1
  158. package/lib/network/core/events.js.map +1 -1
  159. package/lib/network/events.d.ts +6 -1
  160. package/lib/network/events.d.ts.map +1 -1
  161. package/lib/network/events.js +7 -1
  162. package/lib/network/events.js.map +1 -1
  163. package/lib/node/nodejs.d.ts.map +1 -1
  164. package/lib/node/nodejs.js +10 -9
  165. package/lib/node/nodejs.js.map +1 -1
  166. package/lib/node/notifier.d.ts.map +1 -1
  167. package/lib/node/notifier.js +0 -13
  168. package/lib/node/notifier.js.map +1 -1
  169. package/lib/node/options.d.ts +0 -2
  170. package/lib/node/options.d.ts.map +1 -1
  171. package/lib/node/options.js +0 -2
  172. package/lib/node/options.js.map +1 -1
  173. package/lib/node/utils/interop/deposits.d.ts +2 -1
  174. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  175. package/lib/node/utils/interop/deposits.js.map +1 -1
  176. package/lib/node/utils/interop/state.d.ts +1 -1
  177. package/lib/node/utils/interop/state.d.ts.map +1 -1
  178. package/lib/node/utils/state.d.ts +1 -7
  179. package/lib/node/utils/state.d.ts.map +1 -1
  180. package/lib/node/utils/state.js +1 -14
  181. package/lib/node/utils/state.js.map +1 -1
  182. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  183. package/lib/sync/backfill/backfill.js +2 -2
  184. package/lib/sync/backfill/backfill.js.map +1 -1
  185. package/lib/sync/backfill/verify.d.ts +2 -2
  186. package/lib/sync/backfill/verify.d.ts.map +1 -1
  187. package/lib/sync/backfill/verify.js +3 -3
  188. package/lib/sync/backfill/verify.js.map +1 -1
  189. package/lib/util/workerEvents.d.ts +1 -6
  190. package/lib/util/workerEvents.d.ts.map +1 -1
  191. package/lib/util/workerEvents.js +8 -8
  192. package/lib/util/workerEvents.js.map +1 -1
  193. package/package.json +14 -21
  194. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  195. package/src/api/impl/beacon/state/index.ts +4 -5
  196. package/src/api/impl/validator/index.ts +1 -1
  197. package/src/chain/blocks/verifyBlock.ts +3 -24
  198. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -161
  199. package/src/chain/blocks/verifyBlocksSignatures.ts +5 -2
  200. package/src/chain/chain.ts +9 -32
  201. package/src/chain/initState.ts +1 -97
  202. package/src/chain/interface.ts +0 -2
  203. package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
  204. package/src/chain/opPools/opPool.ts +8 -8
  205. package/src/chain/options.ts +0 -6
  206. package/src/chain/prepareNextSlot.ts +2 -29
  207. package/src/chain/produceBlock/produceBlockBody.ts +33 -132
  208. package/src/chain/rewards/attestationsRewards.ts +18 -8
  209. package/src/chain/rewards/blockRewards.ts +6 -3
  210. package/src/chain/rewards/syncCommitteeRewards.ts +5 -3
  211. package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
  212. package/src/chain/validation/attesterSlashing.ts +2 -2
  213. package/src/chain/validation/blobSidecar.ts +10 -2
  214. package/src/chain/validation/block.ts +1 -1
  215. package/src/chain/validation/blsToExecutionChange.ts +1 -1
  216. package/src/chain/validation/dataColumnSidecar.ts +6 -1
  217. package/src/chain/validation/proposerSlashing.ts +1 -1
  218. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  219. package/src/chain/validation/signatureSets/contributionAndProof.ts +6 -3
  220. package/src/chain/validation/signatureSets/syncCommittee.ts +6 -2
  221. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  222. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +5 -2
  223. package/src/chain/validation/syncCommittee.ts +1 -1
  224. package/src/chain/validation/syncCommitteeContributionAndProof.ts +10 -6
  225. package/src/chain/validation/voluntaryExit.ts +1 -1
  226. package/src/db/beacon.ts +38 -16
  227. package/src/db/buckets.ts +12 -7
  228. package/src/db/interface.ts +2 -13
  229. package/src/db/repositories/index.ts +0 -3
  230. package/src/execution/engine/http.ts +12 -21
  231. package/src/execution/engine/index.ts +1 -1
  232. package/src/execution/engine/interface.ts +1 -1
  233. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  234. package/src/execution/engine/mock.ts +4 -17
  235. package/src/execution/engine/payloadIdCache.ts +1 -1
  236. package/src/execution/engine/types.ts +9 -9
  237. package/src/execution/engine/utils.ts +111 -5
  238. package/src/index.ts +1 -2
  239. package/src/metrics/metrics/lodestar.ts +0 -144
  240. package/src/network/core/events.ts +1 -1
  241. package/src/network/events.ts +7 -1
  242. package/src/node/nodejs.ts +11 -9
  243. package/src/node/notifier.ts +0 -16
  244. package/src/node/options.ts +0 -3
  245. package/src/node/utils/interop/deposits.ts +3 -1
  246. package/src/node/utils/interop/state.ts +1 -1
  247. package/src/node/utils/state.ts +3 -18
  248. package/src/sync/backfill/backfill.ts +14 -2
  249. package/src/sync/backfill/verify.ts +10 -2
  250. package/src/util/workerEvents.ts +9 -8
  251. package/lib/chain/genesis/genesis.d.ts +0 -51
  252. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  253. package/lib/chain/genesis/genesis.js +0 -123
  254. package/lib/chain/genesis/genesis.js.map +0 -1
  255. package/lib/chain/genesis/interface.d.ts +0 -13
  256. package/lib/chain/genesis/interface.d.ts.map +0 -1
  257. package/lib/chain/genesis/interface.js +0 -2
  258. package/lib/chain/genesis/interface.js.map +0 -1
  259. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  260. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  261. package/lib/db/repositories/depositDataRoot.js +0 -62
  262. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  263. package/lib/db/repositories/depositEvent.d.ts +0 -13
  264. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  265. package/lib/db/repositories/depositEvent.js +0 -27
  266. package/lib/db/repositories/depositEvent.js.map +0 -1
  267. package/lib/db/repositories/eth1Data.d.ts +0 -13
  268. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  269. package/lib/db/repositories/eth1Data.js +0 -26
  270. package/lib/db/repositories/eth1Data.js.map +0 -1
  271. package/lib/db/single/index.d.ts +0 -3
  272. package/lib/db/single/index.d.ts.map +0 -1
  273. package/lib/db/single/index.js +0 -3
  274. package/lib/db/single/index.js.map +0 -1
  275. package/lib/db/single/preGenesisState.d.ts +0 -16
  276. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  277. package/lib/db/single/preGenesisState.js +0 -29
  278. package/lib/db/single/preGenesisState.js.map +0 -1
  279. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  280. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  281. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  282. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  283. package/lib/eth1/errors.d.ts +0 -66
  284. package/lib/eth1/errors.d.ts.map +0 -1
  285. package/lib/eth1/errors.js +0 -27
  286. package/lib/eth1/errors.js.map +0 -1
  287. package/lib/eth1/eth1DataCache.d.ts +0 -19
  288. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  289. package/lib/eth1/eth1DataCache.js +0 -19
  290. package/lib/eth1/eth1DataCache.js.map +0 -1
  291. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  292. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  293. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  294. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  295. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  296. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  297. package/lib/eth1/eth1DepositsCache.js +0 -119
  298. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  299. package/lib/eth1/eth1MergeBlockTracker.d.ts +0 -65
  300. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  301. package/lib/eth1/eth1MergeBlockTracker.js +0 -262
  302. package/lib/eth1/eth1MergeBlockTracker.js.map +0 -1
  303. package/lib/eth1/index.d.ts +0 -46
  304. package/lib/eth1/index.d.ts.map +0 -1
  305. package/lib/eth1/index.js +0 -121
  306. package/lib/eth1/index.js.map +0 -1
  307. package/lib/eth1/interface.d.ts +0 -112
  308. package/lib/eth1/interface.d.ts.map +0 -1
  309. package/lib/eth1/interface.js +0 -8
  310. package/lib/eth1/interface.js.map +0 -1
  311. package/lib/eth1/options.d.ts +0 -22
  312. package/lib/eth1/options.d.ts.map +0 -1
  313. package/lib/eth1/options.js +0 -8
  314. package/lib/eth1/options.js.map +0 -1
  315. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  316. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  317. package/lib/eth1/provider/eth1Provider.js +0 -147
  318. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  319. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  320. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  321. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  322. package/lib/eth1/provider/jwt.js.map +0 -1
  323. package/lib/eth1/provider/utils.d.ts +0 -65
  324. package/lib/eth1/provider/utils.d.ts.map +0 -1
  325. package/lib/eth1/provider/utils.js +0 -120
  326. package/lib/eth1/provider/utils.js.map +0 -1
  327. package/lib/eth1/stream.d.ts +0 -15
  328. package/lib/eth1/stream.d.ts.map +0 -1
  329. package/lib/eth1/stream.js +0 -54
  330. package/lib/eth1/stream.js.map +0 -1
  331. package/lib/eth1/utils/depositContract.d.ts +0 -14
  332. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  333. package/lib/eth1/utils/depositContract.js +0 -33
  334. package/lib/eth1/utils/depositContract.js.map +0 -1
  335. package/lib/eth1/utils/deposits.d.ts +0 -8
  336. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  337. package/lib/eth1/utils/deposits.js +0 -47
  338. package/lib/eth1/utils/deposits.js.map +0 -1
  339. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  340. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  341. package/lib/eth1/utils/eth1Data.js +0 -77
  342. package/lib/eth1/utils/eth1Data.js.map +0 -1
  343. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  344. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  345. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  346. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  347. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  348. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  349. package/lib/eth1/utils/eth1Vote.js +0 -111
  350. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  351. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  352. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  353. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  354. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  355. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  356. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  357. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  358. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  359. package/src/chain/genesis/genesis.ts +0 -190
  360. package/src/chain/genesis/interface.ts +0 -14
  361. package/src/db/repositories/depositDataRoot.ts +0 -80
  362. package/src/db/repositories/depositEvent.ts +0 -32
  363. package/src/db/repositories/eth1Data.ts +0 -33
  364. package/src/db/single/index.ts +0 -2
  365. package/src/db/single/preGenesisState.ts +0 -37
  366. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  367. package/src/eth1/errors.ts +0 -40
  368. package/src/eth1/eth1DataCache.ts +0 -26
  369. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  370. package/src/eth1/eth1DepositsCache.ts +0 -141
  371. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  372. package/src/eth1/index.ts +0 -157
  373. package/src/eth1/interface.ts +0 -131
  374. package/src/eth1/options.ts +0 -28
  375. package/src/eth1/provider/eth1Provider.ts +0 -229
  376. package/src/eth1/provider/utils.ts +0 -136
  377. package/src/eth1/stream.ts +0 -75
  378. package/src/eth1/utils/depositContract.ts +0 -37
  379. package/src/eth1/utils/deposits.ts +0 -70
  380. package/src/eth1/utils/eth1Data.ts +0 -100
  381. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  382. package/src/eth1/utils/eth1Vote.ts +0 -142
  383. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  384. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  385. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  386. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  387. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  388. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
@@ -9,9 +9,8 @@ import {
9
9
  ForkSeq,
10
10
  } from "@lodestar/params";
11
11
  import {ExecutionPayload, RootHex, bellatrix, deneb, ssz} from "@lodestar/types";
12
- import {fromHex, toHex, toRootHex} from "@lodestar/utils";
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;
@@ -70,7 +69,7 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
70
69
  finalizedBlockHash = ZERO_HASH_HEX;
71
70
  readonly payloadIdCache = new PayloadIdCache();
72
71
 
73
- /** Known valid blocks, both pre-merge and post-merge */
72
+ /** Known valid blocks */
74
73
  private readonly validBlocks = new Map<RootHex, ExecutionBlock>();
75
74
  /** Preparing payloads to be retrieved via engine_getPayloadV1 */
76
75
  private readonly preparingPayloads = new Map<number, PreparedPayload>();
@@ -135,18 +134,6 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
135
134
  return [] as ExecutionPayloadBodyRpc[];
136
135
  }
137
136
 
138
- /**
139
- * Mock manipulator to add more known blocks to this mock.
140
- */
141
- addPowBlock(powBlock: bellatrix.PowBlock): void {
142
- this.validBlocks.set(toHex(powBlock.blockHash), {
143
- parentHash: toHex(powBlock.parentHash),
144
- blockHash: toHex(powBlock.blockHash),
145
- timestamp: 0,
146
- blockNumber: 0,
147
- });
148
- }
149
-
150
137
  /**
151
138
  * Mock manipulator to add predefined responses before execution engine client calls
152
139
  */
@@ -258,7 +245,7 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
258
245
  // section of the EIP. Additionally, if this validation fails, client software MUST NOT update the forkchoice
259
246
  // state and MUST NOT begin a payload build process.
260
247
  //
261
- // > TODO
248
+ // > N/A: All networks have completed the merge transition
262
249
 
263
250
  // 4. Before updating the forkchoice state, client software MUST ensure the validity of the payload referenced by
264
251
  // forkchoiceState.headBlockHash, and MAY validate the payload while processing the call. The validation process
@@ -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,150 +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
- // Merge Search info
1673
- eth1MergeStatus: register.gauge({
1674
- name: "lodestar_eth1_merge_status",
1675
- help: "Eth1 Merge Status 0 PRE_MERGE 1 SEARCHING 2 FOUND 3 POST_MERGE",
1676
- }),
1677
- eth1MergeTDFactor: register.gauge({
1678
- name: "lodestar_eth1_merge_td_factor",
1679
- help: "TTD set for the merge",
1680
- }),
1681
- eth1MergeTTD: register.gauge({
1682
- name: "lodestar_eth1_merge_ttd",
1683
- help: "TTD set for the merge scaled down by td_factor",
1684
- }),
1685
-
1686
- eth1PollMergeBlockErrors: register.gauge({
1687
- name: "lodestar_eth1_poll_merge_block_errors_total",
1688
- help: "Total count of errors polling merge block",
1689
- }),
1690
- getTerminalPowBlockPromiseCacheHit: register.gauge({
1691
- name: "lodestar_eth1_get_terminal_pow_block_promise_cache_hit_total",
1692
- help: "Total count of skipped runs in poll merge block, because a previous promise existed",
1693
- }),
1694
- eth1ParentBlocksFetched: register.gauge({
1695
- name: "lodestar_eth1_parent_blocks_fetched_total",
1696
- help: "Total count of parent blocks fetched searching for merge block",
1697
- }),
1698
-
1699
- // Latest block details
1700
- eth1LatestBlockTD: register.gauge({
1701
- name: "lodestar_eth1_latest_block_ttd",
1702
- help: "Eth1 latest Block td scaled down by td_factor",
1703
- }),
1704
- eth1LatestBlockNumber: register.gauge({
1705
- name: "lodestar_eth1_latest_block_number",
1706
- help: "Eth1 latest block number",
1707
- }),
1708
- eth1LatestBlockTimestamp: register.gauge({
1709
- name: "lodestar_eth1_latest_block_timestamp",
1710
- help: "Eth1 latest block timestamp",
1711
- }),
1712
-
1713
- // Merge details
1714
- eth1MergeBlockDetails: register.gauge<{
1715
- terminalBlockHash: string;
1716
- terminalBlockNumber: string;
1717
- terminalBlockTD: string;
1718
- }>({
1719
- name: "lodestar_eth1_merge_block_details",
1720
- help: "If found then 1 with terminal block details",
1721
- labelNames: ["terminalBlockHash", "terminalBlockNumber", "terminalBlockTD"],
1722
- }),
1723
- },
1724
-
1725
- eth1HttpClient: {
1726
- requestTime: register.histogram<{routeId: string}>({
1727
- name: "lodestar_eth1_http_client_request_time_seconds",
1728
- help: "eth1 JsonHttpClient - histogram or roundtrip request times",
1729
- labelNames: ["routeId"],
1730
- // Provide max resolution on problematic values around 1 second
1731
- buckets: [0.1, 0.5, 1, 2, 5, 15],
1732
- }),
1733
- streamTime: register.histogram<{routeId: string}>({
1734
- name: "lodestar_eth1_http_client_stream_time_seconds",
1735
- help: "eth1 JsonHttpClient - streaming time by routeId",
1736
- labelNames: ["routeId"],
1737
- // Provide max resolution on problematic values around 1 second
1738
- buckets: [0.1, 0.5, 1, 2, 5, 15],
1739
- }),
1740
- requestErrors: register.gauge<{routeId: string}>({
1741
- name: "lodestar_eth1_http_client_request_errors_total",
1742
- help: "eth1 JsonHttpClient - total count of request errors",
1743
- labelNames: ["routeId"],
1744
- }),
1745
- retryCount: register.gauge<{routeId: string}>({
1746
- name: "lodestar_eth1_http_client_request_retries_total",
1747
- help: "eth1 JsonHttpClient - total count of request retries",
1748
- labelNames: ["routeId"],
1749
- }),
1750
- requestUsedFallbackUrl: register.gauge<{routeId: string}>({
1751
- name: "lodestar_eth1_http_client_request_used_fallback_url_total",
1752
- help: "eth1 JsonHttpClient - total count of requests on fallback url(s)",
1753
- labelNames: ["routeId"],
1754
- }),
1755
- activeRequests: register.gauge<{routeId: string}>({
1756
- name: "lodestar_eth1_http_client_active_requests",
1757
- help: "eth1 JsonHttpClient - current count of active requests",
1758
- labelNames: ["routeId"],
1759
- }),
1760
- configUrlsCount: register.gauge({
1761
- name: "lodestar_eth1_http_client_config_urls_count",
1762
- help: "eth1 JsonHttpClient - static config urls count",
1763
- }),
1764
- },
1765
-
1766
1622
  executionEnginerHttpClient: {
1767
1623
  requestTime: register.histogram<{routeId: string}>({
1768
1624
  name: "lodestar_execution_engine_http_client_request_time_seconds",
@@ -2,7 +2,7 @@ import EventEmitter from "node:events";
2
2
  import {ResponseIncoming, ResponseOutgoing} from "@lodestar/reqresp";
3
3
  import {AsyncIterableEventBus, IteratorEvent, RequestEvent} from "../../util/asyncIterableToEvents.js";
4
4
  import {StrictEventEmitterSingleArg} from "../../util/strictEvents.js";
5
- import {EventDirection} from "../../util/workerEvents.js";
5
+ import {EventDirection} from "../events.js";
6
6
  import {IncomingRequestArgs, OutgoingRequestArgs} from "../reqresp/types.js";
7
7
 
8
8
  export enum ReqRespBridgeEvent {
@@ -3,7 +3,6 @@ import {PeerId, TopicValidatorResult} from "@libp2p/interface";
3
3
  import {CustodyIndex, Status} from "@lodestar/types";
4
4
  import {PeerIdStr} from "../util/peerId.js";
5
5
  import {StrictEventEmitterSingleArg} from "../util/strictEvents.js";
6
- import {EventDirection} from "../util/workerEvents.js";
7
6
  import {PendingGossipsubMessage} from "./processor/types.js";
8
7
  import {RequestTypedContainer} from "./reqresp/ReqRespBeaconNode.js";
9
8
 
@@ -38,6 +37,13 @@ export type NetworkEventData = {
38
37
  };
39
38
  };
40
39
 
40
+ export enum EventDirection {
41
+ workerToMain,
42
+ mainToWorker,
43
+ /** Event not emitted through worker boundary */
44
+ none,
45
+ }
46
+
41
47
  export const networkEventDirection: Record<NetworkEvent, EventDirection> = {
42
48
  [NetworkEvent.peerConnected]: EventDirection.workerToMain,
43
49
  [NetworkEvent.peerDisconnected]: EventDirection.workerToMain,
@@ -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,
@@ -36,7 +36,6 @@ export async function runNodeNotifier(modules: NodeNotifierModules): Promise<voi
36
36
  const {network, chain, sync, config, logger, signal} = modules;
37
37
 
38
38
  const headSlotTimeSeries = new TimeSeries({maxPoints: 10});
39
- const tdTimeSeries = new TimeSeries({maxPoints: 50});
40
39
 
41
40
  const SLOTS_PER_SYNC_COMMITTEE_PERIOD = SLOTS_PER_EPOCH * EPOCHS_PER_SYNC_COMMITTEE_PERIOD;
42
41
  let hasLowPeerCount = false;
@@ -87,21 +86,6 @@ export async function runNodeNotifier(modules: NodeNotifierModules): Promise<voi
87
86
  const executionInfo = getHeadExecutionInfo(config, clockEpoch, headState, headInfo);
88
87
  const finalizedCheckpointRow = `finalized: ${prettyBytes(finalizedRoot)}:${finalizedEpoch}`;
89
88
 
90
- // Log in TD progress in separate line to not clutter regular status update.
91
- // This line will only exist between BELLATRIX_FORK_EPOCH and TTD, a window of some days / weeks max.
92
- // Notifier log lines must be kept at a reasonable max width otherwise it's very hard to read
93
- const tdProgress = chain.eth1.getTDProgress();
94
- if (tdProgress !== null && !tdProgress.ttdHit) {
95
- tdTimeSeries.addPoint(tdProgress.tdDiffScaled, tdProgress.timestamp);
96
-
97
- const timestampTDD = tdTimeSeries.computeY0Point();
98
- // It is possible to get ttd estimate with an error at imminent merge
99
- const secToTTD = Math.max(Math.floor(timestampTDD - Date.now() / 1000), 0);
100
- const timeLeft = Number.isFinite(secToTTD) ? prettyTimeDiffSec(secToTTD) : "?";
101
-
102
- logger.info(`TTD in ${timeLeft} current TD ${tdProgress.td} / ${tdProgress.ttd}`);
103
- }
104
-
105
89
  let nodeState: string[];
106
90
  switch (sync.state) {
107
91
  case SyncState.SyncingFinalized:
@@ -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,7 +750,13 @@ 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.bls, this.chain.getHeadState(), [anchorBlock]);
753
+ await verifyBlockProposerSignature(
754
+ this.chain.config,
755
+ this.chain.index2pubkey,
756
+ this.chain.bls,
757
+ this.chain.getHeadState(),
758
+ [anchorBlock]
759
+ );
754
760
 
755
761
  // We can write to the disk if this is ahead of prevFinalizedCheckpointBlock otherwise
756
762
  // we will need to go make checks on the top of sync loop before writing as it might
@@ -815,7 +821,13 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
815
821
 
816
822
  // If any of the block's proposer signature fail, we can't trust this peer at all
817
823
  if (verifiedBlocks.length > 0) {
818
- await verifyBlockProposerSignature(this.chain.bls, this.chain.getHeadState(), verifiedBlocks);
824
+ await verifyBlockProposerSignature(
825
+ this.chain.config,
826
+ this.chain.index2pubkey,
827
+ this.chain.bls,
828
+ this.chain.getHeadState(),
829
+ verifiedBlocks
830
+ );
819
831
 
820
832
  // This is bad, like super bad. Abort the backfill
821
833
  if (!nextAnchor)
@@ -1,6 +1,11 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {GENESIS_SLOT} from "@lodestar/params";
3
- import {CachedBeaconStateAllForks, ISignatureSet, getBlockProposerSignatureSet} from "@lodestar/state-transition";
3
+ import {
4
+ CachedBeaconStateAllForks,
5
+ ISignatureSet,
6
+ Index2PubkeyCache,
7
+ getBlockProposerSignatureSet,
8
+ } from "@lodestar/state-transition";
4
9
  import {Root, SignedBeaconBlock, Slot, ssz} from "@lodestar/types";
5
10
  import {IBlsVerifier} from "../../chain/bls/index.js";
6
11
  import {BackfillSyncError, BackfillSyncErrorCode} from "./errors.js";
@@ -41,6 +46,8 @@ export function verifyBlockSequence(
41
46
  }
42
47
 
43
48
  export async function verifyBlockProposerSignature(
49
+ config: BeaconConfig,
50
+ index2pubkey: Index2PubkeyCache,
44
51
  bls: IBlsVerifier,
45
52
  state: CachedBeaconStateAllForks,
46
53
  blocks: SignedBeaconBlock[]
@@ -48,7 +55,8 @@ export async function verifyBlockProposerSignature(
48
55
  if (blocks.length === 1 && blocks[0].message.slot === GENESIS_SLOT) return;
49
56
  const signatures = blocks.reduce((sigs: ISignatureSet[], block) => {
50
57
  // genesis block doesn't have valid signature
51
- if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(state, block));
58
+ if (block.message.slot !== GENESIS_SLOT)
59
+ sigs.push(getBlockProposerSignatureSet(config, index2pubkey, state, block));
52
60
  return sigs;
53
61
  }, []);
54
62