@lodestar/beacon-node 1.41.0 → 1.42.0-dev.04e52d162f

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 (474) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +36 -17
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.js +1 -1
  5. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  6. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  7. package/lib/api/impl/beacon/state/index.js +27 -32
  8. package/lib/api/impl/beacon/state/index.js.map +1 -1
  9. package/lib/api/impl/beacon/state/utils.d.ts +6 -6
  10. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  11. package/lib/api/impl/beacon/state/utils.js +7 -10
  12. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  13. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  14. package/lib/api/impl/lodestar/index.js +4 -6
  15. package/lib/api/impl/lodestar/index.js.map +1 -1
  16. package/lib/api/impl/proof/index.d.ts.map +1 -1
  17. package/lib/api/impl/proof/index.js +2 -6
  18. package/lib/api/impl/proof/index.js.map +1 -1
  19. package/lib/api/impl/validator/index.d.ts.map +1 -1
  20. package/lib/api/impl/validator/index.js +32 -28
  21. package/lib/api/impl/validator/index.js.map +1 -1
  22. package/lib/api/impl/validator/utils.d.ts +2 -2
  23. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  24. package/lib/api/impl/validator/utils.js +3 -3
  25. package/lib/api/impl/validator/utils.js.map +1 -1
  26. package/lib/chain/archiveStore/archiveStore.d.ts +0 -1
  27. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  28. package/lib/chain/archiveStore/archiveStore.js +1 -9
  29. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  30. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +3 -7
  31. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  32. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +8 -26
  33. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  34. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts +2 -2
  35. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  36. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -0
  37. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  38. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -0
  39. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  40. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  41. package/lib/chain/archiveStore/historicalState/worker.js +1 -3
  42. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  43. package/lib/chain/archiveStore/interface.d.ts +5 -4
  44. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  45. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
  46. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  47. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +4 -1
  48. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  49. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  50. package/lib/chain/archiveStore/utils/archiveBlocks.js +38 -0
  51. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  52. package/lib/chain/balancesCache.d.ts +2 -2
  53. package/lib/chain/balancesCache.d.ts.map +1 -1
  54. package/lib/chain/balancesCache.js +4 -4
  55. package/lib/chain/balancesCache.js.map +1 -1
  56. package/lib/chain/blocks/blockInput/types.d.ts +4 -3
  57. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  58. package/lib/chain/blocks/blockInput/types.js +1 -0
  59. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  60. package/lib/chain/blocks/importBlock.d.ts +3 -3
  61. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  62. package/lib/chain/blocks/importBlock.js +48 -28
  63. package/lib/chain/blocks/importBlock.js.map +1 -1
  64. package/lib/chain/blocks/importExecutionPayload.d.ts +48 -0
  65. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -0
  66. package/lib/chain/blocks/importExecutionPayload.js +167 -0
  67. package/lib/chain/blocks/importExecutionPayload.js.map +1 -0
  68. package/lib/chain/blocks/index.d.ts.map +1 -1
  69. package/lib/chain/blocks/index.js +3 -2
  70. package/lib/chain/blocks/index.js.map +1 -1
  71. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts +3 -0
  72. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts.map +1 -0
  73. package/lib/chain/blocks/payloadEnvelopeInput/index.js +3 -0
  74. package/lib/chain/blocks/payloadEnvelopeInput/index.js.map +1 -0
  75. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +80 -0
  76. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -0
  77. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +248 -0
  78. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -0
  79. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +29 -0
  80. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -0
  81. package/lib/chain/blocks/payloadEnvelopeInput/types.js +11 -0
  82. package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -0
  83. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +15 -0
  84. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -0
  85. package/lib/chain/blocks/payloadEnvelopeProcessor.js +46 -0
  86. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -0
  87. package/lib/chain/blocks/types.d.ts +28 -15
  88. package/lib/chain/blocks/types.d.ts.map +1 -1
  89. package/lib/chain/blocks/types.js.map +1 -1
  90. package/lib/chain/blocks/utils/checkpoint.d.ts +2 -2
  91. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -1
  92. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  93. package/lib/chain/blocks/verifyBlock.d.ts +2 -2
  94. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  95. package/lib/chain/blocks/verifyBlock.js +4 -4
  96. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  97. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +5 -5
  98. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  99. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +4 -4
  100. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  101. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  102. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  103. package/lib/chain/blocks/verifyBlocksSignatures.js +2 -2
  104. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  105. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -3
  106. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  107. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -3
  108. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  109. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +12 -0
  110. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -0
  111. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +40 -0
  112. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -0
  113. package/lib/chain/chain.d.ts +22 -17
  114. package/lib/chain/chain.d.ts.map +1 -1
  115. package/lib/chain/chain.js +90 -48
  116. package/lib/chain/chain.js.map +1 -1
  117. package/lib/chain/emitter.d.ts +2 -2
  118. package/lib/chain/emitter.d.ts.map +1 -1
  119. package/lib/chain/errors/blockError.d.ts +4 -4
  120. package/lib/chain/errors/blockError.d.ts.map +1 -1
  121. package/lib/chain/errors/executionPayloadEnvelope.d.ts +12 -2
  122. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  123. package/lib/chain/errors/executionPayloadEnvelope.js +3 -1
  124. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  125. package/lib/chain/forkChoice/index.d.ts +4 -4
  126. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  127. package/lib/chain/forkChoice/index.js +27 -33
  128. package/lib/chain/forkChoice/index.js.map +1 -1
  129. package/lib/chain/initState.d.ts +2 -2
  130. package/lib/chain/initState.d.ts.map +1 -1
  131. package/lib/chain/initState.js +1 -1
  132. package/lib/chain/initState.js.map +1 -1
  133. package/lib/chain/interface.d.ts +19 -17
  134. package/lib/chain/interface.d.ts.map +1 -1
  135. package/lib/chain/lightClient/index.d.ts +2 -2
  136. package/lib/chain/lightClient/index.d.ts.map +1 -1
  137. package/lib/chain/lightClient/index.js +4 -4
  138. package/lib/chain/lightClient/index.js.map +1 -1
  139. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -6
  140. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  141. package/lib/chain/opPools/aggregatedAttestationPool.js +10 -13
  142. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  143. package/lib/chain/opPools/opPool.d.ts +3 -3
  144. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  145. package/lib/chain/opPools/opPool.js +7 -7
  146. package/lib/chain/opPools/opPool.js.map +1 -1
  147. package/lib/chain/opPools/utils.d.ts +2 -2
  148. package/lib/chain/opPools/utils.d.ts.map +1 -1
  149. package/lib/chain/opPools/utils.js +2 -2
  150. package/lib/chain/opPools/utils.js.map +1 -1
  151. package/lib/chain/options.d.ts +1 -0
  152. package/lib/chain/options.d.ts.map +1 -1
  153. package/lib/chain/options.js +1 -0
  154. package/lib/chain/options.js.map +1 -1
  155. package/lib/chain/prepareNextSlot.d.ts +2 -2
  156. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  157. package/lib/chain/prepareNextSlot.js +9 -5
  158. package/lib/chain/prepareNextSlot.js.map +1 -1
  159. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +4 -4
  160. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  161. package/lib/chain/produceBlock/computeNewStateRoot.js +8 -4
  162. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  163. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
  164. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  165. package/lib/chain/produceBlock/produceBlockBody.js +13 -17
  166. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  167. package/lib/chain/regen/errors.d.ts +11 -1
  168. package/lib/chain/regen/errors.d.ts.map +1 -1
  169. package/lib/chain/regen/errors.js +2 -0
  170. package/lib/chain/regen/errors.js.map +1 -1
  171. package/lib/chain/regen/interface.d.ts +22 -14
  172. package/lib/chain/regen/interface.d.ts.map +1 -1
  173. package/lib/chain/regen/interface.js +2 -0
  174. package/lib/chain/regen/interface.js.map +1 -1
  175. package/lib/chain/regen/queued.d.ts +20 -15
  176. package/lib/chain/regen/queued.d.ts.map +1 -1
  177. package/lib/chain/regen/queued.js +40 -8
  178. package/lib/chain/regen/queued.js.map +1 -1
  179. package/lib/chain/regen/regen.d.ts +11 -5
  180. package/lib/chain/regen/regen.d.ts.map +1 -1
  181. package/lib/chain/regen/regen.js +38 -11
  182. package/lib/chain/regen/regen.js.map +1 -1
  183. package/lib/chain/seenCache/index.d.ts +1 -1
  184. package/lib/chain/seenCache/index.d.ts.map +1 -1
  185. package/lib/chain/seenCache/index.js +1 -1
  186. package/lib/chain/seenCache/index.js.map +1 -1
  187. package/lib/chain/seenCache/seenGossipBlockInput.js +2 -2
  188. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  189. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +38 -0
  190. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -0
  191. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +76 -0
  192. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -0
  193. package/lib/chain/serializeState.d.ts +2 -2
  194. package/lib/chain/serializeState.d.ts.map +1 -1
  195. package/lib/chain/serializeState.js +1 -1
  196. package/lib/chain/serializeState.js.map +1 -1
  197. package/lib/chain/shufflingCache.d.ts +2 -2
  198. package/lib/chain/shufflingCache.d.ts.map +1 -1
  199. package/lib/chain/shufflingCache.js +3 -4
  200. package/lib/chain/shufflingCache.js.map +1 -1
  201. package/lib/chain/stateCache/datastore/db.d.ts +4 -5
  202. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  203. package/lib/chain/stateCache/datastore/db.js +32 -10
  204. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  205. package/lib/chain/stateCache/datastore/file.d.ts +1 -1
  206. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  207. package/lib/chain/stateCache/datastore/file.js +5 -5
  208. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  209. package/lib/chain/stateCache/datastore/types.d.ts +1 -1
  210. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  211. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +13 -10
  212. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  213. package/lib/chain/stateCache/fifoBlockStateCache.js +8 -3
  214. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  215. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +36 -17
  216. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  217. package/lib/chain/stateCache/persistentCheckpointsCache.js +228 -134
  218. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  219. package/lib/chain/stateCache/types.d.ts +23 -16
  220. package/lib/chain/stateCache/types.d.ts.map +1 -1
  221. package/lib/chain/stateCache/types.js.map +1 -1
  222. package/lib/chain/validation/attesterSlashing.js +3 -3
  223. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  224. package/lib/chain/validation/blobSidecar.js +1 -1
  225. package/lib/chain/validation/blobSidecar.js.map +1 -1
  226. package/lib/chain/validation/block.d.ts.map +1 -1
  227. package/lib/chain/validation/block.js +3 -3
  228. package/lib/chain/validation/block.js.map +1 -1
  229. package/lib/chain/validation/blsToExecutionChange.js +2 -2
  230. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  231. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  232. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  233. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  234. package/lib/chain/validation/executionPayloadBid.js +4 -4
  235. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  236. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  237. package/lib/chain/validation/executionPayloadEnvelope.js +29 -19
  238. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  239. package/lib/chain/validation/lightClientFinalityUpdate.js +1 -1
  240. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  241. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -1
  242. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  243. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  244. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  245. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  246. package/lib/chain/validation/proposerSlashing.js +1 -1
  247. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  248. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  249. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  250. package/lib/chain/validation/signatureSets/contributionAndProof.js +1 -1
  251. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  252. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  253. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  254. package/lib/chain/validation/signatureSets/syncCommittee.js +1 -1
  255. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  256. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -2
  257. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  258. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  259. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  260. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  261. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -1
  262. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  263. package/lib/chain/validation/syncCommittee.d.ts +4 -4
  264. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  265. package/lib/chain/validation/syncCommittee.js +13 -12
  266. package/lib/chain/validation/syncCommittee.js.map +1 -1
  267. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  268. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  269. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  270. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  271. package/lib/chain/validation/voluntaryExit.js +3 -3
  272. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  273. package/lib/chain/validatorMonitor.d.ts +5 -4
  274. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  275. package/lib/chain/validatorMonitor.js +13 -8
  276. package/lib/chain/validatorMonitor.js.map +1 -1
  277. package/lib/execution/engine/interface.d.ts +2 -2
  278. package/lib/metrics/metrics/lodestar.d.ts +40 -4
  279. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  280. package/lib/metrics/metrics/lodestar.js +93 -15
  281. package/lib/metrics/metrics/lodestar.js.map +1 -1
  282. package/lib/network/gossip/encoding.d.ts.map +1 -1
  283. package/lib/network/gossip/encoding.js +15 -0
  284. package/lib/network/gossip/encoding.js.map +1 -1
  285. package/lib/network/interface.d.ts +4 -2
  286. package/lib/network/interface.d.ts.map +1 -1
  287. package/lib/network/libp2p/index.d.ts.map +1 -1
  288. package/lib/network/libp2p/index.js +5 -0
  289. package/lib/network/libp2p/index.js.map +1 -1
  290. package/lib/network/network.d.ts +4 -2
  291. package/lib/network/network.d.ts.map +1 -1
  292. package/lib/network/network.js +11 -5
  293. package/lib/network/network.js.map +1 -1
  294. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  295. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  296. package/lib/network/processor/extractSlotRootFns.js +15 -5
  297. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  298. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  299. package/lib/network/processor/gossipHandlers.js +39 -9
  300. package/lib/network/processor/gossipHandlers.js.map +1 -1
  301. package/lib/network/processor/index.d.ts +12 -7
  302. package/lib/network/processor/index.d.ts.map +1 -1
  303. package/lib/network/processor/index.js +99 -78
  304. package/lib/network/processor/index.js.map +1 -1
  305. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
  306. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  307. package/lib/network/reqresp/ReqRespBeaconNode.js +10 -1
  308. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  309. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts +8 -0
  310. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -0
  311. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +69 -0
  312. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -0
  313. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts +6 -0
  314. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -0
  315. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +28 -0
  316. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -0
  317. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  318. package/lib/network/reqresp/handlers/index.js +11 -1
  319. package/lib/network/reqresp/handlers/index.js.map +1 -1
  320. package/lib/network/reqresp/protocols.d.ts +2 -0
  321. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  322. package/lib/network/reqresp/protocols.js +10 -0
  323. package/lib/network/reqresp/protocols.js.map +1 -1
  324. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  325. package/lib/network/reqresp/rateLimit.js +8 -0
  326. package/lib/network/reqresp/rateLimit.js.map +1 -1
  327. package/lib/network/reqresp/score.d.ts.map +1 -1
  328. package/lib/network/reqresp/score.js +2 -0
  329. package/lib/network/reqresp/score.js.map +1 -1
  330. package/lib/network/reqresp/types.d.ts +8 -2
  331. package/lib/network/reqresp/types.d.ts.map +1 -1
  332. package/lib/network/reqresp/types.js +7 -1
  333. package/lib/network/reqresp/types.js.map +1 -1
  334. package/lib/node/nodejs.d.ts +2 -2
  335. package/lib/node/nodejs.d.ts.map +1 -1
  336. package/lib/node/nodejs.js +1 -4
  337. package/lib/node/nodejs.js.map +1 -1
  338. package/lib/node/notifier.d.ts.map +1 -1
  339. package/lib/node/notifier.js +3 -3
  340. package/lib/node/notifier.js.map +1 -1
  341. package/lib/sync/backfill/backfill.d.ts +3 -3
  342. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  343. package/lib/sync/backfill/backfill.js +3 -3
  344. package/lib/sync/backfill/backfill.js.map +1 -1
  345. package/lib/sync/constants.d.ts +1 -1
  346. package/lib/sync/constants.js +1 -1
  347. package/lib/sync/unknownBlock.d.ts +3 -9
  348. package/lib/sync/unknownBlock.d.ts.map +1 -1
  349. package/lib/sync/unknownBlock.js +8 -41
  350. package/lib/sync/unknownBlock.js.map +1 -1
  351. package/lib/util/sszBytes.d.ts +4 -1
  352. package/lib/util/sszBytes.d.ts.map +1 -1
  353. package/lib/util/sszBytes.js +69 -12
  354. package/lib/util/sszBytes.js.map +1 -1
  355. package/lib/util/types.d.ts +2 -0
  356. package/lib/util/types.d.ts.map +1 -1
  357. package/lib/util/types.js +1 -0
  358. package/lib/util/types.js.map +1 -1
  359. package/package.json +16 -16
  360. package/src/api/impl/beacon/blocks/index.ts +37 -18
  361. package/src/api/impl/beacon/pool/index.ts +1 -1
  362. package/src/api/impl/beacon/state/index.ts +29 -41
  363. package/src/api/impl/beacon/state/utils.ts +13 -27
  364. package/src/api/impl/lodestar/index.ts +4 -8
  365. package/src/api/impl/proof/index.ts +2 -9
  366. package/src/api/impl/validator/index.ts +35 -43
  367. package/src/api/impl/validator/utils.ts +4 -7
  368. package/src/chain/archiveStore/archiveStore.ts +1 -10
  369. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -39
  370. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +2 -1
  371. package/src/chain/archiveStore/historicalState/types.ts +2 -0
  372. package/src/chain/archiveStore/historicalState/worker.ts +1 -4
  373. package/src/chain/archiveStore/interface.ts +5 -4
  374. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +8 -5
  375. package/src/chain/archiveStore/utils/archiveBlocks.ts +59 -1
  376. package/src/chain/balancesCache.ts +5 -11
  377. package/src/chain/blocks/blockInput/types.ts +4 -3
  378. package/src/chain/blocks/importBlock.ts +69 -32
  379. package/src/chain/blocks/importExecutionPayload.ts +247 -0
  380. package/src/chain/blocks/index.ts +3 -2
  381. package/src/chain/blocks/payloadEnvelopeInput/index.ts +2 -0
  382. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +336 -0
  383. package/src/chain/blocks/payloadEnvelopeInput/types.ts +33 -0
  384. package/src/chain/blocks/payloadEnvelopeProcessor.ts +61 -0
  385. package/src/chain/blocks/types.ts +34 -15
  386. package/src/chain/blocks/utils/checkpoint.ts +2 -2
  387. package/src/chain/blocks/verifyBlock.ts +5 -10
  388. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -14
  389. package/src/chain/blocks/verifyBlocksSignatures.ts +4 -4
  390. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -8
  391. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +55 -0
  392. package/src/chain/chain.ts +134 -81
  393. package/src/chain/emitter.ts +2 -2
  394. package/src/chain/errors/blockError.ts +4 -4
  395. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  396. package/src/chain/forkChoice/index.ts +33 -52
  397. package/src/chain/initState.ts +7 -2
  398. package/src/chain/interface.ts +20 -18
  399. package/src/chain/lightClient/index.ts +9 -22
  400. package/src/chain/opPools/aggregatedAttestationPool.ts +15 -21
  401. package/src/chain/opPools/opPool.ts +13 -14
  402. package/src/chain/opPools/utils.ts +4 -4
  403. package/src/chain/options.ts +2 -0
  404. package/src/chain/prepareNextSlot.ts +12 -10
  405. package/src/chain/produceBlock/computeNewStateRoot.ts +11 -10
  406. package/src/chain/produceBlock/produceBlockBody.ts +23 -50
  407. package/src/chain/regen/errors.ts +6 -1
  408. package/src/chain/regen/interface.ts +22 -18
  409. package/src/chain/regen/queued.ts +59 -27
  410. package/src/chain/regen/regen.ts +52 -23
  411. package/src/chain/seenCache/index.ts +1 -1
  412. package/src/chain/seenCache/seenGossipBlockInput.ts +2 -2
  413. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +106 -0
  414. package/src/chain/serializeState.ts +3 -3
  415. package/src/chain/shufflingCache.ts +5 -7
  416. package/src/chain/stateCache/datastore/db.ts +33 -10
  417. package/src/chain/stateCache/datastore/file.ts +6 -5
  418. package/src/chain/stateCache/datastore/types.ts +3 -2
  419. package/src/chain/stateCache/fifoBlockStateCache.ts +17 -11
  420. package/src/chain/stateCache/persistentCheckpointsCache.ts +266 -172
  421. package/src/chain/stateCache/types.ts +22 -16
  422. package/src/chain/validation/attesterSlashing.ts +3 -3
  423. package/src/chain/validation/blobSidecar.ts +1 -1
  424. package/src/chain/validation/block.ts +2 -4
  425. package/src/chain/validation/blsToExecutionChange.ts +2 -2
  426. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  427. package/src/chain/validation/executionPayloadBid.ts +3 -7
  428. package/src/chain/validation/executionPayloadEnvelope.ts +36 -29
  429. package/src/chain/validation/lightClientFinalityUpdate.ts +1 -1
  430. package/src/chain/validation/lightClientOptimisticUpdate.ts +1 -1
  431. package/src/chain/validation/payloadAttestationMessage.ts +2 -4
  432. package/src/chain/validation/proposerSlashing.ts +1 -1
  433. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -7
  434. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -7
  435. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -2
  436. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -7
  437. package/src/chain/validation/syncCommittee.ts +21 -20
  438. package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -10
  439. package/src/chain/validation/voluntaryExit.ts +3 -7
  440. package/src/chain/validatorMonitor.ts +23 -12
  441. package/src/execution/engine/interface.ts +2 -2
  442. package/src/metrics/metrics/lodestar.ts +100 -19
  443. package/src/network/gossip/encoding.ts +16 -0
  444. package/src/network/interface.ts +15 -2
  445. package/src/network/libp2p/index.ts +5 -0
  446. package/src/network/network.ts +34 -6
  447. package/src/network/processor/extractSlotRootFns.ts +19 -6
  448. package/src/network/processor/gossipHandlers.ts +45 -8
  449. package/src/network/processor/index.ts +110 -89
  450. package/src/network/reqresp/ReqRespBeaconNode.ts +14 -1
  451. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +94 -0
  452. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +43 -0
  453. package/src/network/reqresp/handlers/index.ts +12 -0
  454. package/src/network/reqresp/protocols.ts +12 -0
  455. package/src/network/reqresp/rateLimit.ts +18 -0
  456. package/src/network/reqresp/score.ts +2 -0
  457. package/src/network/reqresp/types.ts +13 -0
  458. package/src/node/nodejs.ts +3 -5
  459. package/src/node/notifier.ts +4 -10
  460. package/src/sync/backfill/backfill.ts +4 -4
  461. package/src/sync/constants.ts +1 -1
  462. package/src/sync/unknownBlock.ts +10 -50
  463. package/src/util/sszBytes.ts +90 -10
  464. package/src/util/types.ts +6 -0
  465. package/lib/chain/archiveStore/utils/archivePayloads.d.ts +0 -7
  466. package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +0 -1
  467. package/lib/chain/archiveStore/utils/archivePayloads.js +0 -10
  468. package/lib/chain/archiveStore/utils/archivePayloads.js.map +0 -1
  469. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +0 -15
  470. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +0 -1
  471. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +0 -28
  472. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +0 -1
  473. package/src/chain/archiveStore/utils/archivePayloads.ts +0 -15
  474. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +0 -34
@@ -1,6 +1,6 @@
1
1
  import { SLOTS_PER_EPOCH } from "@lodestar/params";
2
2
  import { ssz } from "@lodestar/types";
3
- import { MapDef } from "@lodestar/utils";
3
+ import { MapDef, byteArrayEquals } from "@lodestar/utils";
4
4
  import { getLastProcessedSlotFromBeaconStateSerialized, getSlotFromBeaconStateSerialized, } from "../../../util/sszBytes.js";
5
5
  /**
6
6
  * Implementation of CPStateDatastore using db.
@@ -10,8 +10,8 @@ export class DbCPStateDatastore {
10
10
  constructor(db) {
11
11
  this.db = db;
12
12
  }
13
- async write(cpKey, stateBytes) {
14
- const serializedCheckpoint = checkpointToDatastoreKey(cpKey);
13
+ async write(cpKey, stateBytes, payloadPresent) {
14
+ const serializedCheckpoint = checkpointToDatastoreKey(cpKey, payloadPresent);
15
15
  await this.db.checkpointState.putBinary(serializedCheckpoint, stateBytes);
16
16
  return serializedCheckpoint;
17
17
  }
@@ -31,16 +31,26 @@ export class DbCPStateDatastore {
31
31
  return this.db.checkpointState.keys();
32
32
  }
33
33
  }
34
+ function extractCheckpointBytes(key) {
35
+ const fixedSize = ssz.phase0.Checkpoint.minSize;
36
+ return key.subarray(0, fixedSize);
37
+ }
34
38
  export function datastoreKeyToCheckpoint(key) {
35
- return ssz.phase0.Checkpoint.deserialize(key);
39
+ return ssz.phase0.Checkpoint.deserialize(extractCheckpointBytes(key));
40
+ }
41
+ export function checkpointToDatastoreKey(cp, payloadPresent) {
42
+ const cpBytes = ssz.phase0.Checkpoint.serialize(cp);
43
+ const key = new Uint8Array(cpBytes.length + 1);
44
+ key.set(cpBytes);
45
+ key[cpBytes.length] = payloadPresent ? 1 : 0;
46
+ return key;
36
47
  }
37
- export function checkpointToDatastoreKey(cp) {
38
- return ssz.phase0.Checkpoint.serialize(cp);
48
+ function isPayloadCheckpointState(key) {
49
+ return key.at(-1) === 1;
39
50
  }
40
51
  /**
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
52
+ * Get the latest "safe" checkpoint state the node can use to boot from
53
+ * - its last processed block slot should be at epoch boundary (CRCS) or last slot of previous epoch (PRCS)
44
54
  * - state slot should be at epoch boundary
45
55
  * - state slot should be equal to epoch * SLOTS_PER_EPOCH
46
56
  *
@@ -55,10 +65,22 @@ export async function getLatestSafeDatastoreKey(allKeys, readFn) {
55
65
  }
56
66
  const dataStoreKeyByEpoch = new Map();
57
67
  for (const [epoch, keys] of checkpointsByEpoch.entries()) {
58
- // only consider epochs with a single checkpoint to avoid ambiguity from forks
59
68
  if (keys.length === 1) {
69
+ // PRCS (skipped slot) or CRCS and no payloadPresent
70
+ // Pre-gloas always fall into this case
60
71
  dataStoreKeyByEpoch.set(epoch, keys[0]);
61
72
  }
73
+ else if (keys.length === 2) {
74
+ // CRCS without payload and CRCS with payload
75
+ // ie Two keys for the same checkpoint with different payloadPresent suffix (FULL/EMPTY)
76
+ // TODO GLOAS: Here we pick FULL key, there is a chance that payload is orphaned hence we not be able to sync
77
+ const cp0 = extractCheckpointBytes(keys[0]);
78
+ const cp1 = extractCheckpointBytes(keys[1]);
79
+ if (byteArrayEquals(cp0, cp1)) {
80
+ const fullKey = isPayloadCheckpointState(keys[0]) ? keys[0] : keys[1];
81
+ dataStoreKeyByEpoch.set(epoch, fullKey);
82
+ }
83
+ }
62
84
  }
63
85
  const epochsDesc = Array.from(dataStoreKeyByEpoch.keys()).sort((a, b) => b - a);
64
86
  for (const epoch of epochsDesc) {
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAgB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAExD,OAAO,EACL,6CAA6C,EAC7C,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AAGnC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACA,EAAE;IAA/B,YAA6B,EAAa,EAAE;kBAAf,EAAE;IAAc,CAAC;IAE9C,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,UAAsB,EAAE,cAAuB,EAAyB;QAC5G,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QAC1E,OAAO,oBAAoB,CAAC;IAAA,CAC7B;IAED,KAAK,CAAC,MAAM,CAAC,oBAAkC,EAAiB;QAC9D,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAAA,CAC5D;IAED,KAAK,CAAC,IAAI,CAAC,oBAAkC,EAA8B;QACzE,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAAA,CAChE;IAED,KAAK,CAAC,cAAc,GAA+B;QACjD,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;IAAA,CACjE;IAED,KAAK,CAAC,QAAQ,GAA4B;QACxC,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAAA,CACvC;CACF;AAED,SAAS,sBAAsB,CAAC,GAAiB,EAAc;IAC7D,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;IAChD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAAA,CACnC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAiB,EAAqB;IAC7E,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,CACvE;AAED,MAAM,UAAU,wBAAwB,CAAC,EAAqB,EAAE,cAAuB,EAAgB;IACrG,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AAAA,CACZ;AAED,SAAS,wBAAwB,CAAC,GAAiB,EAAW;IAC5D,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAAA,CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAuB,EACvB,MAAyD,EAC7B;IAC5B,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAwB,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACzC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,mBAAmB,GAA6B,IAAI,GAAG,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,oDAAoD;YACpD,uCAAuC;YACvC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,6CAA6C;YAC7C,wFAAwF;YACxF,6GAA6G;YAC7G,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtE,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,oBAAoB;YACpB,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,oBAAoB;YACpB,SAAS;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,6CAA6C,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;YAC9B,iEAAiE;YACjE,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,kDAAkD;YAClD,SAAS;QACX,CAAC;QAED,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS,GAAG,CAAC,EAAE,CAAC;YAC3E,yBAAyB;YACzB,SAAS;QACX,CAAC;QAED,IAAI,SAAS,GAAG,eAAe,KAAK,CAAC,EAAE,CAAC;YACtC,8BAA8B;YAC9B,SAAS;QACX,CAAC;QAED,IAAI,SAAS,KAAK,eAAe,GAAG,KAAK,EAAE,CAAC;YAC1C,4DAA4D;YAC5D,SAAS;QACX,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AAAA,CACb"}
@@ -7,7 +7,7 @@ export declare class FileCPStateDatastore implements CPStateDatastore {
7
7
  private readonly folderPath;
8
8
  constructor(dataDir: string);
9
9
  init(): Promise<void>;
10
- write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array): Promise<DatastoreKey>;
10
+ write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array, payloadPresent: boolean): Promise<DatastoreKey>;
11
11
  remove(serializedCheckpoint: DatastoreKey): Promise<void>;
12
12
  read(serializedCheckpoint: DatastoreKey): Promise<Uint8Array | null>;
13
13
  readLatestSafe(): Promise<Uint8Array | null>;
@@ -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;AAI5C,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAK1D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,OAAO,EAAE,MAAM,EAI1B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1B;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAKnF;IAEK,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;IAEK,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAGzE;IAEK,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAKjD;IAEK,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAKxC;CACF"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAIvC,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAM1D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,OAAO,EAAE,MAAM,EAI1B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1B;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAK5G;IAEK,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;IAEK,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAGzE;IAEK,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAKjD;IAEK,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAKxC;CACF"}
@@ -1,10 +1,10 @@
1
1
  import path from "node:path";
2
- import { ssz } from "@lodestar/types";
3
2
  import { fromHex, toHex } from "@lodestar/utils";
4
3
  import { ensureDir, readFile, readFileNames, removeFile, writeIfNotExist } from "../../../util/file.js";
5
- import { getLatestSafeDatastoreKey } from "./db.js";
4
+ import { checkpointToDatastoreKey, getLatestSafeDatastoreKey } from "./db.js";
6
5
  const CHECKPOINT_STATES_FOLDER = "checkpoint_states";
7
- const CHECKPOINT_FILE_NAME_LENGTH = 82;
6
+ /** 41 bytes (40 checkpoint + 1 payloadPresent) = 82 hex chars + "0x" prefix = 84 */
7
+ const CHECKPOINT_FILE_NAME_LENGTH = 84;
8
8
  /**
9
9
  * Implementation of CPStateDatastore using file system, this is beneficial for debugging.
10
10
  */
