@lodestar/beacon-node 1.34.0-dev.d5a4e7a09c → 1.34.0-dev.eb034b5727

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 (243) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +136 -30
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/debug/index.d.ts +1 -1
  4. package/lib/api/impl/debug/index.js +24 -1
  5. package/lib/api/impl/debug/index.js.map +1 -1
  6. package/lib/api/impl/validator/index.js +11 -5
  7. package/lib/api/impl/validator/index.js.map +1 -1
  8. package/lib/chain/archiveStore/archiveStore.d.ts +1 -1
  9. package/lib/chain/archiveStore/archiveStore.js +2 -2
  10. package/lib/chain/archiveStore/interface.d.ts +1 -1
  11. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
  12. package/lib/chain/archiveStore/utils/archiveBlocks.js +91 -23
  13. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  14. package/lib/chain/beaconProposerCache.d.ts +1 -0
  15. package/lib/chain/beaconProposerCache.js +3 -0
  16. package/lib/chain/beaconProposerCache.js.map +1 -1
  17. package/lib/chain/blocks/importBlock.js +3 -2
  18. package/lib/chain/blocks/importBlock.js.map +1 -1
  19. package/lib/chain/blocks/types.d.ts +66 -23
  20. package/lib/chain/blocks/types.js +39 -5
  21. package/lib/chain/blocks/types.js.map +1 -1
  22. package/lib/chain/blocks/verifyBlocksDataAvailability.js +21 -10
  23. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  24. package/lib/chain/blocks/writeBlockInputToDb.js +89 -15
  25. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  26. package/lib/chain/chain.d.ts +17 -28
  27. package/lib/chain/chain.js +71 -6
  28. package/lib/chain/chain.js.map +1 -1
  29. package/lib/chain/emitter.d.ts +18 -2
  30. package/lib/chain/emitter.js +13 -0
  31. package/lib/chain/emitter.js.map +1 -1
  32. package/lib/chain/errors/dataColumnSidecarError.d.ts +69 -0
  33. package/lib/chain/errors/dataColumnSidecarError.js +21 -0
  34. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -0
  35. package/lib/chain/errors/index.d.ts +1 -0
  36. package/lib/chain/errors/index.js +1 -0
  37. package/lib/chain/errors/index.js.map +1 -1
  38. package/lib/chain/interface.d.ts +10 -4
  39. package/lib/chain/interface.js.map +1 -1
  40. package/lib/chain/options.d.ts +4 -1
  41. package/lib/chain/options.js +1 -0
  42. package/lib/chain/options.js.map +1 -1
  43. package/lib/chain/prepareNextSlot.js +2 -1
  44. package/lib/chain/prepareNextSlot.js.map +1 -1
  45. package/lib/chain/produceBlock/produceBlockBody.d.ts +4 -2
  46. package/lib/chain/produceBlock/produceBlockBody.js +9 -4
  47. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  48. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +3 -2
  49. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +28 -2
  50. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  51. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +64 -18
  52. package/lib/chain/seenCache/seenGossipBlockInput.js +321 -53
  53. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  54. package/lib/chain/validation/dataColumnSidecar.d.ts +28 -0
  55. package/lib/chain/validation/dataColumnSidecar.js +248 -0
  56. package/lib/chain/validation/dataColumnSidecar.js.map +1 -0
  57. package/lib/db/beacon.d.ts +3 -1
  58. package/lib/db/beacon.js +3 -1
  59. package/lib/db/beacon.js.map +1 -1
  60. package/lib/db/buckets.d.ts +3 -1
  61. package/lib/db/buckets.js +2 -0
  62. package/lib/db/buckets.js.map +1 -1
  63. package/lib/db/interface.d.ts +3 -1
  64. package/lib/db/repositories/dataColumnSidecars.d.ts +47 -0
  65. package/lib/db/repositories/dataColumnSidecars.js +40 -0
  66. package/lib/db/repositories/dataColumnSidecars.js.map +1 -0
  67. package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +15 -0
  68. package/lib/db/repositories/dataColumnSidecarsArchive.js +23 -0
  69. package/lib/db/repositories/dataColumnSidecarsArchive.js.map +1 -0
  70. package/lib/db/repositories/index.d.ts +2 -0
  71. package/lib/db/repositories/index.js +2 -0
  72. package/lib/db/repositories/index.js.map +1 -1
  73. package/lib/execution/builder/http.d.ts +18 -2
  74. package/lib/execution/builder/http.js +27 -8
  75. package/lib/execution/builder/http.js.map +1 -1
  76. package/lib/execution/builder/interface.d.ts +3 -2
  77. package/lib/execution/engine/http.d.ts +6 -3
  78. package/lib/execution/engine/http.js +56 -42
  79. package/lib/execution/engine/http.js.map +1 -1
  80. package/lib/execution/engine/interface.d.ts +4 -2
  81. package/lib/execution/engine/interface.js +1 -1
  82. package/lib/execution/engine/interface.js.map +1 -1
  83. package/lib/execution/engine/mock.d.ts +1 -0
  84. package/lib/execution/engine/mock.js +5 -0
  85. package/lib/execution/engine/mock.js.map +1 -1
  86. package/lib/execution/engine/types.d.ts +10 -0
  87. package/lib/execution/engine/types.js +6 -0
  88. package/lib/execution/engine/types.js.map +1 -1
  89. package/lib/metrics/metrics/beacon.d.ts +14 -0
  90. package/lib/metrics/metrics/beacon.js +57 -0
  91. package/lib/metrics/metrics/beacon.js.map +1 -1
  92. package/lib/metrics/metrics/lodestar.d.ts +24 -1
  93. package/lib/metrics/metrics/lodestar.js +45 -0
  94. package/lib/metrics/metrics/lodestar.js.map +1 -1
  95. package/lib/network/core/metrics.d.ts +10 -3
  96. package/lib/network/core/metrics.js +22 -4
  97. package/lib/network/core/metrics.js.map +1 -1
  98. package/lib/network/core/networkCore.d.ts +15 -4
  99. package/lib/network/core/networkCore.js +73 -23
  100. package/lib/network/core/networkCore.js.map +1 -1
  101. package/lib/network/core/networkCoreWorker.js +2 -0
  102. package/lib/network/core/networkCoreWorker.js.map +1 -1
  103. package/lib/network/core/networkCoreWorkerHandler.d.ts +5 -3
  104. package/lib/network/core/networkCoreWorkerHandler.js +6 -1
  105. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  106. package/lib/network/core/types.d.ts +7 -4
  107. package/lib/network/events.d.ts +4 -2
  108. package/lib/network/events.js.map +1 -1
  109. package/lib/network/gossip/gossipsub.d.ts +2 -2
  110. package/lib/network/gossip/gossipsub.js +8 -6
  111. package/lib/network/gossip/gossipsub.js.map +1 -1
  112. package/lib/network/gossip/interface.d.ts +8 -1
  113. package/lib/network/gossip/interface.js +1 -0
  114. package/lib/network/gossip/interface.js.map +1 -1
  115. package/lib/network/gossip/scoringParameters.d.ts +6 -2
  116. package/lib/network/gossip/scoringParameters.js.map +1 -1
  117. package/lib/network/gossip/topic.d.ts +1077 -1056
  118. package/lib/network/gossip/topic.js +29 -1
  119. package/lib/network/gossip/topic.js.map +1 -1
  120. package/lib/network/interface.d.ts +9 -1
  121. package/lib/network/metadata.d.ts +9 -5
  122. package/lib/network/metadata.js +26 -5
  123. package/lib/network/metadata.js.map +1 -1
  124. package/lib/network/network.d.ts +12 -2
  125. package/lib/network/network.js +73 -11
  126. package/lib/network/network.js.map +1 -1
  127. package/lib/network/networkConfig.d.ts +12 -0
  128. package/lib/network/networkConfig.js +2 -0
  129. package/lib/network/networkConfig.js.map +1 -0
  130. package/lib/network/options.d.ts +1 -0
  131. package/lib/network/options.js +5 -0
  132. package/lib/network/options.js.map +1 -1
  133. package/lib/network/peers/discover.d.ts +8 -3
  134. package/lib/network/peers/discover.js +99 -14
  135. package/lib/network/peers/discover.js.map +1 -1
  136. package/lib/network/peers/peerManager.d.ts +10 -4
  137. package/lib/network/peers/peerManager.js +105 -19
  138. package/lib/network/peers/peerManager.js.map +1 -1
  139. package/lib/network/peers/peersData.d.ts +17 -3
  140. package/lib/network/peers/peersData.js.map +1 -1
  141. package/lib/network/peers/score/interface.d.ts +1 -1
  142. package/lib/network/peers/score/score.d.ts +2 -2
  143. package/lib/network/peers/score/score.js +4 -1
  144. package/lib/network/peers/score/score.js.map +1 -1
  145. package/lib/network/peers/score/store.d.ts +3 -1
  146. package/lib/network/peers/score/store.js +6 -2
  147. package/lib/network/peers/score/store.js.map +1 -1
  148. package/lib/network/peers/utils/assertPeerRelevance.d.ts +7 -3
  149. package/lib/network/peers/utils/assertPeerRelevance.js +10 -1
  150. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  151. package/lib/network/peers/utils/prioritizePeers.d.ts +18 -7
  152. package/lib/network/peers/utils/prioritizePeers.js +43 -7
  153. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  154. package/lib/network/processor/extractSlotRootFns.js +8 -1
  155. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  156. package/lib/network/processor/gossipHandlers.js +156 -10
  157. package/lib/network/processor/gossipHandlers.js.map +1 -1
  158. package/lib/network/processor/gossipQueues/index.js +5 -0
  159. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  160. package/lib/network/processor/index.js +1 -0
  161. package/lib/network/processor/index.js.map +1 -1
  162. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +2 -2
  163. package/lib/network/reqresp/ReqRespBeaconNode.js +36 -14
  164. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  165. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +24 -4
  166. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +259 -20
  167. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  168. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +32 -6
  169. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +283 -28
  170. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  171. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +1 -1
  172. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  173. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
  174. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +92 -0
  175. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -0
  176. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +6 -0
  177. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +50 -0
  178. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
  179. package/lib/network/reqresp/handlers/index.js +10 -0
  180. package/lib/network/reqresp/handlers/index.js.map +1 -1
  181. package/lib/network/reqresp/protocols.d.ts +4 -0
  182. package/lib/network/reqresp/protocols.js +20 -0
  183. package/lib/network/reqresp/protocols.js.map +1 -1
  184. package/lib/network/reqresp/rateLimit.js +11 -1
  185. package/lib/network/reqresp/rateLimit.js.map +1 -1
  186. package/lib/network/reqresp/score.js +3 -0
  187. package/lib/network/reqresp/score.js.map +1 -1
  188. package/lib/network/reqresp/types.d.ts +11 -4
  189. package/lib/network/reqresp/types.js +12 -3
  190. package/lib/network/reqresp/types.js.map +1 -1
  191. package/lib/network/statusCache.d.ts +5 -5
  192. package/lib/network/statusCache.js.map +1 -1
  193. package/lib/network/subnets/interface.d.ts +3 -0
  194. package/lib/network/subnets/interface.js +14 -1
  195. package/lib/network/subnets/interface.js.map +1 -1
  196. package/lib/network/subnets/syncnetsService.js +4 -5
  197. package/lib/network/subnets/syncnetsService.js.map +1 -1
  198. package/lib/node/nodejs.js +1 -0
  199. package/lib/node/nodejs.js.map +1 -1
  200. package/lib/sync/constants.d.ts +18 -3
  201. package/lib/sync/constants.js +21 -3
  202. package/lib/sync/constants.js.map +1 -1
  203. package/lib/sync/interface.d.ts +2 -2
  204. package/lib/sync/interface.js +1 -1
  205. package/lib/sync/interface.js.map +1 -1
  206. package/lib/sync/range/batch.d.ts +17 -2
  207. package/lib/sync/range/batch.js +39 -7
  208. package/lib/sync/range/batch.js.map +1 -1
  209. package/lib/sync/range/chain.d.ts +15 -1
  210. package/lib/sync/range/chain.js +124 -33
  211. package/lib/sync/range/chain.js.map +1 -1
  212. package/lib/sync/range/range.d.ts +3 -2
  213. package/lib/sync/range/range.js +9 -3
  214. package/lib/sync/range/range.js.map +1 -1
  215. package/lib/sync/range/utils/chainTarget.d.ts +5 -1
  216. package/lib/sync/range/utils/chainTarget.js +26 -1
  217. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  218. package/lib/sync/range/utils/peerBalancer.d.ts +19 -5
  219. package/lib/sync/range/utils/peerBalancer.js +104 -10
  220. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  221. package/lib/sync/sync.js +1 -1
  222. package/lib/sync/sync.js.map +1 -1
  223. package/lib/sync/unknownBlock.d.ts +8 -1
  224. package/lib/sync/unknownBlock.js +223 -67
  225. package/lib/sync/unknownBlock.js.map +1 -1
  226. package/lib/sync/utils/remoteSyncType.d.ts +4 -4
  227. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  228. package/lib/util/blobs.d.ts +23 -1
  229. package/lib/util/blobs.js +156 -1
  230. package/lib/util/blobs.js.map +1 -1
  231. package/lib/util/dataColumns.d.ts +135 -0
  232. package/lib/util/dataColumns.js +353 -0
  233. package/lib/util/dataColumns.js.map +1 -0
  234. package/lib/util/metadata.d.ts +5 -0
  235. package/lib/util/metadata.js +10 -0
  236. package/lib/util/metadata.js.map +1 -1
  237. package/lib/util/sszBytes.d.ts +1 -0
  238. package/lib/util/sszBytes.js +17 -0
  239. package/lib/util/sszBytes.js.map +1 -1
  240. package/package.json +16 -16
  241. package/lib/network/reqresp/handlers/status.d.ts +0 -4
  242. package/lib/network/reqresp/handlers/status.js +0 -11
  243. package/lib/network/reqresp/handlers/status.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter } from "node:events";
