@lodestar/beacon-node 1.31.0-dev.fb014780d5 → 1.31.0-peerDAS.0a673a00bb

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 (270) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +42 -14
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/rewards/index.js +3 -0
  4. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  5. package/lib/api/impl/beacon/state/index.js +5 -0
  6. package/lib/api/impl/beacon/state/index.js.map +1 -1
  7. package/lib/api/impl/config/index.d.ts +1 -1
  8. package/lib/api/impl/config/index.js +5 -0
  9. package/lib/api/impl/config/index.js.map +1 -1
  10. package/lib/api/impl/utils.d.ts +9 -0
  11. package/lib/api/impl/utils.js +23 -0
  12. package/lib/api/impl/utils.js.map +1 -0
  13. package/lib/api/impl/validator/index.js +11 -33
  14. package/lib/api/impl/validator/index.js.map +1 -1
  15. package/lib/chain/archiveStore/archiveStore.d.ts +1 -1
  16. package/lib/chain/archiveStore/archiveStore.js +2 -2
  17. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +1 -1
  18. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  19. package/lib/chain/archiveStore/historicalState/metrics.d.ts +22 -0
  20. package/lib/chain/archiveStore/historicalState/metrics.js +173 -0
  21. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -0
  22. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -16
  23. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  24. package/lib/chain/archiveStore/historicalState/worker.js +3 -163
  25. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  26. package/lib/chain/archiveStore/interface.d.ts +1 -1
  27. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
  28. package/lib/chain/archiveStore/utils/archiveBlocks.js +89 -25
  29. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  30. package/lib/chain/beaconProposerCache.d.ts +1 -0
  31. package/lib/chain/beaconProposerCache.js +3 -0
  32. package/lib/chain/beaconProposerCache.js.map +1 -1
  33. package/lib/chain/blocks/blockInput/blockInput.d.ts +4 -2
  34. package/lib/chain/blocks/blockInput/blockInput.js +28 -12
  35. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  36. package/lib/chain/blocks/blockInput/index.d.ts +1 -0
  37. package/lib/chain/blocks/blockInput/index.js +1 -0
  38. package/lib/chain/blocks/blockInput/index.js.map +1 -1
  39. package/lib/chain/blocks/blockInput/types.d.ts +2 -1
  40. package/lib/chain/blocks/blockInput/utils.d.ts +9 -0
  41. package/lib/chain/blocks/blockInput/utils.js +35 -0
  42. package/lib/chain/blocks/blockInput/utils.js.map +1 -0
  43. package/lib/chain/blocks/importBlock.d.ts +5 -0
  44. package/lib/chain/blocks/importBlock.js +81 -15
  45. package/lib/chain/blocks/importBlock.js.map +1 -1
  46. package/lib/chain/blocks/types.d.ts +65 -24
  47. package/lib/chain/blocks/types.js +39 -6
  48. package/lib/chain/blocks/types.js.map +1 -1
  49. package/lib/chain/blocks/verifyBlocksDataAvailability.js +21 -10
  50. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  51. package/lib/chain/blocks/writeBlockInputToDb.js +89 -15
  52. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  53. package/lib/chain/chain.d.ts +14 -4
  54. package/lib/chain/chain.js +36 -7
  55. package/lib/chain/chain.js.map +1 -1
  56. package/lib/chain/emitter.d.ts +18 -2
  57. package/lib/chain/emitter.js +13 -0
  58. package/lib/chain/emitter.js.map +1 -1
  59. package/lib/chain/errors/dataColumnSidecarError.d.ts +69 -0
  60. package/lib/chain/errors/dataColumnSidecarError.js +21 -0
  61. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -0
  62. package/lib/chain/errors/index.d.ts +1 -0
  63. package/lib/chain/errors/index.js +1 -0
  64. package/lib/chain/errors/index.js.map +1 -1
  65. package/lib/chain/initState.js +11 -0
  66. package/lib/chain/initState.js.map +1 -1
  67. package/lib/chain/interface.d.ts +11 -3
  68. package/lib/chain/interface.js.map +1 -1
  69. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +20 -14
  70. package/lib/chain/opPools/aggregatedAttestationPool.js +41 -49
  71. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  72. package/lib/chain/opPools/syncContributionAndProofPool.d.ts +11 -4
  73. package/lib/chain/opPools/syncContributionAndProofPool.js +50 -8
  74. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  75. package/lib/chain/opPools/types.d.ts +1 -1
  76. package/lib/chain/opPools/types.js +1 -1
  77. package/lib/chain/opPools/types.js.map +1 -1
  78. package/lib/chain/options.d.ts +4 -1
  79. package/lib/chain/options.js +4 -0
  80. package/lib/chain/options.js.map +1 -1
  81. package/lib/chain/produceBlock/produceBlockBody.d.ts +4 -2
  82. package/lib/chain/produceBlock/produceBlockBody.js +13 -4
  83. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  84. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +3 -2
  85. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +31 -2
  86. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  87. package/lib/chain/seenCache/seenAggregateAndProof.d.ts +3 -3
  88. package/lib/chain/seenCache/seenAggregateAndProof.js +22 -10
  89. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  90. package/lib/chain/seenCache/seenAttesters.js +20 -11
  91. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  92. package/lib/chain/seenCache/seenBlockInput.d.ts +84 -0
  93. package/lib/chain/seenCache/seenBlockInput.js +225 -0
  94. package/lib/chain/seenCache/seenBlockInput.js.map +1 -0
  95. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +61 -18
  96. package/lib/chain/seenCache/seenGossipBlockInput.js +254 -53
  97. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  98. package/lib/chain/validation/aggregateAndProof.js +10 -2
  99. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  100. package/lib/chain/validation/attestation.js +8 -0
  101. package/lib/chain/validation/attestation.js.map +1 -1
  102. package/lib/chain/validation/blobSidecar.js +2 -2
  103. package/lib/chain/validation/blobSidecar.js.map +1 -1
  104. package/lib/chain/validation/block.js +2 -2
  105. package/lib/chain/validation/block.js.map +1 -1
  106. package/lib/chain/validation/dataColumnSidecar.d.ts +28 -0
  107. package/lib/chain/validation/dataColumnSidecar.js +245 -0
  108. package/lib/chain/validation/dataColumnSidecar.js.map +1 -0
  109. package/lib/db/beacon.d.ts +3 -1
  110. package/lib/db/beacon.js +3 -1
  111. package/lib/db/beacon.js.map +1 -1
  112. package/lib/db/buckets.d.ts +3 -1
  113. package/lib/db/buckets.js +2 -0
  114. package/lib/db/buckets.js.map +1 -1
  115. package/lib/db/interface.d.ts +3 -1
  116. package/lib/db/repositories/dataColumnSidecars.d.ts +47 -0
  117. package/lib/db/repositories/dataColumnSidecars.js +40 -0
  118. package/lib/db/repositories/dataColumnSidecars.js.map +1 -0
  119. package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +15 -0
  120. package/lib/db/repositories/dataColumnSidecarsArchive.js +23 -0
  121. package/lib/db/repositories/dataColumnSidecarsArchive.js.map +1 -0
  122. package/lib/db/repositories/index.d.ts +2 -0
  123. package/lib/db/repositories/index.js +2 -0
  124. package/lib/db/repositories/index.js.map +1 -1
  125. package/lib/execution/engine/http.d.ts +5 -3
  126. package/lib/execution/engine/http.js +70 -31
  127. package/lib/execution/engine/http.js.map +1 -1
  128. package/lib/execution/engine/interface.d.ts +4 -2
  129. package/lib/execution/engine/interface.js +1 -1
  130. package/lib/execution/engine/interface.js.map +1 -1
  131. package/lib/execution/engine/mock.d.ts +1 -0
  132. package/lib/execution/engine/mock.js +5 -0
  133. package/lib/execution/engine/mock.js.map +1 -1
  134. package/lib/execution/engine/types.d.ts +10 -0
  135. package/lib/execution/engine/types.js +6 -0
  136. package/lib/execution/engine/types.js.map +1 -1
  137. package/lib/metrics/metrics/beacon.d.ts +8 -0
  138. package/lib/metrics/metrics/beacon.js +27 -0
  139. package/lib/metrics/metrics/beacon.js.map +1 -1
  140. package/lib/metrics/metrics/lodestar.d.ts +36 -3
  141. package/lib/metrics/metrics/lodestar.js +71 -4
  142. package/lib/metrics/metrics/lodestar.js.map +1 -1
  143. package/lib/network/core/metrics.d.ts +10 -3
  144. package/lib/network/core/metrics.js +22 -4
  145. package/lib/network/core/metrics.js.map +1 -1
  146. package/lib/network/core/networkCore.d.ts +6 -0
  147. package/lib/network/core/networkCore.js +20 -8
  148. package/lib/network/core/networkCore.js.map +1 -1
  149. package/lib/network/core/networkCoreWorker.js +2 -0
  150. package/lib/network/core/networkCoreWorker.js.map +1 -1
  151. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -0
  152. package/lib/network/core/networkCoreWorkerHandler.js +7 -0
  153. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  154. package/lib/network/core/types.d.ts +6 -1
  155. package/lib/network/events.d.ts +3 -1
  156. package/lib/network/events.js.map +1 -1
  157. package/lib/network/gossip/interface.d.ts +8 -1
  158. package/lib/network/gossip/interface.js +1 -0
  159. package/lib/network/gossip/interface.js.map +1 -1
  160. package/lib/network/gossip/topic.d.ts +1047 -1031
  161. package/lib/network/gossip/topic.js +20 -1
  162. package/lib/network/gossip/topic.js.map +1 -1
  163. package/lib/network/interface.d.ts +13 -1
  164. package/lib/network/metadata.d.ts +10 -6
  165. package/lib/network/metadata.js +23 -4
  166. package/lib/network/metadata.js.map +1 -1
  167. package/lib/network/network.d.ts +12 -1
  168. package/lib/network/network.js +60 -7
  169. package/lib/network/network.js.map +1 -1
  170. package/lib/network/networkConfig.d.ts +23 -0
  171. package/lib/network/networkConfig.js +32 -0
  172. package/lib/network/networkConfig.js.map +1 -0
  173. package/lib/network/options.js +2 -0
  174. package/lib/network/options.js.map +1 -1
  175. package/lib/network/peers/discover.d.ts +16 -3
  176. package/lib/network/peers/discover.js +139 -13
  177. package/lib/network/peers/discover.js.map +1 -1
  178. package/lib/network/peers/peerManager.d.ts +10 -2
  179. package/lib/network/peers/peerManager.js +96 -10
  180. package/lib/network/peers/peerManager.js.map +1 -1
  181. package/lib/network/peers/peersData.d.ts +8 -2
  182. package/lib/network/peers/peersData.js.map +1 -1
  183. package/lib/network/peers/score/interface.d.ts +1 -1
  184. package/lib/network/peers/score/score.d.ts +2 -2
  185. package/lib/network/peers/score/score.js +4 -1
  186. package/lib/network/peers/score/score.js.map +1 -1
  187. package/lib/network/peers/score/store.d.ts +3 -1
  188. package/lib/network/peers/score/store.js +6 -2
  189. package/lib/network/peers/score/store.js.map +1 -1
  190. package/lib/network/peers/utils/prioritizePeers.d.ts +15 -4
  191. package/lib/network/peers/utils/prioritizePeers.js +30 -5
  192. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  193. package/lib/network/processor/extractSlotRootFns.js +8 -1
  194. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  195. package/lib/network/processor/gossipHandlers.js +156 -9
  196. package/lib/network/processor/gossipHandlers.js.map +1 -1
  197. package/lib/network/processor/gossipQueues/index.js +5 -0
  198. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  199. package/lib/network/processor/index.d.ts +0 -5
  200. package/lib/network/processor/index.js +1 -14
  201. package/lib/network/processor/index.js.map +1 -1
  202. package/lib/network/reqresp/ReqRespBeaconNode.js +21 -3
  203. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  204. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +14 -5
  205. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +199 -14
  206. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  207. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +32 -5
  208. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +280 -26
  209. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  210. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +1 -1
  211. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  212. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
  213. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +106 -0
  214. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -0
  215. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +6 -0
  216. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +57 -0
  217. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
  218. package/lib/network/reqresp/handlers/index.js +10 -0
  219. package/lib/network/reqresp/handlers/index.js.map +1 -1
  220. package/lib/network/reqresp/protocols.d.ts +3 -0
  221. package/lib/network/reqresp/protocols.js +15 -0
  222. package/lib/network/reqresp/protocols.js.map +1 -1
  223. package/lib/network/reqresp/rateLimit.js +11 -1
  224. package/lib/network/reqresp/rateLimit.js.map +1 -1
  225. package/lib/network/reqresp/types.d.ts +13 -6
  226. package/lib/network/reqresp/types.js +9 -2
  227. package/lib/network/reqresp/types.js.map +1 -1
  228. package/lib/network/subnets/interface.d.ts +3 -0
  229. package/lib/network/subnets/interface.js +14 -1
  230. package/lib/network/subnets/interface.js.map +1 -1
  231. package/lib/network/subnets/syncnetsService.js +4 -5
  232. package/lib/network/subnets/syncnetsService.js.map +1 -1
  233. package/lib/node/nodejs.js +4 -3
  234. package/lib/node/nodejs.js.map +1 -1
  235. package/lib/sync/interface.d.ts +2 -2
  236. package/lib/sync/interface.js +1 -1
  237. package/lib/sync/interface.js.map +1 -1
  238. package/lib/sync/range/batch.d.ts +8 -2
  239. package/lib/sync/range/batch.js +19 -7
  240. package/lib/sync/range/batch.js.map +1 -1
  241. package/lib/sync/range/chain.d.ts +7 -2
  242. package/lib/sync/range/chain.js +45 -21
  243. package/lib/sync/range/chain.js.map +1 -1
  244. package/lib/sync/range/range.js +3 -3
  245. package/lib/sync/range/range.js.map +1 -1
  246. package/lib/sync/range/utils/peerBalancer.d.ts +4 -1
  247. package/lib/sync/range/utils/peerBalancer.js +20 -2
  248. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  249. package/lib/sync/unknownBlock.d.ts +8 -1
  250. package/lib/sync/unknownBlock.js +222 -62
  251. package/lib/sync/unknownBlock.js.map +1 -1
  252. package/lib/util/blobs.d.ts +13 -1
  253. package/lib/util/blobs.js +44 -1
  254. package/lib/util/blobs.js.map +1 -1
  255. package/lib/util/dataColumns.d.ts +111 -0
  256. package/lib/util/dataColumns.js +277 -0
  257. package/lib/util/dataColumns.js.map +1 -0
  258. package/lib/util/graffiti.d.ts +3 -2
  259. package/lib/util/graffiti.js +2 -2
  260. package/lib/util/graffiti.js.map +1 -1
  261. package/lib/util/kzg.d.ts +9 -21
  262. package/lib/util/kzg.js +12 -88
  263. package/lib/util/kzg.js.map +1 -1
  264. package/lib/util/metadata.d.ts +4 -0
  265. package/lib/util/metadata.js +7 -0
  266. package/lib/util/metadata.js.map +1 -1
  267. package/lib/util/sszBytes.d.ts +1 -0
  268. package/lib/util/sszBytes.js +17 -0
  269. package/lib/util/sszBytes.js.map +1 -1
  270. package/package.json +19 -19
@@ -8,6 +8,7 @@ import { BeaconDb } from "../../../db/index.js";
8
8
  import { RegistryMetricCreator, collectNodeJSMetrics } from "../../../metrics/index.js";
9
9
  import { JobFnQueue } from "../../../util/queue/fnQueue.js";
10
10
  import { getHistoricalState } from "./getHistoricalState.js";
11
+ import { createHistoricalStateQueueMetrics, createHistoricalStateRegenMetrics, } from "./metrics.js";
11
12
  // most of this setup copied from networkCoreWorker.ts
12
13
  const workerData = worker.workerData;
13
14
  const logger = getNodeLogger(workerData.loggerOpts);
@@ -22,169 +23,8 @@ let queueMetrics;
22
23
  if (metricsRegister) {
23
24
  const closeMetrics = collectNodeJSMetrics(metricsRegister, "lodestar_historical_state_worker_");
24
25
  abortController.signal.addEventListener("abort", closeMetrics, { once: true });
25
- historicalStateRegenMetrics = {
26
- // state transition metrics
27
- epochTransitionTime: metricsRegister.histogram({
28
- name: "lodestar_historical_state_stfn_epoch_transition_seconds",
29
- help: "Time to process a single epoch transition in seconds",
30
- // Epoch transitions are 100ms on very fast clients, and average 800ms on heavy networks
31
- buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1, 1.25, 1.5, 3, 10],
32
- }),
33
- epochTransitionCommitTime: metricsRegister.histogram({
34
- name: "lodestar_historical_state_stfn_epoch_transition_commit_seconds",
35
- help: "Time to call commit after process a single epoch transition in seconds",
36
- buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1],
37
- }),
38
- epochTransitionStepTime: metricsRegister.histogram({
39
- name: "lodestar_historical_state_stfn_epoch_transition_step_seconds",
40
- help: "Time to call each step of epoch transition in seconds",
41
- labelNames: ["step"],
42
- buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1],
43
- }),
44
- processBlockTime: metricsRegister.histogram({
45
- name: "lodestar_historical_state_stfn_process_block_seconds",
46
- help: "Time to process a single block in seconds",
47
- // TODO: Add metrics for each step
48
- // Block processing can take 5-40ms, 100ms max
49
- buckets: [0.005, 0.01, 0.02, 0.05, 0.1, 1],
50
- }),
51
- processBlockCommitTime: metricsRegister.histogram({
52
- name: "lodestar_historical_state_stfn_process_block_commit_seconds",
53
- help: "Time to call commit after process a single block in seconds",
54
- buckets: [0.005, 0.01, 0.02, 0.05, 0.1, 1],
55
- }),
56
- stateHashTreeRootTime: metricsRegister.histogram({
57
- name: "lodestar_historical_state_stfn_hash_tree_root_seconds",
58
- help: "Time to compute the hash tree root of a post state in seconds",
59
- buckets: [0.05, 0.1, 0.2, 0.5, 1, 1.5],
60
- labelNames: ["source"],
61
- }),
62
- numEffectiveBalanceUpdates: metricsRegister.gauge({
63
- name: "lodestar_historical_state_stfn_num_effective_balance_updates_count",
64
- help: "Count of effective balance updates in epoch transition",
65
- }),
66
- preStateBalancesNodesPopulatedMiss: metricsRegister.gauge({
67
- name: "lodestar_historical_state_stfn_balances_nodes_populated_miss_total",
68
- help: "Total count state.balances nodesPopulated is false on stfn",
69
- labelNames: ["source"],
70
- }),
71
- preStateBalancesNodesPopulatedHit: metricsRegister.gauge({
72
- name: "lodestar_historical_state_stfn_balances_nodes_populated_hit_total",
73
- help: "Total count state.balances nodesPopulated is true on stfn",
74
- labelNames: ["source"],
75
- }),
76
- preStateValidatorsNodesPopulatedMiss: metricsRegister.gauge({
77
- name: "lodestar_historical_state_stfn_validators_nodes_populated_miss_total",
78
- help: "Total count state.validators nodesPopulated is false on stfn",
79
- labelNames: ["source"],
80
- }),
81
- preStateValidatorsNodesPopulatedHit: metricsRegister.gauge({
82
- name: "lodestar_historical_state_stfn_validators_nodes_populated_hit_total",
83
- help: "Total count state.validators nodesPopulated is true on stfn",
84
- labelNames: ["source"],
85
- }),
86
- preStateClonedCount: metricsRegister.histogram({
87
- name: "lodestar_historical_state_stfn_state_cloned_count",
88
- help: "Histogram of cloned count per state every time state.clone() is called",
89
- buckets: [1, 2, 5, 10, 50, 250],
90
- }),
91
- postStateBalancesNodesPopulatedHit: metricsRegister.gauge({
92
- name: "lodestar_historical_state_stfn_post_state_balances_nodes_populated_hit_total",
93
- help: "Total count state.validators nodesPopulated is true on stfn for post state",
94
- }),
95
- postStateBalancesNodesPopulatedMiss: metricsRegister.gauge({
96
- name: "lodestar_historical_state_stfn_post_state_balances_nodes_populated_miss_total",
97
- help: "Total count state.validators nodesPopulated is false on stfn for post state",
98
- }),
99
- postStateValidatorsNodesPopulatedHit: metricsRegister.gauge({
100
- name: "lodestar_historical_state_stfn_post_state_validators_nodes_populated_hit_total",
101
- help: "Total count state.validators nodesPopulated is true on stfn for post state",
102
- }),
103
- postStateValidatorsNodesPopulatedMiss: metricsRegister.gauge({
104
- name: "lodestar_historical_state_stfn_post_state_validators_nodes_populated_miss_total",
105
- help: "Total count state.validators nodesPopulated is false on stfn for post state",
106
- }),
107
- newSeenAttestersPerBlock: metricsRegister.gauge({
108
- name: "lodestar_historical_state_stfn_new_seen_attesters_per_block_total",
109
- help: "Count of new seen attesters in epoch transition",
110
- }),
111
- newSeenAttestersEffectiveBalancePerBlock: metricsRegister.gauge({
112
- name: "lodestar_historical_state_stfn_new_seen_attesters_effective_balance_per_block_total",
113
- help: "Total effective balance increment of new seen attesters per block",
114
- }),
115
- attestationsPerBlock: metricsRegister.gauge({
116
- name: "lodestar_historical_state_stfn_attestations_per_block_total",
117
- help: "Count of attestations per block",
118
- }),
119
- // historical state regen metrics
120
- regenTime: metricsRegister.histogram({
121
- name: "lodestar_historical_state_regen_time_seconds",
122
- help: "Time to regenerate a historical state in seconds",
123
- // Historical state regen can take up to 3h as of Aug 2024
124
- // 5m, 10m, 30m, 1h, 3h
125
- buckets: [5 * 60, 10 * 60, 30 * 60, 60 * 60, 180 * 60],
126
- }),
127
- loadStateTime: metricsRegister.histogram({
128
- name: "lodestar_historical_state_load_nearest_state_time_seconds",
129
- help: "Time to load a nearest historical state from the database in seconds",
130
- // 30s, 1m, 2m, 4m
131
- buckets: [30, 60, 120, 240],
132
- }),
133
- stateTransitionTime: metricsRegister.histogram({
134
- name: "lodestar_historical_state_state_transition_time_seconds",
135
- help: "Time to run state transition to regen historical state in seconds",
136
- // 5m, 10m, 30m, 1h, 3h
137
- buckets: [5 * 60, 10 * 60, 30 * 60, 60 * 60, 180 * 60],
138
- }),
139
- stateTransitionBlocks: metricsRegister.histogram({
140
- name: "lodestar_historical_state_state_transition_blocks",
141
- help: "Count of blocks processed during state transition to regen historical state",
142
- // given archiveStateEpochFrequency=1024, it could process up to 32768 blocks
143
- buckets: [10, 100, 1000, 10000, 30000],
144
- }),
145
- stateSerializationTime: metricsRegister.histogram({
146
- name: "lodestar_historical_state_serialization_time_seconds",
147
- help: "Time to serialize a historical state in seconds",
148
- buckets: [0.25, 0.5, 1, 2],
149
- }),
150
- regenRequestCount: metricsRegister.gauge({
151
- name: "lodestar_historical_state_request_count",
152
- help: "Count of total historical state requests",
153
- }),
154
- regenSuccessCount: metricsRegister.gauge({
155
- name: "lodestar_historical_state_success_count",
156
- help: "Count of successful historical state regen",
157
- }),
158
- regenErrorCount: metricsRegister.gauge({
159
- name: "lodestar_historical_state_error_count",
160
- help: "Count of failed historical state regen",
161
- labelNames: ["reason"],
162
- }),
163
- };
164
- queueMetrics = {
165
- length: metricsRegister.gauge({
166
- name: "lodestar_historical_state_queue_length",
167
- help: "Count of total regen queue length",
168
- }),
169
- droppedJobs: metricsRegister.gauge({
170
- name: "lodestar_historical_state_queue_dropped_jobs_total",
171
- help: "Count of total regen queue dropped jobs",
172
- }),
173
- jobTime: metricsRegister.histogram({
174
- name: "lodestar_historical_state_queue_job_time_seconds",
175
- help: "Time to process regen queue job in seconds",
176
- buckets: [0.01, 0.1, 1, 10, 100],
177
- }),
178
- jobWaitTime: metricsRegister.histogram({
179
- name: "lodestar_historical_state_queue_job_wait_time_seconds",
180
- help: "Time from job added to the regen queue to starting in seconds",
181
- buckets: [0.01, 0.1, 1, 10, 100],
182
- }),
183
- concurrency: metricsRegister.gauge({
184
- name: "lodestar_historical_state_queue_concurrency",
185
- help: "Current concurrency of regen queue",
186
- }),
187
- };
26
+ historicalStateRegenMetrics = createHistoricalStateRegenMetrics(metricsRegister);
27
+ queueMetrics = createHistoricalStateQueueMetrics(metricsRegister);
188
28
  }
