@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
@@ -1308,33 +1308,19 @@ export function createLodestarMetrics(
1308
1308
  name: "lodestar_shuffling_cache_miss_count",
1309
1309
  help: "Count of shuffling cache miss",
1310
1310
  }),
1311
- shufflingBuiltMultipleTimes: register.gauge({
1312
- name: "lodestar_shuffling_cache_recalculated_shuffling_count",
1313
- help: "Count of shuffling that were build multiple times",
1314
- }),
1315
- shufflingPromiseNotResolvedAndThrownAway: register.gauge({
1316
- name: "lodestar_shuffling_cache_promise_not_resolved_and_thrown_away_count",
1317
- help: "Count of shuffling cache promises that were discarded and the shuffling was built synchronously",
1311
+ shufflingSetMultipleTimes: register.gauge({
1312
+ name: "lodestar_shuffling_cache_set_multiple_times_count",
1313
+ help: "Count of shuffling that were set multiple times",
1318
1314
  }),
1319
1315
  shufflingPromiseNotResolved: register.gauge({
1320
1316
  name: "lodestar_shuffling_cache_promise_not_resolved_count",
1321
1317
  help: "Count of shuffling cache promises that were requested before the promise was resolved",
1322
1318
  }),
1323
- nextShufflingNotOnEpochCache: register.gauge({
1324
- name: "lodestar_shuffling_cache_next_shuffling_not_on_epoch_cache",
1325
- help: "The next shuffling was not on the epoch cache before the epoch transition",
1326
- }),
1327
1319
  shufflingPromiseResolutionTime: register.histogram({
1328
1320
  name: "lodestar_shuffling_cache_promise_resolution_time_seconds",
1329
1321
  help: "Time from promise insertion until promise resolution when shuffling was ready in seconds",
1330
1322
  buckets: [0.5, 1, 1.5, 2],
1331
1323
  }),
1332
- shufflingCalculationTime: register.histogram<{source: "build" | "getSync"}>({
1333
- name: "lodestar_shuffling_cache_shuffling_calculation_time_seconds",
1334
- help: "Run time of shuffling calculation",
1335
- buckets: [0.5, 0.75, 1, 1.25, 1.5],
1336
- labelNames: ["source"],
1337
- }),
1338
1324
  },
1339
1325
 
1340
1326
  seenCache: {
@@ -1619,98 +1605,6 @@ export function createLodestarMetrics(
1619
1605
  }),
1620
1606
  },
1621
1607
 