2
2
  import { BeaconConfig } from "@lodestar/config";
3
- import { phase0 } from "@lodestar/types";
3
+ import { Status } from "@lodestar/types";
4
4
  import { Logger } from "@lodestar/utils";
5
5
  import { StrictEventEmitter } from "strict-event-emitter-types";
6
6
  import { IBeaconChain } from "../../chain/index.js";
@@ -85,7 +85,7 @@ export declare class RangeSync extends RangeSync_base {
85
85
  * A peer with a relevant STATUS message has been found, which also is advanced from us.
86
86
  * Add this peer to an existing chain or create a new one. The update the chains status.
87
87
  */
88
- addPeer(peerId: PeerIdStr, localStatus: phase0.Status, peerStatus: phase0.Status): void;
88
+ addPeer(peerId: PeerIdStr, localStatus: Status, peerStatus: Status): void;
89
89
  /**
90
90
  * Remove this peer from all head and finalized chains. A chain may become peer-empty and be dropped
91
91
  */
@@ -102,6 +102,7 @@ export declare class RangeSync extends RangeSync_base {
102
102
  private downloadBeaconBlocksByRange;
103
103
  /** Convenience method for `SyncChain` */
104
104
  private reportPeer;
105
+ private getConnectedPeerSyncMeta;
105
106
  /** Convenience method for `SyncChain` */
106
107
  private onSyncChainEnd;
107
108
  private addPeerOrCreateChain;
@@ -79,13 +79,16 @@ export class RangeSync extends EventEmitter {
79
79
  }
80
80
  };
81
81
  /** Convenience method for `SyncChain` */
82
- this.downloadBeaconBlocksByRange = async (peerId, request) => {
83
- return beaconBlocksMaybeBlobsByRange(this.config, this.network, peerId, request, this.chain.clock.currentEpoch);
82
+ this.downloadBeaconBlocksByRange = async (peer, request, partialDownload, syncType) => {
83
+ return beaconBlocksMaybeBlobsByRange(this.config, this.network, peer, request, this.chain.clock.currentEpoch, partialDownload, syncType, this.metrics, this.logger);
84
84
  };
85
85
  /** Convenience method for `SyncChain` */
86
86
  this.reportPeer = (peer, action, actionName) => {
87
87
  this.network.reportPeer(peer, action, actionName);
88
88
  };
89
+ this.getConnectedPeerSyncMeta = (peerId) => {
90
+ return this.network.getConnectedPeerSyncMeta(peerId);
91
+ };
89
92
  /** Convenience method for `SyncChain` */
90
93
  this.onSyncChainEnd = (err, target) => {
91
94
  this.update(this.chain.forkChoice.getFinalizedCheckpoint().epoch);
@@ -124,6 +127,7 @@ export class RangeSync extends EventEmitter {
124
127
  startEpoch,
125
128
  targetSlot: target.slot,
126
129
  targetRoot: toRootHex(target.root),
130
+ earliestAvailableSlot: peerStatus.earliestAvailableSlot ?? Infinity,
127
131
  });
128
132
  // If the peer existed in any other chain, remove it.
129
133
  // re-status'd peers can exist in multiple finalized chains, only one sync at a time
@@ -172,8 +176,9 @@ export class RangeSync extends EventEmitter {
172
176
  processChainSegment: this.processChainSegment,
173
177
  downloadBeaconBlocksByRange: this.downloadBeaconBlocksByRange,
174
178
  reportPeer: this.reportPeer,
179
+ getConnectedPeerSyncMeta: this.getConnectedPeerSyncMeta,
175
180
  onEnd: this.onSyncChainEnd,
176
- }, { config: this.config, logger: this.logger });
181
+ }, { config: this.config, logger: this.logger, custodyConfig: this.chain.custodyConfig, metrics: this.metrics });
177
182
  this.chains.set(syncType, syncChain);
