@lodestar/beacon-node 1.38.0 → 1.39.0-dev.100ab480bb

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 (393) hide show
  1. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  3. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/state/index.js +4 -5
  5. package/lib/api/impl/beacon/state/index.js.map +1 -1
  6. package/lib/api/impl/validator/index.js +1 -1
  7. package/lib/api/impl/validator/index.js.map +1 -1
  8. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  9. package/lib/chain/blocks/verifyBlock.js +1 -21
  10. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  11. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -6
  12. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  13. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +9 -128
  14. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  15. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +3 -2
  16. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  17. package/lib/chain/blocks/verifyBlocksSignatures.js +3 -2
  18. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  19. package/lib/chain/chain.d.ts +8 -12
  20. package/lib/chain/chain.d.ts.map +1 -1
  21. package/lib/chain/chain.js +25 -59
  22. package/lib/chain/chain.js.map +1 -1
  23. package/lib/chain/initState.d.ts +1 -14
  24. package/lib/chain/initState.d.ts.map +1 -1
  25. package/lib/chain/initState.js +1 -62
  26. package/lib/chain/initState.js.map +1 -1
  27. package/lib/chain/interface.d.ts +4 -9
  28. package/lib/chain/interface.d.ts.map +1 -1
  29. package/lib/chain/interface.js.map +1 -1
  30. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
  31. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  32. package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
  33. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  34. package/lib/chain/opPools/opPool.d.ts +3 -0
  35. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  36. package/lib/chain/opPools/opPool.js +9 -8
  37. package/lib/chain/opPools/opPool.js.map +1 -1
  38. package/lib/chain/options.d.ts +0 -4
  39. package/lib/chain/options.d.ts.map +1 -1
  40. package/lib/chain/options.js +0 -2
  41. package/lib/chain/options.js.map +1 -1
  42. package/lib/chain/prepareNextSlot.d.ts +0 -4
  43. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  44. package/lib/chain/prepareNextSlot.js +2 -22
  45. package/lib/chain/prepareNextSlot.js.map +1 -1
  46. package/lib/chain/produceBlock/produceBlockBody.d.ts +2 -22
  47. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  48. package/lib/chain/produceBlock/produceBlockBody.js +32 -98
  49. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  50. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
  51. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  52. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
  53. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  54. package/lib/chain/validation/aggregateAndProof.js +9 -0
  55. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  56. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  57. package/lib/chain/validation/attesterSlashing.js +2 -2
  58. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  59. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  60. package/lib/chain/validation/blobSidecar.js +2 -2
  61. package/lib/chain/validation/blobSidecar.js.map +1 -1
  62. package/lib/chain/validation/block.js +1 -1
  63. package/lib/chain/validation/block.js.map +1 -1
  64. package/lib/chain/validation/blsToExecutionChange.js +1 -1
  65. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  66. package/lib/chain/validation/dataColumnSidecar.js +2 -2
  67. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  68. package/lib/chain/validation/proposerSlashing.js +1 -1
  69. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  70. package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
  71. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  72. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +3 -2
  73. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  74. package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -4
  75. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  76. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +3 -2
  77. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  78. package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
  79. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  80. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
  81. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  82. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
  83. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  84. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +3 -2
  85. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  86. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +2 -3
  87. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  88. package/lib/chain/validation/syncCommittee.js +1 -1
  89. package/lib/chain/validation/syncCommittee.js.map +1 -1
  90. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  91. package/lib/chain/validation/syncCommitteeContributionAndProof.js +5 -4
  92. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  93. package/lib/chain/validation/voluntaryExit.js +1 -1
  94. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  95. package/lib/db/beacon.d.ts +3 -7
  96. package/lib/db/beacon.d.ts.map +1 -1
  97. package/lib/db/beacon.js +33 -12
  98. package/lib/db/beacon.js.map +1 -1
  99. package/lib/db/buckets.d.ts +12 -6
  100. package/lib/db/buckets.d.ts.map +1 -1
  101. package/lib/db/buckets.js +6 -1
  102. package/lib/db/buckets.js.map +1 -1
  103. package/lib/db/interface.d.ts +2 -7
  104. package/lib/db/interface.d.ts.map +1 -1
  105. package/lib/db/repositories/index.d.ts +0 -3
  106. package/lib/db/repositories/index.d.ts.map +1 -1
  107. package/lib/db/repositories/index.js +0 -3
  108. package/lib/db/repositories/index.js.map +1 -1
  109. package/lib/execution/engine/http.d.ts +5 -13
  110. package/lib/execution/engine/http.d.ts.map +1 -1
  111. package/lib/execution/engine/http.js +6 -15
  112. package/lib/execution/engine/http.js.map +1 -1
  113. package/lib/execution/engine/index.d.ts.map +1 -1
  114. package/lib/execution/engine/index.js +1 -1
  115. package/lib/execution/engine/index.js.map +1 -1
  116. package/lib/execution/engine/interface.d.ts +1 -1
  117. package/lib/execution/engine/interface.d.ts.map +1 -1
  118. package/lib/execution/engine/interface.js.map +1 -1
  119. package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
  120. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
  121. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
  122. package/lib/execution/engine/jwt.d.ts.map +1 -0
  123. package/lib/execution/engine/jwt.js.map +1 -0
  124. package/lib/execution/engine/mock.d.ts +2 -6
  125. package/lib/execution/engine/mock.d.ts.map +1 -1
  126. package/lib/execution/engine/mock.js +4 -15
  127. package/lib/execution/engine/mock.js.map +1 -1
  128. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  129. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  130. package/lib/execution/engine/types.d.ts +1 -1
  131. package/lib/execution/engine/types.d.ts.map +1 -1
  132. package/lib/execution/engine/types.js +1 -1
  133. package/lib/execution/engine/types.js.map +1 -1
  134. package/lib/execution/engine/utils.d.ts +64 -2
  135. package/lib/execution/engine/utils.d.ts.map +1 -1
  136. package/lib/execution/engine/utils.js +91 -2
  137. package/lib/execution/engine/utils.js.map +1 -1
  138. package/lib/index.d.ts +1 -2
  139. package/lib/index.d.ts.map +1 -1
  140. package/lib/index.js +1 -2
  141. package/lib/index.js.map +1 -1
  142. package/lib/metrics/metrics/lodestar.d.ts +0 -49
  143. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  144. package/lib/metrics/metrics/lodestar.js +0 -134
  145. package/lib/metrics/metrics/lodestar.js.map +1 -1
  146. package/lib/network/core/events.d.ts +1 -1
  147. package/lib/network/core/events.d.ts.map +1 -1
  148. package/lib/network/core/events.js +1 -1
  149. package/lib/network/core/events.js.map +1 -1
  150. package/lib/network/events.d.ts +6 -1
  151. package/lib/network/events.d.ts.map +1 -1
  152. package/lib/network/events.js +7 -1
  153. package/lib/network/events.js.map +1 -1
  154. package/lib/node/nodejs.d.ts +6 -3
  155. package/lib/node/nodejs.d.ts.map +1 -1
  156. package/lib/node/nodejs.js +13 -10
  157. package/lib/node/nodejs.js.map +1 -1
  158. package/lib/node/notifier.d.ts.map +1 -1
  159. package/lib/node/notifier.js +0 -13
  160. package/lib/node/notifier.js.map +1 -1
  161. package/lib/node/options.d.ts +0 -2
  162. package/lib/node/options.d.ts.map +1 -1
  163. package/lib/node/options.js +0 -2
  164. package/lib/node/options.js.map +1 -1
  165. package/lib/node/utils/interop/deposits.d.ts +2 -1
  166. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  167. package/lib/node/utils/interop/deposits.js.map +1 -1
  168. package/lib/node/utils/interop/state.d.ts +1 -1
  169. package/lib/node/utils/interop/state.d.ts.map +1 -1
  170. package/lib/node/utils/state.d.ts +1 -7
  171. package/lib/node/utils/state.d.ts.map +1 -1
  172. package/lib/node/utils/state.js +1 -14
  173. package/lib/node/utils/state.js.map +1 -1
  174. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  175. package/lib/sync/backfill/backfill.js +2 -2
  176. package/lib/sync/backfill/backfill.js.map +1 -1
  177. package/lib/sync/backfill/verify.d.ts +2 -2
  178. package/lib/sync/backfill/verify.d.ts.map +1 -1
  179. package/lib/sync/backfill/verify.js +3 -3
  180. package/lib/sync/backfill/verify.js.map +1 -1
  181. package/lib/util/workerEvents.d.ts +1 -6
  182. package/lib/util/workerEvents.d.ts.map +1 -1
  183. package/lib/util/workerEvents.js +8 -8
  184. package/lib/util/workerEvents.js.map +1 -1
  185. package/package.json +14 -21
  186. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  187. package/src/api/impl/beacon/state/index.ts +4 -5
  188. package/src/api/impl/validator/index.ts +1 -1
  189. package/src/chain/blocks/verifyBlock.ts +3 -24
  190. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -161
  191. package/src/chain/blocks/verifyBlocksSignatures.ts +15 -4
  192. package/src/chain/chain.ts +35 -69
  193. package/src/chain/initState.ts +1 -97
  194. package/src/chain/interface.ts +4 -8
  195. package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
  196. package/src/chain/opPools/opPool.ts +8 -8
  197. package/src/chain/options.ts +0 -6
  198. package/src/chain/prepareNextSlot.ts +2 -29
  199. package/src/chain/produceBlock/produceBlockBody.ts +33 -132
  200. package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
  201. package/src/chain/validation/aggregateAndProof.ts +12 -0
  202. package/src/chain/validation/attesterSlashing.ts +7 -2
  203. package/src/chain/validation/blobSidecar.ts +10 -2
  204. package/src/chain/validation/block.ts +1 -1
  205. package/src/chain/validation/blsToExecutionChange.ts +1 -1
  206. package/src/chain/validation/dataColumnSidecar.ts +6 -1
  207. package/src/chain/validation/proposerSlashing.ts +6 -1
  208. package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
  209. package/src/chain/validation/signatureSets/contributionAndProof.ts +6 -3
  210. package/src/chain/validation/signatureSets/syncCommittee.ts +6 -2
  211. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
  212. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +5 -2
  213. package/src/chain/validation/syncCommittee.ts +1 -1
  214. package/src/chain/validation/syncCommitteeContributionAndProof.ts +10 -6
  215. package/src/chain/validation/voluntaryExit.ts +1 -1
  216. package/src/db/beacon.ts +38 -16
  217. package/src/db/buckets.ts +12 -7
  218. package/src/db/interface.ts +2 -13
  219. package/src/db/repositories/index.ts +0 -3
  220. package/src/execution/engine/http.ts +12 -21
  221. package/src/execution/engine/index.ts +1 -1
  222. package/src/execution/engine/interface.ts +1 -1
  223. package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
  224. package/src/execution/engine/mock.ts +4 -17
  225. package/src/execution/engine/payloadIdCache.ts +1 -1
  226. package/src/execution/engine/types.ts +9 -9
  227. package/src/execution/engine/utils.ts +111 -5
  228. package/src/index.ts +1 -2
  229. package/src/metrics/metrics/lodestar.ts +0 -144
  230. package/src/network/core/events.ts +1 -1
  231. package/src/network/events.ts +7 -1
  232. package/src/node/nodejs.ts +20 -11
  233. package/src/node/notifier.ts +0 -16
  234. package/src/node/options.ts +0 -3
  235. package/src/node/utils/interop/deposits.ts +3 -1
  236. package/src/node/utils/interop/state.ts +1 -1
  237. package/src/node/utils/state.ts +3 -18
  238. package/src/sync/backfill/backfill.ts +14 -2
  239. package/src/sync/backfill/verify.ts +9 -2
  240. package/src/util/workerEvents.ts +9 -8
  241. package/lib/chain/genesis/genesis.d.ts +0 -51
  242. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  243. package/lib/chain/genesis/genesis.js +0 -123
  244. package/lib/chain/genesis/genesis.js.map +0 -1
  245. package/lib/chain/genesis/interface.d.ts +0 -13
  246. package/lib/chain/genesis/interface.d.ts.map +0 -1
  247. package/lib/chain/genesis/interface.js +0 -2
  248. package/lib/chain/genesis/interface.js.map +0 -1
  249. package/lib/chain/rewards/attestationsRewards.d.ts +0 -7
  250. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  251. package/lib/chain/rewards/attestationsRewards.js +0 -112
  252. package/lib/chain/rewards/attestationsRewards.js.map +0 -1
  253. package/lib/chain/rewards/blockRewards.d.ts +0 -14
  254. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  255. package/lib/chain/rewards/blockRewards.js +0 -94
  256. package/lib/chain/rewards/blockRewards.js.map +0 -1
  257. package/lib/chain/rewards/syncCommitteeRewards.d.ts +0 -6
  258. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  259. package/lib/chain/rewards/syncCommitteeRewards.js +0 -37
  260. package/lib/chain/rewards/syncCommitteeRewards.js.map +0 -1
  261. package/lib/db/repositories/depositDataRoot.d.ts +0 -22
  262. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  263. package/lib/db/repositories/depositDataRoot.js +0 -62
  264. package/lib/db/repositories/depositDataRoot.js.map +0 -1
  265. package/lib/db/repositories/depositEvent.d.ts +0 -13
  266. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  267. package/lib/db/repositories/depositEvent.js +0 -27
  268. package/lib/db/repositories/depositEvent.js.map +0 -1
  269. package/lib/db/repositories/eth1Data.d.ts +0 -13
  270. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  271. package/lib/db/repositories/eth1Data.js +0 -26
  272. package/lib/db/repositories/eth1Data.js.map +0 -1
  273. package/lib/db/single/index.d.ts +0 -3
  274. package/lib/db/single/index.d.ts.map +0 -1
  275. package/lib/db/single/index.js +0 -3
  276. package/lib/db/single/index.js.map +0 -1
  277. package/lib/db/single/preGenesisState.d.ts +0 -16
  278. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  279. package/lib/db/single/preGenesisState.js +0 -29
  280. package/lib/db/single/preGenesisState.js.map +0 -1
  281. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
  282. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  283. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
  284. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
  285. package/lib/eth1/errors.d.ts +0 -66
  286. package/lib/eth1/errors.d.ts.map +0 -1
  287. package/lib/eth1/errors.js +0 -27
  288. package/lib/eth1/errors.js.map +0 -1
  289. package/lib/eth1/eth1DataCache.d.ts +0 -19
  290. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  291. package/lib/eth1/eth1DataCache.js +0 -19
  292. package/lib/eth1/eth1DataCache.js.map +0 -1
  293. package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
  294. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  295. package/lib/eth1/eth1DepositDataTracker.js +0 -317
  296. package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
  297. package/lib/eth1/eth1DepositsCache.d.ts +0 -42
  298. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  299. package/lib/eth1/eth1DepositsCache.js +0 -119
  300. package/lib/eth1/eth1DepositsCache.js.map +0 -1
  301. package/lib/eth1/eth1MergeBlockTracker.d.ts +0 -65
  302. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  303. package/lib/eth1/eth1MergeBlockTracker.js +0 -262
  304. package/lib/eth1/eth1MergeBlockTracker.js.map +0 -1
  305. package/lib/eth1/index.d.ts +0 -46
  306. package/lib/eth1/index.d.ts.map +0 -1
  307. package/lib/eth1/index.js +0 -121
  308. package/lib/eth1/index.js.map +0 -1
  309. package/lib/eth1/interface.d.ts +0 -112
  310. package/lib/eth1/interface.d.ts.map +0 -1
  311. package/lib/eth1/interface.js +0 -8
  312. package/lib/eth1/interface.js.map +0 -1
  313. package/lib/eth1/options.d.ts +0 -22
  314. package/lib/eth1/options.d.ts.map +0 -1
  315. package/lib/eth1/options.js +0 -8
  316. package/lib/eth1/options.js.map +0 -1
  317. package/lib/eth1/provider/eth1Provider.d.ts +0 -39
  318. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  319. package/lib/eth1/provider/eth1Provider.js +0 -147
  320. package/lib/eth1/provider/eth1Provider.js.map +0 -1
  321. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  322. package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
  323. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  324. package/lib/eth1/provider/jwt.js.map +0 -1
  325. package/lib/eth1/provider/utils.d.ts +0 -65
  326. package/lib/eth1/provider/utils.d.ts.map +0 -1
  327. package/lib/eth1/provider/utils.js +0 -120
  328. package/lib/eth1/provider/utils.js.map +0 -1
  329. package/lib/eth1/stream.d.ts +0 -15
  330. package/lib/eth1/stream.d.ts.map +0 -1
  331. package/lib/eth1/stream.js +0 -54
  332. package/lib/eth1/stream.js.map +0 -1
  333. package/lib/eth1/utils/depositContract.d.ts +0 -14
  334. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  335. package/lib/eth1/utils/depositContract.js +0 -33
  336. package/lib/eth1/utils/depositContract.js.map +0 -1
  337. package/lib/eth1/utils/deposits.d.ts +0 -8
  338. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  339. package/lib/eth1/utils/deposits.js +0 -47
  340. package/lib/eth1/utils/deposits.js.map +0 -1
  341. package/lib/eth1/utils/eth1Data.d.ts +0 -22
  342. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  343. package/lib/eth1/utils/eth1Data.js +0 -77
  344. package/lib/eth1/utils/eth1Data.js.map +0 -1
  345. package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
  346. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  347. package/lib/eth1/utils/eth1DepositEvent.js +0 -13
  348. package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
  349. package/lib/eth1/utils/eth1Vote.d.ts +0 -17
  350. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  351. package/lib/eth1/utils/eth1Vote.js +0 -111
  352. package/lib/eth1/utils/eth1Vote.js.map +0 -1
  353. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
  354. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  355. package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
  356. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
  357. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
  358. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  359. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
  360. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
  361. package/src/chain/genesis/genesis.ts +0 -190
  362. package/src/chain/genesis/interface.ts +0 -14
  363. package/src/chain/rewards/attestationsRewards.ts +0 -196
  364. package/src/chain/rewards/blockRewards.ts +0 -150
  365. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  366. package/src/db/repositories/depositDataRoot.ts +0 -80
  367. package/src/db/repositories/depositEvent.ts +0 -32
  368. package/src/db/repositories/eth1Data.ts +0 -33
  369. package/src/db/single/index.ts +0 -2
  370. package/src/db/single/preGenesisState.ts +0 -37
  371. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  372. package/src/eth1/errors.ts +0 -40
  373. package/src/eth1/eth1DataCache.ts +0 -26
  374. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  375. package/src/eth1/eth1DepositsCache.ts +0 -141
  376. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  377. package/src/eth1/index.ts +0 -157
  378. package/src/eth1/interface.ts +0 -131
  379. package/src/eth1/options.ts +0 -28
  380. package/src/eth1/provider/eth1Provider.ts +0 -229
  381. package/src/eth1/provider/utils.ts +0 -136
  382. package/src/eth1/stream.ts +0 -75
  383. package/src/eth1/utils/depositContract.ts +0 -37
  384. package/src/eth1/utils/deposits.ts +0 -70
  385. package/src/eth1/utils/eth1Data.ts +0 -100
  386. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  387. package/src/eth1/utils/eth1Vote.ts +0 -142
  388. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  389. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  390. /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
  391. /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
  392. /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
  393. /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