@@ -23,8 +23,8 @@ export class FileCPStateDatastore {
23
23
  // do nothing
24
24
  }
25
25
  }
26
- async write(cpKey, stateBytes) {
27
- const serializedCheckpoint = ssz.phase0.Checkpoint.serialize(cpKey);
26
+ async write(cpKey, stateBytes, payloadPresent) {
27
+ const serializedCheckpoint = checkpointToDatastoreKey(cpKey, payloadPresent);
28
28
  const filePath = path.join(this.folderPath, toHex(serializedCheckpoint));
29
29
  await writeIfNotExist(filePath, stateBytes);
30
30
  return serializedCheckpoint;
@@ -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;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,EAAE;QAC3B,kDAAkD;QAClD,+CAA+C;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAAA,CAChE;IAED,KAAK,CAAC,IAAI,GAAkB;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa;QACf,CAAC;IAAA,CACF;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,UAAsB,EAAyB;QACnF,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;IAAA,CAC7B;IAED,KAAK,CAAC,MAAM,CAAC,oBAAkC,EAAiB;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC5B;IAED,KAAK,CAAC,IAAI,CAAC,oBAAkC,EAA8B;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC3B;IAED,KAAK,CAAC,cAAc,GAA+B;QACjD,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;IAAA,CACjE;IAED,KAAK,CAAC,QAAQ,GAA4B;QACxC,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;IAAA,CACzC;CACF"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,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,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,SAAS,CAAC;AAG5E,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,oFAAoF;AACpF,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACd,UAAU,CAAS;IAEpC,YAAY,OAAe,EAAE;QAC3B,kDAAkD;QAClD,+CAA+C;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAAA,CAChE;IAED,KAAK,CAAC,IAAI,GAAkB;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa;QACf,CAAC;IAAA,CACF;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,UAAsB,EAAE,cAAuB,EAAyB;QAC5G,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7E,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;IAAA,CAC7B;IAED,KAAK,CAAC,MAAM,CAAC,oBAAkC,EAAiB;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC5B;IAED,KAAK,CAAC,IAAI,CAAC,oBAAkC,EAA8B;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC3B;IAED,KAAK,CAAC,cAAc,GAA+B;QACjD,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;IAAA,CACjE;IAED,KAAK,CAAC,QAAQ,GAA4B;QACxC,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;IAAA,CACzC;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { phase0 } from "@lodestar/types";
2
2
  export type DatastoreKey = Uint8Array;
3
3
  export interface CPStateDatastore {
4
- write: (cpKey: phase0.Checkpoint, stateBytes: Uint8Array) => Promise<DatastoreKey>;
4
+ write: (cpKey: phase0.Checkpoint, stateBytes: Uint8Array, payloadPresent: boolean) => Promise<DatastoreKey>;
5
5
  remove: (key: DatastoreKey) => Promise<void>;
6
6
  read: (key: DatastoreKey) => Promise<Uint8Array | null>;
7
7
  readLatestSafe: () => Promise<Uint8Array | null>;
@@ -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,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"}
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;AAIvC,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5G,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"}
@@ -1,5 +1,5 @@
1
1
  import { routes } from "@lodestar/api";
2
- import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
2
+ import { IBeaconStateView } from "@lodestar/state-transition";
3
3
  import { RootHex } from "@lodestar/types";
4
4
  import { Metrics } from "../../metrics/index.js";
5
5
  import { BlockStateCache } from "./types.js";
@@ -15,6 +15,11 @@ export type FIFOBlockStateCacheOpts = {
15
15
  * clock slot
16
16
  */
17
17
  export declare const DEFAULT_MAX_BLOCK_STATES = 64;
18
+ /**
19
+ * For Gloas (ePBS), each block can have two states: block state and payload state.
20
+ * Double the cache size to maintain the same effective block depth.
21
+ */
22
+ export declare const DEFAULT_MAX_BLOCK_STATES_GLOAS = 128;
18
23
  /**
19
24
  * New implementation of BlockStateCache that keeps the most recent n states consistently
20
25
  * - Maintain a linked list (FIFO) with special handling for head state, which is always the first item in the list
@@ -35,10 +40,7 @@ export declare const DEFAULT_MAX_BLOCK_STATES = 64;
35
40
  * The maintained key order would be: 11 -> 13 -> 12 -> 10, and state 10 will be pruned first.
36
41
  */
37
42
  export declare class FIFOBlockStateCache implements BlockStateCache {
38
- /**
39
- * Max number of states allowed in the cache
40
- */
41
- readonly maxStates: number;
43
+ private maxStates;
42
44
  private readonly cache;
43
45
  /**
44
46
  * Key order to implement FIFO cache
@@ -51,23 +53,23 @@ export declare class FIFOBlockStateCache implements BlockStateCache {
51
53
  /**
52
54
  * Set a state as head, happens when importing a block and head block is changed.
53
55
  */
54
- setHeadState(item: CachedBeaconStateAllForks | null): void;
56
+ setHeadState(item: IBeaconStateView | null): void;
55
57
  /**
56
58
  * Get a seed state for state reload, this could be any states. The goal is to have the same
57
59
  * base merkle tree for all BeaconState objects across application.
58
60
  * See packages/state-transition/src/util/loadState/loadState.ts for more detail
59
61
  */
60
- getSeedState(): CachedBeaconStateAllForks;
62
+ getSeedState(): IBeaconStateView;
61
63
  /**
62
64
  * Get a state from this cache given a state root hex.
63
65
  */
64
- get(rootHex: RootHex): CachedBeaconStateAllForks | null;
66
+ get(rootHex: RootHex): IBeaconStateView | null;
65
67
  /**
66
68
  * Add a state to this cache.
67
69
  * @param isHead if true, move it to the head of the list. Otherwise add to the 2nd position.
68
70
  * In importBlock() steps, normally it'll call add() with isHead = false first. Then call setHeadState() to set the head.
69
71
  */
70
- add(item: CachedBeaconStateAllForks, isHead?: boolean): void;
72
+ add(item: IBeaconStateView, isHead?: boolean): void;
71
73
  get size(): number;
72
74
  /**
73
75
  * Prune the cache from tail to keep the most recent n states consistently.
@@ -76,6 +78,7 @@ export declare class FIFOBlockStateCache implements BlockStateCache {
76
78
  * The FIFO cache helps with this.
77
79
  */
78
80
  prune(lastAddedKey: string): void;
81
+ upgradeToGloas(): void;
79
82
  /**
80
83
  * No need for this implementation
81
84
  * This is only to conform to the old api
@@ -87,7 +90,7 @@ export declare class FIFOBlockStateCache implements BlockStateCache {
87
90
  clear(): void;
88
91
  /** ONLY FOR DEBUGGING PURPOSES. For lodestar debug API */
89
92
  dumpSummary(): routes.lodestar.StateCacheItem[];
90
- getStates(): IterableIterator<CachedBeaconStateAllForks>;
93
+ getStates(): IterableIterator<IBeaconStateView>;
91
94
  /**
92
95
  * For unit test only.
93
96
  */
@@ -1 +1 @@
1
- {"version":3,"file":"fifoBlockStateCache.d.ts","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgD;IACtE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IAEnE,YAAY,IAAI,EAAE,uBAAuB,EAAE,EAAC,OAAO,EAAC,EAAE;QAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAC,EAQ/E;IAED;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAIzD;IAED;;;;OAIG;IACH,YAAY,IAAI,yBAAyB,CAUxC;IAED;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,yBAAyB,GAAG,IAAI,CAWtD;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,MAAM,UAAQ,GAAG,IAAI,CA+BzD;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAehC;IAED;;;OAGG;IACH,oBAAoB,IAAI,IAAI,CAAG;IAE/B;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED,0DAA0D;IAC1D,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAQ9C;IAED,SAAS,IAAI,gBAAgB,CAAC,yBAAyB,CAAC,CAEvD;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAEvB;CACF"}
1
+ {"version":3,"file":"fifoBlockStateCache.d.ts","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IAEnE,YAAY,IAAI,EAAE,uBAAuB,EAAE,EAAC,OAAO,EAAC,EAAE;QAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAC,EAQ/E;IAED;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAIhD;IAED;;;;OAIG;IACH,YAAY,IAAI,gBAAgB,CAU/B;IAED;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAW7C;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,UAAQ,GAAG,IAAI,CA+BhD;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAehC;IAED,cAAc,IAAI,IAAI,CAErB;IAED;;;OAGG;IACH,oBAAoB,IAAI,IAAI,CAAG;IAE/B;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED,0DAA0D;IAC1D,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAQ9C;IAED,SAAS,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAE9C;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAEvB;CACF"}
@@ -10,6 +10,11 @@ import { MapTracker } from "./mapMetrics.js";
10
10
  * clock slot
11
11
  */
12
12
  export const DEFAULT_MAX_BLOCK_STATES = 64;
13
+ /**
14
+ * For Gloas (ePBS), each block can have two states: block state and payload state.
15
+ * Double the cache size to maintain the same effective block depth.
16
+ */
17
+ export const DEFAULT_MAX_BLOCK_STATES_GLOAS = 128;
13
18
  /**
14
19
  * New implementation of BlockStateCache that keeps the most recent n states consistently
15
20
  * - Maintain a linked list (FIFO) with special handling for head state, which is always the first item in the list
@@ -30,9 +35,6 @@ export const DEFAULT_MAX_BLOCK_STATES = 64;
30
35
  * The maintained key order would be: 11 -> 13 -> 12 -> 10, and state 10 will be pruned first.
31
36
  */
32
37
  export class FIFOBlockStateCache {
33
- /**
34
- * Max number of states allowed in the cache
35
- */
36
38
  maxStates;
37
39
  cache;
38
40
  /**
@@ -149,6 +151,9 @@ export class FIFOBlockStateCache {
149
151
  this.cache.delete(key);
150
152
  }
151
153
  }
154
+ upgradeToGloas() {
155
+ this.maxStates = DEFAULT_MAX_BLOCK_STATES_GLOAS;
156
+ }
152
157
  /**
153
158
  * No need for this implementation
154
159
  * This is only to conform to the old api
@@ -1 +1 @@
1
- {"version":3,"file":"fifoBlockStateCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fifoBlockStateCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAO3C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,mBAAmB;IACtB,SAAS,CAAS;IAET,KAAK,CAAuC;IAC7D;;OAEG;IACc,QAAQ,CAAqB;IAC7B,OAAO,CAA2C;IAEnE,YAAY,IAA6B,EAAE,EAAC,OAAO,EAA6B,EAAE;QAChF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACjE,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;YAClC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;IAAA,CAClC;IAED;;OAEG;IACH,YAAY,CAAC,IAA6B,EAAQ;QAChD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;IAAA,CACF;IAED;;;;OAIG;IACH,YAAY,GAAqB;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,oBAAoB;YACpB,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;QACpC,iDAAiD;QACjD,OAAO,UAAU,CAAC;IAAA,CACnB;IAED;;OAEG;IACH,GAAG,CAAC,OAAgB,EAA2B;QAC7C,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC;IAAA,CACb;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAsB,EAAE,MAAM,GAAG,KAAK,EAAQ;QAChD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC,+CAA+C,GAAG,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,sBAAsB;YACtB,OAAO;QACT,CAAC;QAED,YAAY;QACZ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,iDAAiD;gBACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAAA,CACjB;IAED,IAAI,IAAI,GAAW;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAAA,CACxB;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAoB,EAAQ;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,uDAAuD;YACvD,kEAAkE;YAClE,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBACzB,MAAM;YACR,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,oBAAoB;gBACpB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IAAA,CACF;IAED,cAAc,GAAS;QACrB,IAAI,CAAC,SAAS,GAAG,8BAA8B,CAAC;IAAA,CACjD;IAED;;;OAGG;IACH,oBAAoB,GAAS,EAAC,CAAC;IAE/B;;OAEG;IACH,KAAK,GAAS;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAAA,CACpB;IAED,0DAA0D;IAC1D,WAAW,GAAqC;QAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3C,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC,CAAC;IAAA,CACL;IAED,SAAS,GAAuC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAAA,CAC5B;IAED;;OAEG;IACH,YAAY,GAAa;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAAA,CAChC;CACF"}
@@ -1,13 +1,14 @@
1
1
  import { routes } from "@lodestar/api";
2
2
  import { BeaconConfig } from "@lodestar/config";
3
- import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
3
+ import { CheckpointWithPayloadStatus } from "@lodestar/fork-choice";
4
+ import { IBeaconStateView } from "@lodestar/state-transition";
4
5
  import { Epoch, RootHex, phase0 } from "@lodestar/types";
5
6
  import { Logger } from "@lodestar/utils";
6
7
  import { Metrics } from "../../metrics/index.js";
7
8
  import { BufferPool } from "../../util/bufferPool.js";
8
9
  import { IClock } from "../../util/clock.js";
9
10
  import { CPStateDatastore, DatastoreKey } from "./datastore/index.js";
10
- import { BlockStateCache, CheckpointHex, CheckpointStateCache } from "./types.js";
11
+ import { BlockStateCache, CheckpointHexPayload, CheckpointStateCache } from "./types.js";
11
12
  export type PersistentCheckpointStateCacheOpts = {
12
13
  /** Keep max n state epochs in memory, persist the rest to disk */
13
14
  maxCPStateEpochsInMemory?: number;
@@ -24,6 +25,8 @@ type PersistentCheckpointStateCacheModules = {
24
25
  blockStateCache: BlockStateCache;
25
26
  bufferPool?: BufferPool;
26
27
  };
28
+ /** checkpoint serialized as a string */
29
+ type CacheKey = string;
27
30
  type LoadedStateBytesData = {
28
31
  persistedKey: DatastoreKey;
29
32
  stateBytes: Uint8Array;
@@ -75,7 +78,7 @@ export declare const DEFAULT_MAX_CP_STATE_ON_DISK: number;
75
78
  */
76
79
  export declare class PersistentCheckpointStateCache implements CheckpointStateCache {
77
80
  private readonly cache;
78
- /** Epoch -> Set<blockRoot> */
81
+ /** Epoch -> Map<blockRoot, PayloadAvailability bitmask> */
79
82
  private readonly epochIndex;
80
83
  private readonly config;
81
84
  private readonly metrics;
@@ -101,27 +104,29 @@ export declare class PersistentCheckpointStateCache implements CheckpointStateCa
101
104
  * - Get block for processing
102
105
  * - Regen head state
103
106
  */
104
- getOrReload(cp: CheckpointHex): Promise<CachedBeaconStateAllForks | null>;
107
+ getOrReload(cp: CheckpointHexPayload): Promise<IBeaconStateView | null>;
105
108
  /**
106
109
  * Return either state or state bytes loaded from db.
107
110
  */
108
- getStateOrBytes(cp: CheckpointHex): Promise<CachedBeaconStateAllForks | Uint8Array | null>;
111
+ getStateOrBytes(cp: CheckpointHexPayload): Promise<IBeaconStateView | Uint8Array | null>;
109
112
  /**
110
113
  * Return either state or state bytes with persisted key loaded from db.
111
114
  */
112
- getStateOrLoadDb(cp: CheckpointHex): Promise<CachedBeaconStateAllForks | LoadedStateBytesData | null>;
115
+ getStateOrLoadDb(cp: CheckpointHexPayload): Promise<IBeaconStateView | LoadedStateBytesData | null>;
113
116
  /**
114
117
  * Similar to get() api without reloading from disk
115
118
  */
116
- get(cpOrKey: CheckpointHex | string): CachedBeaconStateAllForks | null;
119
+ get(cpOrKey: CheckpointHexPayload | CacheKey): IBeaconStateView | null;
117
120
  /**
118
121
  * Add a state of a checkpoint to this cache, prune from memory if necessary.
122
+ * @param payloadPresent - For Gloas: true if this is payload state, false if block state.
123
+ * Always true for pre-Gloas.
119
124
  */
120
- add(cp: phase0.Checkpoint, state: CachedBeaconStateAllForks): void;
125
+ add(cp: phase0.Checkpoint, state: IBeaconStateView, payloadPresent: boolean): void;
121
126
  /**
122
127
  * Searches in-memory state for the latest cached state with a `root` without reload, starting with `epoch` and descending
123
128
  */
124
- getLatest(rootHex: RootHex, maxEpoch: Epoch): CachedBeaconStateAllForks | null;
129
+ getLatest(rootHex: RootHex, maxEpoch: Epoch, payloadPresent: boolean): IBeaconStateView | null;
125
130
  /**
126
131
  * Searches state for the latest cached state with a `root`, reload if needed, starting with `epoch` and descending
127
132
  * This is expensive api, should only be called in some important flows:
@@ -129,12 +134,14 @@ export declare class PersistentCheckpointStateCache implements CheckpointStateCa
129
134
  * - Get block for processing
130
135
  * - Regen head state
131
136
  */
132
- getOrReloadLatest(rootHex: RootHex, maxEpoch: Epoch): Promise<CachedBeaconStateAllForks | null>;
137
+ getOrReloadLatest(rootHex: RootHex, maxEpoch: Epoch, payloadPresent: boolean): Promise<IBeaconStateView | null>;
133
138
  /**
134
- * Update the precomputed checkpoint and return the number of his for the
139
+ * Update the precomputed checkpoint and return the number of hits for the
135
140
  * previous one (if any).
141
+ * @param payloadPresent - For Gloas: true if head block has FULL payload, false if EMPTY.
142
+ * Always true for pre-Gloas.
136
143
  */
137
- updatePreComputedCheckpoint(rootHex: RootHex, epoch: Epoch): number | null;
144
+ updatePreComputedCheckpoint(rootHex: RootHex, epoch: Epoch, payloadPresent: boolean): number | null;
138
145
  /**
139
146
  * This is just to conform to the old implementation
140
147
  */
@@ -192,8 +199,11 @@ export declare class PersistentCheckpointStateCache implements CheckpointStateCa
192
199
  * - 2 then we'll persist {root: b2, epoch n-2} checkpoint state to disk, there are also 2 checkpoint states in memory at epoch n, same to the above (maxEpochsInMemory=1)
193
200
  *
194
201
  * As of Mar 2024, it takes <=350ms to persist a holesky state on fast server
202
+ *
203
+ * For Gloas: Processes both block state and payload state variants together. The decision of which roots to persist/prune
204
+ * is based on root canonicality (from state's view), not payload presence. Both variants are managed as a unit.
195
205
  */
196
- processState(blockRootHex: RootHex, state: CachedBeaconStateAllForks): Promise<number>;
206
+ processState(blockRootHex: RootHex, state: IBeaconStateView): Promise<number>;
197
207
  /**
198
208
  * Find a seed state to reload the state of provided checkpoint. Based on the design of n-historical state:
199
209
  *
@@ -211,11 +221,14 @@ export declare class PersistentCheckpointStateCache implements CheckpointStateCa
211
221
  *
212
222
  * Use seed state from the block cache if cannot find any seed states within this cache.
213
223
  */
214
- findSeedStateToReload(reloadedCp: CheckpointHex): CachedBeaconStateAllForks;
224
+ findSeedStateToReload(reloadedCp: CheckpointHexPayload): IBeaconStateView;
215
225
  clear(): void;
226
+ private addToEpochIndex;
227
+ private removeFromEpochIndex;
228
+ private hasPayloadVariant;
216
229
  /** ONLY FOR DEBUGGING PURPOSES. For lodestar debug API */
217
230
  dumpSummary(): routes.lodestar.StateCacheItem[];
218
- getStates(): IterableIterator<CachedBeaconStateAllForks>;
231
+ getStates(): IterableIterator<IBeaconStateView>;
219
232
  /** ONLY FOR DEBUGGING PURPOSES. For spec tests on error */
220
233
  dumpCheckpointKeys(): string[];
221
234
  private processPastEpoch;
@@ -233,7 +246,13 @@ export declare class PersistentCheckpointStateCache implements CheckpointStateCa
233
246
  */
234
247
  private serializeStateValidators;
235
248
  }
236
- export declare function toCheckpointHex(checkpoint: phase0.Checkpoint): CheckpointHex;
237
- export declare function toCheckpointKey(cp: CheckpointHex): string;
249
+ export declare function toCheckpointHexPayload(checkpoint: phase0.Checkpoint, payloadPresent: boolean): CheckpointHexPayload;
250
+ /**
251
+ * Convert fork-choice CheckpointWithPayloadStatus to beacon-node CheckpointHexPayload.
252
+ * Maps PayloadStatus enum to boolean payloadPresent.
253
+ * @throws Error if checkpoint has PENDING payload status (ambiguous which variant to use)
254
+ */
255
+ export declare function fcCheckpointToHexPayload(checkpoint: CheckpointWithPayloadStatus): CheckpointHexPayload;
256
+ export declare function toCheckpointKey(cp: CheckpointHexPayload): string;
238
257
  export {};
239
258
  //# sourceMappingURL=persistentCheckpointsCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentCheckpointsCache.d.ts","sourceRoot":"","sources":["../../../src/chain/stateCache/persistentCheckpointsCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistentCheckpointsCache.d.ts","sourceRoot":"","sources":["../../../src/chain/stateCache/persistentCheckpointsCache.ts"],"names":[],"mappings":"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"}