@lodestar/beacon-node 1.51.0-dev.bdcac30ee0 → 1.51.0-dev.be91fc5558

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 (313) hide show
  1. package/lib/api/impl/api.js +1 -1
  2. package/lib/api/impl/api.js.map +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts +2 -1
  4. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/blocks/index.js +29 -34
  6. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  7. package/lib/api/impl/beacon/index.d.ts +2 -1
  8. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/index.js +2 -2
  10. package/lib/api/impl/beacon/index.js.map +1 -1
  11. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/pool/index.js +5 -2
  13. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/utils.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  16. package/lib/api/impl/validator/index.d.ts +6 -0
  17. package/lib/api/impl/validator/index.d.ts.map +1 -1
  18. package/lib/api/impl/validator/index.js +42 -26
  19. package/lib/api/impl/validator/index.js.map +1 -1
  20. package/lib/api/options.d.ts +2 -0
  21. package/lib/api/options.d.ts.map +1 -1
  22. package/lib/api/options.js +1 -0
  23. package/lib/api/options.js.map +1 -1
  24. package/lib/chain/GetBlobsTracker.d.ts +11 -0
  25. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  26. package/lib/chain/GetBlobsTracker.js +85 -27
  27. package/lib/chain/GetBlobsTracker.js.map +1 -1
  28. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  29. package/lib/chain/archiveStore/archiveStore.js +1 -0
  30. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  31. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  32. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  33. package/lib/chain/archiveStore/utils/archiveBlocks.js +61 -97
  34. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  35. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  36. package/lib/chain/blocks/importBlock.js +6 -5
  37. package/lib/chain/blocks/importBlock.js.map +1 -1
  38. package/lib/chain/blocks/importExecutionPayload.d.ts +6 -11
  39. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  40. package/lib/chain/blocks/importExecutionPayload.js +8 -15
  41. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  42. package/lib/chain/blocks/index.js +2 -2
  43. package/lib/chain/blocks/index.js.map +1 -1
  44. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  45. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  46. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  47. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  48. package/lib/chain/blocks/types.d.ts +4 -1
  49. package/lib/chain/blocks/types.d.ts.map +1 -1
  50. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  51. package/lib/chain/blocks/verifyBlock.js +18 -7
  52. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  53. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  54. package/lib/chain/blocks/verifyBlocksDataAvailability.js +8 -1
  55. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  56. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  57. package/lib/chain/blocks/verifyBlocksSignatures.js +7 -5
  58. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  59. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  60. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  61. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  62. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  63. package/lib/chain/bls/interface.d.ts +2 -0
  64. package/lib/chain/bls/interface.d.ts.map +1 -1
  65. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  66. package/lib/chain/bls/multithread/index.js +13 -11
  67. package/lib/chain/bls/multithread/index.js.map +1 -1
  68. package/lib/chain/bls/multithread/types.d.ts +1 -1
  69. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  70. package/lib/chain/bls/multithread/worker.js +1 -1
  71. package/lib/chain/bls/multithread/worker.js.map +1 -1
  72. package/lib/chain/bls/singleThread.js +1 -1
  73. package/lib/chain/bls/singleThread.js.map +1 -1
  74. package/lib/chain/bls/utils.js +1 -1
  75. package/lib/chain/bls/utils.js.map +1 -1
  76. package/lib/chain/chain.d.ts +1 -1
  77. package/lib/chain/chain.d.ts.map +1 -1
  78. package/lib/chain/chain.js +4 -4
  79. package/lib/chain/chain.js.map +1 -1
  80. package/lib/chain/errors/blockError.d.ts +1 -1
  81. package/lib/chain/errors/blockError.d.ts.map +1 -1
  82. package/lib/chain/errors/blockError.js +1 -1
  83. package/lib/chain/errors/blockError.js.map +1 -1
  84. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  85. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  86. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  87. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  88. package/lib/chain/interface.d.ts +2 -3
  89. package/lib/chain/interface.d.ts.map +1 -1
  90. package/lib/chain/interface.js.map +1 -1
  91. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  92. package/lib/chain/opPools/aggregatedAttestationPool.js +23 -10
  93. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  94. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  95. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  96. package/lib/chain/opPools/attestationPool.js +15 -4
  97. package/lib/chain/opPools/attestationPool.js.map +1 -1
  98. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  99. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  100. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  101. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  102. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  103. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  104. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  105. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  106. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  107. package/lib/chain/opPools/utils.d.ts +1 -1
  108. package/lib/chain/opPools/utils.d.ts.map +1 -1
  109. package/lib/chain/opPools/utils.js +1 -1
  110. package/lib/chain/opPools/utils.js.map +1 -1
  111. package/lib/chain/options.d.ts +0 -1
  112. package/lib/chain/options.d.ts.map +1 -1
  113. package/lib/chain/options.js +0 -1
  114. package/lib/chain/options.js.map +1 -1
  115. package/lib/chain/regen/interface.d.ts +0 -1
  116. package/lib/chain/regen/interface.d.ts.map +1 -1
  117. package/lib/chain/regen/interface.js +0 -1
  118. package/lib/chain/regen/interface.js.map +1 -1
  119. package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
  120. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  121. package/lib/chain/validation/executionPayloadBid.js +13 -166
  122. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  123. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  124. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  125. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  126. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  127. package/lib/db/beacon.d.ts +7 -0
  128. package/lib/db/beacon.d.ts.map +1 -1
  129. package/lib/db/beacon.js +34 -0
  130. package/lib/db/beacon.js.map +1 -1
  131. package/lib/db/dataColumnStore.d.ts +1 -1
  132. package/lib/db/dataColumnStore.d.ts.map +1 -1
  133. package/lib/db/dataColumnStore.js +1 -4
  134. package/lib/db/dataColumnStore.js.map +1 -1
  135. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  136. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  137. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  138. package/lib/db/flatFileStore/slotIndex.js +2 -2
  139. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  140. package/lib/db/interface.d.ts +1 -0
  141. package/lib/db/interface.d.ts.map +1 -1
  142. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  143. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  144. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  145. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  146. package/lib/execution/builder/apiClient.d.ts +14 -8
  147. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  148. package/lib/execution/builder/apiClient.js +12 -10
  149. package/lib/execution/builder/apiClient.js.map +1 -1
  150. package/lib/execution/builder/http.d.ts +2 -0
  151. package/lib/execution/builder/http.d.ts.map +1 -1
  152. package/lib/execution/builder/http.js +2 -0
  153. package/lib/execution/builder/http.js.map +1 -1
  154. package/lib/execution/engine/index.d.ts +1 -1
  155. package/lib/execution/engine/index.d.ts.map +1 -1
  156. package/lib/execution/engine/index.js +1 -1
  157. package/lib/execution/engine/index.js.map +1 -1
  158. package/lib/execution/engine/interface.d.ts +1 -1
  159. package/lib/execution/engine/interface.d.ts.map +1 -1
  160. package/lib/execution/engine/interface.js.map +1 -1
  161. package/lib/execution/engine/types.d.ts.map +1 -1
  162. package/lib/execution/engine/types.js +2 -2
  163. package/lib/execution/engine/types.js.map +1 -1
  164. package/lib/execution/engine/utils.d.ts.map +1 -1
  165. package/lib/execution/engine/utils.js +3 -2
  166. package/lib/execution/engine/utils.js.map +1 -1
  167. package/lib/index.d.ts +1 -0
  168. package/lib/index.d.ts.map +1 -1
  169. package/lib/index.js +2 -0
  170. package/lib/index.js.map +1 -1
  171. package/lib/metrics/metrics/lodestar.d.ts +7 -0
  172. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  173. package/lib/metrics/metrics/lodestar.js +15 -0
  174. package/lib/metrics/metrics/lodestar.js.map +1 -1
  175. package/lib/metrics/server/http.js +5 -5
  176. package/lib/metrics/server/http.js.map +1 -1
  177. package/lib/monitoring/service.js +1 -1
  178. package/lib/monitoring/service.js.map +1 -1
  179. package/lib/network/core/networkCore.d.ts +2 -0
  180. package/lib/network/core/networkCore.d.ts.map +1 -1
  181. package/lib/network/core/networkCore.js +3 -0
  182. package/lib/network/core/networkCore.js.map +1 -1
  183. package/lib/network/core/networkCoreWorker.js +1 -0
  184. package/lib/network/core/networkCoreWorker.js.map +1 -1
  185. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -0
  186. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  187. package/lib/network/core/networkCoreWorkerHandler.js +3 -0
  188. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  189. package/lib/network/core/types.d.ts +2 -0
  190. package/lib/network/core/types.d.ts.map +1 -1
  191. package/lib/network/interface.d.ts +2 -0
  192. package/lib/network/interface.d.ts.map +1 -1
  193. package/lib/network/libp2p/index.d.ts.map +1 -1
  194. package/lib/network/libp2p/index.js +5 -1
  195. package/lib/network/libp2p/index.js.map +1 -1
  196. package/lib/network/network.d.ts +2 -0
  197. package/lib/network/network.d.ts.map +1 -1
  198. package/lib/network/network.js +6 -1
  199. package/lib/network/network.js.map +1 -1
  200. package/lib/network/options.d.ts +2 -0
  201. package/lib/network/options.d.ts.map +1 -1
  202. package/lib/network/options.js.map +1 -1
  203. package/lib/network/peers/peerManager.d.ts +2 -1
  204. package/lib/network/peers/peerManager.d.ts.map +1 -1
  205. package/lib/network/peers/peerManager.js.map +1 -1
  206. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  207. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  208. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  209. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  210. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  211. package/lib/network/processor/gossipHandlers.js +57 -37
  212. package/lib/network/processor/gossipHandlers.js.map +1 -1
  213. package/lib/node/nodejs.d.ts +3 -1
  214. package/lib/node/nodejs.d.ts.map +1 -1
  215. package/lib/node/nodejs.js +47 -21
  216. package/lib/node/nodejs.js.map +1 -1
  217. package/lib/node/options.d.ts +3 -1
  218. package/lib/node/options.d.ts.map +1 -1
  219. package/lib/node/options.js +4 -2
  220. package/lib/node/options.js.map +1 -1
  221. package/lib/sync/interface.d.ts.map +1 -1
  222. package/lib/sync/interface.js.map +1 -1
  223. package/lib/sync/sync.d.ts +7 -0
  224. package/lib/sync/sync.d.ts.map +1 -1
  225. package/lib/sync/sync.js +61 -3
  226. package/lib/sync/sync.js.map +1 -1
  227. package/lib/sync/unknownBlock.d.ts.map +1 -1
  228. package/lib/sync/unknownBlock.js +42 -18
  229. package/lib/sync/unknownBlock.js.map +1 -1
  230. package/lib/util/file.d.ts.map +1 -1
  231. package/lib/util/file.js +8 -9
  232. package/lib/util/file.js.map +1 -1
  233. package/lib/util/queue/itemQueue.js +1 -1
  234. package/lib/util/queue/itemQueue.js.map +1 -1
  235. package/lib/util/sszBytes.d.ts +5 -0
  236. package/lib/util/sszBytes.d.ts.map +1 -1
  237. package/lib/util/sszBytes.js +35 -2
  238. package/lib/util/sszBytes.js.map +1 -1
  239. package/package.json +16 -17
  240. package/src/api/impl/api.ts +1 -1
  241. package/src/api/impl/beacon/blocks/index.ts +57 -62
  242. package/src/api/impl/beacon/index.ts +3 -1
  243. package/src/api/impl/beacon/pool/index.ts +5 -1
  244. package/src/api/impl/beacon/state/utils.ts +1 -1
  245. package/src/api/impl/validator/index.ts +47 -30
  246. package/src/api/options.ts +3 -0
  247. package/src/chain/GetBlobsTracker.ts +97 -38
  248. package/src/chain/archiveStore/archiveStore.ts +1 -0
  249. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  250. package/src/chain/blocks/importBlock.ts +8 -7
  251. package/src/chain/blocks/importExecutionPayload.ts +13 -21
  252. package/src/chain/blocks/index.ts +6 -2
  253. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  254. package/src/chain/blocks/types.ts +4 -1
  255. package/src/chain/blocks/verifyBlock.ts +31 -16
  256. package/src/chain/blocks/verifyBlocksDataAvailability.ts +10 -1
  257. package/src/chain/blocks/verifyBlocksSignatures.ts +7 -5
  258. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  259. package/src/chain/bls/interface.ts +2 -0
  260. package/src/chain/bls/multithread/index.ts +14 -10
  261. package/src/chain/bls/multithread/types.ts +1 -1
  262. package/src/chain/bls/multithread/worker.ts +1 -5
  263. package/src/chain/bls/singleThread.ts +1 -1
  264. package/src/chain/bls/utils.ts +1 -1
  265. package/src/chain/chain.ts +5 -5
  266. package/src/chain/errors/blockError.ts +1 -1
  267. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  268. package/src/chain/interface.ts +2 -3
  269. package/src/chain/opPools/aggregatedAttestationPool.ts +25 -9
  270. package/src/chain/opPools/attestationPool.ts +16 -4
  271. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  272. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  273. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  274. package/src/chain/opPools/utils.ts +1 -1
  275. package/src/chain/options.ts +0 -2
  276. package/src/chain/regen/interface.ts +0 -1
  277. package/src/chain/validation/executionPayloadBid.ts +14 -193
  278. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  279. package/src/db/beacon.ts +44 -0
  280. package/src/db/dataColumnStore.ts +2 -4
  281. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  282. package/src/db/flatFileStore/slotIndex.ts +4 -3
  283. package/src/db/interface.ts +2 -0
  284. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  285. package/src/execution/builder/apiClient.ts +16 -13
  286. package/src/execution/builder/http.ts +4 -0
  287. package/src/execution/engine/index.ts +1 -1
  288. package/src/execution/engine/interface.ts +1 -1
  289. package/src/execution/engine/types.ts +3 -1
  290. package/src/execution/engine/utils.ts +4 -2
  291. package/src/index.ts +2 -0
  292. package/src/metrics/metrics/lodestar.ts +15 -0
  293. package/src/metrics/server/http.ts +5 -5
  294. package/src/monitoring/service.ts +1 -1
  295. package/src/network/core/networkCore.ts +5 -0
  296. package/src/network/core/networkCoreWorker.ts +1 -0
  297. package/src/network/core/networkCoreWorkerHandler.ts +4 -0
  298. package/src/network/core/types.ts +2 -0
  299. package/src/network/interface.ts +2 -0
  300. package/src/network/libp2p/index.ts +5 -1
  301. package/src/network/network.ts +8 -1
  302. package/src/network/options.ts +2 -0
  303. package/src/network/peers/peerManager.ts +1 -1
  304. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  305. package/src/network/processor/gossipHandlers.ts +69 -40
  306. package/src/node/nodejs.ts +58 -22
  307. package/src/node/options.ts +9 -6
  308. package/src/sync/interface.ts +1 -0
  309. package/src/sync/sync.ts +65 -4
  310. package/src/sync/unknownBlock.ts +47 -28
  311. package/src/util/file.ts +8 -9
  312. package/src/util/queue/itemQueue.ts +1 -1
  313. package/src/util/sszBytes.ts +42 -2
