@lodestar/beacon-node 1.36.0-dev.a0d00ac6dc → 1.36.0-dev.a47974e6c6

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 (156) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +41 -22
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/lodestar/index.d.ts +5 -0
  5. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  6. package/lib/api/impl/lodestar/index.js +35 -10
  7. package/lib/api/impl/lodestar/index.js.map +1 -1
  8. package/lib/api/impl/node/utils.js +1 -1
  9. package/lib/api/impl/node/utils.js.map +1 -1
  10. package/lib/chain/chain.d.ts +5 -2
  11. package/lib/chain/chain.d.ts.map +1 -1
  12. package/lib/chain/chain.js +32 -16
  13. package/lib/chain/chain.js.map +1 -1
  14. package/lib/chain/errors/dataColumnSidecarError.d.ts +17 -14
  15. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
  16. package/lib/chain/errors/dataColumnSidecarError.js +4 -0
  17. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  18. package/lib/chain/forkChoice/index.d.ts +9 -1
  19. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  20. package/lib/chain/forkChoice/index.js +109 -4
  21. package/lib/chain/forkChoice/index.js.map +1 -1
  22. package/lib/chain/interface.d.ts +2 -0
  23. package/lib/chain/interface.d.ts.map +1 -1
  24. package/lib/chain/options.d.ts +0 -2
  25. package/lib/chain/options.d.ts.map +1 -1
  26. package/lib/chain/options.js +0 -1
  27. package/lib/chain/options.js.map +1 -1
  28. package/lib/chain/stateCache/datastore/db.d.ts +12 -0
  29. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  30. package/lib/chain/stateCache/datastore/db.js +70 -0
  31. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  32. package/lib/chain/stateCache/datastore/file.d.ts +1 -0
  33. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  34. package/lib/chain/stateCache/datastore/file.js +7 -0
  35. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  36. package/lib/chain/stateCache/datastore/types.d.ts +1 -0
  37. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  38. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  39. package/lib/chain/validation/dataColumnSidecar.js +32 -15
  40. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  41. package/lib/index.d.ts +2 -0
  42. package/lib/index.d.ts.map +1 -1
  43. package/lib/index.js +2 -0
  44. package/lib/index.js.map +1 -1
  45. package/lib/metrics/metrics/lodestar.js +1 -1
  46. package/lib/metrics/metrics/lodestar.js.map +1 -1
  47. package/lib/network/core/networkCore.d.ts.map +1 -1
  48. package/lib/network/core/networkCore.js +5 -1
  49. package/lib/network/core/networkCore.js.map +1 -1
  50. package/lib/network/core/networkCoreWorker.js +8 -8
  51. package/lib/network/core/networkCoreWorker.js.map +1 -1
  52. package/lib/network/core/networkCoreWorkerHandler.js +1 -1
  53. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  54. package/lib/network/discv5/worker.js +2 -7
  55. package/lib/network/discv5/worker.js.map +1 -1
  56. package/lib/network/events.d.ts +1 -0
  57. package/lib/network/events.d.ts.map +1 -1
  58. package/lib/network/gossip/encoding.js +1 -1
  59. package/lib/network/gossip/encoding.js.map +1 -1
  60. package/lib/network/gossip/snappy_bun.d.ts +3 -0
  61. package/lib/network/gossip/snappy_bun.d.ts.map +1 -0
  62. package/lib/network/gossip/snappy_bun.js +3 -0
  63. package/lib/network/gossip/snappy_bun.js.map +1 -0
  64. package/lib/network/metadata.d.ts +1 -1
  65. package/lib/network/metadata.d.ts.map +1 -1
  66. package/lib/network/metadata.js +1 -0
  67. package/lib/network/metadata.js.map +1 -1
  68. package/lib/network/options.d.ts +0 -1
  69. package/lib/network/options.d.ts.map +1 -1
  70. package/lib/network/options.js.map +1 -1
  71. package/lib/network/processor/gossipHandlers.js +1 -1
  72. package/lib/network/processor/gossipHandlers.js.map +1 -1
  73. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  74. package/lib/network/reqresp/ReqRespBeaconNode.js +3 -1
  75. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  76. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -1
  77. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  78. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -3
  79. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  80. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +2 -1
  81. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  82. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +9 -1
  83. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  84. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -1
  85. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  86. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +9 -1
  87. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  88. package/lib/network/reqresp/handlers/index.js +6 -6
  89. package/lib/network/reqresp/handlers/index.js.map +1 -1
  90. package/lib/network/reqresp/types.d.ts +1 -0
  91. package/lib/network/reqresp/types.d.ts.map +1 -1
  92. package/lib/node/nodejs.d.ts +2 -1
  93. package/lib/node/nodejs.d.ts.map +1 -1
  94. package/lib/node/nodejs.js +2 -1
  95. package/lib/node/nodejs.js.map +1 -1
  96. package/lib/sync/range/range.d.ts.map +1 -1
  97. package/lib/sync/range/range.js +2 -1
  98. package/lib/sync/range/range.js.map +1 -1
  99. package/lib/sync/utils/downloadByRange.d.ts +58 -13
  100. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  101. package/lib/sync/utils/downloadByRange.js +201 -82
  102. package/lib/sync/utils/downloadByRange.js.map +1 -1
  103. package/lib/sync/utils/remoteSyncType.d.ts +2 -1
  104. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  105. package/lib/sync/utils/remoteSyncType.js +19 -4
  106. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  107. package/lib/util/blobs.d.ts +1 -1
  108. package/lib/util/blobs.d.ts.map +1 -1
  109. package/lib/util/blobs.js +53 -20
  110. package/lib/util/blobs.js.map +1 -1
  111. package/lib/util/profile.d.ts +6 -4
  112. package/lib/util/profile.d.ts.map +1 -1
  113. package/lib/util/profile.js +40 -3
  114. package/lib/util/profile.js.map +1 -1
  115. package/lib/util/sszBytes.d.ts +2 -0
  116. package/lib/util/sszBytes.d.ts.map +1 -1
  117. package/lib/util/sszBytes.js +25 -0
  118. package/lib/util/sszBytes.js.map +1 -1
  119. package/package.json +19 -14
  120. package/src/api/impl/beacon/blocks/index.ts +47 -25
  121. package/src/api/impl/lodestar/index.ts +42 -10
  122. package/src/api/impl/node/utils.ts +1 -1
  123. package/src/chain/chain.ts +48 -23
  124. package/src/chain/errors/dataColumnSidecarError.ts +20 -14
  125. package/src/chain/forkChoice/index.ts +178 -2
  126. package/src/chain/interface.ts +2 -0
  127. package/src/chain/options.ts +0 -3
  128. package/src/chain/stateCache/datastore/db.ts +89 -1
  129. package/src/chain/stateCache/datastore/file.ts +8 -0
  130. package/src/chain/stateCache/datastore/types.ts +1 -0
  131. package/src/chain/validation/dataColumnSidecar.ts +34 -16
  132. package/src/index.ts +2 -0
  133. package/src/metrics/metrics/lodestar.ts +1 -1
  134. package/src/network/core/networkCore.ts +5 -1
  135. package/src/network/core/networkCoreWorker.ts +9 -9
  136. package/src/network/core/networkCoreWorkerHandler.ts +1 -1
  137. package/src/network/discv5/worker.ts +2 -7
  138. package/src/network/events.ts +1 -1
  139. package/src/network/gossip/encoding.ts +1 -1
  140. package/src/network/gossip/snappy_bun.ts +2 -0
  141. package/src/network/metadata.ts +3 -1
  142. package/src/network/options.ts +0 -1
  143. package/src/network/processor/gossipHandlers.ts +1 -1
  144. package/src/network/reqresp/ReqRespBeaconNode.ts +3 -1
  145. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +18 -3
  146. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +13 -1
  147. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +13 -1
  148. package/src/network/reqresp/handlers/index.ts +6 -6
  149. package/src/network/reqresp/types.ts +1 -0
  150. package/src/node/nodejs.ts +3 -0
  151. package/src/sync/range/range.ts +2 -1
  152. package/src/sync/utils/downloadByRange.ts +259 -103
  153. package/src/sync/utils/remoteSyncType.ts +23 -4
  154. package/src/util/blobs.ts +64 -20
  155. package/src/util/profile.ts +45 -3
  156. package/src/util/sszBytes.ts +30 -0