@@ -1,317 +0,0 @@
1
- import { becomesNewEth1Data, } from "@lodestar/state-transition";
2
- import { ssz } from "@lodestar/types";
3
- import { ErrorAborted, TimeoutError, fromHex, isErrorAborted, sleep } from "@lodestar/utils";
4
- import { Eth1DataCache } from "./eth1DataCache.js";
5
- import { Eth1DepositsCache } from "./eth1DepositsCache.js";
6
- import { parseEth1Block } from "./provider/eth1Provider.js";
7
- import { HttpRpcError } from "./provider/jsonRpcHttpClient.js";
8
- import { isJsonRpcTruncatedError } from "./provider/utils.js";
9
- import { getDeposits } from "./utils/deposits.js";
10
- import { getEth1VotesToConsider, pickEth1Vote } from "./utils/eth1Vote.js";
11
- const MAX_BLOCKS_PER_BLOCK_QUERY = 1000;
12
- const MIN_BLOCKS_PER_BLOCK_QUERY = 10;
13
- const MAX_BLOCKS_PER_LOG_QUERY = 1000;
14
- const MIN_BLOCKS_PER_LOG_QUERY = 10;
15
- /** Eth1 blocks happen every 14s approx, not need to update too often once synced */
16
- const AUTO_UPDATE_PERIOD_MS = 60 * 1000;
17
- /** Prevent infinite loops */
18
- const MIN_UPDATE_PERIOD_MS = 1 * 1000;
19
- /** Milliseconds to wait after getting 429 Too Many Requests */
20
- const RATE_LIMITED_WAIT_MS = 30 * 1000;
21
- /** Min time to wait on auto update loop on unknown error */
22
- const MIN_WAIT_ON_ERROR_MS = 1 * 1000;
23
- /** Number of blocks to download if the node detects it is lagging behind due to an inaccurate
24
- relationship between block-number-based follow distance and time-based follow distance. */
25
- const ETH1_FOLLOW_DISTANCE_DELTA_IF_SLOW = 32;
26
- /** The absolute minimum follow distance to enforce when downloading catchup batches, from LH */
27
- const ETH_MIN_FOLLOW_DISTANCE = 64;
28
- /**
29
- * Main class handling eth1 data fetching, processing and storing
30
- * Upon instantiation, starts fetching deposits and blocks at regular intervals
31
- */
32
- export class Eth1DepositDataTracker {
33
- eth1Provider;
34
- config;
35
- logger;
36
- signal;
37
- metrics;
38
- // Internal modules, state
39
- depositsCache;
40
- eth1DataCache;
41
- lastProcessedDepositBlockNumber = null;
42
- /** Dynamically adjusted follow distance */
43
- eth1FollowDistance;
44
- /** Dynamically adjusted batch size to fetch deposit logs */
45
- eth1GetBlocksBatchSizeDynamic = MAX_BLOCKS_PER_BLOCK_QUERY;
46
- /** Dynamically adjusted batch size to fetch deposit logs */
47
- eth1GetLogsBatchSizeDynamic = MAX_BLOCKS_PER_LOG_QUERY;
48
- forcedEth1DataVote;
49
- /** To stop `runAutoUpdate()` in addition to AbortSignal */
50
- stopPolling;
51
- constructor(opts, { config, db, metrics, logger, signal }, eth1Provider) {
52
- this.eth1Provider = eth1Provider;
53
- this.config = config;
54
- this.metrics = metrics;
55
- this.logger = logger;
56
- this.signal = signal;
57
- this.eth1Provider = eth1Provider;
58
- this.depositsCache = new Eth1DepositsCache(opts, config, db);
59
- this.eth1DataCache = new Eth1DataCache(config, db);
60
- this.eth1FollowDistance = config.ETH1_FOLLOW_DISTANCE;
61
- this.stopPolling = false;
62
- this.forcedEth1DataVote = opts.forcedEth1DataVote
63
- ? ssz.phase0.Eth1Data.deserialize(fromHex(opts.forcedEth1DataVote))
64
- : null;
65
- if (opts.depositContractDeployBlock === undefined) {
66
- this.logger.warn("No depositContractDeployBlock provided");
67
- }
68
- if (metrics) {
69
- // Set constant value once
70
- metrics?.eth1.eth1FollowDistanceSecondsConfig.set(config.SECONDS_PER_ETH1_BLOCK * config.ETH1_FOLLOW_DISTANCE);
71
- metrics.eth1.eth1FollowDistanceDynamic.addCollect(() => {
72
- metrics.eth1.eth1FollowDistanceDynamic.set(this.eth1FollowDistance);
73
- metrics.eth1.eth1GetBlocksBatchSizeDynamic.set(this.eth1GetBlocksBatchSizeDynamic);
74
- metrics.eth1.eth1GetLogsBatchSizeDynamic.set(this.eth1GetLogsBatchSizeDynamic);
75
- });
76
- }
77
- if (opts.enabled) {
78
- this.runAutoUpdate().catch((e) => {
79
- if (!(e instanceof ErrorAborted)) {
80
- this.logger.error("Error on eth1 loop", {}, e);
81
- }
82
- });
83
- }
84
- }
85
- isPollingEth1Data() {
86
- return !this.stopPolling;
87
- }
88
- stopPollingEth1Data() {
89
- this.stopPolling = true;
90
- }
91
- /**
92
- * Return eth1Data and deposits ready for block production for a given state
93
- */
94
- async getEth1DataAndDeposits(state) {
95
- if (state.epochCtx.isPostElectra() &&
96
- state.eth1DepositIndex >= state.depositRequestsStartIndex) {
97
- // No need to poll eth1Data since Electra deprecates the mechanism after depositRequestsStartIndex is reached
98
- return { eth1Data: state.eth1Data, deposits: [] };
99
- }
100
- const eth1Data = this.forcedEth1DataVote ?? (await this.getEth1Data(state));
101
- const deposits = await this.getDeposits(state, eth1Data);
102
- return { eth1Data, deposits };
103
- }
104
- /**
105
- * Returns an eth1Data vote for a given state.
106
- * Requires internal caches to be updated regularly to return good results
107
- */
108
- async getEth1Data(state) {
109
- try {
110
- const eth1VotesToConsider = await getEth1VotesToConsider(this.config, state, this.eth1DataCache.get.bind(this.eth1DataCache));
111
- return pickEth1Vote(state, eth1VotesToConsider);
112
- }
113
- catch (e) {
114
- // Note: In case there's a DB issue, don't stop a block proposal. Just vote for current eth1Data
115
- this.logger.error("CRITICAL: Error reading valid votes, voting for current eth1Data", {}, e);
116
- return state.eth1Data;
117
- }
118
- }
119
- /**
120
- * Returns deposits to be included for a given state and eth1Data vote.
121
- * Requires internal caches to be updated regularly to return good results
122
- */
123
- async getDeposits(state, eth1DataVote) {
124
- // No new deposits have to be included, continue
125
- if (eth1DataVote.depositCount === state.eth1DepositIndex) {
126
- return [];
127
- }
128
- // TODO: Review if this is optimal
129
- // Convert to view first to hash once and compare hashes
130
- const eth1DataVoteView = ssz.phase0.Eth1Data.toViewDU(eth1DataVote);
131
- // Eth1 data may change due to the vote included in this block
132
- const newEth1Data = becomesNewEth1Data(state, eth1DataVoteView) ? eth1DataVoteView : state.eth1Data;
133
- return getDeposits(state, newEth1Data, this.depositsCache.get.bind(this.depositsCache));
134
- }
135
- /**
136
- * Abortable async setInterval that runs its callback once at max between `ms` at minimum
137
- */
138
- async runAutoUpdate() {
139
- let lastRunMs = 0;
140
- while (!this.signal.aborted && !this.stopPolling) {
141
- lastRunMs = Date.now();
142
- try {
143
- const hasCaughtUp = await this.update();
144
- this.metrics?.eth1.depositTrackerIsCaughtup.set(hasCaughtUp ? 1 : 0);
145
- if (hasCaughtUp) {
146
- const sleepTimeMs = Math.max(AUTO_UPDATE_PERIOD_MS + lastRunMs - Date.now(), MIN_UPDATE_PERIOD_MS);
147
- await sleep(sleepTimeMs, this.signal);
148
- }
149
- }
150
- catch (e) {
151
- this.metrics?.eth1.depositTrackerUpdateErrors.inc(1);
152
- // From Infura: 429 Too Many Requests
153
- if (e instanceof HttpRpcError && e.status === 429) {
154
- this.logger.debug("Eth1 provider rate limited", {}, e);
155
- await sleep(RATE_LIMITED_WAIT_MS, this.signal);
156
- // only log error if state switched from online to some other state
157
- }
158
- else if (!isErrorAborted(e)) {
159
- await sleep(MIN_WAIT_ON_ERROR_MS, this.signal);
160
- }
161
- }
162
- }
163
- }
164
- /**
165
- * Update the deposit and block cache, returning an error if either fail
166
- * @returns true if it has catched up to the remote follow block
167
- */
168
- async update() {
169
- const remoteHighestBlock = await this.eth1Provider.getBlockNumber();
170
- this.metrics?.eth1.remoteHighestBlock.set(remoteHighestBlock);
171
- const remoteFollowBlock = remoteHighestBlock - this.eth1FollowDistance;
172
- // If remoteFollowBlock is not at or beyond deployBlock, there is no need to
173
- // fetch and track any deposit data yet
174
- if (remoteFollowBlock < (this.eth1Provider.deployBlock ?? 0))
175
- return true;
176
- const hasCaughtUpDeposits = await this.updateDepositCache(remoteFollowBlock);
177
- const hasCaughtUpBlocks = await this.updateBlockCache(remoteFollowBlock);
178
- return hasCaughtUpDeposits && hasCaughtUpBlocks;
179
- }
180
- /**
181
- * Fetch deposit events from remote eth1 node up to follow-distance block
182
- * @returns true if it has catched up to the remote follow block
183
- */
184
- async updateDepositCache(remoteFollowBlock) {
185
- const lastProcessedDepositBlockNumber = await this.getLastProcessedDepositBlockNumber();
186
- // The DB may contain deposits from a different chain making lastProcessedDepositBlockNumber > current chain tip
187
- // The Math.min() fixes those rare scenarios where fromBlock > toBlock
188
- const fromBlock = Math.min(remoteFollowBlock, this.getFromBlockToFetch(lastProcessedDepositBlockNumber));
189
- const toBlock = Math.min(remoteFollowBlock, fromBlock + this.eth1GetLogsBatchSizeDynamic - 1);
190
- let depositEvents;
191
- try {
192
- depositEvents = await this.eth1Provider.getDepositEvents(fromBlock, toBlock);
193
- // Increase the batch size linearly even if we scale down exponentially (half each time)
194
- this.eth1GetLogsBatchSizeDynamic = Math.min(MAX_BLOCKS_PER_LOG_QUERY, this.eth1GetLogsBatchSizeDynamic + MIN_BLOCKS_PER_LOG_QUERY);
195
- }
196
- catch (e) {
197
- if (isJsonRpcTruncatedError(e) || e instanceof TimeoutError) {
198
- this.eth1GetLogsBatchSizeDynamic = Math.max(MIN_BLOCKS_PER_LOG_QUERY, Math.floor(this.eth1GetLogsBatchSizeDynamic / 2));
199
- }
200
- throw e;
201
- }
202
- this.logger.verbose("Fetched deposits", { depositCount: depositEvents.length, fromBlock, toBlock });
203
- this.metrics?.eth1.depositEventsFetched.inc(depositEvents.length);
204
- await this.depositsCache.add(depositEvents);
205
- // Store the `toBlock` since that block may not contain
206
- this.lastProcessedDepositBlockNumber = toBlock;
207
- this.metrics?.eth1.lastProcessedDepositBlockNumber.set(toBlock);
208
- return toBlock >= remoteFollowBlock;
209
- }
210
- /**
211
- * Fetch block headers from a remote eth1 node up to follow-distance block
212
- *
213
- * depositRoot and depositCount are inferred from already fetched deposits.
214
- * Calling get_deposit_root() and the smart contract for a non-latest block requires an
215
- * archive node, something most users don't have access too.
216
- * @returns true if it has catched up to the remote follow timestamp
217
- */
218
- async updateBlockCache(remoteFollowBlock) {
219
- const lastCachedBlock = await this.eth1DataCache.getHighestCachedBlockNumber();
220
- // lastProcessedDepositBlockNumber sets the upper bound of the possible block range to fetch in this update
221
- const lastProcessedDepositBlockNumber = await this.getLastProcessedDepositBlockNumber();
222
- // lowestEventBlockNumber set a lower bound of possible block range to fetch in this update
223
- const lowestEventBlockNumber = await this.depositsCache.getLowestDepositEventBlockNumber();
224
- // We are all caught up if:
225
- // 1. If lowestEventBlockNumber is null = no deposits have been fetch or found yet.
226
- // So there's not useful blocks to fetch until at least 1 deposit is found.
227
- // 2. If the remoteFollowBlock is behind the lowestEventBlockNumber. This can happen
228
- // if the EL's data was wiped and restarted. Not exiting here would other wise
229
- // cause a NO_DEPOSITS_FOR_BLOCK_RANGE error
230
- if (lowestEventBlockNumber === null ||
231
- lastProcessedDepositBlockNumber === null ||
232
- remoteFollowBlock < lowestEventBlockNumber) {
233
- return true;
234
- }
235
- // Cap the upper limit of fromBlock with remoteFollowBlock in case deployBlock is set to a different network value
236
- const fromBlock = Math.min(remoteFollowBlock,
237
- // Fetch from the last cached block or the lowest known deposit block number
238
- Math.max(this.getFromBlockToFetch(lastCachedBlock), lowestEventBlockNumber));
239
- const toBlock = Math.min(remoteFollowBlock, fromBlock + this.eth1GetBlocksBatchSizeDynamic - 1, // Block range is inclusive
240
- lastProcessedDepositBlockNumber);
241
- let blocksRaw;
242
- try {
243
- blocksRaw = await this.eth1Provider.getBlocksByNumber(fromBlock, toBlock);
244
- // Increase the batch size linearly even if we scale down exponentially (half each time)
245
- this.eth1GetBlocksBatchSizeDynamic = Math.min(MAX_BLOCKS_PER_BLOCK_QUERY, this.eth1GetBlocksBatchSizeDynamic + MIN_BLOCKS_PER_BLOCK_QUERY);
246
- }
247
- catch (e) {
248
- if (isJsonRpcTruncatedError(e) || e instanceof TimeoutError) {
249
- this.eth1GetBlocksBatchSizeDynamic = Math.max(MIN_BLOCKS_PER_BLOCK_QUERY, Math.floor(this.eth1GetBlocksBatchSizeDynamic / 2));
250
- }
251
- throw e;
252
- }
253
- const blocks = blocksRaw.map(parseEth1Block);
254
- this.logger.verbose("Fetched eth1 blocks", { blockCount: blocks.length, fromBlock, toBlock });
255
- this.metrics?.eth1.blocksFetched.inc(blocks.length);
256
- this.metrics?.eth1.lastFetchedBlockBlockNumber.set(toBlock);
257
- const lastBlock = blocks.at(-1);
258
- if (lastBlock) {
259
- this.metrics?.eth1.lastFetchedBlockTimestamp.set(lastBlock.timestamp);
260
- }
261
- const eth1Datas = await this.depositsCache.getEth1DataForBlocks(blocks, lastProcessedDepositBlockNumber);
262
- await this.eth1DataCache.add(eth1Datas);
263
- // Note: ETH1_FOLLOW_DISTANCE_SECONDS = ETH1_FOLLOW_DISTANCE * SECONDS_PER_ETH1_BLOCK
264
- // Deposit tracker must fetch blocks and deposits up to ETH1_FOLLOW_DISTANCE_SECONDS,
265
- // measured in time not blocks. To vote on valid votes it must populate up to the time based follow distance.
266
- // If it assumes SECONDS_PER_ETH1_BLOCK but block times are:
267
- // - slower: Cache will not contain all blocks
268
- // - faster: Cache will contain all required blocks + some ahead of timed follow distance
269
- //
270
- // For mainnet we must fetch blocks up until block.timestamp < now - 28672 sec. Based on follow distance:
271
- // Block times | actual follow distance
272
- // 14 | 2048
273
- // 20 | 1434
274
- // 30 | 956
275
- // 60 | 478
276
- //
277
- // So if after fetching the block at ETH1_FOLLOW_DISTANCE, but it's timestamp is not greater than
278
- // ETH1_FOLLOW_DISTANCE_SECONDS, reduce the ETH1_FOLLOW_DISTANCE by a small delta and fetch more blocks.
279
- // Otherwise if the last fetched block if above ETH1_FOLLOW_DISTANCE_SECONDS, reduce ETH1_FOLLOW_DISTANCE.
280
- if (toBlock < remoteFollowBlock) {
281
- return false;
282
- }
283
- if (!lastBlock) {
284
- return true;
285
- }
286
- const remoteFollowBlockTimestamp = Math.round(Date.now() / 1000) - this.config.SECONDS_PER_ETH1_BLOCK * this.config.ETH1_FOLLOW_DISTANCE;
287
- const blockAfterTargetTimestamp = blocks.find((block) => block.timestamp >= remoteFollowBlockTimestamp);
288
- if (blockAfterTargetTimestamp) {
289
- // Catched up to target timestamp, increase eth1FollowDistance. Limit max config.ETH1_FOLLOW_DISTANCE.
290
- // If the block that's right above the timestamp has been fetched now, use it to compute the precise delta.
291
- const delta = Math.max(lastBlock.blockNumber - blockAfterTargetTimestamp.blockNumber, 1);
292
- this.eth1FollowDistance = Math.min(this.eth1FollowDistance + delta, this.config.ETH1_FOLLOW_DISTANCE);
293
- return true;
294
- }
295
- // Blocks are slower than expected, reduce eth1FollowDistance. Limit min CATCHUP_MIN_FOLLOW_DISTANCE
296
- const delta = this.eth1FollowDistance -
297
- Math.max(this.eth1FollowDistance - ETH1_FOLLOW_DISTANCE_DELTA_IF_SLOW, ETH_MIN_FOLLOW_DISTANCE);
298
- this.eth1FollowDistance = this.eth1FollowDistance - delta;
299
- // Even if the blocks are slow, when we are all caught up as there is no
300
- // further possibility to reduce follow distance, we need to call it quits
301
- // for now, else it leads to an incessant poll on the EL
302
- return delta === 0;
303
- }
304
- getFromBlockToFetch(lastCachedBlock) {
305
- if (lastCachedBlock === null) {
306
- return this.eth1Provider.deployBlock ?? 0;
307
- }
308
- return lastCachedBlock + 1;
309
- }
310
- async getLastProcessedDepositBlockNumber() {
311
- if (this.lastProcessedDepositBlockNumber === null) {
312
- this.lastProcessedDepositBlockNumber = await this.depositsCache.getHighestDepositEventBlockNumber();
313
- }
314
- return this.lastProcessedDepositBlockNumber;
315
- }
316
- }
317
- //# sourceMappingURL=eth1DepositDataTracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eth1DepositDataTracker.js","sourceRoot":"","sources":["../../src/eth1/eth1DepositDataTracker.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { ChainForkConfig } from "@lodestar/config";
2
- import { FilterOptions } from "@lodestar/db";
3
- import { phase0 } from "@lodestar/types";
4
- import { IBeaconDb } from "../db/index.js";
5
- import { Eth1Block } from "./interface.js";
6
- export declare class Eth1DepositsCache {
7
- unsafeAllowDepositDataOverwrite: boolean;
8
- db: IBeaconDb;
9
- config: ChainForkConfig;
10
- constructor(opts: {
11
- unsafeAllowDepositDataOverwrite?: boolean;
12
- }, config: ChainForkConfig, db: IBeaconDb);
13
- /**
14
- * Returns a list of `Deposit` objects, within the given deposit index `range`.
15
- *
16
- * The `depositCount` is used to generate the proofs for the `Deposits`. For example, if we
17
- * have 100 proofs, but the Ethereum Consensus chain only acknowledges 50 of them, we must produce our
18
- * proofs with respect to a tree size of 50.
19
- */
20
- get(indexRange: FilterOptions<number>, eth1Data: phase0.Eth1Data): Promise<phase0.Deposit[]>;
21
- /**
22
- * Add log to cache
23
- * This function enforces that `logs` are imported one-by-one with consecutive indexes
24
- */
25
- add(depositEvents: phase0.DepositEvent[]): Promise<void>;
26
- /**
27
- * Appends partial eth1 data (depositRoot, depositCount) in a block range (inclusive)
28
- * Returned array is sequential and ascending in blockNumber
29
- * @param fromBlock
30
- * @param toBlock
31
- */
32
- getEth1DataForBlocks(blocks: Eth1Block[], lastProcessedDepositBlockNumber: number | null): Promise<(phase0.Eth1Data & Eth1Block)[]>;
33
- /**
34
- * Returns the highest blockNumber stored in DB if any
35
- */
36
- getHighestDepositEventBlockNumber(): Promise<number | null>;
37
- /**
38
- * Returns the lowest blockNumber stored in DB if any
39
- */
40
- getLowestDepositEventBlockNumber(): Promise<number | null>;
41
- }
42
- //# sourceMappingURL=eth1DepositsCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eth1DepositsCache.d.ts","sourceRoot":"","sources":["../../src/eth1/eth1DepositsCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAKzC,qBAAa,iBAAiB;IAC5B,+BAA+B,EAAE,OAAO,CAAC;IACzC,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;gBAEZ,IAAI,EAAE;QAAC,+BAA+B,CAAC,EAAE,OAAO,CAAA;KAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,SAAS;IAMrG;;;;;;OAMG;IACG,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAMlG;;;OAGG;IACG,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE9D;;;;;OAKG;IACG,oBAAoB,CACxB,MAAM,EAAE,SAAS,EAAE,EACnB,+BAA+B,EAAE,MAAM,GAAG,IAAI,GAC7C,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;IAU3C;;OAEG;IACG,iCAAiC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKjE;;OAEG;IACG,gCAAgC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAIjE"}
@@ -1,119 +0,0 @@
1
- import { byteArrayEquals } from "@chainsafe/ssz";
2
- import { ssz } from "@lodestar/types";
3
- import { Eth1Error, Eth1ErrorCode } from "./errors.js";
4
- import { getDepositsWithProofs } from "./utils/deposits.js";
5
- import { getEth1DataForBlocks } from "./utils/eth1Data.js";
6
- import { assertConsecutiveDeposits } from "./utils/eth1DepositEvent.js";
7
- export class Eth1DepositsCache {
8
- unsafeAllowDepositDataOverwrite;
9
- db;
10
- config;
11
- constructor(opts, config, db) {
12
- this.config = config;
13
- this.db = db;
14
- this.unsafeAllowDepositDataOverwrite = opts.unsafeAllowDepositDataOverwrite ?? false;
15
- }
16
- /**
17
- * Returns a list of `Deposit` objects, within the given deposit index `range`.
18
- *
19
- * The `depositCount` is used to generate the proofs for the `Deposits`. For example, if we
20
- * have 100 proofs, but the Ethereum Consensus chain only acknowledges 50 of them, we must produce our
21
- * proofs with respect to a tree size of 50.
22
- */
23
- async get(indexRange, eth1Data) {
24
- const depositEvents = await this.db.depositEvent.values(indexRange);
25
- const depositRootTree = await this.db.depositDataRoot.getDepositRootTree();
26
- return getDepositsWithProofs(depositEvents, depositRootTree, eth1Data);
27
- }
28
- /**
29
- * Add log to cache
30
- * This function enforces that `logs` are imported one-by-one with consecutive indexes
31
- */
32
- async add(depositEvents) {
33
- assertConsecutiveDeposits(depositEvents);
34
- const lastLog = await this.db.depositEvent.lastValue();
35
- const firstEvent = depositEvents[0];
36
- // Check, validate and skip if we got any deposit events already present in DB
37
- // This can happen if the remote eth1/EL resets its head in these four scenarios:
38
- // 1. Remote eth1/EL resynced/restarted from head behind its previous head pre-merge
39
- // 2. In a post merge scenario, Lodestar restarted from finalized state from DB which
40
- // generally is a few epochs behind the last synced head. This causes eth1 tracker to reset
41
- // and refetch the deposits as the lodestar syncs further along (Post merge there is 1-1
42
- // correspondence between EL and CL blocks)
43
- // 3. The EL reorged beyond the eth1 follow distance.
44
- //
45
- // While 1. & 2. are benign and we handle them below by checking if the duplicate log fetched
46
- // is same as one written in DB. Refer to this issue for some data dump of how this happens
47
- // https://github.com/ChainSafe/lodestar/issues/3674
48
- //
49
- // If the duplicate log fetched is not same as written in DB then its probablu scenario 3.
50
- // which would be a catastrophic event for the network (or we messed up real bad!!!).
51
- //
52
- // So we provide for a way to overwrite this log without deleting full db via
53
- // --unsafeAllowDepositDataOverwrite cli flag which will just overwrite the previous tracker data
54
- // if any. This option as indicated by its name is unsafe and to be only used if you know what
55
- // you are doing.
56
- if (lastLog !== null && firstEvent !== undefined) {
57
- const newIndex = firstEvent.index;
58
- const lastLogIndex = lastLog.index;
59
- if (!this.unsafeAllowDepositDataOverwrite && firstEvent.index <= lastLog.index) {
60
- // lastLogIndex - newIndex + 1 events are duplicate since this is a consecutive log
61
- // as asserted by assertConsecutiveDeposits. Splice those events out from depositEvents.
62
- const skipEvents = depositEvents.splice(0, lastLogIndex - newIndex + 1);
63
- // After splicing skipEvents will contain duplicate events to be checked and validated
64
- // and rest of the remaining events in depositEvents could be safely written to DB and
65
- // move the tracker along.
66
- for (const depositEvent of skipEvents) {
67
- const prevDBSerializedEvent = await this.db.depositEvent.getBinary(depositEvent.index);
68
- if (!prevDBSerializedEvent) {
69
- throw new Eth1Error({ code: Eth1ErrorCode.MISSING_DEPOSIT_LOG, newIndex, lastLogIndex });
70
- }
71
- const serializedEvent = ssz.phase0.DepositEvent.serialize(depositEvent);
72
- if (!byteArrayEquals(prevDBSerializedEvent, serializedEvent)) {
73
- throw new Eth1Error({ code: Eth1ErrorCode.DUPLICATE_DISTINCT_LOG, newIndex, lastLogIndex });
74
- }
75
- }
76
- }
77
- else if (newIndex > lastLogIndex + 1) {
78
- // deposit events need to be consective, the way we fetch our tracker. If the deposit event
79
- // is not consecutive it means either our tracker, or the corresponding eth1/EL
80
- // node or the database has messed up. All these failures are critical and the tracker
81
- // shouldn't proceed without the resolution of this error.
82
- throw new Eth1Error({ code: Eth1ErrorCode.NON_CONSECUTIVE_LOGS, newIndex, lastLogIndex });
83
- }
84
- }
85
- const depositRoots = depositEvents.map((depositEvent) => ({
86
- index: depositEvent.index,
87
- root: ssz.phase0.DepositData.hashTreeRoot(depositEvent.depositData),
88
- }));
89
- // Store events after verifying that data is consecutive
90
- // depositDataRoot will throw if adding non consecutive roots
91
- await this.db.depositDataRoot.batchPutValues(depositRoots);
92
- await this.db.depositEvent.batchPutValues(depositEvents);
93
- }
94
- /**
95
- * Appends partial eth1 data (depositRoot, depositCount) in a block range (inclusive)
96
- * Returned array is sequential and ascending in blockNumber
97
- * @param fromBlock
98
- * @param toBlock
99
- */
100
- async getEth1DataForBlocks(blocks, lastProcessedDepositBlockNumber) {
101
- const highestBlock = blocks.at(-1)?.blockNumber;
102
- return getEth1DataForBlocks(blocks, this.db.depositEvent.valuesStream({ lte: highestBlock, reverse: true }), await this.db.depositDataRoot.getDepositRootTree(), lastProcessedDepositBlockNumber);
103
- }
104
- /**
105
- * Returns the highest blockNumber stored in DB if any
106
- */
107
- async getHighestDepositEventBlockNumber() {
108
- const latestEvent = await this.db.depositEvent.lastValue();
109
- return latestEvent?.blockNumber || null;
110
- }
111
- /**
112
- * Returns the lowest blockNumber stored in DB if any
113
- */
114
- async getLowestDepositEventBlockNumber() {
115
- const firstEvent = await this.db.depositEvent.firstValue();
116
- return firstEvent?.blockNumber || null;
117
- }
118
- }
119
- //# sourceMappingURL=eth1DepositsCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eth1DepositsCache.js","sourceRoot":"","sources":["../../src/eth1/eth1DepositsCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAErD,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AAEtE,MAAM,OAAO,iBAAiB;IAC5B,+BAA+B,CAAU;IACzC,EAAE,CAAY;IACd,MAAM,CAAkB;IAExB,YAAY,IAAiD,EAAE,MAAuB,EAAE,EAAa;QACnG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,+BAA+B,IAAI,KAAK,CAAC;IACvF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAC,UAAiC,EAAE,QAAyB;QACpE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAC3E,OAAO,qBAAqB,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,aAAoC;QAC5C,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAEpC,8EAA8E;QAC9E,iFAAiF;QACjF,sFAAsF;QACtF,uFAAuF;QACvF,gGAAgG;QAChG,6FAA6F;QAC7F,gDAAgD;QAChD,uDAAuD;QACvD,EAAE;QACF,6FAA6F;QAC7F,2FAA2F;QAC3F,oDAAoD;QACpD,EAAE;QACF,0FAA0F;QAC1F,qFAAqF;QACrF,EAAE;QACF,6EAA6E;QAC7E,iGAAiG;QACjG,8FAA8F;QAC9F,iBAAiB;QACjB,IAAI,OAAO,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;YAClC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,+BAA+B,IAAI,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC/E,mFAAmF;gBACnF,wFAAwF;gBACxF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACxE,sFAAsF;gBACtF,sFAAsF;gBACtF,0BAA0B;gBAC1B,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;oBACtC,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACvF,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC3B,MAAM,IAAI,SAAS,CAAC,EAAC,IAAI,EAAE,aAAa,CAAC,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAC;oBACzF,CAAC;oBACD,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBACxE,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,eAAe,CAAC,EAAE,CAAC;wBAC7D,MAAM,IAAI,SAAS,CAAC,EAAC,IAAI,EAAE,aAAa,CAAC,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAC;oBAC5F,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,QAAQ,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACvC,2FAA2F;gBAC3F,+EAA+E;gBAC/E,sFAAsF;gBACtF,0DAA0D;gBAC1D,MAAM,IAAI,SAAS,CAAC,EAAC,IAAI,EAAE,aAAa,CAAC,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACxD,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC;SACpE,CAAC,CAAC,CAAC;QAEJ,wDAAwD;QACxD,6DAA6D;QAC7D,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB,CACxB,MAAmB,EACnB,+BAA8C;QAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;QAChD,OAAO,oBAAoB,CACzB,MAAM,EACN,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,EACrE,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,kBAAkB,EAAE,EAClD,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iCAAiC;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC3D,OAAO,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gCAAgC;QACpC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAC3D,OAAO,UAAU,EAAE,WAAW,IAAI,IAAI,CAAC;IACzC,CAAC;CACF"}
@@ -1,65 +0,0 @@
1
- import { ChainConfig } from "@lodestar/config";
2
- import { Logger } from "@lodestar/utils";
3
- import { Metrics } from "../metrics/index.js";
4
- import { EthJsonRpcBlockRaw, IEth1Provider, PowMergeBlock, TDProgress } from "./interface.js";
5
- export declare enum StatusCode {
6
- STOPPED = "STOPPED",
7
- SEARCHING = "SEARCHING",
8
- FOUND = "FOUND"
9
- }
10
- export type Eth1MergeBlockTrackerModules = {
11
- config: ChainConfig;
12
- logger: Logger;
13
- signal: AbortSignal;
14
- metrics: Metrics | null;
15
- };
16
- /**
17
- * Follows the eth1 chain to find a (or multiple?) merge blocks that cross the threshold of total terminal difficulty
18
- *
19
- * Finding the mergeBlock could be done in demand when proposing pre-merge blocks. However, that would slow block
20
- * production during the weeks between BELLATRIX_EPOCH and TTD.
21
- */
22
- export declare class Eth1MergeBlockTracker {
23
- private readonly eth1Provider;
24
- private readonly config;
25
- private readonly logger;
26
- private readonly metrics;
27
- private readonly blocksByHashCache;
28
- private readonly intervals;
29
- private status;
30
- private latestEth1Block;
31
- private getTerminalPowBlockFromEth1Promise;
32
- private readonly safeTDFactor;
33
- constructor({ config, logger, signal, metrics }: Eth1MergeBlockTrackerModules, eth1Provider: IEth1Provider);
34
- /**
35
- * Returns the most recent POW block that satisfies the merge block condition
36
- */
37
- getTerminalPowBlock(): Promise<PowMergeBlock | null>;
38
- getTDProgress(): TDProgress | null;
39
- /**
40
- * Get a POW block by hash checking the local cache first
41
- */
42
- getPowBlock(powBlockHash: string): Promise<PowMergeBlock | null>;
43
- /**
44
- * Should only start polling for mergeBlock if:
45
- * - after BELLATRIX_FORK_EPOCH
46
- * - Beacon node synced
47
- * - head state not isMergeTransitionComplete
48
- */
49
- startPollingMergeBlock(): void;
50
- private close;
51
- private getTerminalPowBlockFromEth1;
52
- /**
53
- * **internal** + **unsafe** since it can create multiple backward searches that overload the eth1 client.
54
- * Must be called in a wrapper to ensure that there's only once concurrent call to this fn.
55
- */
56
- private internalGetTerminalPowBlockFromEth1;
57
- private cacheBlock;
58
- }
59
- export declare function toPowBlock(block: EthJsonRpcBlockRaw): PowMergeBlock;
60
- /**
61
- * TTD values can be very large, for xDAI > 1e45. So scale down.
62
- * To be good, TTD should be rendered as a number < Number.MAX_TD_RENDER_VALUE ~= 9e15
63
- */
64
- export declare function getSafeTDFactor(ttd: bigint): bigint;
65
- //# sourceMappingURL=eth1MergeBlockTracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eth1MergeBlockTracker.d.ts","sourceRoot":"","sources":["../../src/eth1/eth1MergeBlockTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAC,MAAM,EAA2B,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAA0B,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAGpH,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAkBD,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAIF;;;;;GAKG;AACH,qBAAa,qBAAqB;IAe9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAd/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAElD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,kCAAkC,CAA8C;IACxF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGpC,EAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,EAAE,4BAA4B,EAC9C,YAAY,EAAE,aAAa;IAiC9C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAe1D,aAAa,IAAI,UAAU,GAAG,IAAI;IAsBlC;;OAEG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkBtE;;;;;OAKG;IACH,sBAAsB,IAAI,IAAI;IAsB9B,OAAO,CAAC,KAAK;YAIC,2BAA2B;IA4CzC;;;OAGG;YACW,mCAAmC;IA6DjD,OAAO,CAAC,UAAU;CAInB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAQnE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWnD"}