@@ -1,15 +1,17 @@
1
+ import { BLOCK_PRODUCTION_RACE_CUTOFF_GLOAS_BPS } from "../api/impl/validator/index.js";
1
2
  import { ApiOptions } from "../api/options.js";
2
3
  import { ArchiveMode, DEFAULT_ARCHIVE_MODE, IChainOptions } from "../chain/options.js";
3
4
  import { ValidatorMonitorOpts } from "../chain/validatorMonitor.js";
4
5
  import { DatabaseOptions } from "../db/options.js";
6
+ import { BUILDER_BID_LAG_BUFFER_MS } from "../execution/builder/apiClient.js";
5
7
  import { EngineApiMode, ExecutionBuilderOpts, ExecutionEngineOpts, defaultExecutionBuilderHttpOpts, defaultExecutionEngineHttpOpts, engineApiModes } from "../execution/index.js";
6
8
  import { MetricsOptions } from "../metrics/options.js";
7
9
  import { MonitoringOptions } from "../monitoring/options.js";
8
10
  import { NetworkOptions } from "../network/options.js";
9
11
  import { SyncOptions } from "../sync/options.js";
10
12
  export { allNamespaces } from "../api/rest/index.js";
11
- export { defaultExecutionEngineHttpOpts, defaultExecutionBuilderHttpOpts, engineApiModes, ArchiveMode, DEFAULT_ARCHIVE_MODE, };
12
13
  export type { EngineApiMode };