178
183
  this.metrics?.syncRange.syncChainsEvents.inc({ syncType: syncChain.syncType, event: "add" });
179
184
  this.logger.debug("SyncChain added", {
@@ -181,6 +186,7 @@ export class RangeSync extends EventEmitter {
181
186
  firstEpoch: syncChain.firstBatchEpoch,
182
187
  targetSlot: syncChain.target.slot,
183
188
  targetRoot: toRootHex(syncChain.target.root),
189
+ peer,
184
190
  });
185
191
  }
186
192
  syncChain.addPeer(peer, target);
@@ -1 +1 @@
1
- {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../src/sync/range/range.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../src/sync/range/range.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,9 @@ export type ChainTarget = {
7
7
  slot: Slot;
8
8
  root: Root;
9
9
  };
10
- export declare function computeMostCommonTarget(targets: ChainTarget[]): ChainTarget;
10
+ /**
11
+ * Previously we use computeMostCommonTarget to compute the target for a chain.
12
+ * Starting from fulu, we use computeHighestTarget to compute the target for a chain.
13
+ */
14
+ export declare function computeHighestTarget(targets: ChainTarget[]): ChainTarget;
11
15
  //# sourceMappingURL=chainTarget.d.ts.map
@@ -1,5 +1,30 @@
1
1
  import { toRootHex } from "@lodestar/utils";
2
- export function computeMostCommonTarget(targets) {
2
+ /**
3
+ * Previously we use computeMostCommonTarget to compute the target for a chain.
4
+ * Starting from fulu, we use computeHighestTarget to compute the target for a chain.
5
+ */
6
+ export function computeHighestTarget(targets) {
7
+ if (targets.length === 0) {
8
+ throw Error("Must provide at least one target");
9
+ }
10
+ let highestSlot = -1;
11
+ let highestTargets = [];
12
+ for (const target of targets) {
13
+ if (target.slot > highestSlot) {
14
+ highestSlot = target.slot;
15
+ highestTargets = [target];
16
+ }
17
+ else if (target.slot === highestSlot) {
18
+ highestTargets.push(target);
19
+ }
20
+ // ignore if target.slot < highestSlot
21
+ }
22
+ if (highestTargets.length === 1) {
23
+ return highestTargets[0];
24
+ }
25
+ return computeMostCommonTarget(highestTargets);
26
+ }
27
+ function computeMostCommonTarget(targets) {
3
28
  if (targets.length === 0) {
4
29
  throw Error("Must provide at least one target");
5
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chainTarget.js","sourceRoot":"","sources":["../../../../src/sync/range/utils/chainTarget.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAW1C,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;YAC5B,eAAe,GAAG,KAAK,CAAC;YACxB,gBAAgB,GAAG,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"chainTarget.js","sourceRoot":"","sources":["../../../../src/sync/range/utils/chainTarget.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAW1C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAsB;IACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,cAAc,GAAkB,EAAE,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;YAC9B,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1B,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACvC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,sCAAsC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAsB;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;YAC5B,eAAe,GAAG,KAAK,CAAC;YACxB,gBAAgB,GAAG,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
@@ -1,5 +1,11 @@
1
- import { PeerIdStr } from "../../../util/peerId.js";
1
+ import { PeerSyncMeta } from "../../../network/peers/peersData.js";
2
+ import { CustodyConfig } from "../../../util/dataColumns.js";
3
+ import { RangeSyncType } from "../../utils/remoteSyncType.js";
2
4
  import { Batch } from "../batch.js";
5
+ import { ChainTarget } from "./chainTarget.js";
6
+ export type PeerSyncInfo = PeerSyncMeta & {
7
+ target: ChainTarget;
8
+ };
3
9
  /**
4
10
  * Balance and organize peers to perform requests with a SyncChain
5
11
  * Shuffles peers only once on instantiation
@@ -7,15 +13,23 @@ import { Batch } from "../batch.js";
7
13
  export declare class ChainPeersBalancer {
8
14
  private peers;
9
15
  private activeRequestsByPeer;
10
- constructor(peers: PeerIdStr[], batches: Batch[]);
16
+ private readonly custodyConfig;
17
+ private readonly syncType;
18
+ private readonly maxConcurrentRequests;
19
+ /**
20
+ * No need to specify `maxConcurrentRequests` for production code
21
+ * It is used for testing purposes to limit the number of concurrent requests
22
+ */
23
+ constructor(peers: PeerSyncInfo[], batches: Batch[], custodyConfig: CustodyConfig, syncType: RangeSyncType, maxConcurrentRequests?: number);
11
24
  /**
12
25
  * Return the most suitable peer to retry
13
26
  * Sort peers by (1) no failed request (2) less active requests, then pick first
14
27
  */
15
- bestPeerToRetryBatch(batch: Batch): PeerIdStr | undefined;
28
+ bestPeerToRetryBatch(batch: Batch): PeerSyncMeta | undefined;
16
29
  /**
17
- * Return peers with 0 or no active requests
30
+ * Return peers with 0 or no active requests that has a higher target slot than this batch and has columns we need.
18
31
  */
19
- idlePeers(): PeerIdStr[];
32
+ idlePeerForBatch(batch: Batch): PeerSyncInfo | undefined;
33
+ private filterPeers;
20
34
  }
21
35
  //# sourceMappingURL=peerBalancer.d.ts.map
@@ -1,14 +1,23 @@
1
1
  import { shuffle } from "../../../util/shuffle.js";
2
2
  import { sortBy } from "../../../util/sortBy.js";
3
+ import { MAX_CONCURRENT_REQUESTS } from "../../constants.js";
4
+ import { RangeSyncType } from "../../utils/remoteSyncType.js";
3
5
  import { BatchStatus } from "../batch.js";
4
6
  /**
5
7
  * Balance and organize peers to perform requests with a SyncChain
6
8
  * Shuffles peers only once on instantiation
7
9
  */
8
10
  export class ChainPeersBalancer {
9
- constructor(peers, batches) {
11
+ /**
12
+ * No need to specify `maxConcurrentRequests` for production code
13
+ * It is used for testing purposes to limit the number of concurrent requests
14
+ */
15
+ constructor(peers, batches, custodyConfig, syncType, maxConcurrentRequests = MAX_CONCURRENT_REQUESTS) {
10
16
  this.activeRequestsByPeer = new Map();
11
17
  this.peers = shuffle(peers);
18
+ this.custodyConfig = custodyConfig;
19
+ this.syncType = syncType;
20
+ this.maxConcurrentRequests = maxConcurrentRequests;
12
21
  // Compute activeRequestsByPeer from all batches internal states
13
22
  for (const batch of batches) {
14
23
  if (batch.state.status === BatchStatus.Downloading) {
@@ -21,20 +30,105 @@ export class ChainPeersBalancer {
21
30
  * Sort peers by (1) no failed request (2) less active requests, then pick first
22
31
  */
23
32
  bestPeerToRetryBatch(batch) {
33
+ if (batch.state.status !== BatchStatus.AwaitingDownload) {
34
+ return;
35
+ }
36
+ const { partialDownload } = batch.state;
37
+ const pendingDataColumns = partialDownload?.pendingDataColumns ?? this.custodyConfig.sampledColumns;
38
+ const eligiblePeers = this.filterPeers(batch, pendingDataColumns, false);
24
39
  const failedPeers = new Set(batch.getFailedPeers());
25
- const sortedBestPeers = sortBy(this.peers, (peer) => (failedPeers.has(peer) ? 1 : 0), // Sort by no failed first = 0
26
- (peer) => this.activeRequestsByPeer.get(peer) ?? 0 // Sort by least active req
40
+ const sortedBestPeers = sortBy(eligiblePeers, ({ syncInfo }) => (failedPeers.has(syncInfo.peerId) ? 1 : 0), // prefer peers without failed requests
41
+ ({ syncInfo }) => this.activeRequestsByPeer.get(syncInfo.peerId) ?? 0, // prefer peers with least active req
42
+ ({ columns }) => -1 * columns // prefer peers with the most columns
27
43
  );
28
- return sortedBestPeers[0];
44
+ if (sortedBestPeers.length > 0) {
45
+ const bestPeer = sortedBestPeers[0];
46
+ // we will use this peer for batch in SyncChain right after this call
47
+ this.activeRequestsByPeer.set(bestPeer.syncInfo.peerId, (this.activeRequestsByPeer.get(bestPeer.syncInfo.peerId) ?? 0) + 1);
48
+ return bestPeer.syncInfo;
49
+ }
50
+ return undefined;
29
51
  }
30
52
  /**
31
- * Return peers with 0 or no active requests
53
+ * Return peers with 0 or no active requests that has a higher target slot than this batch and has columns we need.
32
54
  */
33
- idlePeers() {
34
- return this.peers.filter((peer) => {
35
- const activeRequests = this.activeRequestsByPeer.get(peer);
36
- return activeRequests === undefined || activeRequests === 0;
37
- });
55
+ idlePeerForBatch(batch) {
56
+ if (batch.state.status !== BatchStatus.AwaitingDownload) {
57
+ return;
58
+ }
59
+ const eligiblePeers = this.filterPeers(batch, this.custodyConfig.sampledColumns, true);
60
+ // pick idle peer that has (for pre-fulu they are the same)
61
+ // - earliestAvailableSlot defined
62
+ // - the most columns we need
63
+ const sortedBestPeers = sortBy(eligiblePeers, ({ columns }) => -1 * columns // prefer peers with most columns we need
64
+ );
65
+ const bestPeer = sortedBestPeers[0];
66
+ if (bestPeer != null) {
67
+ // we will use this peer for batch in SyncChain right after this call
68
+ this.activeRequestsByPeer.set(bestPeer.syncInfo.peerId, 1);
69
+ return bestPeer.syncInfo;
70
+ }
71
+ return undefined;
72
+ }
73
+ filterPeers(batch, requestColumns, noActiveRequest) {
74
+ const eligiblePeers = [];
75
+ if (batch.state.status !== BatchStatus.AwaitingDownload) {
76
+ return eligiblePeers;
77
+ }
78
+ for (const peer of this.peers) {
79
+ const { earliestAvailableSlot, custodyGroups, target, peerId } = peer;
80
+ const activeRequest = this.activeRequestsByPeer.get(peerId) ?? 0;
81
+ if (noActiveRequest && activeRequest > 0) {
82
+ // consumer wants to find peer with no active request, but this peer has active request
83
+ continue;
84
+ }
85
+ if (activeRequest >= this.maxConcurrentRequests) {
86
+ // consumer wants to find peer with no more than MAX_CONCURRENT_REQUESTS active requests
87
+ continue;
88
+ }
89
+ if (target.slot < batch.request.startSlot) {
90
+ continue;
91
+ }
92
+ if (batch.isPostFulu() && this.syncType === RangeSyncType.Head) {
93
+ // for head sync, target slot is head slot and each peer may have a different head slot
94
+ // we don't want to retry a batch with a peer that's not as up-to-date as the previous peer
95
+ // see https://github.com/ChainSafe/lodestar/issues/8193
96
+ const blocks = batch.state.partialDownload?.blocks;
97
+ const lastBlock = blocks?.at(-1)?.block;
98
+ const lastBlockSlot = lastBlock?.message?.slot;
99
+ if (lastBlockSlot && lastBlockSlot > target.slot) {
100
+ continue;
101
+ }
102
+ }
103
+ if (!batch.isPostFulu()) {
104
+ // pre-fulu logic, we don't care columns and earliestAvailableSlot
105
+ eligiblePeers.push({ syncInfo: peer, columns: 0, hasEarliestAvailableSlots: false });
106
+ continue;
107
+ }
108
+ // we don't accept peers without earliestAvailableSlot because it may return 0 blocks and we get stuck
109
+ // see https://github.com/ChainSafe/lodestar/issues/8147
110
+ if (earliestAvailableSlot == null) {
111
+ continue;
112
+ }
113
+ if (earliestAvailableSlot > batch.request.startSlot) {
114
+ continue;
115
+ }
116
+ const peerColumns = custodyGroups;
117
+ const columns = peerColumns.reduce((acc, elem) => {
118
+ if (requestColumns.includes(elem)) {
119
+ acc.push(elem);
120
+ }
121
+ return acc;
122
+ }, []);
123
+ if (columns.length > 0) {
124
+ eligiblePeers.push({
125
+ syncInfo: peer,
126
+ columns: columns.length,
127
+ hasEarliestAvailableSlots: earliestAvailableSlot != null,
128
+ });
129
+ }
130
+ }
131
+ return eligiblePeers;
38
132
  }
39
133
  }
40
134
  //# sourceMappingURL=peerBalancer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"peerBalancer.js","sourceRoot":"","sources":["../../../../src/sync/range/utils/peerBalancer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAQ,WAAW,EAAC,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAI7B,YAAY,KAAkB,EAAE,OAAgB;QAFxC,yBAAoB,GAAG,IAAI,GAAG,EAAqB,CAAC;QAG1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAE5B,gEAAgE;QAChE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;gBACnD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAAC,KAAY;QAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,MAAM,CAC5B,IAAI,CAAC,KAAK,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,8BAA8B;QACzE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B;SAC/E,CAAC;QACF,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3D,OAAO,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"peerBalancer.js","sourceRoot":"","sources":["../../../../src/sync/range/utils/peerBalancer.ts"],"names":[],"mappings":"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"}
package/lib/sync/sync.js CHANGED
@@ -28,7 +28,7 @@ export class BeaconSync {
28
28
  const localStatus = this.chain.getStatus();
29
29
  const syncType = getPeerSyncType(localStatus, data.status, this.chain.forkChoice, this.slotImportTolerance);
30
30
  // For metrics only
31
- this.peerSyncType.set(data.peer.toString(), syncType);
31
+ this.peerSyncType.set(data.peer, syncType);
32
32
  if (syncType === PeerSyncType.Advanced) {
33
33
  this.rangeSync.addPeer(data.peer, localStatus, data.status);
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"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"}
@@ -58,12 +58,19 @@ export declare class UnknownBlockSync {
58
58
  */
59
59
  private processBlock;
60
60
  /**
61
- * Fetches the parent of a block by root from a set of shuffled peers.
61
+ * From a set of shuffled peers:
62
+ * - fetch the block
63
+ * - from deneb, fetch all missing blobs
64
+ * - from peerDAS, fetch sampled colmns
65
+ * TODO: this means we only have block root, and nothing else. Consider to reflect this in the function name
62
66
  * Will attempt a max of `MAX_ATTEMPTS_PER_BLOCK` on different peers if connectPeers.length > MAX_ATTEMPTS_PER_BLOCK.
63
67
  * Also verifies the received block root + returns the peer that provided the block for future downscoring.
64
68
  */
65
69
  private fetchUnknownBlockRoot;
66
70
  /**
71
+ * We have partial block input:
72
+ * - we have block but not have all blobs (deneb) or needed columns (fulu)
73
+ * - we don't have block and have some blobs (deneb) or some columns (fulu)
67
74
  * Fetches missing blobs for the blockinput, in future can also pull block is thats also missing
68
75
  * along with the blobs (i.e. only some blobs are available)
69
76
  */