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

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 (475) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  3. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  4. package/lib/api/impl/beacon/state/utils.d.ts +2 -7
  5. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  6. package/lib/api/impl/beacon/state/utils.js +0 -12
  7. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  8. package/lib/api/impl/lodestar/index.js +1 -1
  9. package/lib/api/impl/lodestar/index.js.map +1 -1
  10. package/lib/api/impl/proof/index.d.ts.map +1 -1
  11. package/lib/api/impl/proof/index.js +1 -2
  12. package/lib/api/impl/proof/index.js.map +1 -1
  13. package/lib/api/impl/validator/index.d.ts.map +1 -1
  14. package/lib/api/impl/validator/index.js +1 -3
  15. package/lib/api/impl/validator/index.js.map +1 -1
  16. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  17. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +5 -3
  18. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  19. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  20. package/lib/chain/blocks/importBlock.js +12 -3
  21. package/lib/chain/blocks/importBlock.js.map +1 -1
  22. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  23. package/lib/chain/blocks/verifyBlock.js +9 -2
  24. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  25. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  26. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +4 -2
  27. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  28. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -1
  29. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  30. package/lib/chain/blocks/verifyBlocksSignatures.js +3 -2
  31. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  32. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  33. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +1 -0
  34. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  35. package/lib/chain/chain.d.ts +11 -14
  36. package/lib/chain/chain.d.ts.map +1 -1
  37. package/lib/chain/chain.js +36 -50
  38. package/lib/chain/chain.js.map +1 -1
  39. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  40. package/lib/chain/forkChoice/index.js +3 -3
  41. package/lib/chain/forkChoice/index.js.map +1 -1
  42. package/lib/chain/initState.d.ts +2 -15
  43. package/lib/chain/initState.d.ts.map +1 -1
  44. package/lib/chain/initState.js +6 -65
  45. package/lib/chain/initState.js.map +1 -1
  46. package/lib/chain/interface.d.ts +6 -11
  47. package/lib/chain/interface.d.ts.map +1 -1
  48. package/lib/chain/interface.js.map +1 -1
  49. package/lib/chain/lightClient/proofs.d.ts.map +1 -1
  50. package/lib/chain/lightClient/proofs.js +0 -2
  51. package/lib/chain/lightClient/proofs.js.map +1 -1
  52. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +8 -12
  53. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  54. package/lib/chain/opPools/aggregatedAttestationPool.js +13 -142
  55. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  56. package/lib/chain/opPools/opPool.d.ts +3 -0
  57. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  58. package/lib/chain/opPools/opPool.js +14 -16
  59. package/lib/chain/opPools/opPool.js.map +1 -1
  60. package/lib/chain/prepareNextSlot.d.ts +0 -4
  61. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  62. package/lib/chain/prepareNextSlot.js +5 -28
  63. package/lib/chain/prepareNextSlot.js.map +1 -1
  64. package/lib/chain/produceBlock/produceBlockBody.d.ts +0 -1
  65. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  66. package/lib/chain/produceBlock/produceBlockBody.js +10 -13
  67. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  68. package/lib/chain/regen/interface.d.ts +1 -5
  69. package/lib/chain/regen/interface.d.ts.map +1 -1
  70. package/lib/chain/regen/queued.d.ts +4 -7
  71. package/lib/chain/regen/queued.d.ts.map +1 -1
  72. package/lib/chain/regen/queued.js +15 -25
  73. package/lib/chain/regen/queued.js.map +1 -1
  74. package/lib/chain/regen/regen.d.ts +1 -1
  75. package/lib/chain/regen/regen.d.ts.map +1 -1
  76. package/lib/chain/regen/regen.js +13 -17
  77. package/lib/chain/regen/regen.js.map +1 -1
  78. package/lib/chain/shufflingCache.d.ts +16 -11
  79. package/lib/chain/shufflingCache.d.ts.map +1 -1
  80. package/lib/chain/shufflingCache.js +47 -41
  81. package/lib/chain/shufflingCache.js.map +1 -1
  82. package/lib/chain/stateCache/blockStateCacheImpl.d.ts +1 -2
  83. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -1
  84. package/lib/chain/stateCache/blockStateCacheImpl.js +2 -2
  85. package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
  86. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -2
  87. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  88. package/lib/chain/stateCache/fifoBlockStateCache.js +4 -4
  89. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  90. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts +4 -5
  91. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -1
  92. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +9 -10
  93. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
  94. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +9 -7
  95. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  96. package/lib/chain/stateCache/persistentCheckpointsCache.js +21 -19
  97. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  98. package/lib/chain/stateCache/types.d.ts +5 -6
  99. package/lib/chain/stateCache/types.d.ts.map +1 -1
  100. package/lib/chain/stateCache/types.js.map +1 -1
  101. package/lib/chain/validation/aggregateAndProof.js +9 -0
  102. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  103. package/lib/chain/validation/attestation.d.ts.map +1 -1
  104. package/lib/chain/validation/attestation.js +2 -2
  105. package/lib/chain/validation/attestation.js.map +1 -1
  106. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  107. package/lib/chain/validation/attesterSlashing.js +2 -2
  108. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  109. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  110. package/lib/chain/validation/blobSidecar.js +2 -3
  111. package/lib/chain/validation/blobSidecar.js.map +1 -1
  112. package/lib/chain/validation/block.d.ts.map +1 -1
  113. package/lib/chain/validation/block.js +5 -3
  114. package/lib/chain/validation/block.js.map +1 -1
  115. package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -1
  116. package/lib/chain/validation/blsToExecutionChange.js +10 -3
  117. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  118. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  119. package/lib/chain/validation/dataColumnSidecar.js +2 -3
  120. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  121. package/lib/chain/validation/proposerSlashing.js +3 -2
  122. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  123. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  124. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  125. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -1
  126. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  127. package/lib/chain/validation/signatureSets/contributionAndProof.js +2 -2
  128. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  129. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -1
  130. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  131. package/lib/chain/validation/signatureSets/syncCommittee.js +2 -2
  132. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  133. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  134. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  135. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  136. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  137. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -1
  138. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  139. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -2
  140. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  141. package/lib/chain/validation/syncCommittee.js +1 -1
  142. package/lib/chain/validation/syncCommittee.js.map +1 -1
  143. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  144. package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -3
  145. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  146. package/lib/chain/validation/voluntaryExit.js +1 -1
  147. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  148. package/lib/db/beacon.d.ts +3 -7
  149. package/lib/db/beacon.d.ts.map +1 -1
  150. package/lib/db/beacon.js +33 -12
  151. package/lib/db/beacon.js.map +1 -1
  152. package/lib/db/buckets.d.ts +12 -6
  153. package/lib/db/buckets.d.ts.map +1 -1
  154. package/lib/db/buckets.js +6 -1
  155. package/lib/db/buckets.js.map +1 -1
  156. package/lib/db/interface.d.ts +2 -7
  157. package/lib/db/interface.d.ts.map +1 -1
  158. package/lib/db/repositories/checkpointState.d.ts +2 -6
  159. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  160. package/lib/db/repositories/checkpointState.js +3 -15
  161. package/lib/db/repositories/checkpointState.js.map +1 -1
  162. package/lib/db/repositories/index.d.ts +0 -3
  163. package/lib/db/repositories/index.d.ts.map +1 -1
  164. package/lib/db/repositories/index.js +0 -3
  165. package/lib/db/repositories/index.js.map +1 -1
  166. package/lib/db/repositories/stateArchive.d.ts +9 -9
  167. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  168. package/lib/db/repositories/stateArchive.js +6 -21
  169. package/lib/db/repositories/stateArchive.js.map +1 -1
  170. package/lib/execution/engine/http.d.ts +1 -1
  171. package/lib/execution/engine/http.d.ts.map +1 -1
  172. package/lib/execution/engine/http.js +2 -3
  173. package/lib/execution/engine/http.js.map +1 -1
  174. package/lib/execution/engine/index.d.ts.map +1 -1
  175. package/lib/execution/engine/index.js +1 -1
  176. package/lib/execution/engine/index.js.map +1 -1
  177. package/lib/execution/engine/interface.d.ts +1 -1
  178. package/lib/execution/engine/interface.d.ts.map +1 -1
  179. package/lib/execution/engine/interface.js.map +1 -1
  180. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  181. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  182. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  183. package/lib/execution/engine/jwt.d.ts.map +1 -0
  184. package/lib/execution/engine/jwt.js.map +1 -0
  185. package/lib/execution/engine/mock.d.ts +9 -6
  186. package/lib/execution/engine/mock.d.ts.map +1 -1
  187. package/lib/execution/engine/mock.js +35 -8
  188. package/lib/execution/engine/mock.js.map +1 -1
  189. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  190. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  191. package/lib/execution/engine/types.d.ts +1 -1
  192. package/lib/execution/engine/types.d.ts.map +1 -1
  193. package/lib/execution/engine/types.js +1 -1
  194. package/lib/execution/engine/types.js.map +1 -1
  195. package/lib/execution/engine/utils.d.ts +64 -2
  196. package/lib/execution/engine/utils.d.ts.map +1 -1
  197. package/lib/execution/engine/utils.js +91 -2
  198. package/lib/execution/engine/utils.js.map +1 -1
  199. package/lib/index.d.ts +1 -2
  200. package/lib/index.d.ts.map +1 -1
  201. package/lib/index.js +1 -2
  202. package/lib/index.js.map +1 -1
  203. package/lib/metrics/metrics/lodestar.d.ts +1 -41
  204. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  205. package/lib/metrics/metrics/lodestar.js +3 -107
  206. package/lib/metrics/metrics/lodestar.js.map +1 -1
  207. package/lib/network/core/events.d.ts +1 -1
  208. package/lib/network/core/events.d.ts.map +1 -1
  209. package/lib/network/core/events.js +1 -1
  210. package/lib/network/core/events.js.map +1 -1
  211. package/lib/network/events.d.ts +6 -1
  212. package/lib/network/events.d.ts.map +1 -1
  213. package/lib/network/events.js +7 -1
  214. package/lib/network/events.js.map +1 -1
  215. package/lib/network/peers/discover.d.ts.map +1 -1
  216. package/lib/network/peers/discover.js.map +1 -1
  217. package/lib/network/reqresp/utils/dataColumnResponseValidation.js +1 -1
  218. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  219. package/lib/node/nodejs.d.ts +6 -3
  220. package/lib/node/nodejs.d.ts.map +1 -1
  221. package/lib/node/nodejs.js +30 -12
  222. package/lib/node/nodejs.js.map +1 -1
  223. package/lib/node/notifier.d.ts.map +1 -1
  224. package/lib/node/notifier.js +9 -6
  225. package/lib/node/notifier.js.map +1 -1
  226. package/lib/node/options.d.ts +0 -2
  227. package/lib/node/options.d.ts.map +1 -1
  228. package/lib/node/options.js +0 -2
  229. package/lib/node/options.js.map +1 -1
  230. package/lib/node/utils/interop/deposits.d.ts +2 -1
  231. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  232. package/lib/node/utils/interop/deposits.js.map +1 -1
  233. package/lib/node/utils/interop/state.d.ts +1 -1
  234. package/lib/node/utils/interop/state.d.ts.map +1 -1
  235. package/lib/node/utils/state.d.ts +1 -7
  236. package/lib/node/utils/state.d.ts.map +1 -1
  237. package/lib/node/utils/state.js +1 -14
  238. package/lib/node/utils/state.js.map +1 -1
  239. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  240. package/lib/sync/backfill/backfill.js +2 -4
  241. package/lib/sync/backfill/backfill.js.map +1 -1
  242. package/lib/sync/backfill/verify.d.ts +2 -2
  243. package/lib/sync/backfill/verify.d.ts.map +1 -1
  244. package/lib/sync/backfill/verify.js +3 -3
  245. package/lib/sync/backfill/verify.js.map +1 -1
  246. package/lib/util/sszBytes.js +1 -1
  247. package/lib/util/sszBytes.js.map +1 -1
  248. package/lib/util/workerEvents.d.ts +1 -6
  249. package/lib/util/workerEvents.d.ts.map +1 -1
  250. package/lib/util/workerEvents.js +8 -8
  251. package/lib/util/workerEvents.js.map +1 -1
  252. package/package.json +28 -26
  253. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  254. package/src/api/impl/beacon/state/utils.ts +2 -22
  255. package/src/api/impl/lodestar/index.ts +1 -1
  256. package/src/api/impl/proof/index.ts +1 -2
  257. package/src/api/impl/validator/index.ts +1 -3
  258. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +5 -3
  259. package/src/chain/blocks/importBlock.ts +13 -3
  260. package/src/chain/blocks/verifyBlock.ts +10 -3
  261. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  262. package/src/chain/blocks/verifyBlocksSignatures.ts +13 -3
  263. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +1 -0
  264. package/src/chain/chain.ts +50 -62
  265. package/src/chain/forkChoice/index.ts +3 -2
  266. package/src/chain/initState.ts +6 -100
  267. package/src/chain/interface.ts +6 -10
  268. package/src/chain/lightClient/proofs.ts +0 -2
  269. package/src/chain/opPools/aggregatedAttestationPool.ts +23 -195
  270. package/src/chain/opPools/opPool.ts +13 -15
  271. package/src/chain/prepareNextSlot.ts +3 -34
  272. package/src/chain/produceBlock/produceBlockBody.ts +15 -14
  273. package/src/chain/regen/interface.ts +1 -5
  274. package/src/chain/regen/queued.ts +15 -34
  275. package/src/chain/regen/regen.ts +12 -18
  276. package/src/chain/shufflingCache.ts +67 -50
  277. package/src/chain/stateCache/blockStateCacheImpl.ts +2 -3
  278. package/src/chain/stateCache/fifoBlockStateCache.ts +4 -5
  279. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +9 -15
  280. package/src/chain/stateCache/persistentCheckpointsCache.ts +32 -27
  281. package/src/chain/stateCache/types.ts +5 -10
  282. package/src/chain/validation/aggregateAndProof.ts +12 -0
  283. package/src/chain/validation/attestation.ts +3 -3
  284. package/src/chain/validation/attesterSlashing.ts +14 -2
  285. package/src/chain/validation/blobSidecar.ts +3 -3
  286. package/src/chain/validation/block.ts +6 -2
  287. package/src/chain/validation/blsToExecutionChange.ts +10 -8
  288. package/src/chain/validation/dataColumnSidecar.ts +3 -3
  289. package/src/chain/validation/proposerSlashing.ts +8 -2
  290. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  291. package/src/chain/validation/signatureSets/contributionAndProof.ts +3 -1
  292. package/src/chain/validation/signatureSets/syncCommittee.ts +3 -1
  293. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  294. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -1
  295. package/src/chain/validation/syncCommittee.ts +1 -1
  296. package/src/chain/validation/syncCommitteeContributionAndProof.ts +8 -3
  297. package/src/chain/validation/voluntaryExit.ts +1 -1
  298. package/src/db/beacon.ts +38 -16
  299. package/src/db/buckets.ts +12 -7
  300. package/src/db/interface.ts +2 -13
  301. package/src/db/repositories/checkpointState.ts +3 -19
  302. package/src/db/repositories/index.ts +0 -3
  303. package/src/db/repositories/stateArchive.ts +13 -27
  304. package/src/execution/engine/http.ts +8 -9
  305. package/src/execution/engine/index.ts +1 -1
  306. package/src/execution/engine/interface.ts +1 -1
  307. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  308. package/src/execution/engine/mock.ts +41 -15
  309. package/src/execution/engine/payloadIdCache.ts +1 -1
  310. package/src/execution/engine/types.ts +9 -9
  311. package/src/execution/engine/utils.ts +111 -5
  312. package/src/index.ts +1 -2
  313. package/src/metrics/metrics/lodestar.ts +3 -109
  314. package/src/network/core/events.ts +1 -1
  315. package/src/network/events.ts +7 -1
  316. package/src/network/peers/discover.ts +3 -3
  317. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +1 -1
  318. package/src/node/nodejs.ts +37 -13
  319. package/src/node/notifier.ts +13 -7
  320. package/src/node/options.ts +0 -3
  321. package/src/node/utils/interop/deposits.ts +3 -1
  322. package/src/node/utils/interop/state.ts +1 -1
  323. package/src/node/utils/state.ts +3 -18
  324. package/src/sync/backfill/backfill.ts +2 -9
  325. package/src/sync/backfill/verify.ts +3 -8
  326. package/src/util/sszBytes.ts +1 -1
  327. package/src/util/workerEvents.ts +9 -8
  328. package/lib/chain/genesis/genesis.d.ts +0 -51
  329. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  330. package/lib/chain/genesis/genesis.js +0 -123
  331. package/lib/chain/genesis/genesis.js.map +0 -1
  332. package/lib/chain/genesis/interface.d.ts +0 -13
  333. package/lib/chain/genesis/interface.d.ts.map +0 -1
  334. package/lib/chain/genesis/interface.js +0 -2
  335. package/lib/chain/genesis/interface.js.map +0 -1
  336. package/lib/chain/rewards/attestationsRewards.d.ts +0 -7
  337. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  338. package/lib/chain/rewards/attestationsRewards.js +0 -112
  339. package/lib/chain/rewards/attestationsRewards.js.map +0 -1
  340. package/lib/chain/rewards/blockRewards.d.ts +0 -14
  341. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  342. package/lib/chain/rewards/blockRewards.js +0 -94
  343. package/lib/chain/rewards/blockRewards.js.map +0 -1
  344. package/lib/chain/rewards/syncCommitteeRewards.d.ts +0 -6
  345. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  346. package/lib/chain/rewards/syncCommitteeRewards.js +0 -36
  347. package/lib/chain/rewards/syncCommitteeRewards.js.map +0 -1
  348. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  349. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  350. package/lib/db/repositories/depositDataRoot.js +0 -62
  351. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  352. package/lib/db/repositories/depositEvent.d.ts +0 -13
  353. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  354. package/lib/db/repositories/depositEvent.js +0 -27
  355. package/lib/db/repositories/depositEvent.js.map +0 -1
  356. package/lib/db/repositories/eth1Data.d.ts +0 -13
  357. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  358. package/lib/db/repositories/eth1Data.js +0 -26
  359. package/lib/db/repositories/eth1Data.js.map +0 -1
  360. package/lib/db/single/index.d.ts +0 -3
  361. package/lib/db/single/index.d.ts.map +0 -1
  362. package/lib/db/single/index.js +0 -3
  363. package/lib/db/single/index.js.map +0 -1
  364. package/lib/db/single/preGenesisState.d.ts +0 -16
  365. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  366. package/lib/db/single/preGenesisState.js +0 -29
  367. package/lib/db/single/preGenesisState.js.map +0 -1
  368. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  369. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  370. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  371. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  372. package/lib/eth1/errors.d.ts +0 -66
  373. package/lib/eth1/errors.d.ts.map +0 -1
  374. package/lib/eth1/errors.js +0 -27
  375. package/lib/eth1/errors.js.map +0 -1
  376. package/lib/eth1/eth1DataCache.d.ts +0 -19
  377. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  378. package/lib/eth1/eth1DataCache.js +0 -19
  379. package/lib/eth1/eth1DataCache.js.map +0 -1
  380. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  381. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  382. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  383. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  384. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  385. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  386. package/lib/eth1/eth1DepositsCache.js +0 -119
  387. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  388. package/lib/eth1/index.d.ts +0 -31
  389. package/lib/eth1/index.d.ts.map +0 -1
  390. package/lib/eth1/index.js +0 -71
  391. package/lib/eth1/index.js.map +0 -1
  392. package/lib/eth1/interface.d.ts +0 -74
  393. package/lib/eth1/interface.d.ts.map +0 -1
  394. package/lib/eth1/interface.js +0 -8
  395. package/lib/eth1/interface.js.map +0 -1
  396. package/lib/eth1/options.d.ts +0 -22
  397. package/lib/eth1/options.d.ts.map +0 -1
  398. package/lib/eth1/options.js +0 -8
  399. package/lib/eth1/options.js.map +0 -1
  400. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  401. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  402. package/lib/eth1/provider/eth1Provider.js +0 -147
  403. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  404. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  405. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  406. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  407. package/lib/eth1/provider/jwt.js.map +0 -1
  408. package/lib/eth1/provider/utils.d.ts +0 -65
  409. package/lib/eth1/provider/utils.d.ts.map +0 -1
  410. package/lib/eth1/provider/utils.js +0 -120
  411. package/lib/eth1/provider/utils.js.map +0 -1
  412. package/lib/eth1/stream.d.ts +0 -15
  413. package/lib/eth1/stream.d.ts.map +0 -1
  414. package/lib/eth1/stream.js +0 -54
  415. package/lib/eth1/stream.js.map +0 -1
  416. package/lib/eth1/utils/depositContract.d.ts +0 -14
  417. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  418. package/lib/eth1/utils/depositContract.js +0 -33
  419. package/lib/eth1/utils/depositContract.js.map +0 -1
  420. package/lib/eth1/utils/deposits.d.ts +0 -8
  421. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  422. package/lib/eth1/utils/deposits.js +0 -47
  423. package/lib/eth1/utils/deposits.js.map +0 -1
  424. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  425. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  426. package/lib/eth1/utils/eth1Data.js +0 -77
  427. package/lib/eth1/utils/eth1Data.js.map +0 -1
  428. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  429. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  430. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  431. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  432. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  433. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  434. package/lib/eth1/utils/eth1Vote.js +0 -111
  435. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  436. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  437. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  438. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  439. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  440. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  441. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  442. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  443. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  444. package/src/chain/genesis/genesis.ts +0 -190
  445. package/src/chain/genesis/interface.ts +0 -14
  446. package/src/chain/rewards/attestationsRewards.ts +0 -197
  447. package/src/chain/rewards/blockRewards.ts +0 -150
  448. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  449. package/src/db/repositories/depositDataRoot.ts +0 -80
  450. package/src/db/repositories/depositEvent.ts +0 -32
  451. package/src/db/repositories/eth1Data.ts +0 -33
  452. package/src/db/single/index.ts +0 -2
  453. package/src/db/single/preGenesisState.ts +0 -37
  454. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  455. package/src/eth1/errors.ts +0 -40
  456. package/src/eth1/eth1DataCache.ts +0 -26
  457. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  458. package/src/eth1/eth1DepositsCache.ts +0 -141
  459. package/src/eth1/index.ts +0 -94
  460. package/src/eth1/interface.ts +0 -87
  461. package/src/eth1/options.ts +0 -28
  462. package/src/eth1/provider/eth1Provider.ts +0 -229
  463. package/src/eth1/provider/utils.ts +0 -136
  464. package/src/eth1/stream.ts +0 -75
  465. package/src/eth1/utils/depositContract.ts +0 -37
  466. package/src/eth1/utils/deposits.ts +0 -70
  467. package/src/eth1/utils/eth1Data.ts +0 -100
  468. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  469. package/src/eth1/utils/eth1Vote.ts +0 -142
  470. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  471. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  472. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  473. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  474. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  475. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
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 */
@@ -1,31 +1,15 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
- import {Db, Repository} from "@lodestar/db";
3
- import {BeaconStateAllForks} from "@lodestar/state-transition";
4
- import {ssz} from "@lodestar/types";
2
+ import {BinaryRepository, Db} from "@lodestar/db";
5
3
  import {Bucket, getBucketNameByValue} from "../buckets.js";