14
+ export { ArchiveMode, BLOCK_PRODUCTION_RACE_CUTOFF_GLOAS_BPS, BUILDER_BID_LAG_BUFFER_MS, DEFAULT_ARCHIVE_MODE, defaultExecutionBuilderHttpOpts, defaultExecutionEngineHttpOpts, engineApiModes, };
13
15
  export interface IBeaconNodeOptions {
14
16
  api: ApiOptions;
15
17
  chain: IChainOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAC,oBAAoB,EAA8B,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAC,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAE/B,8BAA8B,EAE9B,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,cAAc,EACd,WAAW,EACX,oBAAoB,GACrB,CAAC;AACF,YAAY,EAAC,aAAa,EAAC,CAAC;AAE5B,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,OAAO,EAAE,cAAc,CAAC;IACxB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,kBAW5B,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sCAAsC,EAAC,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAC,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAC,oBAAoB,EAA8B,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAC,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,yBAAyB,EAAC,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAE/B,8BAA8B,EAE9B,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAC,aAAa,EAAC,CAAC;AAE5B,OAAO,EACL,WAAW,EACX,sCAAsC,EACtC,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,EAC/B,8BAA8B,EAC9B,cAAc,GACf,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,OAAO,EAAE,cAAc,CAAC;IACxB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,kBAW5B,CAAC"}
@@ -1,7 +1,9 @@
1
+ import { BLOCK_PRODUCTION_RACE_CUTOFF_GLOAS_BPS } from "../api/impl/validator/index.js";
1
2
  import { defaultApiOptions } from "../api/options.js";
2
3
  import { ArchiveMode, DEFAULT_ARCHIVE_MODE, defaultChainOptions } from "../chain/options.js";
3
4
  import { defaultValidatorMonitorOpts } from "../chain/validatorMonitor.js";
4
5
  import { defaultDbOptions } from "../db/options.js";
6
+ import { BUILDER_BID_LAG_BUFFER_MS } from "../execution/builder/apiClient.js";
5
7
  import { defaultExecutionBuilderHttpOpts, defaultExecutionBuilderOpts, defaultExecutionEngineHttpOpts, defaultExecutionEngineOpts, engineApiModes, } from "../execution/index.js";
6
8
  import { defaultMetricsOptions } from "../metrics/options.js";
7
9
  import { defaultMonitoringOptions } from "../monitoring/options.js";
@@ -9,8 +11,8 @@ import { defaultNetworkOptions } from "../network/options.js";
9
11
  import { defaultSyncOptions } from "../sync/options.js";
10
12
  // Re-export so the CLI doesn't need to depend on lodestar-api
11
13
  export { allNamespaces } from "../api/rest/index.js";
12
- // Re-export to use as default values in CLI args
13
- export { defaultExecutionEngineHttpOpts, defaultExecutionBuilderHttpOpts, engineApiModes, ArchiveMode, DEFAULT_ARCHIVE_MODE, };
14
+ // Re-export to use as default values and for validation in CLI args
15
+ export { ArchiveMode, BLOCK_PRODUCTION_RACE_CUTOFF_GLOAS_BPS, BUILDER_BID_LAG_BUFFER_MS, DEFAULT_ARCHIVE_MODE, defaultExecutionBuilderHttpOpts, defaultExecutionEngineHttpOpts, engineApiModes, };
14
16
  export const defaultOptions = {
15
17
  api: defaultApiOptions,
16
18
  chain: defaultChainOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAiB,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAuB,2BAA2B,EAAC,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAkB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAIL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,EAC1B,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAoB,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEnE,8DAA8D;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,iDAAiD;AACjD,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,cAAc,EACd,WAAW,EACX,oBAAoB,GACrB,CAAC;AAgBF,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,mBAAmB;IAC1B,EAAE,EAAE,gBAAgB;IACpB,eAAe,EAAE,0BAA0B;IAC3C,gBAAgB,EAAE,2BAA2B;IAC7C,OAAO,EAAE,qBAAqB;IAC9B,gBAAgB,EAAE,2BAA2B;IAC7C,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,kBAAkB;CACzB,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sCAAsC,EAAC,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAa,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAiB,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAuB,2BAA2B,EAAC,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAkB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,yBAAyB,EAAC,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAIL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,EAC1B,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAoB,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEnE,8DAA8D;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,oEAAoE;AACpE,OAAO,EACL,WAAW,EACX,sCAAsC,EACtC,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,EAC/B,8BAA8B,EAC9B,cAAc,GACf,CAAC;AAeF,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,mBAAmB;IAC1B,EAAE,EAAE,gBAAgB;IACpB,eAAe,EAAE,0BAA0B;IAC3C,gBAAgB,EAAE,2BAA2B;IAC7C,OAAO,EAAE,qBAAqB;IAC9B,gBAAgB,EAAE,2BAA2B;IAC7C,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,kBAAkB;CACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/sync/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrD,YAAY,EAAC,mBAAmB,EAAC,CAAC;AAElC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,IAAI,IAAI,CAAC;IACd,aAAa,IAAI,aAAa,CAAC;IAC/B,QAAQ,IAAI,OAAO,CAAC;IACpB,SAAS,IAAI,OAAO,CAAC;IACrB,uBAAuB,IAAI,mBAAmB,EAAE,CAAC;CAClD;AAED,oBAAY,SAAS;IACnB,oCAAoC;IACpC,OAAO,YAAY;IACnB,sEAAsE;IACtE,gBAAgB,qBAAqB;IACrC,gEAAgE;IAChE,WAAW,gBAAgB;IAC3B,kDAAkD;IAClD,MAAM,WAAW;CAClB;AAED,6DAA6D;AAC7D,eAAO,MAAM,eAAe,EAAE;KAAE,CAAC,IAAI,SAAS,GAAG,MAAM;CAKtD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,QAAQ,CAAC;IAClB,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/sync/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAErD,YAAY,EAAC,mBAAmB,EAAC,CAAC;AAElC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,IAAI,IAAI,CAAC;IACd,aAAa,IAAI,aAAa,CAAC;IAC/B,QAAQ,IAAI,OAAO,CAAC;IACpB,SAAS,IAAI,OAAO,CAAC;IACrB,uBAAuB,IAAI,mBAAmB,EAAE,CAAC;CAClD;AAED,oBAAY,SAAS;IACnB,oCAAoC;IACpC,OAAO,YAAY;IACnB,sEAAsE;IACtE,gBAAgB,qBAAqB;IACrC,gEAAgE;IAChE,WAAW,gBAAgB;IAC3B,kDAAkD;IAClD,MAAM,WAAW;CAClB;AAED,6DAA6D;AAC7D,eAAO,MAAM,eAAe,EAAE;KAAE,CAAC,IAAI,SAAS,GAAG,MAAM;CAKtD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,QAAQ,CAAC;IAClB,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/sync/interface.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,oCAAoC;IACpC,gCAAmB,CAAA;IACnB,sEAAsE;IACtE,kDAAqC,CAAA;IACrC,gEAAgE;IAChE,wCAA2B,CAAA;IAC3B,kDAAkD;IAClD,8BAAiB,CAAA;AACnB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/B,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;IAC1B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/sync/interface.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,oCAAoC;IACpC,gCAAmB,CAAA;IACnB,sEAAsE;IACtE,kDAAqC,CAAA;IACrC,gEAAgE;IAChE,wCAA2B,CAAA;IAC3B,kDAAkD;IAClD,8BAAiB,CAAA;AACnB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/B,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;IAC1B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;CACtB,CAAC"}
@@ -1,9 +1,12 @@
1
+ import { Status } from "@lodestar/types";
2
+ import { PeerIdStr } from "../util/peerId.js";
1
3
  import { IBeaconSync, SyncChainDebugState, SyncModules, SyncState, SyncingStatus } from "./interface.js";
2
4
  import { SyncOptions } from "./options.js";
3
5
  export declare class BeaconSync implements IBeaconSync {
4
6
  private readonly logger;
5
7
  private readonly network;
6
8
  private readonly chain;
9
+ private readonly db;
7
10
  private readonly metrics;
8
11
  private readonly opts;
9
12
  private readonly rangeSync;
@@ -31,6 +34,10 @@ export declare class BeaconSync implements IBeaconSync {
31
34
  * ours that we consider it fully sync'd with respect to our current chain.
32
35
  */
33
36
  private addPeer;
37
+ /**
38
+ * A behind peer's finalized checkpoint must be the canonical block in effect at the start slot of its epoch
39
+ */
40
+ verifyPastFinalizedCheckpoint(peer: PeerIdStr, remote: Status): Promise<void>;
34
41
  /**
35
42
  * Must be called by libp2p when a peer is removed from the peer manager
36
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAKzC,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAElD,uBAAuB;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;IAE3C,YAAY,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAmDlD;IAED,KAAK,IAAI,IAAI,CAMZ;IAED,aAAa,IAAI,aAAa,CAyC7B;IAED,SAAS,IAAI,OAAO,CAGnB;IAED,QAAQ,IAAI,OAAO,CAElB;IAED,IAAI,KAAK,IAAI,SAAS,CA8BrB;IAED,wCAAwC;IACxC,uBAAuB,IAAI,mBAAmB,EAAE,CAE/C;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,CAwBb;IAEF;;OAEG;IACH,OAAO,CAAC,UAAU,CAIhB;IAEF;;OAEG;IACH,OAAO,CAAC,eAAe,CAqDrB;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,aAAa;CAkBtB"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAW7C,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAKzC,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAElD,uBAAuB;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;IAE3C,YAAY,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAoDlD;IAED,KAAK,IAAI,IAAI,CAMZ;IAED,aAAa,IAAI,aAAa,CAyC7B;IAED,SAAS,IAAI,OAAO,CAGnB;IAED,QAAQ,IAAI,OAAO,CAElB;IAED,IAAI,KAAK,IAAI,SAAS,CA8BrB;IAED,wCAAwC;IACxC,uBAAuB,IAAI,mBAAmB,EAAE,CAE/C;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,CA6Bb;IAEF;;OAEG;IACG,6BAA6B,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ClF;IAED;;OAEG;IACH,OAAO,CAAC,UAAU,CAIhB;IAEF;;OAEG;IACH,OAAO,CAAC,eAAe,CAqDrB;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,aAAa;CAkBtB"}
package/lib/sync/sync.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import { SLOTS_PER_EPOCH } from "@lodestar/params";
2
+ import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
2
3
  import { toRootHex } from "@lodestar/utils";
3
- import { GENESIS_SLOT } from "../constants/constants.js";
4
+ import { GENESIS_EPOCH, GENESIS_SLOT } from "../constants/constants.js";
5
+ import { GoodByeReasonCode } from "../constants/index.js";
4
6
  import { ExecutionEngineState } from "../execution/index.js";
5
- import { NetworkEvent } from "../network/index.js";
7
+ import { NetworkEvent, PeerAction } from "../network/index.js";
6
8
  import { ClockEvent } from "../util/clock.js";
7
9
  import { isOptimisticBlock } from "../util/forkChoice.js";
8
10
  import { MIN_EPOCH_TO_START_GOSSIP } from "./constants.js";
@@ -14,6 +16,7 @@ export class BeaconSync {
14
16
  logger;
15
17
  network;
16
18
  chain;
19
+ db;
17
20
  metrics;
18
21
  opts;
19
22
  rangeSync;
@@ -22,10 +25,11 @@ export class BeaconSync {
22
25
  peerSyncType = new Map();
23
26
  slotImportTolerance;
24
27
  constructor(opts, modules) {
25
- const { config, chain, metrics, network, logger } = modules;
28
+ const { config, chain, db, metrics, network, logger } = modules;
26
29
  this.opts = opts;
27
30
  this.network = network;
28
31
  this.chain = chain;
32
+ this.db = db;
29
33
  this.metrics = metrics;
30
34
  this.logger = logger;
31
35
  this.rangeSync = new RangeSync(modules, opts);
@@ -168,6 +172,10 @@ export class BeaconSync {
168
172
  */
169
173
  addPeer = (data) => {
170
174
  const localStatus = this.chain.getStatus();
175
+ // Genesis and equal finalized epochs are already checked by assertPeerRelevance in the network worker
176
+ if (data.status.finalizedEpoch > GENESIS_EPOCH && data.status.finalizedEpoch < localStatus.finalizedEpoch) {
177
+ void this.verifyPastFinalizedCheckpoint(data.peer, data.status);
178
+ }
171
179
  const syncType = getPeerSyncType(localStatus, data.status, this.chain.forkChoice, this.slotImportTolerance);
172
180
  this.logger.verbose("Peer sync type classified", {
173
181
  peer: data.peer,
@@ -188,6 +196,56 @@ export class BeaconSync {
188
196
  }
189
197
  this.updateSyncState();
190
198
  };
199
+ /**
200
+ * A behind peer's finalized checkpoint must be the canonical block in effect at the start slot of its epoch
201
+ */
202
+ async verifyPastFinalizedCheckpoint(peer, remote) {
203
+ const startSlot = computeStartSlotAtEpoch(remote.finalizedEpoch);
204
+ const root = toRootHex(remote.finalizedRoot);
205
+ try {
206
+ let reason = null;
207
+ // After a finality jump, finalized blocks stay in fork choice until the archiver migrates them.
208
+ // Fork choice is pruned only after archiving, so a miss here means the db already has this range.
209
+ const canonicalBlock = this.chain.forkChoice.getCanonicalBlockClosestLteSlot(startSlot);
210
+ if (canonicalBlock !== null) {
211
+ if (canonicalBlock.blockRoot === root)
212
+ return;
213
+ reason = "finalized_root_not_canonical";
214
+ }
215
+ else {
216
+ const slot = await this.db.blockArchive.getSlotByRoot(remote.finalizedRoot);
217
+ if (slot !== null && slot > startSlot) {
218
+ reason = "finalized_root_after_epoch_start";
219
+ }
220
+ else if (slot !== startSlot) {
221
+ const childSlot = await this.db.blockArchive.getSlotByParentRoot(remote.finalizedRoot);
222
+ if (childSlot !== null) {
223
+ if (childSlot <= startSlot)
224
+ reason = "finalized_root_not_in_effect_at_epoch_start";
225
+ }
226
+ else if (slot === null && startSlot > this.chain.earliestAvailableSlot) {
227
+ // childSlot == null too, neither the root nor a child is canonical
228
+ // or they are canonical and both pruned but peer's finalized epoch starts after earliestAvailableSlot
229
+ reason = "unknown_finalized_root";
230
+ }
231
+ }
232
+ }
233
+ if (reason !== null) {
234
+ this.logger.debug("Peer finalized checkpoint not in our chain", {
235
+ peer,
236
+ finalizedEpoch: remote.finalizedEpoch,
237
+ root,
238
+ reason,
239
+ });
240
+ this.metrics?.syncPeerFinalizedCheckpointMismatch.inc({ reason });
241
+ this.network.reportPeer(peer, PeerAction.Fatal, "PeerFinalizedCheckpointMismatch");
242
+ await this.network.goodbyeAndDisconnect(peer, GoodByeReasonCode.IRRELEVANT_NETWORK);
243
+ }
244
+ }
245
+ catch (e) {
246
+ this.logger.debug("Error verifying peer finalized checkpoint", { peer, finalizedEpoch: remote.finalizedEpoch, root }, e);
247
+ }
248
+ }
191
249
  /**
192
250
  * Must be called by libp2p when a peer is removed from the peer manager
193
251
  */
@@ -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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"}
@@ -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":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAMjD,OAAO,EAAC,MAAM,EAA+E,MAAM,iBAAiB,CAAC;AAMrH,OAAO,EAA6B,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAmE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAK5C,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAmCzC;;GAEG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAqB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,cAAc;IAmBvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAvBxB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAE7E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAClC,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,uBAAuB,CAA6B;IAC5D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgF;IACrH,OAAO,CAAC,0BAA0B,CAA8B;IAEhE,YACmB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,IAAI,CAAC,EAAE,WAAW,YAAA,EAgBpC;IAED,kBAAkB,IAAI,IAAI,CAoCzB;IAED,sBAAsB,IAAI,IAAI,CAoB7B;IAED,KAAK,IAAI,IAAI,CAEZ;IAED,qBAAqB,IAAI,OAAO,CAE/B;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAcxB;IAEF;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAS5B;IAEF,OAAO,CAAC,0BAA0B,CAWhC;IAEF,OAAO,CAAC,8BAA8B,CAyBpC;IAEF,OAAO,CAAC,2BAA2B,CAkBjC;IAEF;;OAEG;IACH,OAAO,CAAC,eAAe,CA+BrB;IAEF,OAAO,CAAC,eAAe,CAIrB;IAEF,OAAO,CAAC,iBAAiB,CAKvB;IAEF;;;OAGG;IACH,OAAO,CAAC,cAAc,CAiFpB;IAEF,OAAO,CAAC,YAAY,CAsClB;IAEF,OAAO,CAAC,eAAe,CAuCrB;IAEF,OAAO,CAAC,mBAAmB,CAgDzB;IAEF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,iBAAiB,CAsCvB;IAEF,OAAO,CAAC,eAAe,CASrB;IAEF,OAAO,CAAC,kBAAkB,CAIxB;IAEF;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,mBAAmB;IAuC3B,OAAO,CAAC,qBAAqB;IA0B7B;;OAEG;IACH,OAAO,CAAC,yBAAyB,CAwF/B;IAEF;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAwBrC,OAAO,CAAC,0BAA0B;IAOlC;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAqB5B;IAEF;;OAEG;YACW,kBAAkB;IA+EhC,OAAO,CAAC,sBAAsB;YAQhB,aAAa;IAuG3B;;;OAGG;YACW,iBAAiB;IA+H/B;;;;OAIG;YACW,wBAAwB;YA2ExB,eAAe;YA0Ef,cAAc;IAiG5B;;;;OAIG;YACW,iBAAiB;YA2LjB,6BAA6B;YAmB7B,mBAAmB;IAwCjC;;;;;;;;OAQG;YACW,eAAe;IA+K7B,OAAO,CAAC,kCAAkC;IAuB1C;;;;OAIG;IACH,OAAO,CAAC,gCAAgC;IAaxC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,sBAAsB;CAY/B;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAExD,cAIC;IAED,qCAAqC;IACrC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAM/D;IAED,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAI1C;IAED,4FAA4F;IAC5F,KAAK,IAAI,IAAI,CAIZ;IAED,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAEjE;IAED,uBAAuB,CACrB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,aAAa,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,EAC9B,GAAG,SAAa,GACf,MAAM,GAAG,IAAI,CA2Bf;IAED;;;;;;OAMG;IACH,yBAAyB,CACvB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,EAC7B,cAAc,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,EAC/B,GAAG,SAAa,GACf,YAAY,GAAG,IAAI,CAiBrB;IAED;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEjC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE1C;IAED,sBAAsB,IAAI,MAAM,CAM/B;IAED,OAAO,CAAC,WAAW;IA6DnB,OAAO,CAAC,qBAAqB;CAO9B"}
@@ -250,10 +250,17 @@ export class BlockInputSync {
250
250
  };
251
251
  onIncompletePayloadEnvelope = (data) => {
252
252
  try {
253
- this.addByPayloadInput(data.payloadInput, data.peer);
254
- this.triggerUnknownBlockSearch();
255
- this.metrics?.blockInputSync.requests.inc({ type: PendingBlockType.INCOMPLETE_PAYLOAD_ENVELOPE });
256
- this.metrics?.blockInputSync.payloadSource.inc({ source: data.source });
253
+ const isNewRoot = this.addByPayloadInput(data.payloadInput, data.peer);
254
+ const pendingPayload = this.pendingPayloads.get(data.payloadInput.blockRootHex);
255
+ if (pendingPayload &&
256
+ pendingPayload.status !== PendingPayloadInputStatus.fetching &&
257
+ pendingPayload.status !== PendingPayloadInputStatus.processing) {
258
+ this.triggerUnknownBlockSearch();
259
+ }
260
+ if (isNewRoot) {
261
+ this.metrics?.blockInputSync.requests.inc({ type: PendingBlockType.INCOMPLETE_PAYLOAD_ENVELOPE });
262
+ this.metrics?.blockInputSync.payloadSource.inc({ source: data.source });
263
+ }
257
264
  }
258
265
  catch (e) {
259
266
  this.logger.debug("Error handling incompletePayloadEnvelope event", {}, e);
@@ -518,30 +525,38 @@ export class BlockInputSync {
518
525
  // a seen payload envelope input
519
526
  return this.chain.seenPayloadEnvelopeInputCache.get(rootHex)?.slot;
520
527
  }
521
- addByPayloadInput = (payloadInput, peerIdStr, envelope) => {
528
+ addByPayloadInput = (payloadInput, peerIdStr) => {
522
529
  if (this.knownBadBlocks.has(payloadInput.blockRootHex)) {
523
530
  this.logger.debug("Ignoring payload input for known bad block root", {
524
531
  slot: payloadInput.slot,
525
532
  root: payloadInput.blockRootHex,
526
533
  peerIdStr,
527
534
  });
528
- return;
535
+ return false;
536
+ }
537
+ let pendingPayload = this.pendingPayloads.get(payloadInput.blockRootHex);
538
+ const isNewRoot = pendingPayload === undefined;
539
+ // Envelope-only entries must go through reconciliation to validate their speculative envelope.
540
+ if (!pendingPayload ||
541
+ pendingPayload.status === PendingPayloadInputStatus.pending ||
542
+ pendingPayload.status === PendingPayloadInputStatus.downloaded) {
543
+ pendingPayload = this.toPendingPayloadInput(payloadInput, pendingPayload);
544
+ this.pendingPayloads.set(payloadInput.blockRootHex, pendingPayload);
545
+ this.logger.verbose("Added payloadInput to BlockInputSync.pendingPayloads", {
546
+ slot: payloadInput.slot,
547
+ root: payloadInput.blockRootHex,
548
+ delaySec: this.chain.clock.secFromSlot(payloadInput.slot),
549
+ });
529
550
  }
530
- const pendingPayload = this.toPendingPayloadInput(payloadInput, this.pendingPayloads.get(payloadInput.blockRootHex), envelope);
531
551
  if (peerIdStr && pendingPayload.peerIdStrings.size < MAX_PEERS_PER_ROOT) {
532
552
  pendingPayload.peerIdStrings.add(peerIdStr);
533
553
  }
534
- this.pendingPayloads.set(payloadInput.blockRootHex, pendingPayload);
535
- this.logger.verbose("Added payloadInput to BlockInputSync.pendingPayloads", {
536
- slot: payloadInput.slot,
537
- root: payloadInput.blockRootHex,
538
- delaySec: this.chain.clock.secFromSlot(payloadInput.slot),
539
- });
540
554
  const prunedItemCount = pruneSetToMax(this.pendingPayloads, this.maxPendingBlocks);
541
555
  if (prunedItemCount > 0) {
542
556
  this.metrics?.blockInputSync.removedPayloads.inc({ reason: DroppedItemReason.capacity }, prunedItemCount);
543
557
  this.logger.verbose(`Pruned ${prunedItemCount} items from BlockInputSync.pendingPayloads`);
544
558
  }
559
+ return isNewRoot;
545
560
  };
546
561
  onPeerConnected = (data) => {
547
562
  try {
@@ -1093,6 +1108,9 @@ export class BlockInputSync {
1093
1108
  return;
1094
1109
  }
1095
1110
  const payloadInput = await this.chain.seenPayloadEnvelopeInputCache.getOrReload(rootHex);
1111
+ if (this.pendingPayloads.get(rootHex) !== pendingPayload) {
1112
+ return;
1113
+ }
1096
1114
  if (!payloadInput) {
1097
1115
  this.logger.debug("PayloadEnvelopeInput not yet reloadable for imported block, will retry", {
1098
1116
  root: rootHex,
@@ -1101,6 +1119,9 @@ export class BlockInputSync {
1101
1119
  }
1102
1120
  if (!payloadInput.hasPayloadEnvelope()) {
1103
1121
  const validationResult = await wrapError(validateGossipExecutionPayloadEnvelope(this.chain, pendingPayload.envelope));
1122
+ if (this.pendingPayloads.get(rootHex) !== pendingPayload) {
1123
+ return;
1124
+ }
1104
1125
  if (validationResult.err) {
1105
1126
  this.logger.debug("Pending payload envelope failed validation after block import, refetching by root", { slot: pendingPayload.envelope.message.payload.slotNumber, root: rootHex }, validationResult.err);
1106
1127
  const pendingPayloadByRoot = {
@@ -1151,14 +1172,13 @@ export class BlockInputSync {
1151
1172
  this.logger.verbose("BlockInputSync.downloadPayload()", logCtx);
1152
1173
  payload.status = PendingPayloadInputStatus.fetching;
1153
1174
  const res = await wrapError(this.fetchPayloadInput(payload));
1175
+ if (this.pendingPayloads.get(rootHex) !== payload) {
1176
+ this.logger.verbose("Dropping downloaded payload, entry changed during fetch", logCtx);
1177
+ return;
1178
+ }
1154
1179
  if (!res.err) {
1155
1180
  const pendingPayload = res.result;
1156
1181
  const resultRootHex = getPayloadSyncCacheItemRootHex(pendingPayload);
1157
- // finalization may have deleted this entry while we were awaiting the network, do not resurrect it via the set below
1158
- if (!this.pendingPayloads.has(resultRootHex)) {
1159
- this.logger.verbose("Dropping downloaded payload, entry pruned during fetch", logCtx);
1160
- return;
1161
- }
1162
1182
  this.pendingPayloads.set(resultRootHex, pendingPayload);
1163
1183
  const result = isPendingPayloadEnvelope(pendingPayload)
1164
1184
  ? DownloadResult.WaitingForBlock
@@ -1218,12 +1238,16 @@ export class BlockInputSync {
1218
1238
  pendingPayload.status = PendingPayloadInputStatus.processing;
1219
1239
  this.logger.debug("Processing downloaded payload", logCtx);
1220
1240
  const res = await wrapError(this.chain.processExecutionPayload(pendingPayload.payloadInput));
1241
+ // The executionPayload event emitted during import usually removes the entry before this point
1221
1242
  if (!res.err) {
1222
1243
  this.logger.debug("Processed payload from unknown sync", logCtx);
1223
1244
  this.pendingPayloads.delete(rootHex);
1224
1245
  this.triggerUnknownBlockSearch();
1225
1246
  return;
1226
1247
  }
1248
+ if (this.pendingPayloads.get(rootHex) !== pendingPayload) {
1249
+ return;
1250
+ }
1227
1251
  if (res.err instanceof PayloadError) {
1228
1252
  switch (res.err.type.code) {
1229
1253
  case PayloadErrorCode.BLOCK_NOT_IN_FORK_CHOICE: