@lodestar/beacon-node 1.43.0-dev.4358217e12 → 1.43.0-dev.4451fec75a

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 (254) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +10 -0
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +45 -2
  6. package/lib/api/impl/beacon/pool/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 +0 -1
  9. package/lib/api/impl/debug/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.d.ts.map +1 -1
  11. package/lib/api/impl/validator/index.js +68 -2
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/chain/blocks/blockInput/blockInput.d.ts +3 -0
  14. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  15. package/lib/chain/blocks/blockInput/blockInput.js +4 -1
  16. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  17. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  18. package/lib/chain/blocks/importBlock.js +16 -31
  19. package/lib/chain/blocks/importBlock.js.map +1 -1
  20. package/lib/chain/blocks/importExecutionPayload.d.ts +6 -1
  21. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  22. package/lib/chain/blocks/importExecutionPayload.js +19 -10
  23. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  24. package/lib/chain/blocks/index.d.ts.map +1 -1
  25. package/lib/chain/blocks/index.js +35 -21
  26. package/lib/chain/blocks/index.js.map +1 -1
  27. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +12 -1
  28. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  29. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +28 -2
  30. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  31. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +17 -0
  32. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  33. package/lib/chain/blocks/types.d.ts +2 -1
  34. package/lib/chain/blocks/types.d.ts.map +1 -1
  35. package/lib/chain/blocks/utils/chainSegment.d.ts +1 -3
  36. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  37. package/lib/chain/blocks/utils/chainSegment.js +34 -23
  38. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  39. package/lib/chain/blocks/verifyBlock.d.ts +2 -1
  40. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  41. package/lib/chain/blocks/verifyBlock.js +30 -12
  42. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  43. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
  44. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  45. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -2
  46. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  47. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
  48. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  49. package/lib/chain/blocks/verifyBlocksSanityChecks.js +16 -7
  50. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  51. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  52. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  53. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +10 -6
  54. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  55. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  56. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +8 -3
  57. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  58. package/lib/chain/chain.d.ts.map +1 -1
  59. package/lib/chain/chain.js +25 -8
  60. package/lib/chain/chain.js.map +1 -1
  61. package/lib/chain/emitter.d.ts +0 -11
  62. package/lib/chain/emitter.d.ts.map +1 -1
  63. package/lib/chain/emitter.js +0 -4
  64. package/lib/chain/emitter.js.map +1 -1
  65. package/lib/chain/errors/proposerPreferences.d.ts +8 -1
  66. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -1
  67. package/lib/chain/errors/proposerPreferences.js +1 -0
  68. package/lib/chain/errors/proposerPreferences.js.map +1 -1
  69. package/lib/chain/initState.d.ts.map +1 -1
  70. package/lib/chain/initState.js +6 -1
  71. package/lib/chain/initState.js.map +1 -1
  72. package/lib/chain/lightClient/index.d.ts.map +1 -1
  73. package/lib/chain/lightClient/index.js +1 -1
  74. package/lib/chain/lightClient/index.js.map +1 -1
  75. package/lib/chain/opPools/payloadAttestationPool.d.ts +2 -1
  76. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  77. package/lib/chain/opPools/payloadAttestationPool.js +52 -10
  78. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  79. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  80. package/lib/chain/prepareNextSlot.js +16 -18
  81. package/lib/chain/prepareNextSlot.js.map +1 -1
  82. package/lib/chain/produceBlock/produceBlockBody.d.ts +12 -3
  83. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  84. package/lib/chain/produceBlock/produceBlockBody.js +33 -20
  85. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  86. package/lib/chain/regen/queued.d.ts.map +1 -1
  87. package/lib/chain/regen/queued.js +1 -4
  88. package/lib/chain/regen/queued.js.map +1 -1
  89. package/lib/chain/regen/regen.d.ts.map +1 -1
  90. package/lib/chain/regen/regen.js +1 -4
  91. package/lib/chain/regen/regen.js.map +1 -1
  92. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +21 -11
  93. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  94. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +70 -20
  95. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  96. package/lib/chain/seenCache/seenProposerPreferences.d.ts +8 -7
  97. package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -1
  98. package/lib/chain/seenCache/seenProposerPreferences.js +11 -10
  99. package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -1
  100. package/lib/chain/validation/executionPayloadBid.js +11 -8
  101. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  102. package/lib/chain/validation/payloadAttestationMessage.d.ts +1 -1
  103. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  104. package/lib/chain/validation/payloadAttestationMessage.js +5 -3
  105. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  106. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  107. package/lib/chain/validation/proposerPreferences.js +39 -17
  108. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  109. package/lib/metrics/metrics/lodestar.d.ts +4 -0
  110. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  111. package/lib/metrics/metrics/lodestar.js +5 -0
  112. package/lib/metrics/metrics/lodestar.js.map +1 -1
  113. package/lib/network/gossip/topic.d.ts +751 -2
  114. package/lib/network/gossip/topic.d.ts.map +1 -1
  115. package/lib/network/interface.d.ts +2 -0
  116. package/lib/network/interface.d.ts.map +1 -1
  117. package/lib/network/network.d.ts +2 -0
  118. package/lib/network/network.d.ts.map +1 -1
  119. package/lib/network/network.js +8 -0
  120. package/lib/network/network.js.map +1 -1
  121. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  122. package/lib/network/processor/gossipHandlers.js +61 -13
  123. package/lib/network/processor/gossipHandlers.js.map +1 -1
  124. package/lib/network/processor/index.js +5 -5
  125. package/lib/network/processor/index.js.map +1 -1
  126. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  127. package/lib/network/reqresp/ReqRespBeaconNode.js +1 -1
  128. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  129. package/lib/network/reqresp/handlers/beaconBlocksByHead.d.ts +9 -0
  130. package/lib/network/reqresp/handlers/beaconBlocksByHead.d.ts.map +1 -0
  131. package/lib/network/reqresp/handlers/beaconBlocksByHead.js +61 -0
  132. package/lib/network/reqresp/handlers/beaconBlocksByHead.js.map +1 -0
  133. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  134. package/lib/network/reqresp/handlers/index.js +5 -0
  135. package/lib/network/reqresp/handlers/index.js.map +1 -1
  136. package/lib/network/reqresp/interface.d.ts +1 -1
  137. package/lib/network/reqresp/interface.js +1 -1
  138. package/lib/network/reqresp/protocols.d.ts +1 -0
  139. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  140. package/lib/network/reqresp/protocols.js +5 -0
  141. package/lib/network/reqresp/protocols.js.map +1 -1
  142. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  143. package/lib/network/reqresp/rateLimit.js +4 -0
  144. package/lib/network/reqresp/rateLimit.js.map +1 -1
  145. package/lib/network/reqresp/score.d.ts.map +1 -1
  146. package/lib/network/reqresp/score.js +1 -0
  147. package/lib/network/reqresp/score.js.map +1 -1
  148. package/lib/network/reqresp/types.d.ts +3 -0
  149. package/lib/network/reqresp/types.d.ts.map +1 -1
  150. package/lib/network/reqresp/types.js +3 -0
  151. package/lib/network/reqresp/types.js.map +1 -1
  152. package/lib/node/nodejs.js +2 -2
  153. package/lib/node/nodejs.js.map +1 -1
  154. package/lib/node/notifier.js +1 -7
  155. package/lib/node/notifier.js.map +1 -1
  156. package/lib/sync/constants.d.ts +7 -1
  157. package/lib/sync/constants.d.ts.map +1 -1
  158. package/lib/sync/constants.js +7 -4
  159. package/lib/sync/constants.js.map +1 -1
  160. package/lib/sync/range/batch.d.ts +43 -6
  161. package/lib/sync/range/batch.d.ts.map +1 -1
  162. package/lib/sync/range/batch.js +243 -44
  163. package/lib/sync/range/batch.js.map +1 -1
  164. package/lib/sync/range/chain.d.ts +16 -2
  165. package/lib/sync/range/chain.d.ts.map +1 -1
  166. package/lib/sync/range/chain.js +100 -9
  167. package/lib/sync/range/chain.js.map +1 -1
  168. package/lib/sync/range/range.d.ts.map +1 -1
  169. package/lib/sync/range/range.js +54 -5
  170. package/lib/sync/range/range.js.map +1 -1
  171. package/lib/sync/range/utils/peerBalancer.d.ts +2 -1
  172. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  173. package/lib/sync/range/utils/peerBalancer.js +8 -4
  174. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  175. package/lib/sync/sync.d.ts.map +1 -1
  176. package/lib/sync/sync.js +13 -0
  177. package/lib/sync/sync.js.map +1 -1
  178. package/lib/sync/unknownBlock.d.ts +7 -2
  179. package/lib/sync/unknownBlock.d.ts.map +1 -1
  180. package/lib/sync/unknownBlock.js +127 -57
  181. package/lib/sync/unknownBlock.js.map +1 -1
  182. package/lib/sync/utils/downloadByRange.d.ts +36 -9
  183. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  184. package/lib/sync/utils/downloadByRange.js +106 -42
  185. package/lib/sync/utils/downloadByRange.js.map +1 -1
  186. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  187. package/lib/sync/utils/downloadByRoot.js +10 -0
  188. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  189. package/lib/sync/utils/rateLimit.d.ts +2 -0
  190. package/lib/sync/utils/rateLimit.d.ts.map +1 -0
  191. package/lib/sync/utils/rateLimit.js +15 -0
  192. package/lib/sync/utils/rateLimit.js.map +1 -0
  193. package/lib/util/sszBytes.d.ts.map +1 -1
  194. package/lib/util/sszBytes.js +8 -6
  195. package/lib/util/sszBytes.js.map +1 -1
  196. package/package.json +15 -16
  197. package/src/api/impl/beacon/blocks/index.ts +13 -0
  198. package/src/api/impl/beacon/pool/index.ts +83 -1
  199. package/src/api/impl/debug/index.ts +0 -1
  200. package/src/api/impl/validator/index.ts +82 -1
  201. package/src/chain/blocks/blockInput/blockInput.ts +4 -1
  202. package/src/chain/blocks/importBlock.ts +16 -50
  203. package/src/chain/blocks/importExecutionPayload.ts +32 -15
  204. package/src/chain/blocks/index.ts +32 -15
  205. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +37 -3
  206. package/src/chain/blocks/payloadEnvelopeInput/types.ts +18 -0
  207. package/src/chain/blocks/types.ts +2 -1
  208. package/src/chain/blocks/utils/chainSegment.ts +35 -24
  209. package/src/chain/blocks/verifyBlock.ts +45 -13
  210. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +6 -4
  211. package/src/chain/blocks/verifyBlocksSanityChecks.ts +16 -6
  212. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +14 -6
  213. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +7 -4
  214. package/src/chain/chain.ts +29 -7
  215. package/src/chain/emitter.ts +0 -11
  216. package/src/chain/errors/proposerPreferences.ts +9 -1
  217. package/src/chain/initState.ts +9 -1
  218. package/src/chain/lightClient/index.ts +6 -6
  219. package/src/chain/opPools/payloadAttestationPool.ts +59 -10
  220. package/src/chain/prepareNextSlot.ts +21 -29
  221. package/src/chain/produceBlock/produceBlockBody.ts +41 -25
  222. package/src/chain/regen/queued.ts +2 -7
  223. package/src/chain/regen/regen.ts +2 -7
  224. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +90 -24
  225. package/src/chain/seenCache/seenProposerPreferences.ts +14 -11
  226. package/src/chain/validation/executionPayloadBid.ts +11 -8
  227. package/src/chain/validation/payloadAttestationMessage.ts +6 -4
  228. package/src/chain/validation/proposerPreferences.ts +37 -18
  229. package/src/metrics/metrics/lodestar.ts +6 -0
  230. package/src/network/interface.ts +2 -0
  231. package/src/network/network.ts +23 -0
  232. package/src/network/processor/gossipHandlers.ts +75 -14
  233. package/src/network/processor/index.ts +5 -5
  234. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -0
  235. package/src/network/reqresp/handlers/beaconBlocksByHead.ts +91 -0
  236. package/src/network/reqresp/handlers/index.ts +5 -0
  237. package/src/network/reqresp/interface.ts +1 -1
  238. package/src/network/reqresp/protocols.ts +6 -0
  239. package/src/network/reqresp/rateLimit.ts +4 -0
  240. package/src/network/reqresp/score.ts +1 -0
  241. package/src/network/reqresp/types.ts +5 -0
  242. package/src/node/nodejs.ts +2 -2
  243. package/src/node/notifier.ts +1 -8
  244. package/src/sync/constants.ts +8 -4
  245. package/src/sync/range/batch.ts +309 -51
  246. package/src/sync/range/chain.ts +119 -10
  247. package/src/sync/range/range.ts +68 -5
  248. package/src/sync/range/utils/peerBalancer.ts +9 -3
  249. package/src/sync/sync.ts +13 -1
  250. package/src/sync/unknownBlock.ts +157 -60
  251. package/src/sync/utils/downloadByRange.ts +174 -44
  252. package/src/sync/utils/downloadByRoot.ts +12 -0
  253. package/src/sync/utils/rateLimit.ts +16 -0
  254. package/src/util/sszBytes.ts +8 -6
