@lodestar/beacon-node 1.36.0-dev.6604fa5719 → 1.36.0-dev.698a315802

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 (258) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +41 -22
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/config/constants.d.ts +4 -2
  5. package/lib/api/impl/config/constants.d.ts.map +1 -1
  6. package/lib/api/impl/config/constants.js +6 -3
  7. package/lib/api/impl/config/constants.js.map +1 -1
  8. package/lib/api/impl/lodestar/index.d.ts +5 -0
  9. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  10. package/lib/api/impl/lodestar/index.js +35 -10
  11. package/lib/api/impl/lodestar/index.js.map +1 -1
  12. package/lib/api/impl/node/utils.js +1 -1
  13. package/lib/api/impl/node/utils.js.map +1 -1
  14. package/lib/api/impl/validator/index.d.ts.map +1 -1
  15. package/lib/api/impl/validator/index.js +2 -2
  16. package/lib/api/impl/validator/index.js.map +1 -1
  17. package/lib/chain/archiveStore/archiveStore.d.ts +9 -0
  18. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  19. package/lib/chain/archiveStore/archiveStore.js +24 -0
  20. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  21. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +7 -0
  22. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  23. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +31 -5
  24. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  25. package/lib/chain/beaconProposerCache.d.ts +3 -0
  26. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  27. package/lib/chain/beaconProposerCache.js +4 -6
  28. package/lib/chain/beaconProposerCache.js.map +1 -1
  29. package/lib/chain/chain.d.ts +5 -2
  30. package/lib/chain/chain.d.ts.map +1 -1
  31. package/lib/chain/chain.js +33 -17
  32. package/lib/chain/chain.js.map +1 -1
  33. package/lib/chain/errors/dataColumnSidecarError.d.ts +23 -13
  34. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
  35. package/lib/chain/errors/dataColumnSidecarError.js +5 -0
  36. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  37. package/lib/chain/errors/voluntaryExitError.d.ts +16 -2
  38. package/lib/chain/errors/voluntaryExitError.d.ts.map +1 -1
  39. package/lib/chain/errors/voluntaryExitError.js +22 -1
  40. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  41. package/lib/chain/forkChoice/index.d.ts +9 -1
  42. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  43. package/lib/chain/forkChoice/index.js +109 -4
  44. package/lib/chain/forkChoice/index.js.map +1 -1
  45. package/lib/chain/interface.d.ts +2 -0
  46. package/lib/chain/interface.d.ts.map +1 -1
  47. package/lib/chain/opPools/syncContributionAndProofPool.d.ts +3 -1
  48. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  49. package/lib/chain/opPools/syncContributionAndProofPool.js +4 -3
  50. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  51. package/lib/chain/options.d.ts +0 -2
  52. package/lib/chain/options.d.ts.map +1 -1
  53. package/lib/chain/options.js +2 -2
  54. package/lib/chain/options.js.map +1 -1
  55. package/lib/chain/stateCache/datastore/db.d.ts +12 -0
  56. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  57. package/lib/chain/stateCache/datastore/db.js +70 -0
  58. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  59. package/lib/chain/stateCache/datastore/file.d.ts +1 -0
  60. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  61. package/lib/chain/stateCache/datastore/file.js +7 -0
  62. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  63. package/lib/chain/stateCache/datastore/types.d.ts +1 -0
  64. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  65. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +16 -1
  66. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  67. package/lib/chain/stateCache/persistentCheckpointsCache.js +31 -1
  68. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  69. package/lib/chain/validation/attestation.d.ts.map +1 -1
  70. package/lib/chain/validation/attestation.js +6 -7
  71. package/lib/chain/validation/attestation.js.map +1 -1
  72. package/lib/chain/validation/block.d.ts.map +1 -1
  73. package/lib/chain/validation/block.js +1 -2
  74. package/lib/chain/validation/block.js.map +1 -1
  75. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  76. package/lib/chain/validation/dataColumnSidecar.js +45 -17
  77. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  78. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -1
  79. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -2
  80. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  81. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  82. package/lib/chain/validation/voluntaryExit.js +5 -4
  83. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  84. package/lib/constants/constants.d.ts +0 -5
  85. package/lib/constants/constants.d.ts.map +1 -1
  86. package/lib/constants/constants.js +0 -5
  87. package/lib/constants/constants.js.map +1 -1
  88. package/lib/constants/network.d.ts +0 -14
  89. package/lib/constants/network.d.ts.map +1 -1
  90. package/lib/constants/network.js +0 -15
  91. package/lib/constants/network.js.map +1 -1
  92. package/lib/index.d.ts +2 -0
  93. package/lib/index.d.ts.map +1 -1
  94. package/lib/index.js +2 -0
  95. package/lib/index.js.map +1 -1
  96. package/lib/metrics/metrics/lodestar.d.ts +10 -0
  97. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  98. package/lib/metrics/metrics/lodestar.js +15 -1
  99. package/lib/metrics/metrics/lodestar.js.map +1 -1
  100. package/lib/network/core/networkCore.d.ts.map +1 -1
  101. package/lib/network/core/networkCore.js +5 -1
  102. package/lib/network/core/networkCore.js.map +1 -1
  103. package/lib/network/core/networkCoreWorker.js +8 -8
  104. package/lib/network/core/networkCoreWorker.js.map +1 -1
  105. package/lib/network/core/networkCoreWorkerHandler.js +1 -1
  106. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  107. package/lib/network/discv5/utils.d.ts.map +1 -1
  108. package/lib/network/discv5/utils.js +1 -2
  109. package/lib/network/discv5/utils.js.map +1 -1
  110. package/lib/network/discv5/worker.js +2 -7
  111. package/lib/network/discv5/worker.js.map +1 -1
  112. package/lib/network/events.d.ts +1 -0
  113. package/lib/network/events.d.ts.map +1 -1
  114. package/lib/network/gossip/encoding.js +1 -1
  115. package/lib/network/gossip/encoding.js.map +1 -1
  116. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  117. package/lib/network/gossip/gossipsub.js +1 -7
  118. package/lib/network/gossip/gossipsub.js.map +1 -1
  119. package/lib/network/gossip/snappy_bun.d.ts +3 -0
  120. package/lib/network/gossip/snappy_bun.d.ts.map +1 -0
  121. package/lib/network/gossip/snappy_bun.js +3 -0
  122. package/lib/network/gossip/snappy_bun.js.map +1 -0
  123. package/lib/network/metadata.d.ts +1 -1
  124. package/lib/network/metadata.d.ts.map +1 -1
  125. package/lib/network/metadata.js +1 -0
  126. package/lib/network/metadata.js.map +1 -1
  127. package/lib/network/options.d.ts +0 -1
  128. package/lib/network/options.d.ts.map +1 -1
  129. package/lib/network/options.js.map +1 -1
  130. package/lib/network/peers/discover.js +2 -2
  131. package/lib/network/peers/discover.js.map +1 -1
  132. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  133. package/lib/network/processor/gossipHandlers.js +14 -8
  134. package/lib/network/processor/gossipHandlers.js.map +1 -1
  135. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  136. package/lib/network/reqresp/ReqRespBeaconNode.js +3 -1
  137. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  138. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -1
  139. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  140. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -3
  141. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  142. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +5 -5
  143. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  144. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +4 -4
  145. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  146. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +2 -1
  147. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  148. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +9 -1
  149. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  150. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -1
  151. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  152. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +9 -1
  153. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  154. package/lib/network/reqresp/handlers/index.js +6 -6
  155. package/lib/network/reqresp/handlers/index.js.map +1 -1
  156. package/lib/network/reqresp/types.d.ts +1 -0
  157. package/lib/network/reqresp/types.d.ts.map +1 -1
  158. package/lib/network/subnets/attnetsService.d.ts +1 -1
  159. package/lib/network/subnets/attnetsService.js +6 -6
  160. package/lib/network/subnets/attnetsService.js.map +1 -1
  161. package/lib/network/subnets/util.d.ts +3 -2
  162. package/lib/network/subnets/util.d.ts.map +1 -1
  163. package/lib/network/subnets/util.js +6 -6
  164. package/lib/network/subnets/util.js.map +1 -1
  165. package/lib/node/nodejs.d.ts +2 -1
  166. package/lib/node/nodejs.d.ts.map +1 -1
  167. package/lib/node/nodejs.js +2 -1
  168. package/lib/node/nodejs.js.map +1 -1
  169. package/lib/sync/range/range.d.ts.map +1 -1
  170. package/lib/sync/range/range.js +2 -1
  171. package/lib/sync/range/range.js.map +1 -1
  172. package/lib/sync/utils/downloadByRange.d.ts +58 -13
  173. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  174. package/lib/sync/utils/downloadByRange.js +201 -82
  175. package/lib/sync/utils/downloadByRange.js.map +1 -1
  176. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  177. package/lib/sync/utils/downloadByRoot.js +7 -7
  178. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  179. package/lib/sync/utils/remoteSyncType.d.ts +2 -1
  180. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  181. package/lib/sync/utils/remoteSyncType.js +19 -4
  182. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  183. package/lib/util/blobs.d.ts +1 -1
  184. package/lib/util/blobs.d.ts.map +1 -1
  185. package/lib/util/blobs.js +53 -20
  186. package/lib/util/blobs.js.map +1 -1
  187. package/lib/util/clock.d.ts.map +1 -1
  188. package/lib/util/clock.js +3 -4
  189. package/lib/util/clock.js.map +1 -1
  190. package/lib/util/profile.d.ts +6 -4
  191. package/lib/util/profile.d.ts.map +1 -1
  192. package/lib/util/profile.js +40 -3
  193. package/lib/util/profile.js.map +1 -1
  194. package/lib/util/sszBytes.d.ts +2 -0
  195. package/lib/util/sszBytes.d.ts.map +1 -1
  196. package/lib/util/sszBytes.js +25 -0
  197. package/lib/util/sszBytes.js.map +1 -1
  198. package/package.json +32 -25
  199. package/src/api/impl/beacon/blocks/index.ts +47 -25
  200. package/src/api/impl/config/constants.ts +10 -4
  201. package/src/api/impl/lodestar/index.ts +42 -10
  202. package/src/api/impl/node/utils.ts +1 -1
  203. package/src/api/impl/validator/index.ts +5 -2
  204. package/src/chain/archiveStore/archiveStore.ts +27 -0
  205. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +32 -5
  206. package/src/chain/beaconProposerCache.ts +4 -8
  207. package/src/chain/chain.ts +49 -24
  208. package/src/chain/errors/dataColumnSidecarError.ts +27 -13
  209. package/src/chain/errors/voluntaryExitError.ts +30 -2
  210. package/src/chain/forkChoice/index.ts +178 -2
  211. package/src/chain/interface.ts +2 -0
  212. package/src/chain/opPools/syncContributionAndProofPool.ts +3 -2
  213. package/src/chain/options.ts +2 -3
  214. package/src/chain/stateCache/datastore/db.ts +89 -1
  215. package/src/chain/stateCache/datastore/file.ts +8 -0
  216. package/src/chain/stateCache/datastore/types.ts +1 -0
  217. package/src/chain/stateCache/persistentCheckpointsCache.ts +45 -2
  218. package/src/chain/validation/attestation.ts +6 -7
  219. package/src/chain/validation/block.ts +1 -2
  220. package/src/chain/validation/dataColumnSidecar.ts +54 -19
  221. package/src/chain/validation/lightClientOptimisticUpdate.ts +3 -2
  222. package/src/chain/validation/voluntaryExit.ts +14 -4
  223. package/src/constants/constants.ts +0 -6
  224. package/src/constants/network.ts +0 -19
  225. package/src/index.ts +2 -0
  226. package/src/metrics/metrics/lodestar.ts +18 -1
  227. package/src/network/core/networkCore.ts +5 -1
  228. package/src/network/core/networkCoreWorker.ts +9 -9
  229. package/src/network/core/networkCoreWorkerHandler.ts +1 -1
  230. package/src/network/discv5/utils.ts +1 -2
  231. package/src/network/discv5/worker.ts +2 -7
  232. package/src/network/events.ts +1 -1
  233. package/src/network/gossip/encoding.ts +1 -1
  234. package/src/network/gossip/gossipsub.ts +1 -10
  235. package/src/network/gossip/snappy_bun.ts +2 -0
  236. package/src/network/metadata.ts +3 -1
  237. package/src/network/options.ts +0 -1
  238. package/src/network/peers/discover.ts +2 -2
  239. package/src/network/processor/gossipHandlers.ts +16 -7
  240. package/src/network/reqresp/ReqRespBeaconNode.ts +3 -1
  241. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +18 -3
  242. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +6 -6
  243. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +5 -5
  244. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +13 -1
  245. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +13 -1
  246. package/src/network/reqresp/handlers/index.ts +6 -6
  247. package/src/network/reqresp/types.ts +1 -0
  248. package/src/network/subnets/attnetsService.ts +6 -6
  249. package/src/network/subnets/util.ts +12 -12
  250. package/src/node/nodejs.ts +3 -0
  251. package/src/sync/range/range.ts +2 -1
  252. package/src/sync/utils/downloadByRange.ts +259 -103
  253. package/src/sync/utils/downloadByRoot.ts +7 -7
  254. package/src/sync/utils/remoteSyncType.ts +23 -4
  255. package/src/util/blobs.ts +64 -20
  256. package/src/util/clock.ts +3 -4
  257. package/src/util/profile.ts +45 -3
  258. package/src/util/sszBytes.ts +30 -0
