@lodestar/beacon-node 1.36.0-dev.4fe86ae0ee → 1.36.0-dev.57b1f6e666

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 (210) hide show
  1. package/lib/api/impl/config/constants.d.ts +4 -2
  2. package/lib/api/impl/config/constants.d.ts.map +1 -1
  3. package/lib/api/impl/config/constants.js +6 -3
  4. package/lib/api/impl/config/constants.js.map +1 -1
  5. package/lib/api/impl/lodestar/index.d.ts +5 -0
  6. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  7. package/lib/api/impl/lodestar/index.js +35 -10
  8. package/lib/api/impl/lodestar/index.js.map +1 -1
  9. package/lib/api/impl/node/utils.js +1 -1
  10. package/lib/api/impl/node/utils.js.map +1 -1
  11. package/lib/api/impl/validator/index.d.ts.map +1 -1
  12. package/lib/api/impl/validator/index.js +2 -2
  13. package/lib/api/impl/validator/index.js.map +1 -1
  14. package/lib/chain/archiveStore/archiveStore.d.ts +9 -0
  15. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  16. package/lib/chain/archiveStore/archiveStore.js +24 -0
  17. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  18. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +7 -0
  19. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  20. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +31 -5
  21. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  22. package/lib/chain/beaconProposerCache.d.ts +3 -0
  23. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  24. package/lib/chain/beaconProposerCache.js +4 -6
  25. package/lib/chain/beaconProposerCache.js.map +1 -1
  26. package/lib/chain/chain.d.ts +5 -2
  27. package/lib/chain/chain.d.ts.map +1 -1
  28. package/lib/chain/chain.js +34 -18
  29. package/lib/chain/chain.js.map +1 -1
  30. package/lib/chain/errors/dataColumnSidecarError.d.ts +7 -0
  31. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
  32. package/lib/chain/errors/dataColumnSidecarError.js +1 -0
  33. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  34. package/lib/chain/errors/voluntaryExitError.d.ts +16 -2
  35. package/lib/chain/errors/voluntaryExitError.d.ts.map +1 -1
  36. package/lib/chain/errors/voluntaryExitError.js +22 -1
  37. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  38. package/lib/chain/forkChoice/index.d.ts +9 -1
  39. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  40. package/lib/chain/forkChoice/index.js +109 -4
  41. package/lib/chain/forkChoice/index.js.map +1 -1
  42. package/lib/chain/interface.d.ts +2 -0
  43. package/lib/chain/interface.d.ts.map +1 -1
  44. package/lib/chain/lightClient/index.d.ts +3 -0
  45. package/lib/chain/lightClient/index.d.ts.map +1 -1
  46. package/lib/chain/lightClient/index.js +24 -13
  47. package/lib/chain/lightClient/index.js.map +1 -1
  48. package/lib/chain/opPools/syncContributionAndProofPool.d.ts +3 -1
  49. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  50. package/lib/chain/opPools/syncContributionAndProofPool.js +4 -3
  51. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  52. package/lib/chain/options.d.ts +0 -2
  53. package/lib/chain/options.d.ts.map +1 -1
  54. package/lib/chain/options.js +0 -1
  55. package/lib/chain/options.js.map +1 -1
  56. package/lib/chain/stateCache/datastore/db.d.ts +12 -0
  57. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  58. package/lib/chain/stateCache/datastore/db.js +70 -0
  59. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  60. package/lib/chain/stateCache/datastore/file.d.ts +1 -0
  61. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  62. package/lib/chain/stateCache/datastore/file.js +7 -0
  63. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  64. package/lib/chain/stateCache/datastore/types.d.ts +1 -0
  65. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  66. package/lib/chain/validation/attestation.d.ts.map +1 -1
  67. package/lib/chain/validation/attestation.js +6 -7
  68. package/lib/chain/validation/attestation.js.map +1 -1
  69. package/lib/chain/validation/block.d.ts.map +1 -1
  70. package/lib/chain/validation/block.js +1 -2
  71. package/lib/chain/validation/block.js.map +1 -1
  72. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  73. package/lib/chain/validation/dataColumnSidecar.js +14 -3
  74. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  75. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -1
  76. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -2
  77. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  78. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  79. package/lib/chain/validation/voluntaryExit.js +5 -4
  80. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  81. package/lib/constants/constants.d.ts +0 -5
  82. package/lib/constants/constants.d.ts.map +1 -1
  83. package/lib/constants/constants.js +0 -5
  84. package/lib/constants/constants.js.map +1 -1
  85. package/lib/constants/network.d.ts +0 -14
  86. package/lib/constants/network.d.ts.map +1 -1
  87. package/lib/constants/network.js +0 -15
  88. package/lib/constants/network.js.map +1 -1
  89. package/lib/index.d.ts +2 -0
  90. package/lib/index.d.ts.map +1 -1
  91. package/lib/index.js +2 -0
  92. package/lib/index.js.map +1 -1
  93. package/lib/metrics/metrics/lodestar.d.ts +11 -0
  94. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  95. package/lib/metrics/metrics/lodestar.js +19 -1
  96. package/lib/metrics/metrics/lodestar.js.map +1 -1
  97. package/lib/network/core/networkCore.d.ts.map +1 -1
  98. package/lib/network/core/networkCore.js +5 -1
  99. package/lib/network/core/networkCore.js.map +1 -1
  100. package/lib/network/core/networkCoreWorker.js +2 -7
  101. package/lib/network/core/networkCoreWorker.js.map +1 -1
  102. package/lib/network/discv5/utils.d.ts.map +1 -1
  103. package/lib/network/discv5/utils.js +1 -2
  104. package/lib/network/discv5/utils.js.map +1 -1
  105. package/lib/network/discv5/worker.js +2 -7
  106. package/lib/network/discv5/worker.js.map +1 -1
  107. package/lib/network/gossip/encoding.js +1 -1
  108. package/lib/network/gossip/encoding.js.map +1 -1
  109. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  110. package/lib/network/gossip/gossipsub.js +1 -7
  111. package/lib/network/gossip/gossipsub.js.map +1 -1
  112. package/lib/network/gossip/snappy_bun.d.ts +3 -0
  113. package/lib/network/gossip/snappy_bun.d.ts.map +1 -0
  114. package/lib/network/gossip/snappy_bun.js +3 -0
  115. package/lib/network/gossip/snappy_bun.js.map +1 -0
  116. package/lib/network/metadata.d.ts +1 -1
  117. package/lib/network/metadata.d.ts.map +1 -1
  118. package/lib/network/metadata.js +1 -0
  119. package/lib/network/metadata.js.map +1 -1
  120. package/lib/network/options.d.ts +0 -1
  121. package/lib/network/options.d.ts.map +1 -1
  122. package/lib/network/options.js.map +1 -1
  123. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  124. package/lib/network/processor/gossipHandlers.js +14 -8
  125. package/lib/network/processor/gossipHandlers.js.map +1 -1
  126. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  127. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -1
  128. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  129. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +5 -5
  130. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  131. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +4 -4
  132. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  133. package/lib/network/subnets/attnetsService.d.ts +1 -1
  134. package/lib/network/subnets/attnetsService.js +6 -6
  135. package/lib/network/subnets/attnetsService.js.map +1 -1
  136. package/lib/network/subnets/util.d.ts +3 -2
  137. package/lib/network/subnets/util.d.ts.map +1 -1
  138. package/lib/network/subnets/util.js +6 -6
  139. package/lib/network/subnets/util.js.map +1 -1
  140. package/lib/node/nodejs.d.ts +2 -1
  141. package/lib/node/nodejs.d.ts.map +1 -1
  142. package/lib/node/nodejs.js +2 -1
  143. package/lib/node/nodejs.js.map +1 -1
  144. package/lib/sync/range/range.d.ts.map +1 -1
  145. package/lib/sync/range/range.js +2 -1
  146. package/lib/sync/range/range.js.map +1 -1
  147. package/lib/sync/utils/remoteSyncType.d.ts +2 -1
  148. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  149. package/lib/sync/utils/remoteSyncType.js +19 -4
  150. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  151. package/lib/util/clock.d.ts.map +1 -1
  152. package/lib/util/clock.js +3 -4
  153. package/lib/util/clock.js.map +1 -1
  154. package/lib/util/profile.d.ts +6 -4
  155. package/lib/util/profile.d.ts.map +1 -1
  156. package/lib/util/profile.js +40 -3
  157. package/lib/util/profile.js.map +1 -1
  158. package/lib/util/sszBytes.d.ts +2 -0
  159. package/lib/util/sszBytes.d.ts.map +1 -1
  160. package/lib/util/sszBytes.js +25 -0
  161. package/lib/util/sszBytes.js.map +1 -1
  162. package/package.json +30 -24
  163. package/src/api/impl/config/constants.ts +10 -4
  164. package/src/api/impl/lodestar/index.ts +42 -10
  165. package/src/api/impl/node/utils.ts +1 -1
  166. package/src/api/impl/validator/index.ts +5 -2
  167. package/src/chain/archiveStore/archiveStore.ts +27 -0
  168. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +32 -5
  169. package/src/chain/beaconProposerCache.ts +4 -8
  170. package/src/chain/chain.ts +50 -25
  171. package/src/chain/errors/dataColumnSidecarError.ts +8 -0
  172. package/src/chain/errors/voluntaryExitError.ts +30 -2
  173. package/src/chain/forkChoice/index.ts +178 -2
  174. package/src/chain/interface.ts +2 -0
  175. package/src/chain/lightClient/index.ts +26 -12
  176. package/src/chain/opPools/syncContributionAndProofPool.ts +3 -2
  177. package/src/chain/options.ts +0 -3
  178. package/src/chain/stateCache/datastore/db.ts +89 -1
  179. package/src/chain/stateCache/datastore/file.ts +8 -0
  180. package/src/chain/stateCache/datastore/types.ts +1 -0
  181. package/src/chain/validation/attestation.ts +6 -7
  182. package/src/chain/validation/block.ts +1 -2
  183. package/src/chain/validation/dataColumnSidecar.ts +21 -4
  184. package/src/chain/validation/lightClientOptimisticUpdate.ts +3 -2
  185. package/src/chain/validation/voluntaryExit.ts +14 -4
  186. package/src/constants/constants.ts +0 -6
  187. package/src/constants/network.ts +0 -19
  188. package/src/index.ts +2 -0
  189. package/src/metrics/metrics/lodestar.ts +22 -1
  190. package/src/network/core/networkCore.ts +5 -1
  191. package/src/network/core/networkCoreWorker.ts +2 -7
  192. package/src/network/discv5/utils.ts +1 -2
  193. package/src/network/discv5/worker.ts +2 -7
  194. package/src/network/gossip/encoding.ts +1 -1
  195. package/src/network/gossip/gossipsub.ts +1 -10
  196. package/src/network/gossip/snappy_bun.ts +2 -0
  197. package/src/network/metadata.ts +3 -1
  198. package/src/network/options.ts +0 -1
  199. package/src/network/processor/gossipHandlers.ts +16 -7
  200. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +3 -1
  201. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +6 -6
  202. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +5 -5
  203. package/src/network/subnets/attnetsService.ts +6 -6
  204. package/src/network/subnets/util.ts +12 -12
  205. package/src/node/nodejs.ts +3 -0
  206. package/src/sync/range/range.ts +2 -1
  207. package/src/sync/utils/remoteSyncType.ts +23 -4
  208. package/src/util/clock.ts +3 -4
  209. package/src/util/profile.ts +45 -3
  210. package/src/util/sszBytes.ts +30 -0
@@ -1,11 +1,28 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
1
3
  import { sleep } from "@lodestar/utils";
4
+ export var ProfileThread;
5
+ (function (ProfileThread) {
6
+ ProfileThread["MAIN"] = "main";
7
+ ProfileThread["NETWORK"] = "network";
8
+ ProfileThread["DISC5"] = "discv5";
9
+ })(ProfileThread || (ProfileThread = {}));
2
10
  /**
3
- * Take 10m profile of the current thread without promise tracking.
11
+ * The time to take a Bun profile.
12
+ * If we increase this time it'll potentiall cause the app to crash.
13
+ * If we decrease this time, profile recorded will be fragmented and hard to analyze.
4
14
  */
5
- export async function profileNodeJS(durationMs) {
15
+ const BUN_PROFILE_MS = 3 * 1000;
16
+ export async function profileThread(thread, durationMs, dirpath) {
17
+ return globalThis.Bun ? profileBun(thread, durationMs) : profileNodeJS(thread, durationMs, dirpath);
18
+ }
19
+ /**
20
+ * Take `durationMs` profile of the current thread and return the persisted file path.
21
+ */
22
+ async function profileNodeJS(thread, durationMs, dirpath) {
6
23
  const inspector = await import("node:inspector");
7
24
  // due to some typing issues, not able to use promisify here
8
- return new Promise((resolve, reject) => {
25
+ const profile = await new Promise((resolve, reject) => {
9
26
  // Start the inspector and connect to it
10
27
  const session = new inspector.Session();
11
28
  session.connect();
@@ -26,6 +43,26 @@ export async function profileNodeJS(durationMs) {
26
43
  });
27
44
  });
28
45
  });
46
+ const filePath = path.join(dirpath, `${thread}_thread_${new Date().toISOString()}.cpuprofile`);
47
+ fs.writeFileSync(filePath, profile);
48
+ return filePath;
49
+ }
50
+ /**
51
+ * Unlike NodeJS, Bun console.profile() api flush data to the inspector,
52
+ * so this api returns ms taken of this profile instead of file path.
53
+ */
54
+ async function profileBun(thread, durationMs) {
55
+ const start = Date.now();
56
+ let now = Date.now();
57
+ while (now - start < durationMs) {
58
+ // biome-ignore lint/suspicious/noConsole: need to use console api to profile in Bun
59
+ console.profile(String(now));
60
+ await sleep(BUN_PROFILE_MS);
61
+ // biome-ignore lint/suspicious/noConsole: need to use console api to profile in Bun
62
+ console.profileEnd(String(now));
63
+ now = Date.now();
64
+ }
65
+ return `Successfully take Bun ${thread} thread profile in ${now - start}ms. Check your inspector to see the profile.`;
29
66
  }
30
67
  /**
31
68
  * Write heap snapshot of the current thread to the specified file.
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/util/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEjD,4DAA4D;IAC5D,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,CAAC,OAAO,EAAE,CAAC;QAElB,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAC,OAAO,EAAC,EAAE,EAAE;oBAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;wBACT,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnC,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;oBAED,kDAAkD;oBAClD,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACjC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAAe;IACrE,oCAAoC;IACpC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC;IACjF,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/util/profile.ts"],"names":[],"mappings":"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"}
@@ -105,5 +105,7 @@ export declare function getAttDataFromSignedAggregateAndProofPhase0(data: Uint8A
105
105
  export declare function getSlotFromSignedBeaconBlockSerialized(data: Uint8Array): Slot | null;
106
106
  export declare function getSlotFromBlobSidecarSerialized(data: Uint8Array): Slot | null;
107
107
  export declare function getSlotFromDataColumnSidecarSerialized(data: Uint8Array): Slot | null;
108
+ export declare function getLastProcessedSlotFromBeaconStateSerialized(data: Uint8Array): Slot | null;
109
+ export declare function getSlotFromBeaconStateSerialized(data: Uint8Array): Slot | null;
108
110
  export declare function getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(config: ChainForkConfig, blockBytes: Uint8Array): number;
109
111
  //# sourceMappingURL=sszBytes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sszBytes.d.ts","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sszBytes.d.ts","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
@@ -325,6 +325,31 @@ export function getSlotFromDataColumnSidecarSerialized(data) {
325
325
  }
326
326
  return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR);
327
327
  }
328
+ /**
329
+ * BeaconState of all forks (up until Electra, check with new forks)
330
+ * class BeaconState(Container):
331
+ * genesis_time: uint64 - 8 bytes
332
+ * genesis_validators_root: Root - 32 bytes
333
+ * slot: Slot - 8 bytes
334
+ * fork: Fork - 16 bytes
335
+ * latest_block_header: BeaconBlockHeader - fixed size
336
+ * slot: Slot - 8 bytes
337
+ *
338
+ */
339
+ const BLOCK_HEADER_SLOT_BYTES_POSITION_IN_BEACON_STATE = 8 + 32 + 8 + 16;
340
+ export function getLastProcessedSlotFromBeaconStateSerialized(data) {
341
+ if (data.length < BLOCK_HEADER_SLOT_BYTES_POSITION_IN_BEACON_STATE + SLOT_SIZE) {
342
+ return null;
343
+ }
344
+ return getSlotFromOffset(data, BLOCK_HEADER_SLOT_BYTES_POSITION_IN_BEACON_STATE);
345
+ }
346
+ const SLOT_BYTES_POSITION_IN_BEACON_STATE = 8 + 32;
347
+ export function getSlotFromBeaconStateSerialized(data) {
348
+ if (data.length < SLOT_BYTES_POSITION_IN_BEACON_STATE) {
349
+ return null;
350
+ }
351
+ return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_BEACON_STATE);
352
+ }
328
353
  /**
329
354
  * Read only the first 4 bytes of Slot, max value is 4,294,967,295 will be reached 1634 years after genesis
330
355
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -11,55 +11,67 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.36.0-dev.4fe86ae0ee",
14
+ "version": "1.36.0-dev.57b1f6e666",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
18
18
  "bun": "./src/index.ts",
19
+ "types": "./lib/index.d.ts",
19
20
  "import": "./lib/index.js"
20
21
  },
21
22
  "./api": {
22
23
  "bun": "./src/api/index.ts",
24
+ "types": "./lib/api/index.d.ts",
23
25
  "import": "./lib/api/index.js"
24
26
  },
25
27
  "./chain": {
26
28
  "bun": "./src/chain/index.ts",
29
+ "types": "./lib/chain/index.d.ts",
27
30
  "import": "./lib/chain/index.js"
28
31
  },
29
32
  "./constants": {
30
33
  "bun": "./src/constants/index.ts",
34
+ "types": "./lib/constants/index.d.ts",
31
35
  "import": "./lib/constants/index.js"
32
36
  },
33
37
  "./db": {
34
38
  "bun": "./src/db/index.ts",
39
+ "types": "./lib/db/index.d.ts",
35
40
  "import": "./lib/db/index.js"
36
41
  },
37
42
  "./eth1": {
38
43
  "bun": "./src/eth1/index.ts",
44
+ "types": "./lib/eth1/index.d.ts",
39
45
  "import": "./lib/eth1/index.js"
40
46
  },
41
47
  "./metrics": {
42
48
  "bun": "./src/metrics/index.ts",
49
+ "types": "./lib/metrics/index.d.ts",
43
50
  "import": "./lib/metrics/index.js"
44
51
  },
45
52
  "./monitoring": {
46
53
  "bun": "./src/monitoring/index.ts",
54
+ "types": "./lib/monitoring/index.d.ts",
47
55
  "import": "./lib/monitoring/index.js"
48
56
  },
49
57
  "./network": {
50
58
  "bun": "./src/network/index.ts",
59
+ "types": "./lib/network/index.d.ts",
51
60
  "import": "./lib/network/index.js"
52
61
  },
53
62
  "./node": {
54
63
  "bun": "./src/node/index.ts",
64
+ "types": "./lib/node/index.d.ts",
55
65
  "import": "./lib/node/index.js"
56
66
  },
57
67
  "./sync": {
58
68
  "bun": "./src/sync/index.ts",
69
+ "types": "./lib/sync/index.d.ts",
59
70
  "import": "./lib/sync/index.js"
60
71
  },
61
72
  "./util": {
62
73
  "bun": "./src/util/index.ts",
74
+ "types": "./lib/util/index.d.ts",
63
75
  "import": "./lib/util/index.js"
64
76
  }
65
77
  },
@@ -71,18 +83,12 @@
71
83
  "#datastore-wrapper": {
72
84
  "bun": "./src/network/peers/datastore_bun.ts",
73
85
  "default": "datastore-level"
86
+ },
87
+ "#snappy": {
88
+ "bun": "./src/network/gossip/snappy_bun.ts",
89
+ "default": "snappyjs"
74
90
  }
75
91
  },
76
- "typesVersions": {
77
- "*": {
78
- "*": [
79
- "*",
80
- "lib/*",
81
- "lib/*/index"
82
- ]
83
- }
84
- },
85
- "types": "./lib/index.d.ts",
86
92
  "files": [
87
93
  "src",
88
94
  "lib",
@@ -138,18 +144,18 @@
138
144
  "@libp2p/peer-id": "^5.1.0",
139
145
  "@libp2p/prometheus-metrics": "^4.3.15",
140
146
  "@libp2p/tcp": "^10.1.8",
141
- "@lodestar/api": "1.36.0-dev.4fe86ae0ee",
142
- "@lodestar/config": "1.36.0-dev.4fe86ae0ee",
143
- "@lodestar/db": "1.36.0-dev.4fe86ae0ee",
144
- "@lodestar/fork-choice": "1.36.0-dev.4fe86ae0ee",
145
- "@lodestar/light-client": "1.36.0-dev.4fe86ae0ee",
146
- "@lodestar/logger": "1.36.0-dev.4fe86ae0ee",
147
- "@lodestar/params": "1.36.0-dev.4fe86ae0ee",
148
- "@lodestar/reqresp": "1.36.0-dev.4fe86ae0ee",
149
- "@lodestar/state-transition": "1.36.0-dev.4fe86ae0ee",
150
- "@lodestar/types": "1.36.0-dev.4fe86ae0ee",
151
- "@lodestar/utils": "1.36.0-dev.4fe86ae0ee",
152
- "@lodestar/validator": "1.36.0-dev.4fe86ae0ee",
147
+ "@lodestar/api": "1.36.0-dev.57b1f6e666",
148
+ "@lodestar/config": "1.36.0-dev.57b1f6e666",
149
+ "@lodestar/db": "1.36.0-dev.57b1f6e666",
150
+ "@lodestar/fork-choice": "1.36.0-dev.57b1f6e666",
151
+ "@lodestar/light-client": "1.36.0-dev.57b1f6e666",
152
+ "@lodestar/logger": "1.36.0-dev.57b1f6e666",
153
+ "@lodestar/params": "1.36.0-dev.57b1f6e666",
154
+ "@lodestar/reqresp": "1.36.0-dev.57b1f6e666",
155
+ "@lodestar/state-transition": "1.36.0-dev.57b1f6e666",
156
+ "@lodestar/types": "1.36.0-dev.57b1f6e666",
157
+ "@lodestar/utils": "1.36.0-dev.57b1f6e666",
158
+ "@lodestar/validator": "1.36.0-dev.57b1f6e666",
153
159
  "@multiformats/multiaddr": "^12.1.3",
154
160
  "datastore-core": "^10.0.2",
155
161
  "datastore-fs": "^10.0.6",
@@ -185,5 +191,5 @@
185
191
  "beacon",
186
192
  "blockchain"
187
193
  ],
188
- "gitHead": "b634df2ba28ba03fe48342f173a317414618e69b"
194
+ "gitHead": "09c4152533e8c2d29472be0e05724c4348d42edf"
189
195
  }
@@ -1,5 +1,7 @@
1
1
  import {
2
2
  ATTESTATION_SUBNET_COUNT,
3
+ ATTESTATION_SUBNET_EXTRA_BITS,
4
+ ATTESTATION_SUBNET_PREFIX_BITS,
3
5
  BASE_REWARDS_PER_EPOCH,
4
6
  BLOB_TX_TYPE,
5
7
  BLS_WITHDRAWAL_PREFIX,
@@ -25,15 +27,15 @@ import {
25
27
  DOMAIN_SYNC_COMMITTEE,
26
28
  DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF,
27
29
  DOMAIN_VOLUNTARY_EXIT,
28
- EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION,
29
30
  ETH1_ADDRESS_WITHDRAWAL_PREFIX,
30
31
  FAR_FUTURE_EPOCH,
31
32
  FULL_EXIT_REQUEST_AMOUNT,
32
33
  GENESIS_EPOCH,
33
34
  GENESIS_SLOT,
34
35
  JUSTIFICATION_BITS_LENGTH,
36
+ MAX_CONCURRENT_REQUESTS,
37
+ NODE_ID_BITS,
35
38
  PROPOSER_WEIGHT,
36
- RANDOM_SUBNETS_PER_VALIDATOR,
37
39
  SYNC_COMMITTEE_SUBNET_COUNT,
38
40
  SYNC_REWARD_WEIGHT,
39
41
  TARGET_AGGREGATORS_PER_COMMITTEE,
@@ -84,9 +86,13 @@ export const specConstants = {
84
86
 
85
87
  // phase0/validator.md
86
88
  TARGET_AGGREGATORS_PER_COMMITTEE,
87
- RANDOM_SUBNETS_PER_VALIDATOR,
88
- EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION,
89
+
90
+ // phase0/p2p-interface.md
91
+ NODE_ID_BITS,
92
+ MAX_CONCURRENT_REQUESTS,
89
93
  ATTESTATION_SUBNET_COUNT,
94
+ ATTESTATION_SUBNET_EXTRA_BITS,
95
+ ATTESTATION_SUBNET_PREFIX_BITS,
90
96
 
91
97
  // altair/beacon-chain.md
92
98
  // ## Participation flag indices
@@ -1,5 +1,3 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
1
  import {Tree} from "@chainsafe/persistent-merkle-tree";
4
2
  import {routes} from "@lodestar/api";
5
3
  import {ApplicationMethods} from "@lodestar/api/server";
@@ -8,13 +6,16 @@ import {Repository} from "@lodestar/db";
8
6
  import {ForkSeq, SLOTS_PER_EPOCH} from "@lodestar/params";
9
7
  import {BeaconStateCapella, getLatestWeakSubjectivityCheckpointEpoch, loadState} from "@lodestar/state-transition";
10
8
  import {ssz} from "@lodestar/types";
11
- import {toHex, toRootHex} from "@lodestar/utils";
9
+ import {Checkpoint} from "@lodestar/types/phase0";
10
+ import {fromHex, toHex, toRootHex} from "@lodestar/utils";
12
11
  import {BeaconChain} from "../../../chain/index.js";
13
12
  import {QueuedStateRegenerator, RegenRequest} from "../../../chain/regen/index.js";
14
13
  import {IBeaconDb} from "../../../db/interface.js";
15
14
  import {GossipType} from "../../../network/index.js";
16
- import {profileNodeJS, writeHeapSnapshot} from "../../../util/profile.js";
15
+ import {getStateSlotFromBytes} from "../../../util/multifork.js";
16
+ import {ProfileThread, profileThread, writeHeapSnapshot} from "../../../util/profile.js";
17
17
  import {getStateResponseWithRegen} from "../beacon/state/utils.js";
18
+ import {ApiError} from "../errors.js";
18
19
  import {ApiModules} from "../types.js";
19
20
 
20
21
  export function getLodestarApi({
@@ -26,7 +27,9 @@ export function getLodestarApi({
26
27
  }: Pick<ApiModules, "chain" | "config" | "db" | "network" | "sync">): ApplicationMethods<routes.lodestar.Endpoints> {
27
28
  let writingHeapdump = false;
28
29
  let writingProfile = false;
29
- const defaultProfileMs = SLOTS_PER_EPOCH * config.SLOT_DURATION_MS;
30
+ // for NodeJS, profile the whole epoch
31
+ // for Bun, profile 1 slot. Otherwise it will either crash the app, and/or inspector cannot render the profile
32
+ const defaultProfileMs = globalThis.Bun ? config.SLOT_DURATION_MS : SLOTS_PER_EPOCH * config.SLOT_DURATION_MS;
30
33
 
31
34
  return {
32
35
  async writeHeapdump({thread = "main", dirpath = "."}) {
@@ -63,7 +66,6 @@ export function getLodestarApi({
63
66
 
64
67
  try {
65
68
  let filepath: string;
66
- let profile: string;
67
69
  switch (thread) {
68
70
  case "network":
69
71
  filepath = await network.writeNetworkThreadProfile(duration, dirpath);
@@ -73,12 +75,10 @@ export function getLodestarApi({
73
75
  break;
74
76
  default:
75
77
  // main thread
76
- profile = await profileNodeJS(duration);
77
- filepath = path.join(dirpath, `main_thread_${new Date().toISOString()}.cpuprofile`);
78
- fs.writeFileSync(filepath, profile);
78
+ filepath = await profileThread(ProfileThread.MAIN, duration, dirpath);
79
79
  break;
80
80
  }
81
- return {data: {filepath}};
81
+ return {data: {result: filepath}};
82
82
  } finally {
83
83
  writingProfile = false;
84
84
  }
@@ -218,6 +218,26 @@ export function getLodestarApi({
218
218
  meta: {executionOptimistic, finalized, version: fork},
219
219
  };
220
220
  },
221
+
222
+ // the optional checkpoint is in root:epoch format
223
+ async getPersistedCheckpointState({checkpointId}) {
224
+ const checkpoint = checkpointId ? getCheckpointFromArg(checkpointId) : undefined;
225
+ const stateBytes = await chain.getPersistedCheckpointState(checkpoint);
226
+ if (stateBytes === null) {
227
+ throw new ApiError(
228
+ 404,
229
+ checkpointId ? `Checkpoint state not found for id ${checkpointId}` : "Latest safe checkpoint state not found"
230
+ );
231
+ }
232
+
233
+ const slot = getStateSlotFromBytes(stateBytes);
234
+ return {
235
+ data: stateBytes,
236
+ meta: {
237
+ version: config.getForkName(slot),
238
+ },
239
+ };
240
+ },
221
241
  };
222
242
  }
223
243
 
@@ -247,6 +267,18 @@ function regenRequestToJson(config: ChainForkConfig, regenRequest: RegenRequest)
247
267
  }
248
268
  }
249
269
 
270
+ const CHECKPOINT_REGEX = /^(?:0x)?([0-9a-f]{64}):([0-9]+)$/;
271
+ /**
272
+ * Extract a checkpoint from a string in the format `rootHex:epoch`.
273
+ */
274
+ export function getCheckpointFromArg(checkpointStr: string): Checkpoint {
275
+ const match = CHECKPOINT_REGEX.exec(checkpointStr.toLowerCase());
276
+ if (!match) {
277
+ throw new ApiError(400, `Could not parse checkpoint string: ${checkpointStr}`);
278
+ }
279
+ return {root: fromHex(match[1]), epoch: parseInt(match[2])};
280
+ }
281
+
250
282
  function stringifyKeys(keys: (Uint8Array | number | string)[]): string[] {
251
283
  return keys.map((key) => {
252
284
  if (key instanceof Uint8Array) {
@@ -10,7 +10,7 @@ export function formatNodePeer(peerIdStr: string, connections: Connection[]): ro
10
10
  return {
11
11
  peerId: conn ? conn.remotePeer.toString() : peerIdStr,
12
12
  // TODO: figure out how to get enr of peer
13
- enr: "",
13
+ enr: null,
14
14
  lastSeenP2pAddress: conn ? conn.remoteAddr.toString() : "",
15
15
  direction: conn ? (conn.direction as routes.node.PeerDirection) : null,
16
16
  state: conn ? getPeerState(conn.status) : "disconnected",
@@ -179,10 +179,13 @@ export function getValidatorApi(
179
179
  /**
180
180
  * Validator clock may be advanced from beacon's clock. If the validator requests a resource in a
181
181
  * future slot, wait some time instead of rejecting the request because it's in the future.
182
- * This value is the same to MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC.
182
+ * This value is the same to MAXIMUM_GOSSIP_CLOCK_DISPARITY.
183
183
  * For very fast networks, reduce clock disparity to half a slot.
184
184
  */
185
- const MAX_API_CLOCK_DISPARITY_SEC = Math.min(0.5, config.SLOT_DURATION_MS / 2000);
185
+ const MAX_API_CLOCK_DISPARITY_SEC = Math.min(
186
+ config.MAXIMUM_GOSSIP_CLOCK_DISPARITY / 1000,
187
+ config.SLOT_DURATION_MS / 2000
188
+ );
186
189
  const MAX_API_CLOCK_DISPARITY_MS = MAX_API_CLOCK_DISPARITY_SEC * 1000;
187
190
 
188
191
  /** Compute and cache the genesis block root */
@@ -25,6 +25,16 @@ type ArchiveStoreModules = {
25
25
 
26
26
  type ArchiveStoreInitOpts = ArchiveStoreOpts & {dbName: string; anchorState: {finalizedCheckpoint: Checkpoint}};
27
27
 
28
+ export enum ArchiveStoreTask {
29
+ ArchiveBlocks = "archive_blocks",
30
+ PruneHistory = "prune_history",
31
+ OnFinalizedCheckpoint = "on_finalized_checkpoint",
32
+ MaybeArchiveState = "maybe_archive_state",
33
+ RegenPruneOnFinalized = "regen_prune_on_finalized",
34
+ ForkchoicePrune = "forkchoice_prune",
35
+ UpdateBackfillRange = "update_backfill_range",
36
+ }
37
+
28
38
  /**
29
39
  * Used for running tasks that depends on some events or are executed
30
40
  * periodically.
@@ -176,6 +186,8 @@ export class ArchiveStore {
176
186
  try {
177
187
  const finalizedEpoch = finalized.epoch;
178
188
  this.logger.verbose("Start processing finalized checkpoint", {epoch: finalizedEpoch, rootHex: finalized.rootHex});
189
+
190
+ let timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
179
191
  await archiveBlocks(
180
192
  this.chain.config,
181
193
  this.db,
@@ -188,7 +200,10 @@ export class ArchiveStore {
188
200
  this.chain.opts.persistOrphanedBlocks,
189
201
  this.chain.opts.persistOrphanedBlocksDir
190
202
  );
203
+ timer?.({source: ArchiveStoreTask.ArchiveBlocks});
204
+
191
205
  if (this.opts.pruneHistory) {
206
+ timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
192
207
  await pruneHistory(
193
208
  this.chain.config,
194
209
  this.db,
@@ -197,18 +212,30 @@ export class ArchiveStore {
197
212
  finalizedEpoch,
198
213
  this.chain.clock.currentEpoch
199
214
  );
215
+ timer?.({source: ArchiveStoreTask.PruneHistory});
200
216
  }
201
217
 
218
+ timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
202
219
  await this.statesArchiverStrategy.onFinalizedCheckpoint(finalized, this.metrics);
220
+ timer?.({source: ArchiveStoreTask.OnFinalizedCheckpoint});
203
221
 
204
222
  // should be after ArchiveBlocksTask to handle restart cleanly
223
+ timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
205
224
  await this.statesArchiverStrategy.maybeArchiveState(finalized, this.metrics);
225
+ timer?.({source: ArchiveStoreTask.MaybeArchiveState});
206
226
 
227
+ timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
207
228
  this.chain.regen.pruneOnFinalized(finalizedEpoch);
229
+ timer?.({source: ArchiveStoreTask.RegenPruneOnFinalized});
208
230
 
209
231
  // tasks rely on extended fork choice
232
+ timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
210
233
  const prunedBlocks = this.chain.forkChoice.prune(finalized.rootHex);
234
+ timer?.({source: ArchiveStoreTask.ForkchoicePrune});
235
+
236
+ timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
211
237
  await updateBackfillRange({chain: this.chain, db: this.db, logger: this.logger}, finalized);
238
+ timer?.({source: ArchiveStoreTask.UpdateBackfillRange});
212
239
 
213
240
  this.logger.verbose("Finish processing finalized checkpoint", {
214
241
  epoch: finalizedEpoch,
@@ -17,6 +17,15 @@ import {StateArchiveStrategy, StatesArchiveOpts} from "../interface.js";
17
17
  */
18
18
  export const PERSIST_TEMP_STATE_EVERY_EPOCHS = 32;
19
19
 
20
+ export enum FrequencyStateArchiveStep {
21
+ LoadLastStoredSlot = "load_last_stored_slot",
22
+ GetFinalizedState = "get_finalized_state",
23
+ // SerializeState is tracked via stateSerializeDuration metric
24
+ PersistState = "persist_state",
25
+ LoadStoredSlotsToDelete = "load_stored_slots_to_delete",
26
+ DeleteOldStates = "delete_old_states",
27
+ }
28
+
20
29
  /**
21
30
  * Archives finalized states from active bucket to archive bucket.
22
31
  *
@@ -47,11 +56,16 @@ export class FrequencyStateArchiveStrategy implements StateArchiveStrategy {
47
56
  * ```
48
57
  */
49
58
  async maybeArchiveState(finalized: CheckpointWithHex, metrics?: Metrics | null): Promise<void> {
59
+ let timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
50
60
  const lastStoredSlot = await this.db.stateArchive.lastKey();
61
+ timer?.({step: FrequencyStateArchiveStep.LoadLastStoredSlot});
62
+
51
63
  const lastStoredEpoch = computeEpochAtSlot(lastStoredSlot ?? 0);
52
64
  const {archiveStateEpochFrequency} = this.opts;
53
65
 
66
+ const logCtx = {finalizedEpoch: finalized.epoch, lastStoredEpoch, archiveStateEpochFrequency};
54
67
  if (finalized.epoch - lastStoredEpoch >= Math.min(PERSIST_TEMP_STATE_EVERY_EPOCHS, archiveStateEpochFrequency)) {
68
+ this.logger.verbose("Start archiving state", logCtx);
55
69
  await this.archiveState(finalized, metrics);
56
70
 
57
71
  // Only check the current and previous intervals
@@ -60,23 +74,29 @@ export class FrequencyStateArchiveStrategy implements StateArchiveStrategy {
60
74
  (Math.floor(finalized.epoch / archiveStateEpochFrequency) - 1) * archiveStateEpochFrequency
61
75
  );
62
76
 
77
+ timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
63
78
  const storedStateSlots = await this.db.stateArchive.keys({
64
79
  lt: computeStartSlotAtEpoch(finalized.epoch),
65
80
  gte: computeStartSlotAtEpoch(minEpoch),
66
81
  });
82
+ timer?.({step: FrequencyStateArchiveStep.LoadStoredSlotsToDelete});
67
83
 
68
84
  const statesSlotsToDelete = computeStateSlotsToDelete(storedStateSlots, archiveStateEpochFrequency);
85
+ timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
69
86
  if (statesSlotsToDelete.length > 0) {
70
87
  await this.db.stateArchive.batchDelete(statesSlotsToDelete);
71
88
  }
89
+ timer?.({step: FrequencyStateArchiveStep.DeleteOldStates});
72
90
 
73
91
  // More logs to investigate the rss spike issue https://github.com/ChainSafe/lodestar/issues/5591
74
92
  this.logger.verbose("Archived state completed", {
75
- finalizedEpoch: finalized.epoch,
93
+ ...logCtx,
76
94
  minEpoch,
77
95
  storedStateSlots: storedStateSlots.join(","),
78
96
  statesSlotsToDelete: statesSlotsToDelete.join(","),
79
97
  });
98
+ } else {
99
+ this.logger.verbose("Skip archiving state", logCtx);
80
100
  }
81
101
  }
82
102
 
@@ -86,24 +106,31 @@ export class FrequencyStateArchiveStrategy implements StateArchiveStrategy {
86
106
  */
87
107
  async archiveState(finalized: CheckpointWithHex, metrics?: Metrics | null): Promise<void> {
88
108
  // starting from Mar 2024, the finalized state could be from disk or in memory
109
+ let timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
89
110
  const finalizedStateOrBytes = await this.regen.getCheckpointStateOrBytes(finalized);
111
+ timer?.({step: FrequencyStateArchiveStep.GetFinalizedState});
112
+
90
113
  const {rootHex} = finalized;
91
114
  if (!finalizedStateOrBytes) {
92
115
  throw Error(`No state in cache for finalized checkpoint state epoch #${finalized.epoch} root ${rootHex}`);
93
116
  }
94
117
  if (finalizedStateOrBytes instanceof Uint8Array) {
95
118
  const slot = getStateSlotFromBytes(finalizedStateOrBytes);
119
+ timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
96
120
  await this.db.stateArchive.putBinary(slot, finalizedStateOrBytes);
121
+ timer?.({step: FrequencyStateArchiveStep.PersistState});
97
122
  this.logger.verbose("Archived finalized state bytes", {epoch: finalized.epoch, slot, root: rootHex});
98
123
  } else {
99
124
  // serialize state using BufferPool if provided
100
- const timer = metrics?.stateSerializeDuration.startTimer({source: AllocSource.ARCHIVE_STATE});
125
+ const sszTimer = metrics?.stateSerializeDuration.startTimer({source: AllocSource.ARCHIVE_STATE});
101
126
  await serializeState(
102
127
  finalizedStateOrBytes,
103
128
  AllocSource.ARCHIVE_STATE,
104
- (stateBytes) => {
105
- timer?.();
106
- return this.db.stateArchive.putBinary(finalizedStateOrBytes.slot, stateBytes);
129
+ async (stateBytes) => {
130
+ sszTimer?.();
131
+ timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
132
+ await this.db.stateArchive.putBinary(finalizedStateOrBytes.slot, stateBytes);
133
+ timer?.({step: FrequencyStateArchiveStep.PersistState});
107
134
  },
108
135
  this.bufferPool
109
136
  );