189
29
  const queue = new JobFnQueue({
190
30
  maxConcurrency: workerData.maxConcurrency,
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/historicalState/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/historicalState/worker.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export interface StatesArchiveOpts {
16
16
  }
17
17
  export type ArchiveStoreOpts = StatesArchiveOpts & {
18
18
  disableArchiveOnCheckpoint?: boolean;
19
- archiveBlobEpochs?: number;
19
+ archiveDataEpochs?: number;
20
20
  pruneHistory?: boolean;
21
21
  serveHistoricalState?: boolean;
22
22
  };
@@ -17,7 +17,7 @@ type CheckpointHex = {
17
17
  * Note that the finalized block still stay in forkchoice to check finalize checkpoint of next onBlock calls,
18
18
  * the next run should not reprocess finalzied block of this run.
19
19
  */
20
- export declare function archiveBlocks(config: ChainForkConfig, db: IBeaconDb, forkChoice: IForkChoice, lightclientServer: LightClientServer | undefined, logger: Logger, finalizedCheckpoint: CheckpointHex, currentEpoch: Epoch, archiveBlobEpochs?: number): Promise<void>;
20
+ export declare function archiveBlocks(config: ChainForkConfig, db: IBeaconDb, forkChoice: IForkChoice, lightclientServer: LightClientServer | undefined, logger: Logger, finalizedCheckpoint: CheckpointHex, currentEpoch: Epoch, archiveDataEpochs?: number): Promise<void>;
21
21
  /**
22
22
  * ```
23
23
  * class SignedBeaconBlock(Container):
@@ -1,6 +1,6 @@
1
1
  import { ForkSeq, SLOTS_PER_EPOCH } from "@lodestar/params";
2
2
  import { computeEpochAtSlot, computeStartSlotAtEpoch } from "@lodestar/state-transition";
3
- import { fromHex, toRootHex } from "@lodestar/utils";
3
+ import { fromHex, toHex, toRootHex } from "@lodestar/utils";
4
4
  // Process in chunks to avoid OOM
5
5
  // this number of blocks per chunk is tested in e2e test blockArchive.test.ts
6
6
  // TODO: Review after merge since the size of blocks will increase significantly
@@ -15,13 +15,13 @@ const BLOB_SIDECAR_BATCH_SIZE = 32;
15
15
  * Note that the finalized block still stay in forkchoice to check finalize checkpoint of next onBlock calls,
16
16
  * the next run should not reprocess finalzied block of this run.
17
17
  */
18
- export async function archiveBlocks(config, db, forkChoice, lightclientServer, logger, finalizedCheckpoint, currentEpoch, archiveBlobEpochs) {
18
+ export async function archiveBlocks(config, db, forkChoice, lightclientServer, logger, finalizedCheckpoint, currentEpoch, archiveDataEpochs) {
19
19
  // Use fork choice to determine the blocks to archive and delete
20
20
  // getAllAncestorBlocks response includes the finalized block, so it's also moved to the cold db
21
- const finalizedCanonicalBlocks = forkChoice.getAllAncestorBlocks(finalizedCheckpoint.rootHex);
22
- const finalizedNonCanonicalBlocks = forkChoice.getAllNonAncestorBlocks(finalizedCheckpoint.rootHex);
21
+ const { ancestors: finalizedCanonicalBlocks, nonAncestors: finalizedNonCanonicalBlocks } = forkChoice.getAllAncestorAndNonAncestorBlocks(finalizedCheckpoint.rootHex);
23
22
  // NOTE: The finalized block will be exactly the first block of `epoch` or previous
24
23
  const finalizedPostDeneb = finalizedCheckpoint.epoch >= config.DENEB_FORK_EPOCH;
24
+ const finalizedPostFulu = finalizedCheckpoint.epoch >= config.FULU_FORK_EPOCH;
25
25
  const finalizedCanonicalBlockRoots = finalizedCanonicalBlocks.map((block) => ({
26
26
  slot: block.slot,
27
27
  root: fromHex(block.blockRoot),
@@ -34,8 +34,12 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
34
34
  size: finalizedCanonicalBlockRoots.length,
35
35
  });
36
36
  if (finalizedPostDeneb) {
37
- const migrate = await migrateBlobSidecarsFromHotToColdDb(config, db, finalizedCanonicalBlockRoots, currentEpoch);
38
- logger.verbose(migrate ? "Migrated blobSidecars from hot DB to cold DB" : "Skip blobSidecars migration");
37
+ const migratedEntries = await migrateBlobSidecarsFromHotToColdDb(config, db, finalizedCanonicalBlockRoots, currentEpoch);
38
+ logger.verbose("Migrated blobSidecars from hot DB to cold DB", { migratedEntries });
39
+ }
40
+ if (finalizedPostFulu) {
41
+ const migratedEntries = await migrateDataColumnSidecarsFromHotToColdDb(config, db, finalizedCanonicalBlockRoots, currentEpoch);
42
+ logger.verbose("Migrated dataColumnSidecars from hot DB to cold DB", { migratedEntries });
39
43
  }
40
44
  }
41
45
  // deleteNonCanonicalBlocks
@@ -48,15 +52,19 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
48
52
  });
49
53
  if (finalizedPostDeneb) {
50
54
  await db.blobSidecars.batchDelete(nonCanonicalBlockRoots);
51
- logger.verbose("Deleted non canonical blobsSider from hot DB");
55
+ logger.verbose("Deleted non canonical blobSidecars from hot DB");
56
+ }
57
+ if (finalizedPostFulu) {
58
+ await db.dataColumnSidecars.batchDelete(nonCanonicalBlockRoots);
59
+ logger.verbose("Deleted non canonical dataColumnSidecars from hot DB");
52
60
  }
53
61
  }
54
62
  // Delete expired blobs
55
- // Keep only `[current_epoch - max(MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, archiveBlobEpochs)]
56
- // if archiveBlobEpochs set to Infinity do not prune`
63
+ // Keep only `[current_epoch - max(MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, archiveDataEpochs)]`
64
+ // if archiveDataEpochs set to Infinity do not prune`
57
65
  if (finalizedPostDeneb) {
58
- if (archiveBlobEpochs !== Infinity) {
59
- const blobsArchiveWindow = Math.max(config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, archiveBlobEpochs ?? 0);
66
+ if (archiveDataEpochs !== Infinity) {
67
+ const blobsArchiveWindow = Math.max(config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, archiveDataEpochs ?? 0);
60
68
  const blobSidecarsMinEpoch = currentEpoch - blobsArchiveWindow;
61
69
  if (blobSidecarsMinEpoch >= config.DENEB_FORK_EPOCH) {
62
70
  const slotsToDelete = await db.blobSidecarsArchive.keys({ lt: computeStartSlotAtEpoch(blobSidecarsMinEpoch) });
@@ -70,7 +78,30 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
70
78
  }
71
79
  }
72
80
  else {
73
- logger.verbose("blobSidecars pruning skipped: archiveBlobEpochs set to Infinity");
81
+ logger.verbose("blobSidecars pruning skipped: archiveDataEpochs set to Infinity");
82
+ }
83
+ }
84
+ // Delete expired data column sidecars
85
+ // Keep only `[current_epoch - max(MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, archiveDataEpochs)]`
86
+ if (finalizedPostFulu) {
87
+ if (archiveDataEpochs !== Infinity) {
88
+ const dataColumnSidecarsArchiveWindow = Math.max(config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, archiveDataEpochs ?? 0);
89
+ const dataColumnSidecarsMinEpoch = currentEpoch - dataColumnSidecarsArchiveWindow;
90
+ if (dataColumnSidecarsMinEpoch >= config.FULU_FORK_EPOCH) {
91
+ const slotsToDelete = await db.dataColumnSidecarsArchive.keys({
92
+ lt: computeStartSlotAtEpoch(dataColumnSidecarsMinEpoch),
93
+ });
94
+ if (slotsToDelete.length > 0) {
95
+ await db.dataColumnSidecarsArchive.batchDelete(slotsToDelete);
96
+ logger.verbose(`dataColumnSidecars prune: batchDelete range ${slotsToDelete[0]}..${slotsToDelete.at(-1)}`);
97
+ }
98
+ else {
99
+ logger.verbose(`dataColumnSidecars prune: no entries before epoch ${dataColumnSidecarsMinEpoch}`);
100
+ }
101
+ }
102
+ }
103
+ else {
104
+ logger.verbose("dataColumnSidecars pruning skipped: archiveDataEpochs set to Infinity");
74
105
  }
75
106
  }
76
107
  // Prunning potential checkpoint data
@@ -124,19 +155,22 @@ async function migrateBlocksFromHotToColdDb(db, blocks) {
124
155
  * @returns true if we do that, false if block is out of range data.
125
156
  */
126
157
  async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpoch) {
127
- let result = false;
158
+ let migratedWrappedBlobSidecars = 0;
128
159
  for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
129
160
  const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
130
161
  const canonicalBlocks = blocks.slice(i, toIdx);
131
162
  // processCanonicalBlocks
132
163
  if (canonicalBlocks.length === 0)
133
- return false;
164
+ break;
134
165
  // load Buffer instead of ssz deserialized to improve performance
135
166
  const canonicalBlobSidecarsEntries = await Promise.all(canonicalBlocks
136
167
  .filter((block) => {
137
168
  const blockSlot = block.slot;
138
169
  const blockEpoch = computeEpochAtSlot(blockSlot);
139
- return (config.getForkSeq(blockSlot) >= ForkSeq.deneb &&
170
+ const forkSeq = config.getForkSeq(blockSlot);
171
+ return (forkSeq >= ForkSeq.deneb &&
172
+ forkSeq < ForkSeq.fulu &&
173
+ // if block is out of ${config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS}, skip this step
140
174
  blockEpoch >= currentEpoch - config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS);
141
175
  })
142
176
  .map(async (block) => {
@@ -146,17 +180,47 @@ async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpo
146
180
  }
147
181
  return { key: block.slot, value: bytes };
148
182
  }));
149
- const migrate = canonicalBlobSidecarsEntries.length > 0;
150
- if (migrate) {
151
- // put to blockArchive db and delete block db
152
- await Promise.all([
153
- db.blobSidecarsArchive.batchPutBinary(canonicalBlobSidecarsEntries),
154
- db.blobSidecars.batchDelete(canonicalBlocks.map((block) => block.root)),
155
- ]);
156
- }
157
- result = result || migrate;
183
+ // put to blockArchive db and delete block db
184
+ await Promise.all([
185
+ db.blobSidecarsArchive.batchPutBinary(canonicalBlobSidecarsEntries),
186
+ db.blobSidecars.batchDelete(canonicalBlocks.map((block) => block.root)),
187
+ ]);
188
+ migratedWrappedBlobSidecars += canonicalBlobSidecarsEntries.length;
189
+ }
190
+ return migratedWrappedBlobSidecars;
191
+ }
192
+ async function migrateDataColumnSidecarsFromHotToColdDb(config, db, blocks, currentEpoch) {
193
+ let migratedWrappedDataColumns = 0;
194
+ for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
195
+ const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
196
+ const canonicalBlocks = blocks.slice(i, toIdx);
197
+ // processCanonicalBlocks
198
+ if (canonicalBlocks.length === 0)
199
+ break;
200
+ // load Buffer instead of ssz deserialized to improve performance
201
+ const canonicalDataColumnSidecarsEntries = await Promise.all(canonicalBlocks
202
+ .filter((block) => {
203
+ const blockSlot = block.slot;
204
+ const blockEpoch = computeEpochAtSlot(blockSlot);
205
+ return (config.getForkSeq(blockSlot) >= ForkSeq.fulu &&
206
+ // if block is out of ${config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS}, skip this step
207
+ blockEpoch >= currentEpoch - config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS);
208
+ })
209
+ .map(async (block) => {
210
+ const bytes = await db.dataColumnSidecars.getBinary(block.root);
211
+ if (!bytes) {
212
+ throw Error(`No dataColumnSidecars found for slot ${block.slot} root ${toHex(block.root)}`);
213
+ }
214
+ return { key: block.slot, value: bytes };
215
+ }));
216
+ // put to blockArchive db and delete block db
217
+ await Promise.all([
218
+ db.dataColumnSidecarsArchive.batchPutBinary(canonicalDataColumnSidecarsEntries),
219
+ db.dataColumnSidecars.batchDelete(canonicalBlocks.map((block) => block.root)),
220
+ ]);
221
+ migratedWrappedDataColumns += canonicalDataColumnSidecarsEntries.length;
158
222
  }
159
- return result;
223
+ return migratedWrappedDataColumns;
160
224
  }
161
225
  /**
162
226
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"archiveBlocks.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archiveBlocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archiveBlocks.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archiveBlocks.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,6 @@ export declare class BeaconProposerCache {
10
10
  prune(epoch: Epoch): void;
11
11
  getOrDefault(proposerIndex: number): string;
12
12
  get(proposerIndex: number): string | undefined;
13
+ getValidatorIndices(): number[];
13
14
  }
14
15
  //# sourceMappingURL=beaconProposerCache.d.ts.map
@@ -25,5 +25,8 @@ export class BeaconProposerCache {
25
25
  get(proposerIndex) {
26
26
  return this.feeRecipientByValidatorIndex.get(proposerIndex)?.feeRecipient;
27
27
  }
28
+ getValidatorIndices() {
29
+ return Array.from(this.feeRecipientByValidatorIndex.keys());
30
+ }
28
31
  }
29
32
  //# sourceMappingURL=beaconProposerCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"beaconProposerCache.js","sourceRoot":"","sources":["../../src/chain/beaconProposerCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAInC,MAAM,OAAO,mBAAmB;IAE9B,YAAY,IAAqC;QAC/C,IAAI,CAAC,4BAA4B,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACpD,KAAK,EAAE,CAAC;YACR,YAAY,EAAE,IAAI,CAAC,qBAAqB;SACzC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,GAAG,CAAC,KAAY,EAAE,EAAC,cAAc,EAAE,YAAY,EAA0B;QACvE,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,YAAY,EAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,KAAY;QAChB,2EAA2E;QAC3E,KAAK,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9F,8DAA8D;YAC9D,IAAI,iBAAiB,CAAC,KAAK,GAAG,wBAAwB,GAAG,KAAK,EAAE,CAAC;gBAC/D,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;IACpF,CAAC;IAED,GAAG,CAAC,aAAqB;QACvB,OAAO,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC5E,CAAC;CACF"}
1
+ {"version":3,"file":"beaconProposerCache.js","sourceRoot":"","sources":["../../src/chain/beaconProposerCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAInC,MAAM,OAAO,mBAAmB;IAE9B,YAAY,IAAqC;QAC/C,IAAI,CAAC,4BAA4B,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACpD,KAAK,EAAE,CAAC;YACR,YAAY,EAAE,IAAI,CAAC,qBAAqB;SACzC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,GAAG,CAAC,KAAY,EAAE,EAAC,cAAc,EAAE,YAAY,EAA0B;QACvE,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,YAAY,EAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,KAAY;QAChB,2EAA2E;QAC3E,KAAK,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9F,8DAA8D;YAC9D,IAAI,iBAAiB,CAAC,KAAK,GAAG,wBAAwB,GAAG,KAAK,EAAE,CAAC;gBAC/D,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;IACpF,CAAC;IAED,GAAG,CAAC,aAAqB;QACvB,OAAO,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC5E,CAAC;IAED,mBAAmB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF"}
@@ -3,7 +3,9 @@ import { BlobIndex, ColumnIndex, SignedBeaconBlock, Slot, deneb, fulu } from "@l
3
3
  import { VersionedHashes } from "../../../execution/index.js";
4
4
  import { AddBlob, AddBlock, AddColumn, BlobMeta, BlobWithSource, BlockInputInit, ColumnMeta, ColumnWithSource, CreateBlockInputMeta, DAData, DAType, IBlockInput, LogMetaBasic, LogMetaBlobs, LogMetaColumns, PromiseParts, SourceMeta } from "./types.js";
5
5
  export type BlockInput = BlockInputPreData | BlockInputBlobs | BlockInputColumns;
6
- export declare function createPromise<T>(): PromiseParts<T>;
6
+ export declare function isBlockInputPreDeneb(blockInput: IBlockInput): blockInput is BlockInputPreData;
7
+ export declare function isBlockInputBlobs(blockInput: IBlockInput): blockInput is BlockInputBlobs;
8
+ export declare function isBlockInputColumns(blockInput: IBlockInput): blockInput is BlockInputColumns;
7
9
  type BlockInputState<F extends ForkName> = {
8
10
  hasBlock: false;
9
11
  hasAllData: false;
@@ -25,7 +27,7 @@ type BlockInputState<F extends ForkName> = {
25
27
  declare abstract class AbstractBlockInput<F extends ForkName = ForkName, TData extends DAData = DAData> implements IBlockInput<F, TData> {
26
28
  abstract type: DAType;
27
29
  daOutOfRange: boolean;
28
- timeCreated: number;
30
+ timeCreatedSec: number;
29
31
  forkName: ForkName;
30
32
  slot: Slot;
31
33
  blockRootHex: string;
@@ -1,9 +1,17 @@
1
- import { fromHex, prettyBytes, toHex, withTimeout } from "@lodestar/utils";
1
+ import { fromHex, prettyBytes, toRootHex, withTimeout } from "@lodestar/utils";
2
2
  import { kzgCommitmentToVersionedHash } from "../../../util/blobs.js";
3
- import { byteArrayEquals } from "../../../util/bytes.js";
4
3
  import { BlockInputError, BlockInputErrorCode } from "./errors.js";
5
4
  import { DAType, } from "./types.js";
6
- export function createPromise() {
5
+ export function isBlockInputPreDeneb(blockInput) {
6
+ return blockInput.type === DAType.PreData;
7
+ }
8
+ export function isBlockInputBlobs(blockInput) {
9
+ return blockInput.type === DAType.Blobs;
10
+ }
11
+ export function isBlockInputColumns(blockInput) {
12
+ return blockInput.type === DAType.Columns;
13
+ }
14
+ function createPromise() {
7
15
  let resolve;
8
16
  let reject;
9
17
  const promise = new Promise((_resolve, _reject) => {
@@ -21,7 +29,7 @@ class AbstractBlockInput {
21
29
  this.blockPromise = createPromise();
22
30
  this.dataPromise = createPromise();
23
31
  this.daOutOfRange = init.daOutOfRange;
24
- this.timeCreated = init.timeCreated;
32
+ this.timeCreatedSec = init.timeCreated;
25
33
  this.forkName = init.forkName;
26
34
  this.slot = init.slot;
27
35
  this.blockRootHex = init.blockRootHex;
@@ -58,6 +66,7 @@ class AbstractBlockInput {
58
66
  return {
59
67
  blockRoot: prettyBytes(this.blockRootHex),
60
68
  slot: this.slot,
69
+ timeCreatedSec: this.timeCreatedSec,
61
70
  };
62
71
  }
63
72
  getTimeComplete() {
@@ -102,7 +111,7 @@ export class BlockInputPreData extends AbstractBlockInput {
102
111
  forkName: props.forkName,
103
112
  slot: props.block.message.slot,
104
113
  blockRootHex: props.blockRootHex,
105
- parentRootHex: toHex(props.block.message.parentRoot),
114
+ parentRootHex: toRootHex(props.block.message.parentRoot),
106
115
  };
107
116
  const state = {
108
117
  hasBlock: true,
@@ -149,7 +158,7 @@ export class BlockInputBlobs extends AbstractBlockInput {
149
158
  forkName: props.forkName,
150
159
  slot: props.block.message.slot,
151
160
  blockRootHex: props.blockRootHex,
152
- parentRootHex: toHex(props.block.message.parentRoot),
161
+ parentRootHex: toRootHex(props.block.message.parentRoot),
153
162
  };
154
163
  const blockInput = new BlockInputBlobs(init, state);
155
164
  blockInput.blockPromise.resolve(props.block);
@@ -168,7 +177,7 @@ export class BlockInputBlobs extends AbstractBlockInput {
168
177
  timeCreated: props.seenTimestampSec,
169
178
  forkName: props.forkName,
170
179
  blockRootHex: props.blockRootHex,
171
- parentRootHex: toHex(props.blobSidecar.signedBlockHeader.message.parentRoot),
180
+ parentRootHex: toRootHex(props.blobSidecar.signedBlockHeader.message.parentRoot),
172
181
  slot: props.blobSidecar.signedBlockHeader.message.slot,
173
182
  };
174
183
  const blockInput = new BlockInputBlobs(init, state);
@@ -184,12 +193,13 @@ export class BlockInputBlobs extends AbstractBlockInput {
184
193
  return {
185
194
  blockRoot: prettyBytes(this.blockRootHex),
186
195
  slot: this.slot,
196
+ timeCreatedSec: this.timeCreatedSec,
187
197
  expectedBlobs: this.state.hasBlock ? this.state.block.message.body.blobKzgCommitments.length : "unknown",
188
198
  receivedBlobs: this.blobsCache.size,
189
199
  };
190
200
  }
191
201
  addBlock({ blockRootHex, block, source }) {
192
- if (!this.state.hasBlock) {
202
+ if (this.state.hasBlock) {
193
203
  throw new BlockInputError({
194
204
  code: BlockInputErrorCode.INVALID_CONSTRUCTION,
195
205
  blockRoot: this.blockRootHex,
@@ -215,6 +225,7 @@ export class BlockInputBlobs extends AbstractBlockInput {
215
225
  const hasAllData = this.blobsCache.size === block.message.body.blobKzgCommitments.length;
216
226
  this.state = {
217
227
  ...this.state,
228
+ hasBlock: true,
218
229
  hasAllData,
219
230
  block,
220
231
  versionedHashes: block.message.body.blobKzgCommitments.map(kzgCommitmentToVersionedHash),
@@ -311,7 +322,11 @@ export class BlockInputBlobs extends AbstractBlockInput {
311
322
  }
312
323
  }
313
324
  function blockAndBlobArePaired(block, blobSidecar) {
314
- return byteArrayEquals(block.message.body.blobKzgCommitments[blobSidecar.index], blobSidecar.kzgCommitment);
325
+ const blockCommitment = block.message.body.blobKzgCommitments[blobSidecar.index];
326
+ if (!blockCommitment || !blobSidecar.kzgCommitment) {
327
+ return false;
328
+ }
329
+ return Buffer.compare(blockCommitment, blobSidecar.kzgCommitment) === 0;
315
330
  }
316
331
  function assertBlockAndBlobArePaired(blockRootHex, block, blobSidecar) {
317
332
  if (!blockAndBlobArePaired(block, blobSidecar)) {
@@ -360,7 +375,7 @@ export class BlockInputColumns extends AbstractBlockInput {
360
375
  timeCreated: props.source.seenTimestampSec,
361
376
  forkName: props.forkName,
362
377
  blockRootHex: props.blockRootHex,
363
- parentRootHex: toHex(props.block.message.parentRoot),
378
+ parentRootHex: toRootHex(props.block.message.parentRoot),
364
379
  slot: props.block.message.slot,
365
380
  };
366
381
  const blockInput = new BlockInputColumns(init, state, props.sampledColumns, props.custodyColumns);
@@ -382,7 +397,7 @@ export class BlockInputColumns extends AbstractBlockInput {
382
397
  timeCreated: props.seenTimestampSec,
383
398
  forkName: props.forkName,
384
399
  blockRootHex: props.blockRootHex,
385
- parentRootHex: toHex(props.columnSidecar.signedBlockHeader.message.parentRoot),
400
+ parentRootHex: toRootHex(props.columnSidecar.signedBlockHeader.message.parentRoot),
386
401
  slot: props.columnSidecar.signedBlockHeader.message.slot,
387
402
  };
388
403
  const blockInput = new BlockInputColumns(init, state, props.sampledColumns, props.custodyColumns);
@@ -395,6 +410,7 @@ export class BlockInputColumns extends AbstractBlockInput {
395
410
  return {
396
411
  blockRoot: prettyBytes(this.blockRootHex),
397
412
  slot: this.slot,
413
+ timeCreatedSec: this.timeCreatedSec,
398
414
  expectedColumns: this.state.hasBlock && this.state.block.message.body.blobKzgCommitments.length === 0
399
415
  ? 0
400
416
  : this.sampledColumns.length,
@@ -507,7 +523,7 @@ export class BlockInputColumns extends AbstractBlockInput {
507
523
  }
508
524
  function blockAndColumnArePaired(block, columnSidecar) {
509
525
  return (block.message.body.blobKzgCommitments.length === columnSidecar.kzgCommitments.length &&
510
- block.message.body.blobKzgCommitments.every((commitment, index) => byteArrayEquals(commitment, columnSidecar.kzgCommitments[index])));
526
+ block.message.body.blobKzgCommitments.every((commitment, index) => Buffer.compare(commitment, columnSidecar.kzgCommitments[index])));
511
527
  }
512
528
  function assertBlockAndColumnArePaired(blockRootHex, block, columnSidecar) {
513
529
  if (!blockAndColumnArePaired(block, columnSidecar)) {