@@ -1,5 +1,7 @@
1
1
  import { ExecutionStatus, ForkChoice, ForkChoiceStore, ProtoArray, } from "@lodestar/fork-choice";
2
- import { DataAvailabilityStatus, computeAnchorCheckpoint, getEffectiveBalanceIncrementsZeroInactive, isExecutionStateType, isMergeTransitionComplete, } from "@lodestar/state-transition";
2
+ import { ZERO_HASH_HEX } from "@lodestar/params";
3
+ import { DataAvailabilityStatus, computeAnchorCheckpoint, computeEpochAtSlot, computeStartSlotAtEpoch, getBlockRootAtSlot, getEffectiveBalanceIncrementsZeroInactive, isExecutionStateType, isMergeTransitionComplete, } from "@lodestar/state-transition";
4
+ import { ssz } from "@lodestar/types";
3
5
  import { toRootHex } from "@lodestar/utils";
4
6
  import { GENESIS_SLOT } from "../../constants/index.js";
5
7
  import { ChainEvent } from "../emitter.js";
@@ -11,7 +13,15 @@ export var ForkchoiceCaller;
11
13
  /**
12
14
  * Fork Choice extended with a ChainEventEmitter
13
15
  */
14
- export function initializeForkChoice(config, emitter, currentSlot, state, opts, justifiedBalancesGetter, metrics, logger) {
16
+ export function initializeForkChoice(config, emitter, currentSlot, state, isFinalizedState, opts, justifiedBalancesGetter, metrics, logger) {
17
+ return isFinalizedState
18
+ ? initializeForkChoiceFromFinalizedState(config, emitter, currentSlot, state, opts, justifiedBalancesGetter, metrics, logger)
19
+ : initializeForkChoiceFromUnfinalizedState(config, emitter, currentSlot, state, opts, justifiedBalancesGetter, metrics, logger);
20
+ }
21
+ /**
22
+ * Initialize forkchoice from a finalized state.
23
+ */
24
+ export function initializeForkChoiceFromFinalizedState(config, emitter, currentSlot, state, opts, justifiedBalancesGetter, metrics, logger) {
15
25
  const { blockHeader, checkpoint } = computeAnchorCheckpoint(config, state);
16
26
  const finalizedCheckpoint = { ...checkpoint };
17
27
  const justifiedCheckpoint = {
@@ -34,7 +44,7 @@ export function initializeForkChoice(config, emitter, currentSlot, state, opts,
34
44
  parentRoot: toRootHex(blockHeader.parentRoot),
35
45
  stateRoot: toRootHex(blockHeader.stateRoot),
36
46
  blockRoot: toRootHex(checkpoint.root),
37
- timeliness: true, // Optimisitcally assume is timely
47
+ timeliness: true, // Optimistically assume is timely
38
48
  justifiedEpoch: justifiedCheckpoint.epoch,
39
49
  justifiedRoot: toRootHex(justifiedCheckpoint.root),
40
50
  finalizedEpoch: finalizedCheckpoint.epoch,
@@ -51,6 +61,101 @@ export function initializeForkChoice(config, emitter, currentSlot, state, opts,
51
61
  }
52
62
  : { executionPayloadBlockHash: null, executionStatus: ExecutionStatus.PreMerge }),
53
63
  dataAvailabilityStatus: DataAvailabilityStatus.PreData,
54
- }, currentSlot), metrics, opts, logger);
64
+ }, currentSlot), state.validators.length, metrics, opts, logger);
65
+ }
66
+ /**
67
+ * Initialize forkchoice from an unfinalized state.
68
+ */
69
+ export function initializeForkChoiceFromUnfinalizedState(config, emitter, currentSlot, unfinalizedState, opts, justifiedBalancesGetter, metrics, logger) {
70
+ const { blockHeader } = computeAnchorCheckpoint(config, unfinalizedState);
71
+ const finalizedCheckpoint = unfinalizedState.finalizedCheckpoint.toValue();
72
+ const justifiedCheckpoint = unfinalizedState.currentJustifiedCheckpoint.toValue();
73
+ const headRoot = toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(blockHeader));
74
+ const logCtx = {
75
+ currentSlot: currentSlot,
76
+ stateSlot: unfinalizedState.slot,
77
+ headSlot: blockHeader.slot,
78
+ headRoot: headRoot,
79
+ finalizedEpoch: finalizedCheckpoint.epoch,
80
+ finalizedRoot: toRootHex(finalizedCheckpoint.root),
81
+ justifiedEpoch: justifiedCheckpoint.epoch,
82
+ justifiedRoot: toRootHex(justifiedCheckpoint.root),
83
+ };
84
+ logger?.warn("Initializing fork choice from unfinalized state", logCtx);
85
+ // this is not the justified state, but there is no other ways to get justified balances
86
+ const justifiedBalances = getEffectiveBalanceIncrementsZeroInactive(unfinalizedState);
87
+ const store = new ForkChoiceStore(currentSlot, justifiedCheckpoint, finalizedCheckpoint, justifiedBalances, justifiedBalancesGetter, {
88
+ onJustified: (cp) => emitter.emit(ChainEvent.forkChoiceJustified, cp),
89
+ onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
90
+ });
91
+ // this is the same to the finalized state
92
+ const headBlock = {
93
+ slot: blockHeader.slot,
94
+ parentRoot: toRootHex(blockHeader.parentRoot),
95
+ stateRoot: toRootHex(blockHeader.stateRoot),
96
+ blockRoot: headRoot,
97
+ targetRoot: headRoot,
98
+ timeliness: true, // Optimistically assume is timely
99
+ justifiedEpoch: justifiedCheckpoint.epoch,
100
+ justifiedRoot: toRootHex(justifiedCheckpoint.root),
101
+ finalizedEpoch: finalizedCheckpoint.epoch,
102
+ finalizedRoot: toRootHex(finalizedCheckpoint.root),
103
+ unrealizedJustifiedEpoch: justifiedCheckpoint.epoch,
104
+ unrealizedJustifiedRoot: toRootHex(justifiedCheckpoint.root),
105
+ unrealizedFinalizedEpoch: finalizedCheckpoint.epoch,
106
+ unrealizedFinalizedRoot: toRootHex(finalizedCheckpoint.root),
107
+ ...(isExecutionStateType(unfinalizedState) && isMergeTransitionComplete(unfinalizedState)
108
+ ? {
109
+ executionPayloadBlockHash: toRootHex(unfinalizedState.latestExecutionPayloadHeader.blockHash),
110
+ executionPayloadNumber: unfinalizedState.latestExecutionPayloadHeader.blockNumber,
111
+ executionStatus: blockHeader.slot === GENESIS_SLOT ? ExecutionStatus.Valid : ExecutionStatus.Syncing,
112
+ }
113
+ : { executionPayloadBlockHash: null, executionStatus: ExecutionStatus.PreMerge }),
114
+ dataAvailabilityStatus: DataAvailabilityStatus.PreData,
115
+ };
116
+ const parentSlot = blockHeader.slot - 1;
117
+ const parentEpoch = computeEpochAtSlot(parentSlot);
118
+ // parent of head block
119
+ const parentBlock = {
120
+ ...headBlock,
121
+ slot: parentSlot,
122
+ // link this to the dummy justified block
123
+ parentRoot: toRootHex(justifiedCheckpoint.root),
124
+ // dummy data, we're not able to regen state before headBlock
125
+ stateRoot: ZERO_HASH_HEX,
126
+ blockRoot: headBlock.parentRoot,
127
+ targetRoot: toRootHex(getBlockRootAtSlot(unfinalizedState, computeStartSlotAtEpoch(parentEpoch))),
128
+ };
129
+ const justifiedBlock = {
130
+ ...headBlock,
131
+ slot: computeStartSlotAtEpoch(justifiedCheckpoint.epoch),
132
+ // link this to the finalized root so that getAncestors can find the finalized block
133
+ parentRoot: toRootHex(finalizedCheckpoint.root),
134
+ // dummy data, we're not able to regen state before headBlock
135
+ stateRoot: ZERO_HASH_HEX,
136
+ blockRoot: toRootHex(justifiedCheckpoint.root),
137
+ // same to blockRoot
138
+ targetRoot: toRootHex(justifiedCheckpoint.root),
139
+ };
140
+ const finalizedBlock = {
141
+ ...headBlock,
142
+ slot: computeStartSlotAtEpoch(finalizedCheckpoint.epoch),
143
+ // we don't care parent of finalized block
144
+ parentRoot: ZERO_HASH_HEX,
145
+ // dummy data, we're not able to regen state before headBlock
146
+ stateRoot: ZERO_HASH_HEX,
147
+ blockRoot: toRootHex(finalizedCheckpoint.root),
148
+ // same to blockRoot
149
+ targetRoot: toRootHex(finalizedCheckpoint.root),
150
+ };
151
+ const protoArray = ProtoArray.initialize(finalizedBlock, currentSlot);
152
+ protoArray.onBlock(justifiedBlock, currentSlot);
153
+ protoArray.onBlock(parentBlock, currentSlot);
154
+ protoArray.onBlock(headBlock, currentSlot);
155
+ logger?.verbose("Initialized protoArray successfully", { ...logCtx, length: protoArray.length() });
156
+ // forkchoiceConstructor is only used for some test cases
157
+ // production code use ForkChoice constructor directly
158
+ const forkchoiceConstructor = opts.forkchoiceConstructor ?? ForkChoice;
159
+ return new forkchoiceConstructor(config, store, protoArray, unfinalizedState.validators.length, metrics, opts, logger);
55
160
  }
