@lodestar/beacon-node 1.50.0-dev.199b9d3a1f → 1.50.0-dev.1cd749f306

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 (266) hide show
  1. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/index.js +13 -0
  3. package/lib/api/impl/beacon/index.js.map +1 -1
  4. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/state/index.js +28 -6
  6. package/lib/api/impl/beacon/state/index.js.map +1 -1
  7. package/lib/api/impl/debug/index.d.ts.map +1 -1
  8. package/lib/api/impl/debug/index.js +26 -18
  9. package/lib/api/impl/debug/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.d.ts +1 -0
  11. package/lib/api/impl/validator/index.d.ts.map +1 -1
  12. package/lib/api/impl/validator/index.js +23 -1
  13. package/lib/api/impl/validator/index.js.map +1 -1
  14. package/lib/chain/archiveStore/archiveStore.d.ts +5 -0
  15. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  16. package/lib/chain/archiveStore/archiveStore.js +14 -24
  17. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  18. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +2 -2
  19. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  20. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +5 -7
  21. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  22. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -1
  23. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  24. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -2
  25. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  26. package/lib/chain/archiveStore/historicalState/worker.js +1 -1
  27. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  28. package/lib/chain/archiveStore/interface.d.ts +1 -1
  29. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  30. package/lib/chain/archiveStore/utils/pruneHistory.d.ts +1 -1
  31. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -1
  32. package/lib/chain/archiveStore/utils/pruneHistory.js +2 -1
  33. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  34. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  35. package/lib/chain/blocks/importBlock.js +13 -6
  36. package/lib/chain/blocks/importBlock.js.map +1 -1
  37. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  38. package/lib/chain/blocks/verifyBlock.js +7 -7
  39. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  40. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +2 -1
  41. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  42. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +5 -4
  43. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  44. package/lib/chain/chain.d.ts +4 -1
  45. package/lib/chain/chain.d.ts.map +1 -1
  46. package/lib/chain/chain.js +78 -20
  47. package/lib/chain/chain.js.map +1 -1
  48. package/lib/chain/emitter.d.ts +7 -1
  49. package/lib/chain/emitter.d.ts.map +1 -1
  50. package/lib/chain/emitter.js +5 -0
  51. package/lib/chain/emitter.js.map +1 -1
  52. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  53. package/lib/chain/forkChoice/index.js +2 -0
  54. package/lib/chain/forkChoice/index.js.map +1 -1
  55. package/lib/chain/interface.d.ts +1 -0
  56. package/lib/chain/interface.d.ts.map +1 -1
  57. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -2
  58. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  59. package/lib/chain/opPools/aggregatedAttestationPool.js +30 -8
  60. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  61. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  62. package/lib/chain/opPools/opPool.js +1 -23
  63. package/lib/chain/opPools/opPool.js.map +1 -1
  64. package/lib/chain/opPools/proposerPreferencesPool.d.ts +8 -4
  65. package/lib/chain/opPools/proposerPreferencesPool.d.ts.map +1 -1
  66. package/lib/chain/opPools/proposerPreferencesPool.js +27 -12
  67. package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -1
  68. package/lib/chain/opPools/utils.d.ts +11 -0
  69. package/lib/chain/opPools/utils.d.ts.map +1 -1
  70. package/lib/chain/opPools/utils.js +22 -0
  71. package/lib/chain/opPools/utils.js.map +1 -1
  72. package/lib/chain/options.d.ts +2 -1
  73. package/lib/chain/options.d.ts.map +1 -1
  74. package/lib/chain/options.js +1 -1
  75. package/lib/chain/options.js.map +1 -1
  76. package/lib/chain/produceBlock/computeNewStateRoot.js +1 -1
  77. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  78. package/lib/chain/regen/regen.d.ts +2 -0
  79. package/lib/chain/regen/regen.d.ts.map +1 -1
  80. package/lib/chain/regen/regen.js +10 -4
  81. package/lib/chain/regen/regen.js.map +1 -1
  82. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -0
  83. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  84. package/lib/chain/seenCache/seenGossipBlockInput.js +21 -0
  85. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  86. package/lib/chain/shufflingCache.d.ts +18 -8
  87. package/lib/chain/shufflingCache.d.ts.map +1 -1
  88. package/lib/chain/shufflingCache.js +72 -18
  89. package/lib/chain/shufflingCache.js.map +1 -1
  90. package/lib/chain/validatorMonitor.d.ts +5 -1
  91. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  92. package/lib/chain/validatorMonitor.js +64 -54
  93. package/lib/chain/validatorMonitor.js.map +1 -1
  94. package/lib/db/beacon.d.ts +4 -1
  95. package/lib/db/beacon.d.ts.map +1 -1
  96. package/lib/db/beacon.js +6 -1
  97. package/lib/db/beacon.js.map +1 -1
  98. package/lib/db/buckets.d.ts +3 -1
  99. package/lib/db/buckets.d.ts.map +1 -1
  100. package/lib/db/buckets.js +2 -0
  101. package/lib/db/buckets.js.map +1 -1
  102. package/lib/db/interface.d.ts +4 -1
  103. package/lib/db/interface.d.ts.map +1 -1
  104. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  105. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  106. package/lib/db/repositories/earliestAvailableSlot.d.ts +11 -0
  107. package/lib/db/repositories/earliestAvailableSlot.d.ts.map +1 -0
  108. package/lib/db/repositories/earliestAvailableSlot.js +19 -0
  109. package/lib/db/repositories/earliestAvailableSlot.js.map +1 -0
  110. package/lib/db/repositories/index.d.ts +1 -0
  111. package/lib/db/repositories/index.d.ts.map +1 -1
  112. package/lib/db/repositories/index.js +1 -0
  113. package/lib/db/repositories/index.js.map +1 -1
  114. package/lib/db/repositories/proposerPreferences.d.ts +14 -0
  115. package/lib/db/repositories/proposerPreferences.d.ts.map +1 -0
  116. package/lib/db/repositories/proposerPreferences.js +21 -0
  117. package/lib/db/repositories/proposerPreferences.js.map +1 -0
  118. package/lib/execution/engine/blobVersionedHashes.d.ts +9 -0
  119. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -0
  120. package/lib/execution/engine/blobVersionedHashes.js +74 -0
  121. package/lib/execution/engine/blobVersionedHashes.js.map +1 -0
  122. package/lib/execution/engine/http.d.ts +45 -13
  123. package/lib/execution/engine/http.d.ts.map +1 -1
  124. package/lib/execution/engine/http.js +236 -198
  125. package/lib/execution/engine/http.js.map +1 -1
  126. package/lib/execution/engine/index.d.ts +3 -2
  127. package/lib/execution/engine/index.d.ts.map +1 -1
  128. package/lib/execution/engine/index.js +33 -8
  129. package/lib/execution/engine/index.js.map +1 -1
  130. package/lib/execution/engine/interface.d.ts +1 -1
  131. package/lib/execution/engine/interface.d.ts.map +1 -1
  132. package/lib/execution/engine/jsonRpcTransport.d.ts +25 -0
  133. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -0
  134. package/lib/execution/engine/jsonRpcTransport.js +158 -0
  135. package/lib/execution/engine/jsonRpcTransport.js.map +1 -0
  136. package/lib/execution/engine/restHttpClient.d.ts +71 -0
  137. package/lib/execution/engine/restHttpClient.d.ts.map +1 -0
  138. package/lib/execution/engine/restHttpClient.js +201 -0
  139. package/lib/execution/engine/restHttpClient.js.map +1 -0
  140. package/lib/execution/engine/restTransport.d.ts +46 -0
  141. package/lib/execution/engine/restTransport.d.ts.map +1 -0
  142. package/lib/execution/engine/restTransport.js +399 -0
  143. package/lib/execution/engine/restTransport.js.map +1 -0
  144. package/lib/execution/engine/sszTypes.d.ts +1261 -0
  145. package/lib/execution/engine/sszTypes.d.ts.map +1 -0
  146. package/lib/execution/engine/sszTypes.js +216 -0
  147. package/lib/execution/engine/sszTypes.js.map +1 -0
  148. package/lib/execution/engine/transport.d.ts +39 -0
  149. package/lib/execution/engine/transport.d.ts.map +1 -0
  150. package/lib/execution/engine/transport.js +2 -0
  151. package/lib/execution/engine/transport.js.map +1 -0
  152. package/lib/execution/engine/types.d.ts +2 -0
  153. package/lib/execution/engine/types.d.ts.map +1 -1
  154. package/lib/execution/engine/types.js +24 -57
  155. package/lib/execution/engine/types.js.map +1 -1
  156. package/lib/execution/engine/utils.d.ts.map +1 -1
  157. package/lib/execution/engine/utils.js +9 -2
  158. package/lib/execution/engine/utils.js.map +1 -1
  159. package/lib/metrics/metrics/lodestar.d.ts +10 -0
  160. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  161. package/lib/metrics/metrics/lodestar.js +22 -0
  162. package/lib/metrics/metrics/lodestar.js.map +1 -1
  163. package/lib/metrics/metrics.d.ts +7 -3
  164. package/lib/metrics/metrics.d.ts.map +1 -1
  165. package/lib/metrics/metrics.js +4 -4
  166. package/lib/metrics/metrics.js.map +1 -1
  167. package/lib/network/core/events.d.ts +5 -1
  168. package/lib/network/core/events.d.ts.map +1 -1
  169. package/lib/network/core/events.js +8 -0
  170. package/lib/network/core/events.js.map +1 -1
  171. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  172. package/lib/network/processor/gossipHandlers.js +59 -63
  173. package/lib/network/processor/gossipHandlers.js.map +1 -1
  174. package/lib/node/nodejs.d.ts +3 -1
  175. package/lib/node/nodejs.d.ts.map +1 -1
  176. package/lib/node/nodejs.js +27 -4
  177. package/lib/node/nodejs.js.map +1 -1
  178. package/lib/node/options.d.ts +3 -2
  179. package/lib/node/options.d.ts.map +1 -1
  180. package/lib/node/options.js +2 -2
  181. package/lib/node/options.js.map +1 -1
  182. package/lib/sync/range/batch.d.ts +5 -5
  183. package/lib/sync/range/batch.d.ts.map +1 -1
  184. package/lib/sync/range/batch.js +11 -17
  185. package/lib/sync/range/batch.js.map +1 -1
  186. package/lib/sync/range/chain.d.ts +4 -4
  187. package/lib/sync/range/chain.d.ts.map +1 -1
  188. package/lib/sync/range/chain.js +12 -6
  189. package/lib/sync/range/chain.js.map +1 -1
  190. package/lib/sync/range/range.d.ts.map +1 -1
  191. package/lib/sync/range/range.js +25 -11
  192. package/lib/sync/range/range.js.map +1 -1
  193. package/lib/sync/unknownBlock.d.ts +5 -2
  194. package/lib/sync/unknownBlock.d.ts.map +1 -1
  195. package/lib/sync/unknownBlock.js +44 -20
  196. package/lib/sync/unknownBlock.js.map +1 -1
  197. package/lib/sync/utils/downloadByRange.d.ts +38 -14
  198. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  199. package/lib/sync/utils/downloadByRange.js +84 -39
  200. package/lib/sync/utils/downloadByRange.js.map +1 -1
  201. package/lib/util/asyncIterableToEvents.d.ts +10 -2
  202. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  203. package/lib/util/asyncIterableToEvents.js +29 -3
  204. package/lib/util/asyncIterableToEvents.js.map +1 -1
  205. package/lib/util/metadata.d.ts.map +1 -1
  206. package/lib/util/metadata.js +2 -1
  207. package/lib/util/metadata.js.map +1 -1
  208. package/package.json +18 -17
  209. package/src/api/impl/beacon/index.ts +15 -0
  210. package/src/api/impl/beacon/state/index.ts +43 -6
  211. package/src/api/impl/debug/index.ts +28 -19
  212. package/src/api/impl/validator/index.ts +24 -2
  213. package/src/chain/archiveStore/archiveStore.ts +19 -25
  214. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +5 -7
  215. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +1 -1
  216. package/src/chain/archiveStore/historicalState/types.ts +2 -2
  217. package/src/chain/archiveStore/historicalState/worker.ts +1 -2
  218. package/src/chain/archiveStore/interface.ts +1 -1
  219. package/src/chain/archiveStore/utils/pruneHistory.ts +4 -1
  220. package/src/chain/blocks/importBlock.ts +16 -5
  221. package/src/chain/blocks/verifyBlock.ts +8 -6
  222. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -3
  223. package/src/chain/chain.ts +103 -19
  224. package/src/chain/emitter.ts +7 -1
  225. package/src/chain/forkChoice/index.ts +2 -0
  226. package/src/chain/interface.ts +1 -0
  227. package/src/chain/opPools/aggregatedAttestationPool.ts +34 -10
  228. package/src/chain/opPools/opPool.ts +1 -31
  229. package/src/chain/opPools/proposerPreferencesPool.ts +34 -11
  230. package/src/chain/opPools/utils.ts +31 -0
  231. package/src/chain/options.ts +3 -3
  232. package/src/chain/produceBlock/computeNewStateRoot.ts +1 -1
  233. package/src/chain/regen/regen.ts +12 -4
  234. package/src/chain/seenCache/seenGossipBlockInput.ts +23 -0
  235. package/src/chain/shufflingCache.ts +84 -22
  236. package/src/chain/validatorMonitor.ts +75 -57
  237. package/src/db/beacon.ts +6 -0
  238. package/src/db/buckets.ts +2 -0
  239. package/src/db/interface.ts +4 -0
  240. package/src/db/repositories/earliestAvailableSlot.ts +19 -0
  241. package/src/db/repositories/index.ts +1 -0
  242. package/src/db/repositories/proposerPreferences.ts +23 -0
  243. package/src/execution/engine/blobVersionedHashes.ts +72 -0
  244. package/src/execution/engine/http.ts +304 -271
  245. package/src/execution/engine/index.ts +41 -7
  246. package/src/execution/engine/interface.ts +1 -1
  247. package/src/execution/engine/jsonRpcTransport.ts +247 -0
  248. package/src/execution/engine/restHttpClient.ts +269 -0
  249. package/src/execution/engine/restTransport.ts +544 -0
  250. package/src/execution/engine/sszTypes.ts +354 -0
  251. package/src/execution/engine/transport.ts +61 -0
  252. package/src/execution/engine/types.ts +34 -74
  253. package/src/execution/engine/utils.ts +12 -2
  254. package/src/metrics/metrics/lodestar.ts +23 -0
  255. package/src/metrics/metrics.ts +21 -6
  256. package/src/network/core/events.ts +16 -1
  257. package/src/network/processor/gossipHandlers.ts +90 -76
  258. package/src/node/nodejs.ts +35 -3
  259. package/src/node/options.ts +10 -1
  260. package/src/sync/range/batch.ts +14 -19
  261. package/src/sync/range/chain.ts +15 -8
  262. package/src/sync/range/range.ts +26 -12
  263. package/src/sync/unknownBlock.ts +57 -21
  264. package/src/sync/utils/downloadByRange.ts +123 -58
  265. package/src/util/asyncIterableToEvents.ts +44 -5
  266. package/src/util/metadata.ts +2 -1