1622
- eth1: {
1623
- depositTrackerIsCaughtup: register.gauge({
1624
- name: "lodestar_eth1_deposit_tracker_is_caughtup",
1625
- help: "Eth1 deposit is caught up 0=false 1=true",
1626
- }),
1627
- depositTrackerUpdateErrors: register.gauge({
1628
- name: "lodestar_eth1_deposit_tracker_update_errors_total",
1629
- help: "Eth1 deposit update loop errors total",
1630
- }),
1631
- remoteHighestBlock: register.gauge({
1632
- name: "lodestar_eth1_remote_highest_block",
1633
- help: "Eth1 current highest block number",
1634
- }),
1635
- depositEventsFetched: register.gauge({
1636
- name: "lodestar_eth1_deposit_events_fetched_total",
1637
- help: "Eth1 deposit events fetched total",
1638
- }),
1639
- lastProcessedDepositBlockNumber: register.gauge({
1640
- name: "lodestar_eth1_last_processed_deposit_block_number",
1641
- help: "Eth1 deposit tracker lastProcessedDepositBlockNumber",
1642
- }),
1643
- blocksFetched: register.gauge({
1644
- name: "lodestar_eth1_blocks_fetched_total",
1645
- help: "Eth1 blocks fetched total",
1646
- }),
1647
- lastFetchedBlockBlockNumber: register.gauge({
1648
- name: "lodestar_eth1_last_fetched_block_block_number",
1649
- help: "Eth1 deposit tracker last fetched block's block number",
1650
- }),
1651
- lastFetchedBlockTimestamp: register.gauge({
1652
- name: "lodestar_eth1_last_fetched_block_timestamp",
1653
- help: "Eth1 deposit tracker last fetched block's timestamp",
1654
- }),
1655
- eth1FollowDistanceSecondsConfig: register.gauge({
1656
- name: "lodestar_eth1_follow_distance_seconds_config",
1657
- help: "Constant with value = SECONDS_PER_ETH1_BLOCK * ETH1_FOLLOW_DISTANCE",
1658
- }),
1659
- eth1FollowDistanceDynamic: register.gauge({
1660
- name: "lodestar_eth1_follow_distance_dynamic",
1661
- help: "Eth1 dynamic follow distance changed by the deposit tracker if blocks are slow",
1662
- }),
1663
- eth1GetBlocksBatchSizeDynamic: register.gauge({
1664
- name: "lodestar_eth1_blocks_batch_size_dynamic",
1665
- help: "Dynamic batch size to fetch blocks",
1666
- }),
1667
- eth1GetLogsBatchSizeDynamic: register.gauge({
1668
- name: "lodestar_eth1_logs_batch_size_dynamic",
1669
- help: "Dynamic batch size to fetch deposit logs",
1670
- }),
1671
- },
1672
-
1673
- eth1HttpClient: {
1674
- requestTime: register.histogram<{routeId: string}>({
1675
- name: "lodestar_eth1_http_client_request_time_seconds",
1676
- help: "eth1 JsonHttpClient - histogram or roundtrip request times",
1677
- labelNames: ["routeId"],
1678
- // Provide max resolution on problematic values around 1 second
1679
- buckets: [0.1, 0.5, 1, 2, 5, 15],
1680
- }),
1681
- streamTime: register.histogram<{routeId: string}>({
1682
- name: "lodestar_eth1_http_client_stream_time_seconds",
1683
- help: "eth1 JsonHttpClient - streaming time by routeId",
1684
- labelNames: ["routeId"],
1685
- // Provide max resolution on problematic values around 1 second
1686
- buckets: [0.1, 0.5, 1, 2, 5, 15],
1687
- }),
1688
- requestErrors: register.gauge<{routeId: string}>({
1689
- name: "lodestar_eth1_http_client_request_errors_total",
1690
- help: "eth1 JsonHttpClient - total count of request errors",
1691
- labelNames: ["routeId"],
1692
- }),
1693
- retryCount: register.gauge<{routeId: string}>({
1694
- name: "lodestar_eth1_http_client_request_retries_total",
1695
- help: "eth1 JsonHttpClient - total count of request retries",
1696
- labelNames: ["routeId"],
1697
- }),
1698
- requestUsedFallbackUrl: register.gauge<{routeId: string}>({
1699
- name: "lodestar_eth1_http_client_request_used_fallback_url_total",
1700
- help: "eth1 JsonHttpClient - total count of requests on fallback url(s)",
1701
- labelNames: ["routeId"],
1702
- }),
1703
- activeRequests: register.gauge<{routeId: string}>({
1704
- name: "lodestar_eth1_http_client_active_requests",
1705
- help: "eth1 JsonHttpClient - current count of active requests",
1706
- labelNames: ["routeId"],
1707
- }),
1708
- configUrlsCount: register.gauge({
1709
- name: "lodestar_eth1_http_client_config_urls_count",
1710
- help: "eth1 JsonHttpClient - static config urls count",
1711
- }),
1712
- },
1713
-
1714
1608
  executionEnginerHttpClient: {
1715
1609
  requestTime: register.histogram<{routeId: string}>({
1716
1610
  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,
@@ -1,4 +1,4 @@
1
- import type {PeerId, PeerInfo, PrivateKey} from "@libp2p/interface";
1
+ import type {PeerId, PeerInfo, PendingDial, PrivateKey} from "@libp2p/interface";
2
2
  import {Multiaddr} from "@multiformats/multiaddr";
3
3
  import {ENR} from "@chainsafe/enr";
4
4
  import {BeaconConfig} from "@lodestar/config";
@@ -217,7 +217,7 @@ export class PeerDiscovery {
217
217
  const pendingDials = new Set(
218
218
  this.libp2p.services.components.connectionManager
219
219
  .getDialQueue()
220
- .map((pendingDial) => pendingDial.peerId?.toString())
220
+ .map((pendingDial: PendingDial) => pendingDial.peerId?.toString())
221
221
  );
222
222
  for (const [id, cachedENR] of this.cachedENRs.entries()) {
223
223
  if (
@@ -458,7 +458,7 @@ export class PeerDiscovery {
458
458
  if (
459
459
  this.libp2p.services.components.connectionManager
460
460
  .getDialQueue()
461
- .find((pendingDial) => pendingDial.peerId?.equals(peerId))
461
+ .find((pendingDial: PendingDial) => pendingDial.peerId?.equals(peerId))
462
462
  ) {
463
463
  return DiscoveredPeerStatus.already_dialing;
464
464
  }
@@ -55,7 +55,7 @@ export async function handleColumnSidecarUnavailability({
55
55
  const blobsCount = getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(chain.config, blockBytes);
56
56
 
57
57
  // There are zero blobs for that column index, so we can safely return without any error
58
- if (blobsCount > 0) return;
58
+ if (blobsCount === 0) return;
59
59
 
60
60
  // There are blobs for that column index so we should have synced for it
61
61
  // We need to inform to peers that we don't have that expected data
@@ -2,18 +2,19 @@ import {setMaxListeners} from "node:events";
2
2
  import {PrivateKey} from "@libp2p/interface";
3
3
  import {Registry} from "prom-client";
4
4
  import {hasher} from "@chainsafe/persistent-merkle-tree";
5
+ import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
5
6
  import {BeaconApiMethods} from "@lodestar/api/beacon/server";
6
7
  import {BeaconConfig} from "@lodestar/config";
7
8
  import type {LoggerNode} from "@lodestar/logger/node";
8
- import {BeaconStateAllForks} from "@lodestar/state-transition";
9
+ import {ZERO_HASH_HEX} from "@lodestar/params";
10
+ import {CachedBeaconStateAllForks, Index2PubkeyCache, isExecutionCachedStateType} from "@lodestar/state-transition";
9
11
  import {phase0} from "@lodestar/types";
10
- import {sleep} from "@lodestar/utils";
12
+ import {sleep, toRootHex} from "@lodestar/utils";
11
13
  import {ProcessShutdownCallback} from "@lodestar/validator";
12
14
  import {BeaconRestApiServer, getApi} from "../api/index.js";
13
15
  import {BeaconChain, IBeaconChain, initBeaconMetrics} from "../chain/index.js";
14
16
  import {ValidatorMonitor, createValidatorMonitor} from "../chain/validatorMonitor.js";
15
17
  import {IBeaconDb} from "../db/index.js";
16
- import {initializeEth1ForBlockProduction} from "../eth1/index.js";
17
18
  import {initializeExecutionBuilder, initializeExecutionEngine} from "../execution/index.js";
18
19
  import {HttpMetricsServer, Metrics, createMetrics, getHttpMetricsServer} from "../metrics/index.js";
19
20
  import {MonitoringService} from "../monitoring/index.js";
@@ -46,13 +47,15 @@ export type BeaconNodeModules = {
46
47
  export type BeaconNodeInitModules = {
47
48
  opts: IBeaconNodeOptions;
48
49
  config: BeaconConfig;
50
+ pubkey2index: PubkeyIndexMap;
51
+ index2pubkey: Index2PubkeyCache;
49
52
  db: IBeaconDb;
50
53
  logger: LoggerNode;
51
54
  processShutdownCallback: ProcessShutdownCallback;
52
55
  privateKey: PrivateKey;
53
56
  dataDir: string;
54
57
  peerStoreDir?: string;
55
- anchorState: BeaconStateAllForks;
58
+ anchorState: CachedBeaconStateAllForks;
56
59
  isAnchorStateFinalized: boolean;
57
60
  wsCheckpoint?: phase0.Checkpoint;
58
61
  metricsRegistries?: Registry[];
@@ -68,7 +71,6 @@ enum LoggerModule {
68
71
  api = "api",
69
72
  backfill = "backfill",
70
73
  chain = "chain",
71
- eth1 = "eth1",
72
74
  execution = "execution",
73
75
  metrics = "metrics",
74
76
  monitoring = "monitoring",
@@ -148,6 +150,8 @@ export class BeaconNode {
148
150
  static async init<T extends BeaconNode = BeaconNode>({
149
151
  opts,
150
152
  config,
153
+ pubkey2index,
154
+ index2pubkey,
151
155
  db,
152
156
  logger,
153
157
  processShutdownCallback,
@@ -199,6 +203,17 @@ export class BeaconNode {
199
203
  // TODO: Should this call be awaited?
200
204
  await db.pruneHotDb();
201
205
 
206
+ // Delete deprecated eth1 data to free up disk space for users
207
+ logger.debug("Deleting deprecated eth1 data from database");
208
+ const startTime = Date.now();
209
+ db.deleteDeprecatedEth1Data()
210
+ .then(() => {
211
+ logger.debug("Deleted deprecated eth1 data", {durationMs: Date.now() - startTime});
212
+ })
213
+ .catch((e) => {
214
+ logger.error("Failed to delete deprecated eth1 data", {}, e);
215
+ });
216
+
202
217
  const monitoring = opts.monitoring.endpoint
203
218
  ? new MonitoringService(
204
219
  "beacon",
@@ -207,10 +222,26 @@ export class BeaconNode {
207
222
  )
208
223
  : null;
209
224
 
225
+ let executionEngineOpts = opts.executionEngine;
226
+ if (opts.executionEngine.mode === "mock") {
227
+ const eth1BlockHash = isExecutionCachedStateType(anchorState)
228
+ ? toRootHex(anchorState.latestExecutionPayloadHeader.blockHash)
229
+ : undefined;
230
+ executionEngineOpts = {
231
+ ...opts.executionEngine,
232
+ genesisBlockHash: ZERO_HASH_HEX,
233
+ eth1BlockHash,
234
+ genesisTime: anchorState.genesisTime,
235
+ config,
236
+ };
237
+ }
238
+
210
239
  const chain = new BeaconChain(opts.chain, {
211
240
  privateKey,
212
241
  config,
213
242
  clock,
243
+ pubkey2index,
244
+ index2pubkey,
214
245
  dataDir,
215
246
  db,
216
247
  dbName: opts.db.name,
@@ -220,14 +251,7 @@ export class BeaconNode {
220
251
  validatorMonitor,
221
252
  anchorState,
222
253
  isAnchorStateFinalized,
223
- eth1: initializeEth1ForBlockProduction(opts.eth1, {
224
- config,
225
- db,
226
- metrics,
227
- logger: logger.child({module: LoggerModule.eth1}),
228
- signal,
229
- }),
230
- executionEngine: initializeExecutionEngine(opts.executionEngine, {
254
+ executionEngine: initializeExecutionEngine(executionEngineOpts, {
231
255
  metrics,
232
256
  signal,
233
257
  logger: logger.child({module: LoggerModule.execution}),
@@ -6,6 +6,7 @@ import {
6
6
  computeEpochAtSlot,
7
7
  computeStartSlotAtEpoch,
8
8
  isExecutionCachedStateType,
9
+ isMergeTransitionComplete,
9
10
  } from "@lodestar/state-transition";
10
11
  import {Epoch} from "@lodestar/types";
11
12
  import {ErrorAborted, Logger, prettyBytes, prettyBytesShort, sleep} from "@lodestar/utils";
@@ -171,13 +172,18 @@ function getHeadExecutionInfo(
171
172
 
172
173
  // Add execution status to notifier only if head is on/post bellatrix
173
174
  if (isExecutionCachedStateType(headState)) {
174
- const executionPayloadHashInfo =
175
- headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadBlockHash : "empty";
176
- const executionPayloadNumberInfo =
177
- headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadNumber : NaN;
178
- return [
179
- `exec-block: ${executionStatusStr}(${executionPayloadNumberInfo} ${prettyBytesShort(executionPayloadHashInfo)})`,
180
- ];
175
+ if (isMergeTransitionComplete(headState)) {
176
+ const executionPayloadHashInfo =
177
+ headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadBlockHash : "empty";
178
+ const executionPayloadNumberInfo =
179
+ headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadNumber : NaN;
180
+ return [
181
+ `exec-block: ${executionStatusStr}(${executionPayloadNumberInfo} ${prettyBytesShort(
182
+ executionPayloadHashInfo
183
+ )})`,
184
+ ];
185
+ }
186
+ return [`exec-block: ${executionStatusStr}`];
181
187
  }
182
188
 
183
189
  return [];
@@ -2,7 +2,6 @@ import {ApiOptions, defaultApiOptions} from "../api/options.js";
2
2
  import {ArchiveMode, DEFAULT_ARCHIVE_MODE, IChainOptions, defaultChainOptions} from "../chain/options.js";
3
3
  import {ValidatorMonitorOpts, defaultValidatorMonitorOpts} from "../chain/validatorMonitor.js";
4
4
  import {DatabaseOptions, defaultDbOptions} from "../db/options.js";
5
- import {Eth1Options, defaultEth1Options} from "../eth1/options.js";
6
5
  import {
7
6
  ExecutionBuilderOpts,
8
7
  ExecutionEngineOpts,
@@ -26,7 +25,6 @@ export interface IBeaconNodeOptions {
26
25
  api: ApiOptions;
27
26
  chain: IChainOptions;
28
27
  db: DatabaseOptions;
29
- eth1: Eth1Options;
30
28
  executionEngine: ExecutionEngineOpts;
31
29
  executionBuilder: ExecutionBuilderOpts;
32
30
  metrics: MetricsOptions;
@@ -40,7 +38,6 @@ export const defaultOptions: IBeaconNodeOptions = {
40
38
  api: defaultApiOptions,
41
39
  chain: defaultChainOptions,
42
40
  db: defaultDbOptions,
43
- eth1: defaultEth1Options,
44
41
  executionEngine: defaultExecutionEngineOpts,
45
42
  executionBuilder: defaultExecutionBuilderOpts,
46
43
  metrics: defaultMetricsOptions,
@@ -1,5 +1,6 @@
1
1
  import {digest} from "@chainsafe/as-sha256";
2
2
  import {Tree, toGindex} from "@chainsafe/persistent-merkle-tree";
3
+ import {ByteVectorType, CompositeViewDU, ListCompositeType} from "@chainsafe/ssz";
3
4
  import {ChainConfig} from "@lodestar/config";
4
5
  import {
5
6
  BLS_WITHDRAWAL_PREFIX,
@@ -9,7 +10,8 @@ import {
9
10
  } from "@lodestar/params";
10
11
  import {ZERO_HASH, computeDomain, computeSigningRoot, interopSecretKeys} from "@lodestar/state-transition";
11
12
  import {phase0, ssz} from "@lodestar/types";
12
- import {DepositTree} from "../../../db/repositories/depositDataRoot.js";
13
+
14
+ export type DepositTree = CompositeViewDU<ListCompositeType<ByteVectorType>>;
13
15
 
14
16
  /**
15
17
  * Compute and return deposit data from other validators.
@@ -6,7 +6,7 @@ import {
6
6
  initializeBeaconStateFromEth1,
7
7
  } from "@lodestar/state-transition";
8
8
  import {Bytes32, TimeSeconds, phase0, ssz, sszTypesFor} from "@lodestar/types";
9
- import {DepositTree} from "../../../db/repositories/depositDataRoot.js";
9
+ import {DepositTree} from "./deposits.js";
10
10
 
11
11
  export const INTEROP_BLOCK_HASH = Buffer.alloc(32, "B");
12
12
  export const INTEROP_TIMESTAMP = Math.pow(2, 40);
@@ -1,7 +1,6 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
2
  import {BeaconStateAllForks} from "@lodestar/state-transition";
3
- import {phase0, ssz} from "@lodestar/types";
4
- import {IBeaconDb} from "../../db/index.js";
3
+ import {ssz} from "@lodestar/types";
5
4
  import {interopDeposits} from "./interop/deposits.js";
6
5
  import {InteropStateOpts, getInteropState} from "./interop/state.js";
7
6
 
@@ -12,26 +11,12 @@ export function initDevState(
12
11
  config: ChainForkConfig,
13
12
  validatorCount: number,
14
13
  interopStateOpts: InteropStateOpts
15
- ): {deposits: phase0.Deposit[]; state: BeaconStateAllForks} {
14
+ ): BeaconStateAllForks {
16
15
  const deposits = interopDeposits(
17
16
  config,
18
17
  ssz.phase0.DepositDataRootList.defaultViewDU(),
19
18
  validatorCount,
20
19
  interopStateOpts
21
20
  );
22
- const state = getInteropState(config, interopStateOpts, deposits);
23
- return {deposits, state};
24
- }
25
-
26
- export async function writeDeposits(db: IBeaconDb, deposits: phase0.Deposit[]): Promise<void> {
27
- for (let i = 0; i < deposits.length; i++) {
28
- await Promise.all([
29
- db.depositEvent.put(i, {
30
- blockNumber: i,
31
- index: i,
32
- depositData: deposits[i].data,
33
- }),
34
- db.depositDataRoot.put(i, ssz.phase0.DepositData.hashTreeRoot(deposits[i].data)),
35
- ]);
36
- }
21
+ return getInteropState(config, interopStateOpts, deposits);
37
22
  }
@@ -750,9 +750,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
750
750
 
751
751
  // GENESIS_SLOT doesn't has valid signature
752
752
  if (anchorBlock.message.slot === GENESIS_SLOT) return;
753
- await verifyBlockProposerSignature(this.chain.index2pubkey, this.chain.bls, this.chain.getHeadState(), [
754
- anchorBlock,
755
- ]);
753
+ await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, [anchorBlock]);
756
754
 
757
755
  // We can write to the disk if this is ahead of prevFinalizedCheckpointBlock otherwise
758
756
  // we will need to go make checks on the top of sync loop before writing as it might
@@ -817,12 +815,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
817
815
 
818
816
  // If any of the block's proposer signature fail, we can't trust this peer at all
819
817
  if (verifiedBlocks.length > 0) {
820
- await verifyBlockProposerSignature(
821
- this.chain.index2pubkey,
822
- this.chain.bls,
823
- this.chain.getHeadState(),
824
- verifiedBlocks
825
- );
818
+ await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, verifiedBlocks);
826
819
 
827
820
  // This is bad, like super bad. Abort the backfill
828
821
  if (!nextAnchor)
@@ -1,11 +1,6 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {GENESIS_SLOT} from "@lodestar/params";
3
- import {
4
- CachedBeaconStateAllForks,
5
- ISignatureSet,
6
- Index2PubkeyCache,
7
- getBlockProposerSignatureSet,
8
- } from "@lodestar/state-transition";
3
+ import {ISignatureSet, Index2PubkeyCache, getBlockProposerSignatureSet} from "@lodestar/state-transition";
9
4
  import {Root, SignedBeaconBlock, Slot, ssz} from "@lodestar/types";
10
5
  import {IBlsVerifier} from "../../chain/bls/index.js";
11
6
  import {BackfillSyncError, BackfillSyncErrorCode} from "./errors.js";
@@ -46,15 +41,15 @@ export function verifyBlockSequence(
46
41
  }
47
42
 
48
43
  export async function verifyBlockProposerSignature(
44
+ config: BeaconConfig,
49
45
  index2pubkey: Index2PubkeyCache,
50
46
  bls: IBlsVerifier,
51
- state: CachedBeaconStateAllForks,
52
47
  blocks: SignedBeaconBlock[]
53
48
  ): Promise<void> {
54
49
  if (blocks.length === 1 && blocks[0].message.slot === GENESIS_SLOT) return;
55
50
  const signatures = blocks.reduce((sigs: ISignatureSet[], block) => {
56
51
  // genesis block doesn't have valid signature
57
- if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(index2pubkey, state, block));
52
+ if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(config, index2pubkey, block));
58
53
  return sigs;
59
54
  }, []);
60
55
 
@@ -479,7 +479,7 @@ export function getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(
479
479
  blockBytes: Uint8Array
480
480
  ): number {
481
481
  const slot = getSlotFromSignedBeaconBlockSerialized(blockBytes);
482
- if (!slot) throw new Error("Can not parse the slot from block bytes");
482
+ if (slot === null) throw new Error("Can not parse the slot from block bytes");
483
483
 
484
484
  if (config.getForkSeq(slot) < ForkSeq.deneb) return 0;
485
485
 
@@ -1,9 +1,11 @@
1
1
  import {MessagePort, Worker} from "node:worker_threads";
2
+ import {Message} from "@libp2p/interface";
2
3
  import {Thread} from "@chainsafe/threads";
3
4
  import {Logger} from "@lodestar/logger";
4
5
  import {sleep} from "@lodestar/utils";
5
6
  import {Metrics} from "../metrics/metrics.js";
6
7
  import {NetworkCoreWorkerMetrics} from "../network/core/metrics.js";
8
+ import {EventDirection, NetworkEvent} from "../network/events.js";
7
9
  import {StrictEventEmitterSingleArg} from "./strictEvents.js";
8
10
 
9
11
  const NANO_TO_SECOND_CONVERSION = 1e9;
@@ -15,13 +17,6 @@ export type WorkerBridgeEvent<EventData> = {
15
17
  data: EventData[keyof EventData];
16
18
  };
17
19
 
18
- export enum EventDirection {
19
- workerToMain,
20
- mainToWorker,
21
- /** Event not emitted through worker boundary */
22
- none,
23
- }
24
-
25
20
  /**
26
21
  * Bridges events from worker to main thread
27
22
  * Each event can only have one direction:
@@ -63,7 +58,13 @@ export function wireEventsOnWorkerThread<EventData>(
63
58
  posted: process.hrtime(),
64
59
  data,
65
60
  };
66
- parentPort.postMessage(workerEvent);
61
+ let transferList: ArrayBuffer[] | undefined = undefined;
62
+ if (eventName === NetworkEvent.pendingGossipsubMessage) {
63
+ const payload = data as {msg: Message};
64
+ // Transfer the underlying ArrayBuffer to avoid copy for PendingGossipsubMessage
65
+ transferList = [payload.msg.data.buffer as ArrayBuffer];
66
+ }
67
+ parentPort.postMessage(workerEvent, transferList);
67
68
  });
68
69
  }
69
70
  }
@@ -1,51 +0,0 @@
1
- import { ChainForkConfig } from "@lodestar/config";
2
- import { BeaconStateAllForks, CachedBeaconStateAllForks } from "@lodestar/state-transition";
3
- import { Logger } from "@lodestar/utils";
4
- import { DepositTree } from "../../db/repositories/depositDataRoot.js";
5
- import { IEth1Provider } from "../../eth1/index.js";
6
- import { GenesisResult, IGenesisBuilder } from "./interface.js";
7
- export type GenesisBuilderKwargs = {
8
- config: ChainForkConfig;
9
- eth1Provider: IEth1Provider;
10
- logger: Logger;
11
- /** Use to restore pending progress */
12
- pendingStatus?: {
13
- state: BeaconStateAllForks;
14
- depositTree: DepositTree;
15
- lastProcessedBlockNumber: number;
16
- };
17
- signal?: AbortSignal;
18
- maxBlocksPerPoll?: number;
19
- };
20
- export declare class GenesisBuilder implements IGenesisBuilder {
21
- readonly state: CachedBeaconStateAllForks;
22
- readonly depositTree: DepositTree;
23
- /** Is null if no block has been processed yet */
24
- lastProcessedBlockNumber: number | null;
25
- private readonly config;
26
- private readonly eth1Provider;
27
- private readonly logger;
28
- private readonly signal?;
29
- private readonly eth1Params;
30
- private readonly depositCache;
31
- private readonly fromBlock;
32
- private readonly logEvery;
33
- private lastLog;
34
- /** Current count of active validators in the state */
35
- private activatedValidatorCount;
36
- constructor({ config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll }: GenesisBuilderKwargs);
37
- /**
38
- * Get eth1 deposit events and blocks and apply to this.state until we found genesis.
39
- */
40
- waitForGenesis(): Promise<GenesisResult>;
41
- /**
42
- * First phase of waiting for genesis.
43
- * Stream deposits events in batches as big as possible without querying block data
44
- * @returns Block number at which there are enough active validators is state for genesis
45
- */
46
- private waitForGenesisValidators;
47
- private applyDeposits;
48
- /** Throttle genesis generation status log to prevent spamming */
49
- private throttledLog;
50
- }
51
- //# sourceMappingURL=genesis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../../src/chain/genesis/genesis.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAS1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,mBAAmB,CAAC;QAC3B,WAAW,EAAE,WAAW,CAAC;QACzB,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IAEF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,cAAe,YAAW,eAAe;IAEpD,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,iDAAiD;IACjD,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,OAAO,CAAK;IACpB,sDAAsD;IACtD,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAC,EAAE,oBAAoB;IAmCzG;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAsC9C;;;;OAIG;YACW,wBAAwB;IAoBtC,OAAO,CAAC,aAAa;IAuBrB,iEAAiE;IACjE,OAAO,CAAC,YAAY;CAMrB"}