56
161
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/forkChoice/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/forkChoice/index.ts"],"names":[],"mappings":"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"}
@@ -133,6 +133,8 @@ export interface IBeaconChain {
133
133
  executionOptimistic: boolean;
134
134
  finalized: boolean;
135
135
  } | null>;
136
+ /** Return serialized bytes of a persisted checkpoint state */
137
+ getPersistedCheckpointState(checkpoint?: phase0.Checkpoint): Promise<Uint8Array | null>;
136
138
  /** Returns a cached state by checkpoint */
137
139
  getStateByCheckpoint(checkpoint: CheckpointWithHex): {
138
140
  state: BeaconStateAllForks;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/chain/interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/chain/interface.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { BitArray } from "@chainsafe/ssz";
2
+ import { ChainForkConfig } from "@lodestar/config";
2
3
  import { Root, Slot, altair } from "@lodestar/types";
3
4
  import { Logger } from "@lodestar/utils";
4
5
  import { Metrics } from "../../metrics/metrics.js";
@@ -18,12 +19,13 @@ export type SyncContributionFast = {
18
19
  * This stays in-memory and should be pruned per slot.
19
20
  */
20
21
  export declare class SyncContributionAndProofPool {
22
+ private readonly config;
21
23
  private readonly clock;
22
24
  private readonly metrics;
23
25
  private logger;
24
26
  private readonly bestContributionBySubnetRootBySlot;
25
27
  private lowestPermissibleSlot;
26
- constructor(clock: IClock, metrics?: Metrics | null, logger?: Logger | null);
28
+ constructor(config: ChainForkConfig, clock: IClock, metrics?: Metrics | null, logger?: Logger | null);
27
29
  /** Returns current count of unique SyncContributionFast by block root and subnet */
28
30
  get size(): number;
29
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"syncContributionAndProofPool.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/syncContributionAndProofPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAY,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAC,MAAM,EAAoB,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAA+B,MAAM,YAAY,CAAC;AAkBvE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,oBAAoB,EAAE,QAAQ,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,UAAU,CAAC;CACvC,CAAC;AAKF;;;;GAIG;AACH,qBAAa,4BAA4B;IASrC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,MAAM;IAVhB,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAGmE;IAEtH,OAAO,CAAC,qBAAqB,CAAK;gBAGf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,OAAO,GAAG,IAAW,EACvC,MAAM,GAAE,MAAM,GAAG,IAAW;IAStC,oFAAoF;IACpF,IAAI,IAAI,IAAI,MAAM,CAQjB;IAED;;OAEG;IACH,GAAG,CACD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EACjD,yBAAyB,EAAE,MAAM,EACjC,QAAQ,CAAC,EAAE,OAAO,GACjB,aAAa;IAgChB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC,aAAa;IA4BnE;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAK3B,OAAO,CAAC,eAAe;CAiBxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,gBAAgB,EAAE,oBAAoB,EACtC,eAAe,EAAE,MAAM,CAAC,yBAAyB,EACjD,kBAAkB,EAAE,MAAM,GACzB,aAAa,CAWf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,CAAC,yBAAyB,EAC9C,eAAe,EAAE,MAAM,GACtB,oBAAoB,CAQtB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC3D,OAAO,GAAE,OAAO,GAAG,IAAW,GAC7B,MAAM,CAAC,aAAa,CAsBtB"}
1
+ {"version":3,"file":"syncContributionAndProofPool.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/syncContributionAndProofPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAC,IAAI,EAAE,IAAI,EAAY,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAC,MAAM,EAAoB,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAA+B,MAAM,YAAY,CAAC;AAkBvE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,oBAAoB,EAAE,QAAQ,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,UAAU,CAAC;CACvC,CAAC;AAKF;;;;GAIG;AACH,qBAAa,4BAA4B;IASrC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,MAAM;IAXhB,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAGmE;IAEtH,OAAO,CAAC,qBAAqB,CAAK;gBAGf,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,OAAO,GAAG,IAAW,EACvC,MAAM,GAAE,MAAM,GAAG,IAAW;IAStC,oFAAoF;IACpF,IAAI,IAAI,IAAI,MAAM,CAQjB;IAED;;OAEG;IACH,GAAG,CACD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EACjD,yBAAyB,EAAE,MAAM,EACjC,QAAQ,CAAC,EAAE,OAAO,GACjB,aAAa;IAgChB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC,aAAa;IA4BnE;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAK3B,OAAO,CAAC,eAAe;CAiBxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,gBAAgB,EAAE,oBAAoB,EACtC,eAAe,EAAE,MAAM,CAAC,yBAAyB,EACjD,kBAAkB,EAAE,MAAM,GACzB,aAAa,CAWf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,CAAC,yBAAyB,EAC9C,eAAe,EAAE,MAAM,GACtB,oBAAoB,CAQtB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC3D,OAAO,GAAE,OAAO,GAAG,IAAW,GAC7B,MAAM,CAAC,aAAa,CAsBtB"}
@@ -4,7 +4,6 @@ import { SYNC_COMMITTEE_SIZE, SYNC_COMMITTEE_SUBNET_SIZE } from "@lodestar/param
4
4
  import { G2_POINT_AT_INFINITY } from "@lodestar/state-transition";
5
5
  import { ssz } from "@lodestar/types";
6
6
  import { MapDef, toRootHex } from "@lodestar/utils";
7
- import { MAXIMUM_GOSSIP_CLOCK_DISPARITY } from "../../constants/constants.js";
8
7
  import { InsertOutcome, OpPoolError, OpPoolErrorCode } from "./types.js";
9
8
  import { pruneBySlot, signatureFromBytesNoCheck } from "./utils.js";
10
9
  /**
@@ -25,12 +24,14 @@ const SYNC_COMMITTEE_SUBNET_BYTES = SYNC_COMMITTEE_SUBNET_SIZE / 8;
25
24
  * This stays in-memory and should be pruned per slot.
26
25
  */
27
26
  export class SyncContributionAndProofPool {
27
+ config;
28
28
  clock;
29
29
  metrics;
30
30
  logger;
31
31
  bestContributionBySubnetRootBySlot = new MapDef(() => new MapDef(() => new Map()));
32
32
  lowestPermissibleSlot = 0;
33
- constructor(clock, metrics = null, logger = null) {
33
+ constructor(config, clock, metrics = null, logger = null) {
34
+ this.config = config;
34
35
  this.clock = clock;
35
36
  this.metrics = metrics;
36
37
  this.logger = logger;
@@ -63,7 +64,7 @@ export class SyncContributionAndProofPool {
63
64
  }
64
65
  // Reject ContributionAndProofs of previous slots
65
66
  // for api ContributionAndProofs, we allow them to be added to the pool
66
- if (!priority && slot < this.clock.slotWithPastTolerance(MAXIMUM_GOSSIP_CLOCK_DISPARITY)) {
67
+ if (!priority && slot < this.clock.slotWithPastTolerance(this.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY / 1000)) {
67
68
  return InsertOutcome.Late;
68
69
  }
69
70
  // Limit object per slot
@@ -1 +1 @@
1
- {"version":3,"file":"syncContributionAndProofPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/syncContributionAndProofPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncContributionAndProofPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/syncContributionAndProofPool.ts"],"names":[],"mappings":"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"}
@@ -25,8 +25,6 @@ export type IChainOptions = BlockProcessOpts & PoolOpts & SeenCacheOpts & ForkCh
25
25
  maxCachedBlobSidecars?: number;
26
26
  /** Max number of produced block roots (blinded or full) cached for broadcast validations */
27
27
  maxCachedProducedRoots?: number;
28
- /** Subscribe to and custody all data column sidecar subnets */
29
- supernode?: boolean;
30
28
  initialCustodyGroupCount?: number;
31
29
  broadcastValidationStrictness?: string;
32
30
  minSameMessageSignatureSetsToBatch: number;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAA2B,uBAAuB,EAAC,MAAM,qCAAqC,CAAC;AACtG,OAAO,EAEL,kCAAkC,EACnC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAC1C,QAAQ,GACR,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,uBAAuB,GACvB,kCAAkC,GAClC,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GAAG;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4FAA4F;IAC5F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,kCAAkC,EAAE,MAAM,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC;;OAEG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sCAAsC;IACtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2DAA2D;IAC3D,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0DAA0D;IAC1D,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAiCjC,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAA2B,uBAAuB,EAAC,MAAM,qCAAqC,CAAC;AACtG,OAAO,EAGL,kCAAkC,EACnC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAC1C,QAAQ,GACR,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,uBAAuB,GACvB,kCAAkC,GAClC,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GAAG;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4FAA4F;IAC5F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,kCAAkC,EAAE,MAAM,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC;;OAEG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sCAAsC;IACtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2DAA2D;IAC3D,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0DAA0D;IAC1D,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAiCjC,CAAC"}
@@ -3,7 +3,7 @@ import { defaultOptions as defaultValidatorOptions } from "@lodestar/validator";
3
3
  import { DEFAULT_ARCHIVE_MODE } from "./archiveStore/constants.js";
4
4
  import { ArchiveMode } from "./archiveStore/interface.js";
5
5
  import { DEFAULT_MAX_BLOCK_STATES } from "./stateCache/fifoBlockStateCache.js";
6
- import { DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY, } from "./stateCache/persistentCheckpointsCache.js";
6
+ import { DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY, DEFAULT_MAX_CP_STATE_ON_DISK, } from "./stateCache/persistentCheckpointsCache.js";
7
7
  export { ArchiveMode, DEFAULT_ARCHIVE_MODE };
8
8
  export const defaultChainOptions = {
9
9
  blsVerifyAllMainThread: false,
@@ -21,7 +21,6 @@ export const defaultChainOptions = {
21
21
  archiveMode: DEFAULT_ARCHIVE_MODE,
22
22
  pruneHistory: false,
23
23
  emitPayloadAttributes: false,
24
- supernode: false,
25
24
  // for gossip block validation, it's unlikely we see a reorg with 32 slots
26
25
  // for attestation validation, having this value ensures we don't have to regen states most of the time
27
26
  maxSkipSlots: 32,
@@ -38,5 +37,6 @@ export const defaultChainOptions = {
38
37
  nHistoricalStatesFileDataStore: true,
39
38
  maxBlockStates: DEFAULT_MAX_BLOCK_STATES,
40
39
  maxCPStateEpochsInMemory: DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY,
40
+ maxCPStateEpochsOnDisk: DEFAULT_MAX_CP_STATE_ON_DISK,
41
41
  };
42
42
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mCAAmC,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAC,cAAc,IAAI,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAmB,MAAM,6BAA6B,CAAC;AAI1E,OAAO,EAAC,wBAAwB,EAA0B,MAAM,qCAAqC,CAAC;AACtG,OAAO,EACL,qCAAqC,GAEtC,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;AA0F3C,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,KAAK;IAC9B,iBAAiB,EAAE,EAAE;IACrB,qBAAqB,EAAE,KAAK;IAC5B,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,IAAI;IACvB,+BAA+B,EAAE,mCAAmC;IACpE,qBAAqB,EAAE,uBAAuB,CAAC,qBAAqB;IACpE,oBAAoB,EAAE,KAAK;IAC3B,gCAAgC,EAAE,KAAK;IACvC,0BAA0B,EAAE,IAAI;IAChC,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,KAAK;IACnB,qBAAqB,EAAE,KAAK;IAC5B,SAAS,EAAE,KAAK;IAChB,0EAA0E;IAC1E,uGAAuG;IACvG,YAAY,EAAE,EAAE;IAChB,6BAA6B,EAAE,MAAM;IACrC,qEAAqE;IACrE,gGAAgG;IAChG,wGAAwG;IACxG,kCAAkC,EAAE,CAAC;IACrC,iBAAiB,EAAE,IAAI;IACvB,4DAA4D;IAC5D,qEAAqE;IACrE,uFAAuF;IACvF,wDAAwD;IACxD,8BAA8B,EAAE,IAAI;IACpC,cAAc,EAAE,wBAAwB;IACxC,wBAAwB,EAAE,qCAAqC;CAChE,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mCAAmC,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAC,cAAc,IAAI,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAmB,MAAM,6BAA6B,CAAC;AAI1E,OAAO,EAAC,wBAAwB,EAA0B,MAAM,qCAAqC,CAAC;AACtG,OAAO,EACL,qCAAqC,EACrC,4BAA4B,GAE7B,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAwF3C,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,KAAK;IAC9B,iBAAiB,EAAE,EAAE;IACrB,qBAAqB,EAAE,KAAK;IAC5B,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,IAAI;IACvB,+BAA+B,EAAE,mCAAmC;IACpE,qBAAqB,EAAE,uBAAuB,CAAC,qBAAqB;IACpE,oBAAoB,EAAE,KAAK;IAC3B,gCAAgC,EAAE,KAAK;IACvC,0BAA0B,EAAE,IAAI;IAChC,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,KAAK;IACnB,qBAAqB,EAAE,KAAK;IAC5B,0EAA0E;IAC1E,uGAAuG;IACvG,YAAY,EAAE,EAAE;IAChB,6BAA6B,EAAE,MAAM;IACrC,qEAAqE;IACrE,gGAAgG;IAChG,wGAAwG;IACxG,kCAAkC,EAAE,CAAC;IACrC,iBAAiB,EAAE,IAAI;IACvB,4DAA4D;IAC5D,qEAAqE;IACrE,uFAAuF;IACvF,wDAAwD;IACxD,8BAA8B,EAAE,IAAI;IACpC,cAAc,EAAE,wBAAwB;IACxC,wBAAwB,EAAE,qCAAqC;IAC/D,sBAAsB,EAAE,4BAA4B;CACrD,CAAC"}
@@ -10,8 +10,20 @@ export declare class DbCPStateDatastore implements CPStateDatastore {
10
10
  write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array): Promise<DatastoreKey>;
11
11
  remove(serializedCheckpoint: DatastoreKey): Promise<void>;
12
12
  read(serializedCheckpoint: DatastoreKey): Promise<Uint8Array | null>;
13
+ readLatestSafe(): Promise<Uint8Array | null>;
13
14
  readKeys(): Promise<DatastoreKey[]>;
14
15
  }
15
16
  export declare function datastoreKeyToCheckpoint(key: DatastoreKey): phase0.Checkpoint;
16
17
  export declare function checkpointToDatastoreKey(cp: phase0.Checkpoint): DatastoreKey;
18
+ /**
19
+ * Get the latest safe checkpoint state the node can use to boot from
20
+ * - it should be the checkpoint state that's unique in its epoch
21
+ * - its last processed block slot should be at epoch boundary or last slot of previous epoch
22
+ * - state slot should be at epoch boundary
23
+ * - state slot should be equal to epoch * SLOTS_PER_EPOCH
24
+ *
25
+ * return the serialized data of Current Root Checkpoint State (CRCS) or Previous Root Checkpoint State (PRCS)
26
+ *
27
+ */
28
+ export declare function getLatestSafeDatastoreKey(allKeys: DatastoreKey[], readFn: (key: DatastoreKey) => Promise<Uint8Array | null>): Promise<Uint8Array | null>;
17
29
  //# sourceMappingURL=db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,SAAS;IAEpC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAM9E,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIpE,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAG1C;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,UAAU,CAE7E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,GAAG,YAAY,CAE5E"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAKnD,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,SAAS;IAEpC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAM9E,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIpE,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO5C,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAG1C;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,UAAU,CAE7E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,GAAG,YAAY,CAE5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GACxD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA4D5B"}
@@ -1,4 +1,7 @@
1
+ import { SLOTS_PER_EPOCH } from "@lodestar/params";
1
2
  import { ssz } from "@lodestar/types";
3
+ import { MapDef } from "@lodestar/utils";
4
+ import { getLastProcessedSlotFromBeaconStateSerialized, getSlotFromBeaconStateSerialized, } from "../../../util/sszBytes.js";
2
5
  /**
3
6
  * Implementation of CPStateDatastore using db.
4
7
  */
@@ -18,6 +21,12 @@ export class DbCPStateDatastore {
18
21
  async read(serializedCheckpoint) {
19
22
  return this.db.checkpointState.getBinary(serializedCheckpoint);
20
23
  }
24
+ async readLatestSafe() {
25
+ const allKeys = await this.readKeys();
26
+ if (allKeys.length === 0)
27
+ return null;
28
+ return getLatestSafeDatastoreKey(allKeys, this.read.bind(this));
29
+ }
21
30
  async readKeys() {
22
31
  return this.db.checkpointState.keys();
23
32
  }
@@ -28,4 +37,65 @@ export function datastoreKeyToCheckpoint(key) {
28
37
  export function checkpointToDatastoreKey(cp) {
29
38
  return ssz.phase0.Checkpoint.serialize(cp);
30
39
  }
40
+ /**
41
+ * Get the latest safe checkpoint state the node can use to boot from
42
+ * - it should be the checkpoint state that's unique in its epoch
43
+ * - its last processed block slot should be at epoch boundary or last slot of previous epoch
44
+ * - state slot should be at epoch boundary
45
+ * - state slot should be equal to epoch * SLOTS_PER_EPOCH
46
+ *
47
+ * return the serialized data of Current Root Checkpoint State (CRCS) or Previous Root Checkpoint State (PRCS)
48
+ *
49
+ */
50
+ export async function getLatestSafeDatastoreKey(allKeys, readFn) {
51
+ const checkpointsByEpoch = new MapDef(() => []);
52
+ for (const key of allKeys) {
53
+ const cp = datastoreKeyToCheckpoint(key);
54
+ checkpointsByEpoch.getOrDefault(cp.epoch).push(key);
55
+ }
56
+ const dataStoreKeyByEpoch = new Map();
57
+ for (const [epoch, keys] of checkpointsByEpoch.entries()) {
58
+ // only consider epochs with a single checkpoint to avoid ambiguity from forks
59
+ if (keys.length === 1) {
60
+ dataStoreKeyByEpoch.set(epoch, keys[0]);
61
+ }
62
+ }
63
+ const epochsDesc = Array.from(dataStoreKeyByEpoch.keys()).sort((a, b) => b - a);
64
+ for (const epoch of epochsDesc) {
65
+ const datastoreKey = dataStoreKeyByEpoch.get(epoch);
66
+ if (datastoreKey == null) {
67
+ // should not happen
68
+ continue;
69
+ }
70
+ const stateBytes = await readFn(datastoreKey);
71
+ if (stateBytes == null) {
72
+ // should not happen
73
+ continue;
74
+ }
75
+ const lastProcessedSlot = getLastProcessedSlotFromBeaconStateSerialized(stateBytes);
76
+ if (lastProcessedSlot == null) {
77
+ // cannot extract last processed slot from serialized state, skip
78
+ continue;
79
+ }
80
+ const stateSlot = getSlotFromBeaconStateSerialized(stateBytes);
81
+ if (stateSlot == null) {
82
+ // cannot extract slot from serialized state, skip
83
+ continue;
84
+ }
85
+ if (lastProcessedSlot !== stateSlot && lastProcessedSlot !== stateSlot - 1) {
86
+ // not CRCS or PRCS, skip
87
+ continue;
88
+ }
89
+ if (stateSlot % SLOTS_PER_EPOCH !== 0) {
90
+ // not at epoch boundary, skip
91
+ continue;
92
+ }
93
+ if (stateSlot !== SLOTS_PER_EPOCH * epoch) {
94
+ // should not happen after above checks, but just to be safe
95
+ continue;
96
+ }
97
+ return stateBytes;
98
+ }
99
+ return null;
100
+ }
31
101
  //# sourceMappingURL=db.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAI5C;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAa;QAAb,OAAE,GAAF,EAAE,CAAW;IAAG,CAAC;IAE9C,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,UAAsB;QAC1D,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QAC1E,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,oBAAkC;QAC7C,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,oBAAkC;QAC3C,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAiB;IACxD,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,EAAqB;IAC5D,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export declare class FileCPStateDatastore implements CPStateDatastore {
10
10
  write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array): Promise<DatastoreKey>;
11
11
  remove(serializedCheckpoint: DatastoreKey): Promise<void>;
12
12
  read(serializedCheckpoint: DatastoreKey): Promise<Uint8Array | null>;
13
+ readLatestSafe(): Promise<Uint8Array | null>;
13
14
  readKeys(): Promise<DatastoreKey[]>;
14
15
  }
15
16
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAK1D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,MAAM;IAMrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAO9E,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKpE,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAM1C"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAK1D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,MAAM;IAMrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAO9E,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKpE,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO5C,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAM1C"}
@@ -2,6 +2,7 @@ import path from "node:path";
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { fromHex, toHex } from "@lodestar/utils";
4
4
  import { ensureDir, readFile, readFileNames, removeFile, writeIfNotExist } from "../../../util/file.js";
5
+ import { getLatestSafeDatastoreKey } from "./db.js";
5
6
  const CHECKPOINT_STATES_FOLDER = "checkpoint_states";
6
7
  const CHECKPOINT_FILE_NAME_LENGTH = 82;
7
8
  /**
@@ -36,6 +37,12 @@ export class FileCPStateDatastore {
36
37
  const filePath = path.join(this.folderPath, toHex(serializedCheckpoint));
37
38
  return readFile(filePath);
38
39
  }
40
+ async readLatestSafe() {
41
+ const allKeys = await this.readKeys();
42
+ if (allKeys.length === 0)
43
+ return null;
44
+ return getLatestSafeDatastoreKey(allKeys, this.read.bind(this));
45
+ }
39
46
  async readKeys() {
40
47
  const fileNames = await readFileNames(this.folderPath);
41
48
  return fileNames
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAGtG,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACd,UAAU,CAAS;IAEpC,YAAY,OAAe;QACzB,kDAAkD;QAClD,+CAA+C;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,UAAsB;QAC1D,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5C,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,oBAAkC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,oBAAkC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,SAAS;aACb,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,2BAA2B,CAAC;aAClG,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAC,yBAAyB,EAAC,MAAM,SAAS,CAAC;AAGlD,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACd,UAAU,CAAS;IAEpC,YAAY,OAAe;QACzB,kDAAkD;QAClD,+CAA+C;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,UAAsB;QAC1D,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5C,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,oBAAkC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,oBAAkC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,OAAO,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,SAAS;aACb,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,2BAA2B,CAAC;aAClG,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;CACF"}
@@ -4,6 +4,7 @@ export interface CPStateDatastore {
4
4
  write: (cpKey: phase0.Checkpoint, stateBytes: Uint8Array) => Promise<DatastoreKey>;
5
5
  remove: (key: DatastoreKey) => Promise<void>;
6
6
  read: (key: DatastoreKey) => Promise<Uint8Array | null>;
7
+ readLatestSafe: () => Promise<Uint8Array | null>;
7
8
  readKeys: () => Promise<DatastoreKey[]>;
8
9
  init?: () => Promise<void>;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAGvC,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACxD,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAGvC,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACxD,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B"}
@@ -9,8 +9,10 @@ import { StateRegenerationOpts } from "../regen/interface.js";
9
9
  import { CPStateDatastore, DatastoreKey } from "./datastore/index.js";
10
10
  import { BlockStateCache, CheckpointHex, CheckpointStateCache } from "./types.js";
11
11
  export type PersistentCheckpointStateCacheOpts = {
12
- /** Keep max n states in memory, persist the rest to disk */
12
+ /** Keep max n state epochs in memory, persist the rest to disk */
13
13
  maxCPStateEpochsInMemory?: number;
14
+ /** Keep max n state epochs on disk */
15
+ maxCPStateEpochsOnDisk?: number;
14
16
  };
15
17
  type PersistentCheckpointStateCacheModules = {
16
18
  metrics?: Metrics | null;
@@ -31,6 +33,13 @@ type LoadedStateBytesData = {
31
33
  * may not be available in memory, and stay on disk instead.
32
34
  */
33
35
  export declare const DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY = 3;
36
+ /**
37
+ * By default we don't prune any persistent checkpoint states as it's not safe to delete them during
38
+ * long non-finality as we don't know the state of the chain and there could be a deep (hundreds of epochs) reorg
39
+ * if there two competing chains with similar weight but we wouldn't have a close enough state to pivot to this chain
40
+ * and instead require a resync from last finalized checkpoint state which could be very far in the past.
41
+ */
42
+ export declare const DEFAULT_MAX_CP_STATE_ON_DISK: number;
34
43
  /**
35
44
  * An implementation of CheckpointStateCache that keep up to n epoch checkpoint states in memory and persist the rest to disk
36
45
  * - If it's more than `maxEpochsInMemory` epochs old, it will persist n last epochs to disk based on the view of the block
@@ -74,6 +83,7 @@ export declare class PersistentCheckpointStateCache implements CheckpointStateCa
74
83
  private preComputedCheckpoint;
75
84
  private preComputedCheckpointHits;
76
85
  private readonly maxEpochsInMemory;
86
+ private readonly maxEpochsOnDisk;
77
87
  private readonly datastore;
78
88
  private readonly blockStateCache;
79
89
  private readonly bufferPool?;
@@ -248,6 +258,11 @@ export declare class PersistentCheckpointStateCache implements CheckpointStateCa
248
258
  * Delete all items of an epoch from disk and memory
249
259
  */
250
260
  private deleteAllEpochItems;
261
+ /**
262
+ * Prune persisted checkpoint states from disk.
263
+ * Note that this should handle all possible errors and not throw.
264
+ */
265
+ private prunePersistedStates;
251
266
  /**
252
267
  * Serialize validators to bytes leveraging the buffer pool to save memory allocation.
253
268
  * - As monitored on holesky as of Jan 2024, it helps save ~500ms state reload time (4.3s vs 3.8s)