@@ -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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"}
@@ -54,6 +54,7 @@ export declare class BlockInputSync {
54
54
  private readonly maxPendingBlocks;
55
55
  private subscribedToNetworkEvents;
56
56
  private peerBalancer;
57
+ private rateLimitBackoffTimeout;
57
58
  constructor(config: ChainForkConfig, network: INetwork, chain: IBeaconChain, logger: Logger, metrics: Metrics | null, opts?: SyncOptions | undefined);
58
59
  subscribeToNetwork(): void;
59
60
  unsubscribeFromNetwork(): void;
@@ -73,13 +74,11 @@ export declare class BlockInputSync {
73
74
  * Process an unknownBlockParent event and register the block in `pendingBlocks` Map.
74
75
  */
75
76
  private onUnknownParent;
76
- private onEnvelopeUnknownBlock;
77
77
  private onBlockImported;
78
78
  private onPayloadImported;
79
79
  private addByRootHex;
80
80
  private addByBlockInput;
81
81
  private addByPayloadRootHex;
82
- private addByPayloadEnvelope;
83
82
  private addByPayloadInput;
84
83
  private onPeerConnected;
85
84
  private onPeerDisconnected;
@@ -94,6 +93,8 @@ export declare class BlockInputSync {
94
93
  * Gather tip parent blocks with unknown parent and do a search for all of them
95
94
  */
96
95
  private triggerUnknownBlockSearch;
96
+ private scheduleRateLimitBackoffRetry;
97
+ private clearRateLimitBackoffTimer;
97
98
  private downloadBlock;
98
99
  private processReadyBlock;
99
100
  private reconcilePayloadEnvelope;
@@ -120,10 +121,13 @@ export declare class BlockInputSync {
120
121
  export declare class UnknownBlockPeerBalancer {
121
122
  readonly peersMeta: Map<PeerIdStr, PeerSyncMeta>;
122
123
  readonly activeRequests: Map<PeerIdStr, number>;
124
+ readonly rateLimitedUntilByPeer: Map<PeerIdStr, number>;
123
125
  constructor();
124
126
  /** Trigger on each peer re-status */
125
127
  onPeerConnected(peerId: PeerIdStr, syncMeta: PeerSyncMeta): void;
126
128
  onPeerDisconnected(peerId: PeerIdStr): void;
129
+ onRateLimited(peerId: PeerIdStr, rateLimitedUntilMs: number): void;
130
+ getNextRateLimitRetryAt(pendingColumns?: Set<number>, excludedPeers?: Set<PeerIdStr>): number | null;
127
131
  /**
128
132
  * called from fetchBlockInput() where we only have block root and nothing else
129
133
  * excludedPeers are the peers that we requested already so we don't want to try again
@@ -141,5 +145,6 @@ export declare class UnknownBlockPeerBalancer {
141
145
  onRequestCompleted(peerId: PeerIdStr): void;
142
146
  getTotalActiveRequests(): number;
143
147
  private filterPeers;
148
+ private peerHasPendingColumns;
144
149
  }
145
150
  //# sourceMappingURL=unknownBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unknownBlock.d.ts","sourceRoot":"","sources":["../../src/sync/unknownBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unknownBlock.d.ts","sourceRoot":"","sources":["../../src/sync/unknownBlock.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ import { MAX_CONCURRENT_REQUESTS } from "./constants.js";
19
19
  import { PendingBlockInputStatus, PendingBlockType, PendingPayloadInputStatus, getBlockInputSyncCacheItemRootHex, getBlockInputSyncCacheItemSlot, getPayloadSyncCacheItemRootHex, getPayloadSyncCacheItemSlot, isPendingBlockInput, isPendingPayloadEnvelope, isPendingPayloadInput, } from "./types.js";
20
20
  import { DownloadByRootError, downloadByRoot } from "./utils/downloadByRoot.js";
21
21
  import { getAllDescendantBlocks, getUnknownAndAncestorBlocks } from "./utils/pendingBlocksTree.js";
22
+ import { getRateLimitedUntilMs } from "./utils/rateLimit.js";
22
23
  const MAX_ATTEMPTS_PER_BLOCK = 5;
23
24
  const MAX_KNOWN_BAD_BLOCKS = 500;
24
25
  const MAX_PENDING_BLOCKS = 100;
@@ -30,6 +31,12 @@ var FetchResult;
30
31
  FetchResult["FailureTriedAllPeers"] = "failure_tried_all_peers";
31
32
  FetchResult["FailureMaxAttempts"] = "failure_max_attempts";
32
33
  })(FetchResult || (FetchResult = {}));
34
+ class UnknownBlockRateLimitedError extends Error {
35
+ constructor(message) {
36
+ super(message);
37
+ this.name = "UnknownBlockRateLimitedError";
38
+ }
39
+ }
33
40
  /**
34
41
  * BlockInputSync is a class that handles ReqResp to find blocks and data related to a specific blockRoot. The
35
42
  * blockRoot may have been found via object gossip, or the API. Gossip objects that can trigger a search are block,
@@ -79,6 +86,7 @@ export class BlockInputSync {
79
86
  maxPendingBlocks;
80
87
  subscribedToNetworkEvents = false;
81
88
  peerBalancer;
89
+ rateLimitBackoffTimeout;
82
90
  constructor(config, network, chain, logger, metrics, opts) {
83
91
  this.config = config;
84
92
  this.network = network;
@@ -107,7 +115,6 @@ export class BlockInputSync {
107
115
  this.chain.emitter.on(ChainEvent.incompleteBlockInput, this.onIncompleteBlockInput);
108
116
  this.chain.emitter.on(ChainEvent.incompletePayloadEnvelope, this.onIncompletePayloadEnvelope);
109
117
  this.chain.emitter.on(ChainEvent.blockUnknownParent, this.onUnknownParent);
110
- this.chain.emitter.on(ChainEvent.envelopeUnknownBlock, this.onEnvelopeUnknownBlock);
111
118
  this.chain.emitter.on(routes.events.EventType.block, this.onBlockImported);
112
119
  this.chain.emitter.on(routes.events.EventType.executionPayload, this.onPayloadImported);
113
120
  this.network.events.on(NetworkEvent.peerConnected, this.onPeerConnected);
@@ -117,12 +124,12 @@ export class BlockInputSync {
117
124
  }
118
125
  unsubscribeFromNetwork() {
119
126
  this.logger.verbose("BlockInputSync disabled.");
127
+ this.clearRateLimitBackoffTimer();
120
128
  this.chain.emitter.off(ChainEvent.unknownBlockRoot, this.onUnknownBlockRoot);
121
129
  this.chain.emitter.off(ChainEvent.unknownEnvelopeBlockRoot, this.onUnknownEnvelopeBlockRoot);
122
130
  this.chain.emitter.off(ChainEvent.incompleteBlockInput, this.onIncompleteBlockInput);
123
131
  this.chain.emitter.off(ChainEvent.incompletePayloadEnvelope, this.onIncompletePayloadEnvelope);
124
132
  this.chain.emitter.off(ChainEvent.blockUnknownParent, this.onUnknownParent);
125
- this.chain.emitter.off(ChainEvent.envelopeUnknownBlock, this.onEnvelopeUnknownBlock);
126
133
  this.chain.emitter.off(routes.events.EventType.block, this.onBlockImported);
127
134
  this.chain.emitter.off(routes.events.EventType.executionPayload, this.onPayloadImported);
128
135
  this.network.events.off(NetworkEvent.peerConnected, this.onPeerConnected);
@@ -220,19 +227,6 @@ export class BlockInputSync {
220
227
  this.logger.debug("Error handling unknownParent event", {}, e);
221
228
  }
222
229
  };
223
- onEnvelopeUnknownBlock = (data) => {
224
- try {
225
- const blockRootHex = toRootHex(data.envelope.message.beaconBlockRoot);
226
- this.addByRootHex(blockRootHex, data.peer);
227
- this.addByPayloadEnvelope(data.envelope, data.peer);
228
- this.triggerUnknownBlockSearch();
229
- this.metrics?.blockInputSync.requests.inc({ type: PendingBlockType.UNKNOWN_DATA });
230
- this.metrics?.blockInputSync.source.inc({ source: data.source });
231
- }
232
- catch (e) {
233
- this.logger.debug("Error handling envelopeUnknownBlock event", {}, e);
234
- }
235
- };
236
230
  onBlockImported = () => {
237
231
  if (this.pendingPayloads.size > 0) {
238
232
  this.triggerUnknownBlockSearch();
@@ -322,38 +316,6 @@ export class BlockInputSync {
322
316
  }
323
317
  return added;
324
318
  };
325
- addByPayloadEnvelope = (envelope, peerIdStr) => {
326
- const rootHex = toRootHex(envelope.message.beaconBlockRoot);
327
- const existingPendingPayload = this.pendingPayloads.get(rootHex);
328
- let pendingPayload = this.pendingPayloads.get(rootHex);
329
- if (!pendingPayload || !isPendingPayloadEnvelope(pendingPayload)) {
330
- pendingPayload = {
331
- status: PendingPayloadInputStatus.waitingForBlock,
332
- envelope,
333
- peerIdStrings: new Set(existingPendingPayload?.peerIdStrings ?? []),
334
- timeAddedSec: existingPendingPayload?.timeAddedSec ?? Date.now() / 1000,
335
- };
336
- this.pendingPayloads.set(rootHex, pendingPayload);
337
- this.logger.verbose("Added payload envelope to BlockInputSync.pendingPayloads", {
338
- slot: envelope.message.payload.slotNumber,
339
- root: rootHex,
340
- });
341
- }
342
- else {
343
- this.logger.debug("Overwriting pending payload envelope for root already waiting for block", {
344
- slot: envelope.message.payload.slotNumber,
345
- root: rootHex,
346
- });
347
- pendingPayload.envelope = envelope;
348
- }
349
- if (peerIdStr) {
350
- pendingPayload.peerIdStrings.add(peerIdStr);
351
- }
352
- const prunedItemCount = pruneSetToMax(this.pendingPayloads, this.maxPendingBlocks);
353
- if (prunedItemCount > 0) {
354
- this.logger.verbose(`Pruned ${prunedItemCount} items from BlockInputSync.pendingPayloads`);
355
- }
356
- };
357
319
  addByPayloadInput = (payloadInput, peerIdStr, envelope) => {
358
320
  const pendingPayload = this.toPendingPayloadInput(payloadInput, this.pendingPayloads.get(payloadInput.blockRootHex), envelope);
359
321
  if (peerIdStr) {
@@ -379,6 +341,7 @@ export class BlockInputSync {
379
341
  onPeerDisconnected = (data) => {
380
342
  const peerId = data.peer;
381
343
  this.peerBalancer.onPeerDisconnected(peerId);
344
+ this.scheduleRateLimitBackoffRetry();
382
345
  };
383
346
  /**
384
347
  * Post-gloas, a locally complete block can still be blocked on its parent's execution payload lineage.
@@ -469,7 +432,7 @@ export class BlockInputSync {
469
432
  */
470
433
  triggerUnknownBlockSearch = () => {
471
434
  // Cheap early stop to prevent calling the network.getConnectedPeers()
472
- if (this.pendingBlocks.size === 0 && this.pendingPayloads.size === 0) {
435
+ if (!this.subscribedToNetworkEvents || (this.pendingBlocks.size === 0 && this.pendingPayloads.size === 0)) {
473
436
  return;
474
437
  }
475
438
  // If the node loses all peers with pending unknown blocks or payloads, the sync will stall
@@ -547,6 +510,28 @@ export class BlockInputSync {
547
510
  this.triggerUnknownBlockSearch();
548
511
  }
549
512
  };
513
+ scheduleRateLimitBackoffRetry() {
514
+ this.clearRateLimitBackoffTimer();
515
+ if (!this.subscribedToNetworkEvents || (this.pendingBlocks.size === 0 && this.pendingPayloads.size === 0)) {
516
+ return;
517
+ }
518
+ const now = Date.now();
519
+ const retryAt = this.peerBalancer.getNextRateLimitRetryAt();
520
+ if (retryAt === null) {
521
+ return;
522
+ }
523
+ this.rateLimitBackoffTimeout = setTimeout(() => {
524
+ this.rateLimitBackoffTimeout = undefined;
525
+ this.triggerUnknownBlockSearch();
526
+ this.scheduleRateLimitBackoffRetry();
527
+ }, Math.max(0, retryAt - now));
528
+ }
529
+ clearRateLimitBackoffTimer() {
530
+ if (this.rateLimitBackoffTimeout !== undefined) {
531
+ clearTimeout(this.rateLimitBackoffTimeout);
532
+ this.rateLimitBackoffTimeout = undefined;
533
+ }
534
+ }
550
535
  async downloadBlock(block) {
551
536
  if (block.status !== PendingBlockInputStatus.pending) {
552
537
  return;
@@ -612,6 +597,15 @@ export class BlockInputSync {
612
597
  }
613
598
  }
614
599
  else {
600
+ if (res.err instanceof UnknownBlockRateLimitedError) {
601
+ const pendingBlock = this.pendingBlocks.get(rootHex);
602
+ if (pendingBlock) {
603
+ pendingBlock.status = PendingBlockInputStatus.pending;
604
+ }
605
+ this.logger.debug("Deferring unknown block download due to peer rate limit", logCtx, res.err);
606
+ this.scheduleRateLimitBackoffRetry();
607
+ return;
608
+ }
615
609
  this.metrics?.blockInputSync.downloadedBlocksError.inc();
616
610
  this.logger.debug("Ignoring unknown block root after many failed downloads", logCtx, res.err);
617
611
  this.removeAndDownScoreAllDescendants(block);
@@ -876,12 +870,16 @@ export class BlockInputSync {
876
870
  : this.chain.seenPayloadEnvelopeInputCache.get(rootHex);
877
871
  let envelope = payloadInput?.hasPayloadEnvelope() ? payloadInput.getPayloadEnvelope() : undefined;
878
872
  let i = 0;
873
+ let deferredByRateLimit = false;
879
874
  while (i++ < this.getMaxDownloadAttempts()) {
880
875
  const pendingColumns = payloadInput?.hasAllData()
881
876
  ? new Set()
882
877
  : new Set(payloadInput?.getMissingSampledColumnMeta().missing ?? []);
883
878
  const peerMeta = this.peerBalancer.bestPeerForPendingColumns(pendingColumns, excludedPeers);
884
879
  if (peerMeta === null) {
880
+ if (this.peerBalancer.getNextRateLimitRetryAt(pendingColumns, excludedPeers) !== null) {
881
+ throw new UnknownBlockRateLimitedError(`Error fetching payload by root slot=${slot} root=${rootHex} after ${i}: peers with needed columns are rate-limited`);
882
+ }
885
883
  throw Error(`Error fetching payload by root slot=${slot} root=${rootHex} after ${i}: cannot find peer with needed columns=${prettyPrintIndices(Array.from(pendingColumns))}`);
886
884
  }
887
885
  const { peerId, client: peerClient } = peerMeta;
@@ -943,7 +941,13 @@ export class BlockInputSync {
943
941
  }
944
942
  catch (e) {
945
943
  this.logger.debug("Error downloading payload in BlockInputSync.fetchPayloadInput", { slot, rootHex, attempt: i, peer: peerId, peerClient }, e);
946
- if (e instanceof RequestError) {
944
+ const rateLimitedUntilMs = getRateLimitedUntilMs(e);
945
+ if (rateLimitedUntilMs !== null) {
946
+ deferredByRateLimit = true;
947
+ this.peerBalancer.onRateLimited(peerId, rateLimitedUntilMs);
948
+ this.scheduleRateLimitBackoffRetry();
949
+ }
950
+ else if (e instanceof RequestError) {
947
951
  switch (e.type.code) {
948
952
  case RequestErrorCode.REQUEST_RATE_LIMITED:
949
953
  case RequestErrorCode.REQUEST_TIMEOUT:
@@ -961,6 +965,9 @@ export class BlockInputSync {
961
965
  this.peerBalancer.onRequestCompleted(peerId);
962
966
  }
963
967
  }
968
+ if (deferredByRateLimit && this.peerBalancer.getNextRateLimitRetryAt() !== null) {
969
+ throw new UnknownBlockRateLimitedError(`Error fetching payload with slot=${slot} root=${rootHex} after ${i - 1} attempts: peers are rate-limited`);
970
+ }
964
971
  throw Error(`Error fetching payload with slot=${slot} root=${rootHex} after ${i - 1} attempts.`);
965
972
  }
966
973
  async fetchExecutionPayloadEnvelope(peerIdStr, blockRoot, rootHex) {
@@ -1017,12 +1024,16 @@ export class BlockInputSync {
1017
1024
  this.metrics?.blockInputSync.fetchBegin.observe(this.chain.clock.secFromSlot(slot, fetchStartSec));
1018
1025
  }
1019
1026
  let i = 0;
1027
+ let deferredByRateLimit = false;
1020
1028
  while (i++ < this.getMaxDownloadAttempts()) {
1021
1029
  const pendingColumns = isPendingBlockInput(cacheItem) && isBlockInputColumns(cacheItem.blockInput)
1022
1030
  ? new Set(cacheItem.blockInput.getMissingSampledColumnMeta().missing)
1023
1031
  : defaultPendingColumns;
1024
1032
  const peerMeta = this.peerBalancer.bestPeerForPendingColumns(pendingColumns, excludedPeers);
1025
1033
  if (peerMeta === null) {
1034
+ if (this.peerBalancer.getNextRateLimitRetryAt(pendingColumns, excludedPeers) !== null) {
1035
+ throw new UnknownBlockRateLimitedError(`Error fetching UnknownBlockRoot slot=${slot} root=${rootHex} after ${i}: peers with needed columns are rate-limited`);
1036
+ }
1026
1037
  // no more peer with needed columns to try, throw error
1027
1038
  const message = `Error fetching UnknownBlockRoot slot=${slot} root=${rootHex} after ${i}: cannot find peer with needed columns=${prettyPrintIndices(Array.from(pendingColumns))}`;
1028
1039
  this.metrics?.blockInputSync.fetchTimeSec.observe({ result: FetchResult.FailureTriedAllPeers }, Date.now() / 1000 - fetchStartSec);
@@ -1070,14 +1081,24 @@ export class BlockInputSync {
1070
1081
  else if (e instanceof RequestError) {
1071
1082
  // should look into req_resp metrics in this case
1072
1083
  downloadByRootMetrics?.error.inc({ code: "req_resp", client: peerClient });
1073
- switch (e.type.code) {
1074
- case RequestErrorCode.REQUEST_RATE_LIMITED:
1075
- case RequestErrorCode.REQUEST_TIMEOUT:
1076
- // do not exclude peer for these errors
1077
- break;
1078
- default:
1079
- excludedPeers.add(peerId);
1080
- break;
1084
+ const rateLimitedUntilMs = getRateLimitedUntilMs(e);
1085
+ if (rateLimitedUntilMs !== null) {
1086
+ deferredByRateLimit = true;
1087
+ this.peerBalancer.onRateLimited(peerId, rateLimitedUntilMs);
1088
+ this.scheduleRateLimitBackoffRetry();
1089
+ }
1090
+ else {
1091
+ switch (e.type.code) {
1092
+ case RequestErrorCode.REQUEST_RATE_LIMITED:
1093
+ case RequestErrorCode.RESP_RATE_LIMITED:
1094
+ case RequestErrorCode.REQUEST_SELF_RATE_LIMITED:
1095
+ case RequestErrorCode.REQUEST_TIMEOUT:
1096
+ // do not exclude peer for these errors
1097
+ break;
1098
+ default:
1099
+ excludedPeers.add(peerId);
1100
+ break;
1101
+ }
1081
1102
  }
1082
1103
  }
1083
1104
  else {
@@ -1103,6 +1124,9 @@ export class BlockInputSync {
1103
1124
  }
1104
1125
  } // end while loop over peers
1105
1126
  const message = `Error fetching BlockInput with slot=${slot} root=${rootHex} after ${i - 1} attempts.`;
1127
+ if (deferredByRateLimit && this.peerBalancer.getNextRateLimitRetryAt() !== null) {
1128
+ throw new UnknownBlockRateLimitedError(`${message} Peers are rate-limited.`);
1129
+ }
1106
1130
  if (!isPendingBlockInput(cacheItem)) {
1107
1131
  throw Error(`${message} No block and no data was found.`);
1108
1132
  }
@@ -1210,9 +1234,11 @@ export class BlockInputSync {
1210
1234
  export class UnknownBlockPeerBalancer {
1211
1235
  peersMeta;
1212
1236
  activeRequests;
1237
+ rateLimitedUntilByPeer;
1213
1238
  constructor() {
1214
1239
  this.peersMeta = new Map();
1215
1240
  this.activeRequests = new Map();
1241
+ this.rateLimitedUntilByPeer = new Map();
1216
1242
  }
1217
1243
  /** Trigger on each peer re-status */
1218
1244
  onPeerConnected(peerId, syncMeta) {
@@ -1224,6 +1250,33 @@ export class UnknownBlockPeerBalancer {
1224
1250
  onPeerDisconnected(peerId) {
1225
1251
  this.peersMeta.delete(peerId);
1226
1252
  this.activeRequests.delete(peerId);
1253
+ this.rateLimitedUntilByPeer.delete(peerId);
1254
+ }
1255
+ onRateLimited(peerId, rateLimitedUntilMs) {
1256
+ this.rateLimitedUntilByPeer.set(peerId, rateLimitedUntilMs);
1257
+ }
1258
+ getNextRateLimitRetryAt(pendingColumns, excludedPeers) {
1259
+ const now = Date.now();
1260
+ let retryAt = null;
1261
+ for (const [peerId, rateLimitedUntil] of this.rateLimitedUntilByPeer.entries()) {
1262
+ if (rateLimitedUntil <= now) {
1263
+ this.rateLimitedUntilByPeer.delete(peerId);
1264
+ continue;
1265
+ }
1266
+ if (excludedPeers?.has(peerId)) {
1267
+ continue;
1268
+ }
1269
+ const syncMeta = this.peersMeta.get(peerId);
1270
+ if (syncMeta === undefined) {
1271
+ this.rateLimitedUntilByPeer.delete(peerId);
1272
+ continue;
1273
+ }
1274
+ if (pendingColumns !== undefined && !this.peerHasPendingColumns(syncMeta, pendingColumns)) {
1275
+ continue;
1276
+ }
1277
+ retryAt = Math.min(retryAt ?? rateLimitedUntil, rateLimitedUntil);
1278
+ }
1279
+ return retryAt;
1227
1280
  }
1228
1281
  /**
1229
1282
  * called from fetchBlockInput() where we only have block root and nothing else
@@ -1263,6 +1316,7 @@ export class UnknownBlockPeerBalancer {
1263
1316
  return totalActiveRequests;
1264
1317
  }
1265
1318
  filterPeers(pendingDataColumns, excludedPeers) {
1319
+ const now = Date.now();
1266
1320
  let maxColumnCount = 0;
1267
1321
  const considerPeers = [];
1268
1322
  for (const [peerId, syncMeta] of this.peersMeta.entries()) {
@@ -1270,11 +1324,21 @@ export class UnknownBlockPeerBalancer {
1270
1324
  // made request to this peer already
1271
1325
  continue;
1272
1326
  }
1327
+ const rateLimitedUntil = this.rateLimitedUntilByPeer.get(peerId);
1328
+ if (rateLimitedUntil !== undefined) {
1329
+ if (now < rateLimitedUntil) {
1330
+ continue;
1331
+ }
1332
+ this.rateLimitedUntilByPeer.delete(peerId);
1333
+ }
1273
1334
  const activeRequests = this.activeRequests.get(peerId) ?? 0;
1274
1335
  if (activeRequests >= MAX_CONCURRENT_REQUESTS) {
1275
1336
  // should return peer with no more than MAX_CONCURRENT_REQUESTS active requests
1276
1337
  continue;
1277
1338
  }
1339
+ if (!this.peerHasPendingColumns(syncMeta, pendingDataColumns)) {
1340
+ continue;
1341
+ }
1278
1342
  if (pendingDataColumns.size === 0) {
1279
1343
  considerPeers.push({ peerId, columnCount: 0 });
1280
1344
  continue;
@@ -1304,5 +1368,11 @@ export class UnknownBlockPeerBalancer {
1304
1368
  }
1305
1369
  return eligiblePeers;
1306
1370
  }
1371
+ peerHasPendingColumns(syncMeta, pendingDataColumns) {
1372
+ if (pendingDataColumns.size === 0) {
1373
+ return true;
1374
+ }
1375
+ return syncMeta.custodyColumns.some((column) => pendingDataColumns.has(column));
1376
+ }
1307
1377
  }
1308
1378
  //# sourceMappingURL=unknownBlock.js.map