@@ -6,6 +6,10 @@ export type RequestEvent<T> = {
6
6
  id: number;
7
7
  };
8
8
 
9
+ export type RequestCancelEvent = {
10
+ id: number;
11
+ };
12
+
9
13
  export enum IteratorEventType {
10
14
  next = "iterator.next",
11
15
  done = "iterator.done",
@@ -19,8 +23,10 @@ export type IteratorEvent<V> =
19
23
 
20
24
  export type AsyncIterableEventBus<Args, Item> = {
21
25
  emitRequest(data: RequestEvent<Args>): void;
26
+ emitRequestCancel(data: RequestCancelEvent): void;
22
27
  emitResponse(data: IteratorEvent<Item>): void;
23
28
  onRequest(handler: (data: RequestEvent<Args>) => void): void;
29
+ onRequestCancel(handler: (data: RequestCancelEvent) => void): void;
24
30
  onResponse(handler: (data: IteratorEvent<Item>) => void): void;
25
31
  };
26
32
 
@@ -37,7 +43,9 @@ export class AsyncIterableBridgeCaller<Args, Item> {
37
43
  // TODO: Consider expiring the requests after no reply for long enough, t
38
44
  private readonly pending = new Map<number, PendingItem<Item>>();
39
45
 
40
- constructor(private readonly events: Pick<AsyncIterableEventBus<Args, Item>, "onResponse" | "emitRequest">) {
46
+ constructor(
47
+ private readonly events: Pick<AsyncIterableEventBus<Args, Item>, "onResponse" | "emitRequest" | "emitRequestCancel">
48
+ ) {
41
49
  events.onResponse(this.onResponse.bind(this));
42
50
  }
43
51
 
@@ -89,7 +97,10 @@ export class AsyncIterableBridgeCaller<Args, Item> {
89
97
 
90
98
  async return() {
91
99
  // This will be reached if the consumer called 'break' or 'return' early in the loop.
92
- self.pending.delete(id);
100
+ // Without the cancel the handler keeps producing items that cross the thread boundary just to be dropped
101
+ if (self.pending.delete(id)) {
102
+ self.events.emitRequestCancel({id});
103
+ }
93
104
  return {value: undefined, done: true};
94
105
  },
95
106
  };
@@ -132,20 +143,35 @@ export class AsyncIterableBridgeCaller<Args, Item> {
132
143
  }
133
144
 
134
145
  export class AsyncIterableBridgeHandler<Args, Item> {
146
+ private readonly iterators = new Map<number, AsyncIterator<Item>>();
147
+
135
148
  constructor(
136
- private readonly events: Pick<AsyncIterableEventBus<Args, Item>, "onRequest" | "emitResponse">,
149
+ private readonly events: Pick<AsyncIterableEventBus<Args, Item>, "onRequest" | "onRequestCancel" | "emitResponse">,
137
150
  private readonly handler: (args: Args) => AsyncIterable<Item>
138
151
  ) {
139
152
  events.onRequest(this.onRequest.bind(this));
153
+ events.onRequestCancel(this.onRequestCancel.bind(this));
154
+ }
155
+
156
+ get iteratingCount(): number {
157
+ return this.iterators.size;
140
158
  }
141
159
 
142
160
  private async onRequest(data: RequestEvent<Args>): Promise<void> {
143
161
  try {
144
- for await (const item of this.handler(data.callArgs)) {
162
+ const iterator = this.handler(data.callArgs)[Symbol.asyncIterator]();
163
+ this.iterators.set(data.id, iterator);
164
+
165
+ while (true) {
166
+ const result = await iterator.next();
167
+ if (result.done) {
168
+ break;
169
+ }
170
+
145
171
  this.events.emitResponse({
146
172
  type: IteratorEventType.next,
147
173
  id: data.id,
148
- item,
174
+ item: result.value,
149
175
  });
150
176
  }
151
177
 
@@ -159,6 +185,19 @@ export class AsyncIterableBridgeHandler<Args, Item> {
159
185
  id: data.id,
160
186
  error: toThreadBoundaryError(e as Error),
161
187
  });
188
+ } finally {
189
+ this.iterators.delete(data.id);
190
+ }
191
+ }
192
+
193
+ private onRequestCancel(data: RequestCancelEvent): void {
194
+ const iterator = this.iterators.get(data.id);
195
+ if (!iterator?.return) {
196
+ return;
162
197
  }
198
+
199
+ // An async generator queues return() behind the next() that is in flight, so at most one more
200
+ // item is produced before its finally blocks run. Any error surfaces through that next() call.
201
+ void iterator.return().catch(() => {});
163
202
  }
164
203
  }
@@ -6,7 +6,8 @@ export function getLodestarClientVersion(info?: {version?: string; commit?: stri
6
6
  code: ClientCode.LS,
7
7
  name: "Lodestar",
8
8
  version: info?.version ?? "",
9
- commit: info?.commit?.slice(0, 8) ?? "",
9
+ // engine_getClientVersionV1 defines commit as 4 bytes, so builds without git data must not send an empty one
10
+ commit: info?.commit ? info.commit.slice(0, 8) : "00000000",
10
11
  };
11
12
  }
12
13