package/lib/util/blobs.js CHANGED
@@ -99,34 +99,67 @@ export async function dataColumnMatrixRecovery(partialSidecars) {
99
99
  * Reconstruct blobs from a set of data columns, at least 50%+ of all the columns
100
100
  * must be provided to allow to reconstruct the full data matrix
101
101
  */
102
- export async function reconstructBlobs(sidecars) {
102
+ export async function reconstructBlobs(sidecars, indices) {
103
103
  if (sidecars.length < NUMBER_OF_COLUMNS / 2) {
104
104
  throw Error(`Expected at least ${NUMBER_OF_COLUMNS / 2} data columns to reconstruct blobs, received ${sidecars.length}`);
105
105
  }
106
- let fullSidecars;
107
- if (sidecars.length === NUMBER_OF_COLUMNS) {
108
- // Full columns, no need to recover
109
- fullSidecars = sidecars;
110
- }
111
- else {
112
- const sidecarsByIndex = new Map(sidecars.map((sc) => [sc.index, sc]));
113
- const recoveredSidecars = await dataColumnMatrixRecovery(sidecarsByIndex);
114
- if (recoveredSidecars === null) {
115
- // Should not happen because we check the column count above
116
- throw Error("Failed to reconstruct the full data matrix");
106
+ const blobCount = sidecars[0].column.length;
107
+ for (const index of indices ?? []) {
108
+ if (index < 0 || index >= blobCount) {
109
+ throw Error(`Invalid blob index ${index}, must be between 0 and ${blobCount - 1}`);
117
110
  }
118
- fullSidecars = recoveredSidecars;
119
111
  }
120
- const blobCount = fullSidecars[0].column.length;
121
- const blobs = new Array(blobCount);
122
- const ordered = fullSidecars.slice().sort((a, b) => a.index - b.index);
123
- for (let row = 0; row < blobCount; row++) {
124
- // 128 cells that make up one "extended blob" row
125
- const cells = ordered.map((col) => col.column[row]);
126
- blobs[row] = cellsToBlob(cells);
112
+ const indicesToReconstruct = indices ?? Array.from({ length: blobCount }, (_, i) => i);
113
+ const recoveredCells = await recoverBlobCells(sidecars, indicesToReconstruct);
114
+ if (recoveredCells === null) {
115
+ // Should not happen because we check the column count above
116
+ throw Error("Failed to recover cells to reconstruct blobs");
117
+ }
118
+ const blobs = new Array(indicesToReconstruct.length);
119
+ for (let i = 0; i < indicesToReconstruct.length; i++) {
120
+ const blobIndex = indicesToReconstruct[i];
121
+ const cells = recoveredCells.get(blobIndex);
122
+ if (!cells) {
123
+ throw Error(`Failed to get recovered cells for blob index ${blobIndex}`);
124
+ }
125
+ blobs[i] = cellsToBlob(cells);
127
126
  }
128
127
  return blobs;
129
128
  }
129
+ /**
130
+ * Recover cells for specific blob indices from a set of data columns
131
+ */
132
+ async function recoverBlobCells(partialSidecars, blobIndices) {
133
+ const columnCount = partialSidecars.length;
134
+ if (columnCount < NUMBER_OF_COLUMNS / 2) {
135
+ // We don't have enough columns to recover
136
+ return null;
137
+ }
138
+ const recoveredCells = new Map();
139
+ // Sort data columns by index in ascending order
140
+ const partialSidecarsSorted = partialSidecars.slice().sort((a, b) => a.index - b.index);
141
+ if (columnCount === NUMBER_OF_COLUMNS) {
142
+ // Full columns, no need to recover
143
+ for (const blobIndex of blobIndices) {
144
+ // 128 cells that make up one "extended blob" row
145
+ const cells = partialSidecarsSorted.map((col) => col.column[blobIndex]);
146
+ recoveredCells.set(blobIndex, cells);
147
+ }
148
+ return recoveredCells;
149
+ }
150
+ await Promise.all(blobIndices.map(async (blobIndex) => {
151
+ const cellIndices = [];
152
+ const cells = [];
153
+ for (const dataColumn of partialSidecarsSorted) {
154
+ cellIndices.push(dataColumn.index);
155
+ cells.push(dataColumn.column[blobIndex]);
156
+ }
157
+ // Recover cells for this specific blob row
158
+ const recovered = await kzg.asyncRecoverCellsAndKzgProofs(cellIndices, cells);
159
+ recoveredCells.set(blobIndex, recovered.cells);
160
+ }));
161
+ return recoveredCells;
162
+ }
130
163
  /**
131
164
  * Concatenate the systematic half (columns 0‑63) of a row of cells into
132
165
  * the original 131072 byte blob. The parity half (64‑127) is ignored as
@@ -1 +1 @@
1
- {"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/util/blobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/util/blobs.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- /**
2
- * Take 10m profile of the current thread without promise tracking.
3
- */
4
- export declare function profileNodeJS(durationMs: number): Promise<string>;
1
+ export declare enum ProfileThread {
2
+ MAIN = "main",
3
+ NETWORK = "network",
4
+ DISC5 = "discv5"
5
+ }
6
+ export declare function profileThread(thread: ProfileThread, durationMs: number, dirpath: string): Promise<string>;
5
7
  /**
6
8
  * Write heap snapshot of the current thread to the specified file.
7
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/util/profile.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BvE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBxF"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/util/profile.ts"],"names":[],"mappings":"AAIA,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,WAAW;CACjB;AASD,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/G;AAwDD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBxF"}
@@ -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":"AAAA,OAAO,EAAC,QAAQ,EAAwC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAGL,QAAQ,EAKT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEjG,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;AAEnC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC;AA+BzC,eAAO,MAAM,SAAS,KAAK,CAAC;AAoB5B;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAM9E;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAS3F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAQ1F;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAItG;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAIpG;AAED;;GAEG;AACH,wBAAgB,2CAA2C,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAIjH;AAED;;;;GAIG;AACH,wBAAgB,2CAA2C,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAS7F;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAQ3F;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAMpF;AAED;;;GAGG;AACH,wBAAgB,gDAAgD,CAC9D,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,UAAU,GACf,cAAc,GAAG,IAAI,CAcvB;AAED;;;GAGG;AACH,wBAAgB,+CAA+C,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAMvG;AAED;;;GAGG;AACH,wBAAgB,2CAA2C,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CASjG;AAED;;;GAGG;AACH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAUhG;AAED;;;GAGG;AACH,wBAAgB,2CAA2C,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAMjG;AAiBD;;;;GAIG;AACH,wBAAgB,4CAA4C,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAM1F;AAED;;;;GAIG;AACH,wBAAgB,iDAAiD,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAYvG;AAED;;;GAGG;AACH,wBAAgB,4CAA4C,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CASnG;AAED;;;GAGG;AACH,wBAAgB,kDAAkD,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,GAAG,IAAI,CAU/G;AAED;;;GAGG;AACH,wBAAgB,2CAA2C,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAalG;AAmBD,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAMpF;AAcD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAM9E;AAcD,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAMpF;AAeD,wBAAgB,6CAA6C,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAM3F;AAGD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAM9E;AA6BD,wBAAgB,yDAAyD,CACvE,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,UAAU,GACrB,MAAM,CA+BR"}
@@ -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,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.36.0-dev.a0d00ac6dc",
14
+ "version": "1.36.0-dev.a47974e6c6",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -83,6 +83,10 @@
83
83
  "#datastore-wrapper": {
84
84
  "bun": "./src/network/peers/datastore_bun.ts",
85
85
  "default": "datastore-level"
86
+ },
87
+ "#snappy": {
88
+ "bun": "./src/network/gossip/snappy_bun.ts",
89
+ "default": "snappyjs"
86
90
  }
87
91
  },
88
92
  "files": [
@@ -140,18 +144,19 @@
140
144
  "@libp2p/peer-id": "^5.1.0",
141
145
  "@libp2p/prometheus-metrics": "^4.3.15",
142
146
  "@libp2p/tcp": "^10.1.8",
143
- "@lodestar/api": "1.36.0-dev.a0d00ac6dc",
144
- "@lodestar/config": "1.36.0-dev.a0d00ac6dc",
145
- "@lodestar/db": "1.36.0-dev.a0d00ac6dc",
146
- "@lodestar/fork-choice": "1.36.0-dev.a0d00ac6dc",
147
- "@lodestar/light-client": "1.36.0-dev.a0d00ac6dc",
148
- "@lodestar/logger": "1.36.0-dev.a0d00ac6dc",
149
- "@lodestar/params": "1.36.0-dev.a0d00ac6dc",
150
- "@lodestar/reqresp": "1.36.0-dev.a0d00ac6dc",
151
- "@lodestar/state-transition": "1.36.0-dev.a0d00ac6dc",
152
- "@lodestar/types": "1.36.0-dev.a0d00ac6dc",
153
- "@lodestar/utils": "1.36.0-dev.a0d00ac6dc",
154
- "@lodestar/validator": "1.36.0-dev.a0d00ac6dc",
147
+ "@lodestar/api": "1.36.0-dev.a47974e6c6",
148
+ "@lodestar/bun": "git+https://github.com/ChainSafe/lodestar-bun.git",
149
+ "@lodestar/config": "1.36.0-dev.a47974e6c6",
150
+ "@lodestar/db": "1.36.0-dev.a47974e6c6",
151
+ "@lodestar/fork-choice": "1.36.0-dev.a47974e6c6",
152
+ "@lodestar/light-client": "1.36.0-dev.a47974e6c6",
153
+ "@lodestar/logger": "1.36.0-dev.a47974e6c6",
154
+ "@lodestar/params": "1.36.0-dev.a47974e6c6",
155
+ "@lodestar/reqresp": "1.36.0-dev.a47974e6c6",
156
+ "@lodestar/state-transition": "1.36.0-dev.a47974e6c6",
157
+ "@lodestar/types": "1.36.0-dev.a47974e6c6",
158
+ "@lodestar/utils": "1.36.0-dev.a47974e6c6",
159
+ "@lodestar/validator": "1.36.0-dev.a47974e6c6",
155
160
  "@multiformats/multiaddr": "^12.1.3",
156
161
  "datastore-core": "^10.0.2",
157
162
  "datastore-fs": "^10.0.6",
@@ -187,5 +192,5 @@
187
192
  "beacon",
188
193
  "blockchain"
189
194
  ],
190
- "gitHead": "73afcce1f8e8e9b2b602e7a40f2aa6869d91ef0c"
195
+ "gitHead": "6b3851e30f785d87ec8223fbabee5ff6e843309e"
191
196
  }
@@ -654,18 +654,21 @@ export function getBeaconBlockApi({
654
654
  );
655
655
  }
656
656
 
657
- const blobs = await reconstructBlobs(dataColumnSidecars);
657
+ for (const index of indices ?? []) {
658
+ if (index < 0 || index >= blobCount) {
659
+ throw new ApiError(400, `Invalid blob index ${index}, must be between 0 and ${blobCount - 1}`);
660
+ }
661
+ }
662
+
663
+ const indicesToReconstruct = indices ?? Array.from({length: blobCount}, (_, i) => i);
664
+ const blobs = await reconstructBlobs(dataColumnSidecars, indicesToReconstruct);
658
665
  const signedBlockHeader = signedBlockToSignedHeader(config, block);
659
- const requestedIndices = indices ?? Array.from({length: blobKzgCommitments.length}, (_, i) => i);
660
666
 
661
667
  data = await Promise.all(
662
- requestedIndices.map(async (index) => {
668
+ indicesToReconstruct.map(async (index, i) => {
663
669
  // Reconstruct blob sidecar from blob
664
670
  const kzgCommitment = blobKzgCommitments[index];
665
- if (kzgCommitment === undefined) {
666
- throw new ApiError(400, `Blob index ${index} not found in block`);
667
- }
668
- const blob = blobs[index];
671
+ const blob = blobs[i]; // Use i since blobs only contains requested indices
669
672
  const kzgProof = await kzg.asyncComputeBlobKzgProof(blob, kzgCommitment);
670
673
  const kzgCommitmentInclusionProof = computePreFuluKzgCommitmentsInclusionProof(
671
674
  fork,
@@ -724,7 +727,8 @@ export function getBeaconBlockApi({
724
727
  );
725
728
  }
726
729
 
727
- const blobCount = (block.message.body as deneb.BeaconBlockBody).blobKzgCommitments.length;
730
+ const blobKzgCommitments = (block.message.body as deneb.BeaconBlockBody).blobKzgCommitments;
731
+ const blobCount = blobKzgCommitments.length;
728
732
 
729
733
  if (blobCount > 0) {
730
734
  let dataColumnSidecars = await fromAsync(db.dataColumnSidecar.valuesStream(blockRoot));
@@ -739,7 +743,25 @@ export function getBeaconBlockApi({
739
743
  );
740
744
  }
741
745
 
742
- blobs = await reconstructBlobs(dataColumnSidecars);
746
+ let indicesToReconstruct: number[];
747
+ if (versionedHashes) {
748
+ const blockVersionedHashes = blobKzgCommitments.map((commitment) =>
749
+ toHex(kzgCommitmentToVersionedHash(commitment))
750
+ );
751
+ indicesToReconstruct = [];
752
+ for (const requestedHash of versionedHashes) {
753
+ const index = blockVersionedHashes.findIndex((hash) => hash === requestedHash);
754
+ if (index === -1) {
755
+ throw new ApiError(400, `Versioned hash ${requestedHash} not found in block`);
756
+ }
757
+ indicesToReconstruct.push(index);
758
+ }
759
+ indicesToReconstruct.sort((a, b) => a - b);
760
+ } else {
761
+ indicesToReconstruct = Array.from({length: blobCount}, (_, i) => i);
762
+ }
763
+
764
+ blobs = await reconstructBlobs(dataColumnSidecars, indicesToReconstruct);
743
765
  } else {
744
766
  blobs = [];
745
767
  }
@@ -757,27 +779,27 @@ export function getBeaconBlockApi({
757
779
  }
758
780
 
759
781
  blobs = blobSidecars.sort((a, b) => a.index - b.index).map(({blob}) => blob);
760
- } else {
761
- blobs = [];
762
- }
763
782
 
764
- if (blobs.length && versionedHashes?.length) {
765
- const kzgCommitments = (block as deneb.SignedBeaconBlock).message.body.blobKzgCommitments;
783
+ if (blobs.length && versionedHashes) {
784
+ const kzgCommitments = (block as deneb.SignedBeaconBlock).message.body.blobKzgCommitments;
766
785
 
767
- const blockVersionedHashes = kzgCommitments.map((commitment) =>
768
- toHex(kzgCommitmentToVersionedHash(commitment))
769
- );
786
+ const blockVersionedHashes = kzgCommitments.map((commitment) =>
787
+ toHex(kzgCommitmentToVersionedHash(commitment))
788
+ );
770
789
 
771
- const requestedIndices: number[] = [];
772
- for (const requestedHash of versionedHashes) {
773
- const index = blockVersionedHashes.findIndex((hash) => hash === requestedHash);
774
- if (index === -1) {
775
- throw new ApiError(400, `Versioned hash ${requestedHash} not found in block`);
790
+ const requestedIndices: number[] = [];
791
+ for (const requestedHash of versionedHashes) {
792
+ const index = blockVersionedHashes.findIndex((hash) => hash === requestedHash);
793
+ if (index === -1) {
794
+ throw new ApiError(400, `Versioned hash ${requestedHash} not found in block`);
795
+ }
796
+ requestedIndices.push(index);
776
797
  }
777
- requestedIndices.push(index);
778
- }
779
798
 
780
- blobs = requestedIndices.sort((a, b) => a - b).map((index) => blobs[index]);
799
+ blobs = requestedIndices.sort((a, b) => a - b).map((index) => blobs[index]);
800
+ }
801
+ } else {
802
+ blobs = [];
781
803
  }
782
804
 
783
805
  return {
@@ -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",