6
4
 
7
5
  /**
8
6
  * Store temporary checkpoint states.
9
7
  * We should only put/get binary data from this repository, consumer will load it into an existing state ViewDU object.
10
8
  */
11
- export class CheckpointStateRepository extends Repository<Uint8Array, BeaconStateAllForks> {
9
+ export class CheckpointStateRepository extends BinaryRepository<Uint8Array> {
12
10
  constructor(config: ChainForkConfig, db: Db) {
13
- // Pick some type but won't be used. Casted to any because no type can match `BeaconStateAllForks`
14
- const type = ssz.phase0.BeaconState;
15
11
  const bucket = Bucket.allForks_checkpointState;
16
12
  // biome-ignore lint/suspicious/noExplicitAny: The type is complex to specify a proper override
17
- super(config, db, bucket, type as any, getBucketNameByValue(bucket));
18
- }
19
-
20
- getId(): Uint8Array {
21
- throw Error("CheckpointStateRepository does not work with value");
22
- }
23
-
24
- encodeValue(): Uint8Array {
25
- throw Error("CheckpointStateRepository does not work with value");
26
- }
27
-
28
- decodeValue(): BeaconStateAllForks {
29
- throw Error("CheckpointStateRepository does not work with value");
13
+ super(config, db, bucket, getBucketNameByValue(bucket));
30
14
  }
31
15
  }
@@ -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";
@@ -1,39 +1,25 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
- import {Db, Repository} from "@lodestar/db";
3
- import {BeaconStateAllForks} from "@lodestar/state-transition";
4
- import {Epoch, Root, RootHex, Slot, ssz} from "@lodestar/types";
2
+ import {BinaryRepository, Db} from "@lodestar/db";
3
+ import {Root, RootHex, Slot} from "@lodestar/types";
5
4
  import {bytesToInt, toHex} from "@lodestar/utils";
6
- import {getStateTypeFromBytes} from "../../util/multifork.js";
7
5
  import {Bucket, getBucketNameByValue} from "../buckets.js";
8
6
  import {getRootIndex, getRootIndexKey, storeRootIndex} from "./stateArchiveIndex.js";
9
7
 
10
- export class StateArchiveRepository extends Repository<Slot, BeaconStateAllForks> {
8
+ export type BeaconStateArchive = {
9
+ serialize(): Uint8Array;
10
+ hashTreeRoot(): Root;
11
+ };
12
+
13
+ export class StateArchiveRepository extends BinaryRepository<Slot> {
11
14
  constructor(config: ChainForkConfig, db: Db) {
12
- // Pick some type but won't be used. Casted to any because no type can match `BeaconStateAllForks`
13
- // biome-ignore lint/suspicious/noExplicitAny: We need to use `any` type here
14
- const type = ssz.phase0.BeaconState as any;
15
15
  const bucket = Bucket.allForks_stateArchive;
16
- super(config, db, bucket, type, getBucketNameByValue(bucket));
17
- }
18
-
19
- // Overrides for multi-fork
20
-
21
- encodeValue(value: BeaconStateAllForks): Uint8Array {
22
- return value.serialize();
23
- }
24
-
25
- decodeValue(data: Uint8Array): BeaconStateAllForks {
26
- return getStateTypeFromBytes(this.config, data).deserializeToViewDU(data);
16
+ super(config, db, bucket, getBucketNameByValue(bucket));
27
17
  }
28
18
 
29
19
  // Handle key as slot
30
20
 
31
- async put(key: Slot, value: BeaconStateAllForks): Promise<void> {
32
- await Promise.all([super.put(key, value), storeRootIndex(this.db, key, value.hashTreeRoot())]);
33
- }
34
-
35
- getId(state: BeaconStateAllForks): Epoch {
36
- return state.slot;
21
+ async put(key: Slot, value: BeaconStateArchive): Promise<void> {
22
+ await Promise.all([super.putBinary(key, value.serialize()), storeRootIndex(this.db, key, value.hashTreeRoot())]);
37
23
  }
38
24
 
39
25
  decodeKey(data: Uint8Array): number {
@@ -42,10 +28,10 @@ export class StateArchiveRepository extends Repository<Slot, BeaconStateAllForks
42
28
 
43
29
  // Index Root -> Slot
44
30
 
45
- async getByRoot(stateRoot: Root): Promise<BeaconStateAllForks | null> {
31
+ async getBinaryByRoot(stateRoot: Root): Promise<Uint8Array | null> {
46
32
  const slot = await this.getSlotByRoot(stateRoot);
47
33
  if (slot !== null && Number.isInteger(slot)) {
48
- return this.get(slot);
34
+ return this.getBinary(slot);
49
35
  }
50
36
  return null;
51
37
  }
@@ -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
  /**
@@ -1,4 +1,5 @@
1
1
  import crypto from "node:crypto";
2
+ import {ChainConfig} from "@lodestar/config";
2
3
  import {
3
4
  BLOB_TX_TYPE,
4
5
  BYTES_PER_FIELD_ELEMENT,
@@ -7,11 +8,12 @@ import {
7
8
  ForkPostBellatrix,
8
9
  ForkPostCapella,
9
10
  ForkSeq,
11
+ SLOTS_PER_EPOCH,
10
12
  } from "@lodestar/params";
13
+ import {computeTimeAtSlot} from "@lodestar/state-transition";
11
14
  import {ExecutionPayload, RootHex, bellatrix, deneb, ssz} from "@lodestar/types";
12
15
  import {fromHex, toRootHex} from "@lodestar/utils";
13
16
  import {ZERO_HASH_HEX} from "../../constants/index.js";
14
- import {quantityToNum} from "../../eth1/provider/utils.js";
15
17
  import {INTEROP_BLOCK_HASH} from "../../node/utils/interop/state.js";
16
18
  import {kzgCommitmentToVersionedHash} from "../../util/blobs.js";
17
19
  import {kzg} from "../../util/kzg.js";
@@ -29,20 +31,17 @@ import {
29
31
  serializeExecutionPayload,
30
32
  serializeExecutionRequests,
31
33
  } from "./types.js";
32
- import {JsonRpcBackend} from "./utils.js";
34
+ import {JsonRpcBackend, quantityToNum} from "./utils.js";
33
35
 
34
36
  const INTEROP_GAS_LIMIT = 30e6;
35
37
  const PRUNE_PAYLOAD_ID_AFTER_MS = 5000;
36
38
 
37
39
  export type ExecutionEngineMockOpts = {
38
- genesisBlockHash: string;
40
+ genesisBlockHash?: string;
39
41
  eth1BlockHash?: string;
40
42
  onlyPredefinedResponses?: boolean;
41
- capellaForkTimestamp?: number;
42
- denebForkTimestamp?: number;
43
- electraForkTimestamp?: number;
44
- fuluForkTimestamp?: number;
45
- gloasForkTimestamp?: number;
43
+ genesisTime?: number;
44
+ config?: ChainConfig;
46
45
  };
47
46
 
48
47
  type ExecutionBlock = {
@@ -75,17 +74,21 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
75
74
  /** Preparing payloads to be retrieved via engine_getPayloadV1 */
76
75
  private readonly preparingPayloads = new Map<number, PreparedPayload>();
77
76
  private readonly payloadsForDeletion = new Map<number, number>();
78
-
79
77
  private readonly predefinedPayloadStatuses = new Map<RootHex, PayloadStatus>();
80
78
 
81
79
  private payloadId = 0;
80
+ private capellaForkTimestamp: number;
81
+ private denebForkTimestamp: number;
82
+ private electraForkTimestamp: number;
83
+ private fuluForkTimestamp: number;
84
+ private gloasForkTimestamp: number;
82
85
 
83
86
  readonly handlers: {
84
87
  [K in keyof EngineApiRpcParamTypes]: (...args: EngineApiRpcParamTypes[K]) => EngineApiRpcReturnTypes[K];
85
88
  };
86
89
 
87
90
  constructor(private readonly opts: ExecutionEngineMockOpts) {
88
- this.validBlocks.set(opts.genesisBlockHash, {
91
+ this.validBlocks.set(opts.genesisBlockHash ?? ZERO_HASH_HEX, {
89
92
  parentHash: ZERO_HASH_HEX,
90
93
  blockHash: ZERO_HASH_HEX,
91
94
  timestamp: 0,
@@ -101,6 +104,29 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
101
104
  blockNumber: 1,
102
105
  });
103
106
 
107
+ const {config} = opts;
108
+
109
+ this.capellaForkTimestamp =
110
+ opts.genesisTime && config
111
+ ? computeTimeAtSlot(config, config.CAPELLA_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
112
+ : Infinity;
113
+ this.denebForkTimestamp =
114
+ opts.genesisTime && config
115
+ ? computeTimeAtSlot(config, config.DENEB_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
116
+ : Infinity;
117
+ this.electraForkTimestamp =
118
+ opts.genesisTime && config
119
+ ? computeTimeAtSlot(config, config.ELECTRA_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
120
+ : Infinity;
121
+ this.fuluForkTimestamp =
122
+ opts.genesisTime && config
123
+ ? computeTimeAtSlot(config, config.FULU_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
124
+ : Infinity;
125
+ this.gloasForkTimestamp =
126
+ opts.genesisTime && config
127
+ ? computeTimeAtSlot(config, config.GLOAS_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
128
+ : Infinity;
129
+
104
130
  this.handlers = {
105
131
  engine_newPayloadV1: this.notifyNewPayload.bind(this),
106
132
  engine_newPayloadV2: this.notifyNewPayload.bind(this),
@@ -449,11 +475,11 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
449
475
  }
450
476
 
451
477
  private timestampToFork(timestamp: number): ForkPostBellatrix {
452
- if (timestamp >= (this.opts.gloasForkTimestamp ?? Infinity)) return ForkName.gloas;
453
- if (timestamp >= (this.opts.fuluForkTimestamp ?? Infinity)) return ForkName.fulu;
454
- if (timestamp >= (this.opts.electraForkTimestamp ?? Infinity)) return ForkName.electra;
455
- if (timestamp >= (this.opts.denebForkTimestamp ?? Infinity)) return ForkName.deneb;
456
- if (timestamp >= (this.opts.capellaForkTimestamp ?? Infinity)) return ForkName.capella;
478
+ if (timestamp >= this.gloasForkTimestamp) return ForkName.gloas;
479
+ if (timestamp >= this.fuluForkTimestamp) return ForkName.fulu;
480
+ if (timestamp >= this.electraForkTimestamp) return ForkName.electra;
481
+ if (timestamp >= this.denebForkTimestamp) return ForkName.deneb;
482
+ if (timestamp >= this.capellaForkTimestamp) return ForkName.capella;
457
483
  return ForkName.bellatrix;
458
484
  }
459
485
  }
@@ -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} 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,