@lodestar/beacon-node 1.50.0-dev.5866a397b6 → 1.50.0-dev.58d40975f9

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 (300) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +6 -1
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/index.js +13 -0
  6. package/lib/api/impl/beacon/index.js.map +1 -1
  7. package/lib/api/impl/beacon/pool/index.js +4 -4
  8. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  9. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/state/index.js +23 -3
  11. package/lib/api/impl/beacon/state/index.js.map +1 -1
  12. package/lib/api/impl/debug/index.d.ts.map +1 -1
  13. package/lib/api/impl/debug/index.js +26 -18
  14. package/lib/api/impl/debug/index.js.map +1 -1
  15. package/lib/api/impl/validator/index.d.ts +1 -0
  16. package/lib/api/impl/validator/index.d.ts.map +1 -1
  17. package/lib/api/impl/validator/index.js +23 -1
  18. package/lib/api/impl/validator/index.js.map +1 -1
  19. package/lib/chain/archiveStore/archiveStore.d.ts +6 -0
  20. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  21. package/lib/chain/archiveStore/archiveStore.js +18 -24
  22. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  23. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +2 -2
  24. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  25. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +5 -7
  26. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  27. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -1
  28. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  29. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -2
  30. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  31. package/lib/chain/archiveStore/historicalState/worker.js +1 -1
  32. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  33. package/lib/chain/archiveStore/interface.d.ts +1 -1
  34. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  35. package/lib/chain/archiveStore/utils/pruneHistory.d.ts +4 -1
  36. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -1
  37. package/lib/chain/archiveStore/utils/pruneHistory.js +5 -3
  38. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  39. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  40. package/lib/chain/blocks/importBlock.js +17 -6
  41. package/lib/chain/blocks/importBlock.js.map +1 -1
  42. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +2 -1
  43. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  44. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  45. package/lib/chain/blocks/verifyBlock.js +7 -7
  46. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  47. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +2 -1
  48. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  49. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +5 -4
  50. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  51. package/lib/chain/chain.d.ts +9 -5
  52. package/lib/chain/chain.d.ts.map +1 -1
  53. package/lib/chain/chain.js +90 -36
  54. package/lib/chain/chain.js.map +1 -1
  55. package/lib/chain/emitter.d.ts +7 -1
  56. package/lib/chain/emitter.d.ts.map +1 -1
  57. package/lib/chain/emitter.js +5 -0
  58. package/lib/chain/emitter.js.map +1 -1
  59. package/lib/chain/errors/envelopeReconstructionError.d.ts +5 -0
  60. package/lib/chain/errors/envelopeReconstructionError.d.ts.map +1 -1
  61. package/lib/chain/errors/envelopeReconstructionError.js +2 -0
  62. package/lib/chain/errors/envelopeReconstructionError.js.map +1 -1
  63. package/lib/chain/errors/gossipValidation.d.ts +3 -1
  64. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  65. package/lib/chain/errors/gossipValidation.js +2 -0
  66. package/lib/chain/errors/gossipValidation.js.map +1 -1
  67. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  68. package/lib/chain/forkChoice/index.js +2 -0
  69. package/lib/chain/forkChoice/index.js.map +1 -1
  70. package/lib/chain/initState.d.ts +2 -9
  71. package/lib/chain/initState.d.ts.map +1 -1
  72. package/lib/chain/initState.js +5 -38
  73. package/lib/chain/initState.js.map +1 -1
  74. package/lib/chain/interface.d.ts +3 -2
  75. package/lib/chain/interface.d.ts.map +1 -1
  76. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -2
  77. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  78. package/lib/chain/opPools/aggregatedAttestationPool.js +30 -8
  79. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  80. package/lib/chain/opPools/opPool.d.ts +5 -4
  81. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  82. package/lib/chain/opPools/opPool.js +62 -18
  83. package/lib/chain/opPools/opPool.js.map +1 -1
  84. package/lib/chain/opPools/proposerPreferencesPool.d.ts +4 -4
  85. package/lib/chain/opPools/proposerPreferencesPool.d.ts.map +1 -1
  86. package/lib/chain/opPools/proposerPreferencesPool.js +14 -11
  87. package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -1
  88. package/lib/chain/opPools/utils.d.ts +4 -1
  89. package/lib/chain/opPools/utils.d.ts.map +1 -1
  90. package/lib/chain/opPools/utils.js +11 -1
  91. package/lib/chain/opPools/utils.js.map +1 -1
  92. package/lib/chain/options.d.ts +2 -1
  93. package/lib/chain/options.d.ts.map +1 -1
  94. package/lib/chain/options.js +1 -1
  95. package/lib/chain/options.js.map +1 -1
  96. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  97. package/lib/chain/prepareNextSlot.js +5 -2
  98. package/lib/chain/prepareNextSlot.js.map +1 -1
  99. package/lib/chain/produceBlock/computeNewStateRoot.js +1 -1
  100. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  101. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -1
  102. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  103. package/lib/chain/produceBlock/produceBlockBody.js +6 -2
  104. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  105. package/lib/chain/regen/regen.d.ts +2 -0
  106. package/lib/chain/regen/regen.d.ts.map +1 -1
  107. package/lib/chain/regen/regen.js +10 -4
  108. package/lib/chain/regen/regen.js.map +1 -1
  109. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -0
  110. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  111. package/lib/chain/seenCache/seenGossipBlockInput.js +21 -0
  112. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  113. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +9 -2
  114. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  115. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +23 -13
  116. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  117. package/lib/chain/shufflingCache.d.ts +18 -8
  118. package/lib/chain/shufflingCache.d.ts.map +1 -1
  119. package/lib/chain/shufflingCache.js +72 -18
  120. package/lib/chain/shufflingCache.js.map +1 -1
  121. package/lib/chain/validation/attesterSlashing.d.ts +4 -4
  122. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  123. package/lib/chain/validation/attesterSlashing.js +3 -0
  124. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  125. package/lib/chain/validation/proposerSlashing.d.ts +3 -3
  126. package/lib/chain/validation/proposerSlashing.d.ts.map +1 -1
  127. package/lib/chain/validation/proposerSlashing.js +3 -0
  128. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  129. package/lib/chain/validatorMonitor.d.ts +5 -1
  130. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  131. package/lib/chain/validatorMonitor.js +64 -54
  132. package/lib/chain/validatorMonitor.js.map +1 -1
  133. package/lib/db/beacon.d.ts +2 -0
  134. package/lib/db/beacon.d.ts.map +1 -1
  135. package/lib/db/beacon.js +5 -0
  136. package/lib/db/beacon.js.map +1 -1
  137. package/lib/db/buckets.d.ts +2 -1
  138. package/lib/db/buckets.d.ts.map +1 -1
  139. package/lib/db/buckets.js +1 -0
  140. package/lib/db/buckets.js.map +1 -1
  141. package/lib/db/interface.d.ts +2 -0
  142. package/lib/db/interface.d.ts.map +1 -1
  143. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  144. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  145. package/lib/db/repositories/earliestAvailableSlot.d.ts +11 -0
  146. package/lib/db/repositories/earliestAvailableSlot.d.ts.map +1 -0
  147. package/lib/db/repositories/earliestAvailableSlot.js +19 -0
  148. package/lib/db/repositories/earliestAvailableSlot.js.map +1 -0
  149. package/lib/db/repositories/proposerSlashing.d.ts +1 -0
  150. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  151. package/lib/db/repositories/proposerSlashing.js +5 -1
  152. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  153. package/lib/execution/engine/disabled.d.ts +0 -2
  154. package/lib/execution/engine/disabled.d.ts.map +1 -1
  155. package/lib/execution/engine/disabled.js +0 -6
  156. package/lib/execution/engine/disabled.js.map +1 -1
  157. package/lib/execution/engine/http.d.ts +1 -3
  158. package/lib/execution/engine/http.d.ts.map +1 -1
  159. package/lib/execution/engine/http.js +2 -17
  160. package/lib/execution/engine/http.js.map +1 -1
  161. package/lib/execution/engine/interface.d.ts +2 -4
  162. package/lib/execution/engine/interface.d.ts.map +1 -1
  163. package/lib/execution/engine/mock.d.ts +0 -2
  164. package/lib/execution/engine/mock.d.ts.map +1 -1
  165. package/lib/execution/engine/mock.js +0 -8
  166. package/lib/execution/engine/mock.js.map +1 -1
  167. package/lib/execution/engine/types.d.ts +0 -8
  168. package/lib/execution/engine/types.d.ts.map +1 -1
  169. package/lib/execution/engine/types.js.map +1 -1
  170. package/lib/index.d.ts +1 -1
  171. package/lib/index.d.ts.map +1 -1
  172. package/lib/index.js +1 -1
  173. package/lib/index.js.map +1 -1
  174. package/lib/metrics/metrics/beacon.d.ts +1 -1
  175. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  176. package/lib/metrics/metrics/beacon.js.map +1 -1
  177. package/lib/metrics/metrics/lodestar.d.ts +7 -0
  178. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  179. package/lib/metrics/metrics/lodestar.js +17 -0
  180. package/lib/metrics/metrics/lodestar.js.map +1 -1
  181. package/lib/metrics/metrics.d.ts +7 -3
  182. package/lib/metrics/metrics.d.ts.map +1 -1
  183. package/lib/metrics/metrics.js +4 -4
  184. package/lib/metrics/metrics.js.map +1 -1
  185. package/lib/network/metadata.d.ts +1 -1
  186. package/lib/network/metadata.d.ts.map +1 -1
  187. package/lib/network/metadata.js +17 -17
  188. package/lib/network/metadata.js.map +1 -1
  189. package/lib/network/peers/datastore.d.ts +9 -9
  190. package/lib/network/peers/datastore.d.ts.map +1 -1
  191. package/lib/network/peers/datastore.js +36 -36
  192. package/lib/network/peers/datastore.js.map +1 -1
  193. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  194. package/lib/network/processor/gossipHandlers.js +66 -67
  195. package/lib/network/processor/gossipHandlers.js.map +1 -1
  196. package/lib/network/processor/gossipValidatorFn.d.ts +7 -3
  197. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
  198. package/lib/network/processor/gossipValidatorFn.js +7 -3
  199. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  200. package/lib/network/processor/index.d.ts +9 -0
  201. package/lib/network/processor/index.d.ts.map +1 -1
  202. package/lib/network/processor/index.js +77 -10
  203. package/lib/network/processor/index.js.map +1 -1
  204. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -1
  205. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +41 -26
  206. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
  207. package/lib/node/nodejs.d.ts +3 -1
  208. package/lib/node/nodejs.d.ts.map +1 -1
  209. package/lib/node/nodejs.js +27 -4
  210. package/lib/node/nodejs.js.map +1 -1
  211. package/lib/sync/range/batch.d.ts +11 -5
  212. package/lib/sync/range/batch.d.ts.map +1 -1
  213. package/lib/sync/range/batch.js +21 -17
  214. package/lib/sync/range/batch.js.map +1 -1
  215. package/lib/sync/range/chain.d.ts +4 -4
  216. package/lib/sync/range/chain.d.ts.map +1 -1
  217. package/lib/sync/range/chain.js +12 -6
  218. package/lib/sync/range/chain.js.map +1 -1
  219. package/lib/sync/range/range.d.ts.map +1 -1
  220. package/lib/sync/range/range.js +75 -29
  221. package/lib/sync/range/range.js.map +1 -1
  222. package/lib/sync/unknownBlock.d.ts +14 -7
  223. package/lib/sync/unknownBlock.d.ts.map +1 -1
  224. package/lib/sync/unknownBlock.js +132 -66
  225. package/lib/sync/unknownBlock.js.map +1 -1
  226. package/lib/sync/utils/downloadByRange.d.ts +38 -14
  227. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  228. package/lib/sync/utils/downloadByRange.js +84 -39
  229. package/lib/sync/utils/downloadByRange.js.map +1 -1
  230. package/lib/util/execution.d.ts +11 -11
  231. package/lib/util/execution.d.ts.map +1 -1
  232. package/lib/util/execution.js +11 -7
  233. package/lib/util/execution.js.map +1 -1
  234. package/package.json +17 -17
  235. package/src/api/impl/beacon/blocks/index.ts +7 -4
  236. package/src/api/impl/beacon/index.ts +15 -0
  237. package/src/api/impl/beacon/pool/index.ts +4 -4
  238. package/src/api/impl/beacon/state/index.ts +31 -3
  239. package/src/api/impl/debug/index.ts +28 -19
  240. package/src/api/impl/validator/index.ts +24 -2
  241. package/src/chain/archiveStore/archiveStore.ts +26 -26
  242. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +5 -7
  243. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +1 -1
  244. package/src/chain/archiveStore/historicalState/types.ts +2 -2
  245. package/src/chain/archiveStore/historicalState/worker.ts +1 -2
  246. package/src/chain/archiveStore/interface.ts +1 -1
  247. package/src/chain/archiveStore/utils/pruneHistory.ts +9 -4
  248. package/src/chain/blocks/importBlock.ts +20 -5
  249. package/src/chain/blocks/payloadEnvelopeInput/types.ts +2 -1
  250. package/src/chain/blocks/verifyBlock.ts +8 -6
  251. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -3
  252. package/src/chain/chain.ts +118 -38
  253. package/src/chain/emitter.ts +7 -1
  254. package/src/chain/errors/envelopeReconstructionError.ts +3 -0
  255. package/src/chain/errors/gossipValidation.ts +2 -0
  256. package/src/chain/forkChoice/index.ts +2 -0
  257. package/src/chain/initState.ts +8 -60
  258. package/src/chain/interface.ts +3 -2
  259. package/src/chain/opPools/aggregatedAttestationPool.ts +34 -10
  260. package/src/chain/opPools/opPool.ts +91 -18
  261. package/src/chain/opPools/proposerPreferencesPool.ts +14 -10
  262. package/src/chain/opPools/utils.ts +31 -3
  263. package/src/chain/options.ts +3 -3
  264. package/src/chain/prepareNextSlot.ts +6 -3
  265. package/src/chain/produceBlock/computeNewStateRoot.ts +1 -1
  266. package/src/chain/produceBlock/produceBlockBody.ts +8 -1
  267. package/src/chain/regen/regen.ts +12 -4
  268. package/src/chain/seenCache/seenGossipBlockInput.ts +23 -0
  269. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +31 -13
  270. package/src/chain/shufflingCache.ts +84 -22
  271. package/src/chain/validation/attesterSlashing.ts +7 -4
  272. package/src/chain/validation/proposerSlashing.ts +7 -4
  273. package/src/chain/validatorMonitor.ts +75 -57
  274. package/src/db/beacon.ts +5 -0
  275. package/src/db/buckets.ts +1 -0
  276. package/src/db/interface.ts +2 -0
  277. package/src/db/repositories/earliestAvailableSlot.ts +19 -0
  278. package/src/db/repositories/proposerSlashing.ts +6 -1
  279. package/src/execution/engine/disabled.ts +0 -8
  280. package/src/execution/engine/http.ts +1 -30
  281. package/src/execution/engine/interface.ts +2 -6
  282. package/src/execution/engine/mock.ts +1 -19
  283. package/src/execution/engine/types.ts +0 -10
  284. package/src/index.ts +1 -1
  285. package/src/metrics/metrics/beacon.ts +1 -1
  286. package/src/metrics/metrics/lodestar.ts +18 -0
  287. package/src/metrics/metrics.ts +21 -6
  288. package/src/network/metadata.ts +17 -17
  289. package/src/network/peers/datastore.ts +36 -36
  290. package/src/network/processor/gossipHandlers.ts +97 -80
  291. package/src/network/processor/gossipValidatorFn.ts +13 -3
  292. package/src/network/processor/index.ts +89 -10
  293. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +42 -28
  294. package/src/node/nodejs.ts +35 -3
  295. package/src/sync/range/batch.ts +25 -19
  296. package/src/sync/range/chain.ts +15 -8
  297. package/src/sync/range/range.ts +76 -30
  298. package/src/sync/unknownBlock.ts +156 -71
  299. package/src/sync/utils/downloadByRange.ts +123 -58
  300. package/src/util/execution.ts +26 -14
@@ -31,13 +31,11 @@ import {
31
31
  BLOB_AND_PROOF_V2_RPC_BYTES,
32
32
  EngineApiRpcParamTypes,
33
33
  EngineApiRpcReturnTypes,
34
- ExecutionPayloadBody,
35
34
  ExecutionPayloadBodyV2,
36
35
  assertReqSizeLimit,
37
36
  deserializeBlobAndProofs,
38
37
  deserializeBlobAndProofsV2,
39
38
  deserializeBlobAndProofsV2IntoBytes,
40
- deserializeExecutionPayloadBody,
41
39
  deserializeExecutionPayloadBodyV2,
42
40
  parseExecutionPayload,
43
41
  serializeBeaconBlockRoot,
@@ -46,7 +44,7 @@ import {
46
44
  serializePayloadAttributes,
47
45
  serializeVersionedHashes,
48
46
  } from "./types.js";
49
- import {bytesToData, getExecutionEngineState, numToQuantity} from "./utils.js";
47
+ import {bytesToData, getExecutionEngineState} from "./utils.js";
50
48
 
51
49
  export type ExecutionEngineModules = {
52
50
  signal: AbortSignal;
@@ -114,7 +112,6 @@ const notifyNewPayloadOpts: ReqOpts = {routeId: "notifyNewPayload"};
114
112
  const forkchoiceUpdatedV1Opts: ReqOpts = {routeId: "forkchoiceUpdated"};
115
113
  const getPayloadOpts: ReqOpts = {routeId: "getPayload"};
116
114
  const getPayloadBodiesByHashOpts: ReqOpts = {routeId: "getPayloadBodiesByHash"};
117
- const getPayloadBodiesByRangeOpts: ReqOpts = {routeId: "getPayloadBodiesByRange"};
118
115
  const getBlobsV1Opts: ReqOpts = {routeId: "getBlobsV1"};
119
116
  const getBlobsV2Opts: ReqOpts = {routeId: "getBlobsV2"};
120
117
  const getClientVersionOpts: ReqOpts = {routeId: "getClientVersion"};
@@ -468,16 +465,6 @@ export class ExecutionEngineHttp implements IExecutionEngine {
468
465
  this.payloadIdCache.prune();
469
466
  }
470
467
 
471
- async getPayloadBodiesByHash(_fork: ForkName, blockHashes: RootHex[]): Promise<(ExecutionPayloadBody | null)[]> {
472
- const method = "engine_getPayloadBodiesByHashV1";
473
- assertReqSizeLimit(blockHashes.length, 32);
474
- const response = await this.rpc.fetchWithRetries<
475
- EngineApiRpcReturnTypes[typeof method],
476
- EngineApiRpcParamTypes[typeof method]
477
- >({method, params: [blockHashes]}, getPayloadBodiesByHashOpts);
478
- return response.map(deserializeExecutionPayloadBody);
479
- }
480
-
481
468
  async getPayloadBodiesByHashV2(blockHashes: RootHex[]): Promise<(ExecutionPayloadBodyV2 | null)[]> {
482
469
  const method = "engine_getPayloadBodiesByHashV2";
483
470
  assertReqSizeLimit(blockHashes.length, 32);
@@ -488,22 +475,6 @@ export class ExecutionEngineHttp implements IExecutionEngine {
488
475
  return response.map(deserializeExecutionPayloadBodyV2);
489
476
  }
490
477
 
491
- async getPayloadBodiesByRange(
492
- _fork: ForkName,
493
- startBlockNumber: number,
494
- blockCount: number
495
- ): Promise<(ExecutionPayloadBody | null)[]> {
496
- const method = "engine_getPayloadBodiesByRangeV1";
497
- assertReqSizeLimit(blockCount, 32);
498
- const start = numToQuantity(startBlockNumber);
499
- const count = numToQuantity(blockCount);
500
- const response = await this.rpc.fetchWithRetries<
501
- EngineApiRpcReturnTypes[typeof method],
502
- EngineApiRpcParamTypes[typeof method]
503
- >({method, params: [start, count]}, getPayloadBodiesByRangeOpts);
504
- return response.map(deserializeExecutionPayloadBody);
505
- }
506
-
507
478
  async getBlobs(
508
479
  fork: ForkPostFulu,
509
480
  versionedHashes: VersionedHashes,
@@ -13,7 +13,7 @@ import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, ca
13
13
  import {BlobAndProof} from "@lodestar/types/deneb";
14
14
  import {BlobAndProofV2} from "@lodestar/types/fulu";
15
15
  import {PayloadId, PayloadIdCache, WithdrawalV1} from "./payloadIdCache.js";
16
- import {ExecutionPayloadBody, ExecutionPayloadBodyV2} from "./types.js";
16
+ import {ExecutionPayloadBodyV2} from "./types.js";
17
17
  import {DATA} from "./utils.js";
18
18
 
19
19
  export {PayloadIdCache, type PayloadId, type WithdrawalV1};
@@ -170,13 +170,9 @@ export interface IExecutionEngine {
170
170
  shouldOverrideBuilder?: boolean;
171
171
  }>;
172
172
 
173
- getPayloadBodiesByHash(fork: ForkName, blockHash: DATA[]): Promise<(ExecutionPayloadBody | null)[]>;
174
-
175
- /** Amsterdam: like V1 but also returns the block access list (null if the EL no longer has it) */
173
+ /** Amsterdam: payload bodies including the block access list (null if the EL no longer has it) */
176
174
  getPayloadBodiesByHashV2(blockHash: DATA[]): Promise<(ExecutionPayloadBodyV2 | null)[]>;
177
175
 
178
- getPayloadBodiesByRange(fork: ForkName, start: number, count: number): Promise<(ExecutionPayloadBody | null)[]>;
179
-
180
176
  getBlobs(
181
177
  fork: ForkPostFulu,
182
178
  versionedHashes: VersionedHashes,
@@ -22,7 +22,6 @@ import {
22
22
  BlobsBundleRpc,
23
23
  EngineApiRpcParamTypes,
24
24
  EngineApiRpcReturnTypes,
25
- ExecutionPayloadBodyRpc,
26
25
  ExecutionPayloadBodyV2Rpc,
27
26
  ExecutionPayloadRpc,
28
27
  ExecutionRequestsRpc,
@@ -50,7 +49,7 @@ type ExecutionBlock = {
50
49
  blockHash: RootHex;
51
50
  timestamp: number;
52
51
  blockNumber: number;
53
- /** Bodies as received via newPayload, served back by engine_getPayloadBodiesByHash{V1,V2} */
52
+ /** Bodies as received via newPayload, served back by engine_getPayloadBodiesByHashV2 */
54
53
  body: ExecutionPayloadBodyV2Rpc;
55
54
  };
56
55
 
@@ -148,23 +147,13 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
148
147
  engine_getPayloadV4: this.getPayloadV5.bind(this),
149
148
  engine_getPayloadV5: this.getPayloadV5.bind(this),
150
149
  engine_getPayloadV6: this.getPayloadV5.bind(this),
151
- engine_getPayloadBodiesByHashV1: this.getPayloadBodiesByHash.bind(this),
152
150
  engine_getPayloadBodiesByHashV2: this.getPayloadBodiesByHashV2.bind(this),
153
- engine_getPayloadBodiesByRangeV1: this.getPayloadBodiesByRange.bind(this),
154
151
  engine_getClientVersionV1: this.getClientVersionV1.bind(this),
155
152
  engine_getBlobsV1: this.getBlobs.bind(this),
156
153
  engine_getBlobsV2: this.getBlobsV2.bind(this),
157
154
  };
158
155
  }
159
156
 
160
- private getPayloadBodiesByHash(
161
- blockHashes: EngineApiRpcParamTypes["engine_getPayloadBodiesByHashV1"][0]
162
- ): EngineApiRpcReturnTypes["engine_getPayloadBodiesByHashV1"] {
163
- return this.getPayloadBodiesByHashV2(blockHashes).map((body) =>
164
- body ? {transactions: body.transactions, withdrawals: body.withdrawals} : null
165
- );
166
- }
167
-
168
157
  private getPayloadBodiesByHashV2(
169
158
  blockHashes: EngineApiRpcParamTypes["engine_getPayloadBodiesByHashV2"][0]
170
159
  ): EngineApiRpcReturnTypes["engine_getPayloadBodiesByHashV2"] {
@@ -172,13 +161,6 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
172
161
  return blockHashes.map((hash) => this.validBlocks.get(hash)?.body ?? null);
173
162
  }
174
163
 
175
- private getPayloadBodiesByRange(
176
- _start: EngineApiRpcParamTypes["engine_getPayloadBodiesByRangeV1"][0],
177
- _count: EngineApiRpcParamTypes["engine_getPayloadBodiesByRangeV1"][1]
178
- ): EngineApiRpcReturnTypes["engine_getPayloadBodiesByRangeV1"] {
179
- return [] as ExecutionPayloadBodyRpc[];
180
- }
181
-
182
164
  /**
183
165
  * Mock manipulator to add predefined responses before execution engine client calls
184
166
  */
@@ -88,15 +88,8 @@ export type EngineApiRpcParamTypes = {
88
88
  /**
89
89
  * 1. Array of DATA - Array of block_hash field values of the ExecutionPayload structure
90
90
  * */
91
- engine_getPayloadBodiesByHashV1: DATA[][];
92
91
  engine_getPayloadBodiesByHashV2: DATA[][];
93
92
 
94
- /**
95
- * 1. start: QUANTITY, 64 bits - Starting block number
96
- * 2. count: QUANTITY, 64 bits - Number of blocks to return
97
- */
98
- engine_getPayloadBodiesByRangeV1: [start: QUANTITY, count: QUANTITY];
99
-
100
93
  /**
101
94
  * Object - Instance of ClientVersion
102
95
  */
@@ -148,11 +141,8 @@ export type EngineApiRpcReturnTypes = {
148
141
  engine_getPayloadV5: ExecutionPayloadResponse;
149
142
  engine_getPayloadV6: ExecutionPayloadResponse;
150
143
 
151
- engine_getPayloadBodiesByHashV1: (ExecutionPayloadBodyRpc | null)[];
152
144
  engine_getPayloadBodiesByHashV2: (ExecutionPayloadBodyV2Rpc | null)[];
153
145
 
154
- engine_getPayloadBodiesByRangeV1: (ExecutionPayloadBodyRpc | null)[];
155
-
156
146
  engine_getClientVersionV1: ClientVersionRpc[];
157
147
 
158
148
  engine_getBlobsV1: (BlobAndProofRpc | null)[];
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  export type {RestApiServerMetrics, RestApiServerModules, RestApiServerOpts} from "./api/rest/base.js";
4
4
  export {RestApiServer} from "./api/rest/base.js";
5
- export {checkAndPersistAnchorState} from "./chain/index.js";
5
+ export {persistAnchorState} from "./chain/index.js";
6
6
  export {DbCPStateDatastore} from "./chain/stateCache/datastore/db.js";
7
7
  export {FileCPStateDatastore} from "./chain/stateCache/datastore/file.js";
8
8
  export {BeaconDb, type IBeaconDb} from "./db/index.js";
@@ -216,7 +216,7 @@ export function createBeaconMetrics(register: RegistryMetricCreator) {
216
216
  }),
217
217
  },
218
218
  payloadEnvelopeReconstruction: {
219
- envelopes: register.counter<{result: "ok" | "unavailable" | "mismatch"}>({
219
+ envelopes: register.counter<{result: "success" | "unavailable" | "mismatch"}>({
220
220
  name: "beacon_payload_envelope_reconstruction_envelopes_total",
221
221
  help: "Archived header envelopes rebuilt from EL bodies, by outcome",
222
222
  labelNames: ["result"],
@@ -20,6 +20,7 @@ import {InsertOutcome} from "../../chain/opPools/types.js";
20
20
  import {RegenCaller, RegenFnName} from "../../chain/regen/interface.js";
21
21
  import {ReprocessStatus} from "../../chain/reprocess.js";
22
22
  import {RejectReason} from "../../chain/seenCache/seenAttestationData.js";
23
+ import type {ShufflingPromiseCancelReason} from "../../chain/shufflingCache.js";
23
24
  import {CacheItemType} from "../../chain/stateCache/types.js";
24
25
  import {OpSource} from "../../chain/validatorMonitor.js";
25
26
  import type {FlatFileStoreOperation} from "../../db/flatFileStore/metrics.js";
@@ -1281,6 +1282,10 @@ export function createLodestarMetrics(
1281
1282
  name: "lodestar_oppool_aggregated_attestation_pool_packed_attestations_seen_committees_total",
1282
1283
  help: "Total number of committees for which all members are seen when producing packed attestations",
1283
1284
  }),
1285
+ missingShufflingCommittees: register.gauge({
1286
+ name: "lodestar_oppool_aggregated_attestation_pool_packed_attestations_missing_shuffling_committees_total",
1287
+ help: "Total number of committees skipped due to missing shuffling when producing packed attestations",
1288
+ }),
1284
1289
  },
1285
1290
  },
1286
1291
  attestationPool: {
@@ -1614,6 +1619,19 @@ export function createLodestarMetrics(
1614
1619
  name: "lodestar_shuffling_cache_size",
1615
1620
  help: "Shuffling cache size",
1616
1621
  }),
1622
+ epochs: register.gauge({
1623
+ name: "lodestar_shuffling_cache_epochs",
1624
+ help: "Number of epochs in shuffling cache",
1625
+ }),
1626
+ prunedShufflings: register.counter({
1627
+ name: "lodestar_shuffling_cache_pruned_shufflings_total",
1628
+ help: "Total number of shufflings pruned from shuffling cache",
1629
+ }),
1630
+ cancelledPromises: register.counter<{reason: ShufflingPromiseCancelReason}>({
1631
+ name: "lodestar_shuffling_cache_cancelled_promises_total",
1632
+ help: "Total number of shuffling promises resolved with null",
1633
+ labelNames: ["reason"],
1634
+ }),
1617
1635
  insertPromiseCount: register.gauge({
1618
1636
  name: "lodestar_shuffling_cache_insert_promise_count",
1619
1637
  help: "Total number of times insertPromise is called",
@@ -9,27 +9,42 @@ import {RegistryMetricCreator} from "./utils/registryMetricCreator.js";
9
9
 
10
10
  export type Metrics = BeaconMetrics &
11
11
  ForkChoiceMetrics &
12
- BeaconStateTransitionMetrics &
13
- LodestarMetrics & {register: RegistryMetricCreator; close: () => void};
12
+ LodestarMetrics & {
13
+ /** Null when we use native state transition metrics instead */
14
+ stateTransition: BeaconStateTransitionMetrics | null;
15
+ register: RegistryMetricCreator;
16
+ close: () => void;
17
+ };
18
+
19
+ export type CreateMetricsOptions = {
20
+ /*
21
+ * Toggle inclusion of state transition metrics.
22
+ *
23
+ * False when native state transition is used, so we
24
+ * can grab metrics from the native implementation instead.
25
+ * */
26
+ includeStateTransitionMetrics?: boolean;
27
+ collectNodeMetrics?: boolean;
28
+ };
14
29
 
15
30
  export function createMetrics(
16
31
  opts: MetricsOptions,
17
32
  genesisTime: number,
18
33
  externalRegistries: Registry[] = [],
19
- {collectNodeMetrics = true}: {collectNodeMetrics?: boolean} = {}
34
+ createOpts: CreateMetricsOptions = {}
20
35
  ): Metrics {
21
36
  const register = new RegistryMetricCreator();
22
37
  const beacon = createBeaconMetrics(register);
23
38
  const forkChoice = getForkChoiceMetrics(register);
24
39
  const lodestar = createLodestarMetrics(register, opts.metadata, genesisTime);
25
- const stateTransition = getMetrics(register);
40
+ const stateTransition = createOpts.includeStateTransitionMetrics === false ? null : getMetrics(register);
26
41
 
27
42
  const onUnhandledRejection = (_error: unknown): void => {
28
43
  lodestar.unhandledPromiseRejections.inc();
29
44
  };
30
45
  process.on("unhandledRejection", onUnhandledRejection);
31
46
 
32
- const nodeJsMetricsClose = collectNodeMetrics ? collectNodeJSMetrics(register) : (): void => {};
47
+ const nodeJsMetricsClose = createOpts.collectNodeMetrics === false ? (): void => {} : collectNodeJSMetrics(register);
33
48
  const close = (): void => {
34
49
  process.removeListener("unhandledRejection", onUnhandledRejection);
35
50
  nodeJsMetricsClose();
@@ -46,7 +61,7 @@ export function createMetrics(
46
61
  ...beacon,
47
62
  ...forkChoice,
48
63
  ...lodestar,
49
- ...stateTransition,
64
+ stateTransition,
50
65
  register,
51
66
  close,
52
67
  };
@@ -42,13 +42,13 @@ export class MetadataController {
42
42
  private onSetValue: (key: string, value: Uint8Array) => void;
43
43
  private networkConfig: NetworkConfig;
44
44
  private logger: Logger;
45
- private _metadata: fulu.Metadata;
45
+ private metadata: fulu.Metadata;
46
46
 
47
47
  constructor(opts: MetadataOpts, modules: MetadataModules) {
48
48
  this.networkConfig = modules.networkConfig;
49
49
  this.logger = modules.logger;
50
50
  this.onSetValue = modules.onSetValue;
51
- this._metadata = opts.metadata ?? {
51
+ this.metadata = opts.metadata ?? {
52
52
  ...ssz.fulu.Metadata.defaultValue(),
53
53
  custodyGroupCount: modules.networkConfig.custodyConfig.targetCustodyGroupCount,
54
54
  };
@@ -58,61 +58,61 @@ export class MetadataController {
58
58
  // updateEth2Field() MUST be called with clock epoch
59
59
  this.updateEth2Field(currentEpoch);
60
60
 
61
- this.onSetValue(ENRKey.attnets, ssz.phase0.AttestationSubnets.serialize(this._metadata.attnets));
61
+ this.onSetValue(ENRKey.attnets, ssz.phase0.AttestationSubnets.serialize(this.metadata.attnets));
62
62
 
63
63
  const config = this.networkConfig.config;
64
64
 
65
65
  if (config.getForkSeq(computeStartSlotAtEpoch(currentEpoch)) >= ForkSeq.altair) {
66
66
  // Only persist syncnets if altair fork is already activated. If currentFork is altair but head is phase0
67
67
  // adding syncnets to the ENR is not a problem, we will just have a useless field for a few hours.
68
- this.onSetValue(ENRKey.syncnets, ssz.altair.SyncSubnets.serialize(this._metadata.syncnets));
68
+ this.onSetValue(ENRKey.syncnets, ssz.altair.SyncSubnets.serialize(this.metadata.syncnets));
69
69
  }
70
70
 
71
71
  // Set CGC regardless of fork. It may be useful to clients before Fulu, and will be ignored otherwise.
72
- this.onSetValue(ENRKey.cgc, serializeCgc(this._metadata.custodyGroupCount));
72
+ this.onSetValue(ENRKey.cgc, serializeCgc(this.metadata.custodyGroupCount));
73
73
  }
74
74
 
75
75
  get seqNumber(): bigint {
76
- return this._metadata.seqNumber;
76
+ return this.metadata.seqNumber;
77
77
  }
78
78
 
79
79
  get syncnets(): BitArray {
80
- return this._metadata.syncnets;
80
+ return this.metadata.syncnets;
81
81
  }
82
82
 
83
83
  set syncnets(syncnets: BitArray) {
84
84
  this.onSetValue(ENRKey.syncnets, ssz.altair.SyncSubnets.serialize(syncnets));
85
- this._metadata.seqNumber++;
86
- this._metadata.syncnets = syncnets;
85
+ this.metadata.seqNumber++;
86
+ this.metadata.syncnets = syncnets;
87
87
  }
88
88
 
89
89
  get attnets(): BitArray {
90
- return this._metadata.attnets;
90
+ return this.metadata.attnets;
91
91
  }
92
92
 
93
93
  set attnets(attnets: BitArray) {
94
94
  this.onSetValue(ENRKey.attnets, ssz.phase0.AttestationSubnets.serialize(attnets));
95
- this._metadata.seqNumber++;
96
- this._metadata.attnets = attnets;
95
+ this.metadata.seqNumber++;
96
+ this.metadata.attnets = attnets;
97
97
  }
98
98
 
99
99
  get custodyGroupCount(): number {
100
- return this._metadata.custodyGroupCount;
100
+ return this.metadata.custodyGroupCount;
101
101
  }
102
102
 
103
103
  set custodyGroupCount(custodyGroupCount: number) {
104
- if (custodyGroupCount === this._metadata.custodyGroupCount) {
104
+ if (custodyGroupCount === this.metadata.custodyGroupCount) {
105
105
  return;
106
106
  }
107
107
  this.onSetValue(ENRKey.cgc, serializeCgc(custodyGroupCount));
108
108
  this.logger.debug("Updated cgc field in ENR", {custodyGroupCount});
109
- this._metadata.seqNumber++;
110
- this._metadata.custodyGroupCount = custodyGroupCount;
109
+ this.metadata.seqNumber++;
110
+ this.metadata.custodyGroupCount = custodyGroupCount;
111
111
  }
112
112
 
113
113
  /** Consumers that need the phase0.Metadata type can just ignore the .syncnets property */
114
114
  get json(): fulu.Metadata {
115
- return this._metadata;
115
+ return this.metadata;
116
116
  }
117
117
 
118
118
  /**
@@ -16,23 +16,23 @@ type AwaitGenerator<T, TReturn = any, TNext = any> = Generator<T, TReturn, TNext
16
16
  * This has a memory issue because all peer data stays in memory and loaded at startup time
17
17
  * This is written for libp2p >=0.35, we maintain the same mechanism but with bounded data structure
18
18
  * This datastore includes a memory datastore and fallback to db datastore
19
- * Use an in-memory datastore with last accessed time and _maxMemoryItems, on start it's empty (lazy load)
19
+ * Use an in-memory datastore with last accessed time and maxMemoryItems, on start it's empty (lazy load)
20
20
  * - get: Search in-memory datastore first, if not found search from db.
21
21
  * - If found from db, add back to the in-memory datastore
22
22
  * - Update lastAccessedMs
23
- * - put: move oldest items from memory to db if there are more than _maxMemoryItems items in memory
24
- * - update memory datastore, only update db datastore if there are at least _threshold dirty items
23
+ * - put: move oldest items from memory to db if there are more than maxMemoryItems items in memory
24
+ * - update memory datastore, only update db datastore if there are at least threshold dirty items
25
25
  * - Update lastAccessedMs
26
26
  */
27
27
  export class Eth2PeerDataStore extends BaseDatastore {
28
- private _dbDatastore: LevelDatastore;
29
- private _memoryDatastore: Map<string, MemoryItem>;
28
+ private dbDatastore: LevelDatastore;
29
+ private memoryDatastore: Map<string, MemoryItem>;
30
30
  /** Same to PersistentPeerStore of the old libp2p implementation */
31
- private _dirtyItems = new Set<string>();
31
+ private dirtyItems = new Set<string>();
32
32
  /** If there are more dirty items than threshold, commit data to db */
33
- private _threshold: number;
33
+ private threshold: number;
34
34
  /** If there are more memory items than this, prune oldest ones from memory and move to db */
35
- private _maxMemoryItems: number;
35
+ private maxMemoryItems: number;
36
36
 
37
37
  constructor(
38
38
  dbDatastore: LevelDatastore | string,
@@ -47,18 +47,18 @@ export class Eth2PeerDataStore extends BaseDatastore {
47
47
  throw Error(`Threshold ${threshold} should be at most maxMemoryItems ${maxMemoryItems}`);
48
48
  }
49
49
 
50
- this._dbDatastore = typeof dbDatastore === "string" ? new LevelDatastore(dbDatastore) : dbDatastore;
51
- this._memoryDatastore = new Map();
52
- this._threshold = threshold;
53
- this._maxMemoryItems = maxMemoryItems;
50
+ this.dbDatastore = typeof dbDatastore === "string" ? new LevelDatastore(dbDatastore) : dbDatastore;
51
+ this.memoryDatastore = new Map();
52
+ this.threshold = threshold;
53
+ this.maxMemoryItems = maxMemoryItems;
54
54
  }
55
55
 
56
56
  async open(): Promise<void> {
57
- return this._dbDatastore.open();
57
+ return this.dbDatastore.open();
58
58
  }
59
59
 
60
60
  async close(): Promise<void> {
61
- return this._dbDatastore.close();
61
+ return this.dbDatastore.close();
62
62
  }
63
63
 
64
64
  async put(key: Key, val: Uint8Array, _options?: AbortOptions): Promise<Key> {
@@ -67,23 +67,23 @@ export class Eth2PeerDataStore extends BaseDatastore {
67
67
 
68
68
  /**
69
69
  * Same interface to put with "fromDb" option, if this item is updated back from db
70
- * Move oldest items from memory data store to db if it's over this._maxMemoryItems
70
+ * Move oldest items from memory data store to db if it's over this.maxMemoryItems
71
71
  */
72
72
  async _put(key: Key, val: Uint8Array, fromDb = false): Promise<Key> {
73
- while (this._memoryDatastore.size >= this._maxMemoryItems) {
73
+ while (this.memoryDatastore.size >= this.maxMemoryItems) {
74
74
  // it's likely this is called only 1 time
75
75
  await this.pruneMemoryDatastore();
76
76
  }
77
77
 
78
78
  const keyStr = key.toString();
79
- const memoryItem = this._memoryDatastore.get(keyStr);
79
+ const memoryItem = this.memoryDatastore.get(keyStr);
80
80
  if (memoryItem) {
81
81
  // update existing
82
82
  memoryItem.lastAccessedMs = Date.now();
83
83
  memoryItem.data = val;
84
84
  } else {
85
85
  // new
86
- this._memoryDatastore.set(keyStr, {data: val, lastAccessedMs: Date.now()});
86
+ this.memoryDatastore.set(keyStr, {data: val, lastAccessedMs: Date.now()});
87
87
  }
88
88
 
89
89
  if (!fromDb) await this._addDirtyItem(keyStr);
@@ -98,15 +98,15 @@ export class Eth2PeerDataStore extends BaseDatastore {
98
98
  */
99
99
  async get(key: Key, options?: AbortOptions): Promise<Uint8Array> {
100
100
  const keyStr = key.toString();
101
- const memoryItem = this._memoryDatastore.get(keyStr);
101
+ const memoryItem = this.memoryDatastore.get(keyStr);
102
102
  if (memoryItem) {
103
103
  memoryItem.lastAccessedMs = Date.now();
104
104
  return memoryItem.data;
105
105
  }
106
106
 
107
107
  // this throws error if not found
108
- const dbValue = await this._dbDatastore.get(key, options);
109
- // don't call this._memoryDatastore.set directly
108
+ const dbValue = await this.dbDatastore.get(key, options);
109
+ // don't call this.memoryDatastore.set directly
110
110
  // we want to get through prune() logic with fromDb as true
111
111
  await this._put(key, dbValue, true);
112
112
  return dbValue;
@@ -125,30 +125,30 @@ export class Eth2PeerDataStore extends BaseDatastore {
125
125
  }
126
126
 
127
127
  async delete(key: Key, options?: AbortOptions): Promise<void> {
128
- this._memoryDatastore.delete(key.toString());
129
- await this._dbDatastore.delete(key, options);
128
+ this.memoryDatastore.delete(key.toString());
129
+ await this.dbDatastore.delete(key, options);
130
130
  }
131
131
 
132
132
  async *_all(q: Query, options?: AbortOptions): AwaitGenerator<Pair> {
133
- for (const [key, value] of this._memoryDatastore.entries()) {
133
+ for (const [key, value] of this.memoryDatastore.entries()) {
134
134
  yield {
135
135
  key: new Key(key),
136
136
  value: value.data,
137
137
  };
138
138
  }
139
- yield* this._dbDatastore.query(q, options);
139
+ yield* this.dbDatastore.query(q, options);
140
140
  }
141
141
 
142
142
  async *_allKeys(q: KeyQuery, options?: AbortOptions): AwaitGenerator<Key> {
143
- for (const key of this._memoryDatastore.keys()) {
143
+ for (const key of this.memoryDatastore.keys()) {
144
144
  yield new Key(key);
145
145
  }
146
- yield* this._dbDatastore.queryKeys(q, options);
146
+ yield* this.dbDatastore.queryKeys(q, options);
147
147
  }
148
148
 
149
149
  private async _addDirtyItem(keyStr: string): Promise<void> {
150
- this._dirtyItems.add(keyStr);
151
- if (this._dirtyItems.size >= this._threshold) {
150
+ this.dirtyItems.add(keyStr);
151
+ if (this.dirtyItems.size >= this.threshold) {
152
152
  try {
153
153
  await this._commitData();
154
154
  } catch (_e) {}
@@ -156,15 +156,15 @@ export class Eth2PeerDataStore extends BaseDatastore {
156
156
  }
157
157
 
158
158
  private async _commitData(): Promise<void> {
159
- const batch = this._dbDatastore.batch();
160
- for (const keyStr of this._dirtyItems) {
161
- const memoryItem = this._memoryDatastore.get(keyStr);
159
+ const batch = this.dbDatastore.batch();
160
+ for (const keyStr of this.dirtyItems) {
161
+ const memoryItem = this.memoryDatastore.get(keyStr);
162
162
  if (memoryItem) {
163
163
  batch.put(new Key(keyStr), memoryItem.data);
164
164
  }
165
165
  }
166
166
  await batch.commit();
167
- this._dirtyItems.clear();
167
+ this.dirtyItems.clear();
168
168
  }
169
169
 
170
170
  /**
@@ -175,7 +175,7 @@ export class Eth2PeerDataStore extends BaseDatastore {
175
175
  let oldestKey: string | undefined = undefined;
176
176
  let oldestValue: Uint8Array | undefined = undefined;
177
177
 
178
- for (const [key, value] of this._memoryDatastore) {
178
+ for (const [key, value] of this.memoryDatastore) {
179
179
  if (value.lastAccessedMs < oldestAccessedMs) {
180
180
  oldestAccessedMs = value.lastAccessedMs;
181
181
  oldestKey = key;
@@ -184,8 +184,8 @@ export class Eth2PeerDataStore extends BaseDatastore {
184
184
  }
185
185
 
186
186
  if (oldestKey && oldestValue) {
187
- await this._dbDatastore.put(new Key(oldestKey), oldestValue);
188
- this._memoryDatastore.delete(oldestKey);
187
+ await this.dbDatastore.put(new Key(oldestKey), oldestValue);
188
+ this.memoryDatastore.delete(oldestKey);
189
189
  }
190
190
  }
191
191
  }