@aztec/p2p 0.0.1-commit.5914bae → 0.0.1-commit.59a0419c6

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 (286) hide show
  1. package/dest/client/factory.d.ts +4 -3
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +17 -15
  4. package/dest/client/interface.d.ts +9 -2
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +3 -2
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +30 -8
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +21 -7
  10. package/dest/config.d.ts +107 -103
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +17 -12
  13. package/dest/errors/p2p-service.error.d.ts +9 -0
  14. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  15. package/dest/errors/p2p-service.error.js +10 -0
  16. package/dest/index.d.ts +1 -2
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +0 -1
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +7 -5
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +16 -9
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
  23. package/dest/mem_pools/index.d.ts +1 -2
  24. package/dest/mem_pools/index.d.ts.map +1 -1
  25. package/dest/mem_pools/instrumentation.d.ts +4 -2
  26. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  27. package/dest/mem_pools/instrumentation.js +16 -14
  28. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  29. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  30. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  31. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  32. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  33. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  34. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  35. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +10 -5
  36. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/interfaces.js +1 -0
  38. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +9 -7
  39. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
  41. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
  42. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -43
  44. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +1 -1
  45. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +3 -0
  47. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +2 -1
  48. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +20 -2
  50. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  51. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  52. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  53. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  54. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  55. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  56. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  57. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  58. package/dest/msg_validators/clock_tolerance.js +54 -3
  59. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  60. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  61. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  62. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  63. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  64. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  65. package/dest/msg_validators/proposal_validator/proposal_validator.js +19 -11
  66. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  67. package/dest/msg_validators/tx_validator/factory.d.ts +2 -2
  68. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  69. package/dest/msg_validators/tx_validator/factory.js +3 -3
  70. package/dest/msg_validators/tx_validator/gas_validator.d.ts +36 -4
  71. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  72. package/dest/msg_validators/tx_validator/gas_validator.js +50 -33
  73. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  74. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  75. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  76. package/dest/services/data_store.d.ts +1 -1
  77. package/dest/services/data_store.d.ts.map +1 -1
  78. package/dest/services/data_store.js +5 -5
  79. package/dest/services/dummy_service.d.ts +6 -3
  80. package/dest/services/dummy_service.d.ts.map +1 -1
  81. package/dest/services/dummy_service.js +6 -1
  82. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  83. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  84. package/dest/services/gossipsub/topic_score_params.js +21 -4
  85. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  86. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  87. package/dest/services/libp2p/instrumentation.js +14 -0
  88. package/dest/services/libp2p/libp2p_service.d.ts +19 -27
  89. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  90. package/dest/services/libp2p/libp2p_service.js +158 -133
  91. package/dest/services/peer-manager/metrics.d.ts +3 -1
  92. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  93. package/dest/services/peer-manager/metrics.js +6 -0
  94. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  95. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  96. package/dest/services/peer-manager/peer_manager.js +39 -11
  97. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  98. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  99. package/dest/services/peer-manager/peer_scoring.js +32 -10
  100. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  101. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  102. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +82 -101
  103. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +3 -2
  104. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  105. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  106. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  107. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  108. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  109. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  110. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  111. package/dest/services/reqresp/config.d.ts +3 -3
  112. package/dest/services/reqresp/config.d.ts.map +1 -1
  113. package/dest/services/reqresp/interface.d.ts +14 -9
  114. package/dest/services/reqresp/interface.d.ts.map +1 -1
  115. package/dest/services/reqresp/interface.js +10 -11
  116. package/dest/services/reqresp/metrics.d.ts +1 -1
  117. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  118. package/dest/services/reqresp/metrics.js +0 -1
  119. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  120. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  121. package/dest/services/reqresp/protocols/index.js +0 -1
  122. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  123. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  124. package/dest/services/reqresp/protocols/tx.js +1 -3
  125. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  126. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  127. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  128. package/dest/services/reqresp/reqresp.d.ts +4 -2
  129. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  130. package/dest/services/reqresp/reqresp.js +13 -3
  131. package/dest/services/service.d.ts +5 -2
  132. package/dest/services/service.d.ts.map +1 -1
  133. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  134. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  135. package/dest/services/tx_collection/fast_tx_collection.js +57 -73
  136. package/dest/services/tx_collection/proposal_tx_collector.d.ts +6 -7
  137. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  138. package/dest/services/tx_collection/proposal_tx_collector.js +4 -4
  139. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  140. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  141. package/dest/services/tx_collection/request_tracker.js +84 -0
  142. package/dest/services/tx_collection/slow_tx_collection.js +1 -1
  143. package/dest/services/tx_collection/tx_collection.d.ts +3 -6
  144. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  145. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  146. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  147. package/dest/test-helpers/make-test-p2p-clients.js +4 -1
  148. package/dest/test-helpers/mock-pubsub.d.ts +11 -3
  149. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  150. package/dest/test-helpers/mock-pubsub.js +36 -11
  151. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  152. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  153. package/dest/test-helpers/reqresp-nodes.js +5 -3
  154. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  155. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  156. package/dest/test-helpers/testbench-utils.js +21 -2
  157. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  158. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  159. package/dest/testbench/p2p_client_testbench_worker.js +73 -17
  160. package/dest/testbench/worker_client_manager.d.ts +8 -1
  161. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  162. package/dest/testbench/worker_client_manager.js +51 -2
  163. package/dest/util.d.ts +1 -1
  164. package/package.json +14 -14
  165. package/src/client/factory.ts +25 -19
  166. package/src/client/interface.ts +9 -1
  167. package/src/client/p2p_client.ts +34 -9
  168. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +21 -9
  169. package/src/config.ts +29 -17
  170. package/src/errors/p2p-service.error.ts +11 -0
  171. package/src/index.ts +0 -1
  172. package/src/mem_pools/attestation_pool/attestation_pool.ts +17 -12
  173. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  174. package/src/mem_pools/index.ts +0 -3
  175. package/src/mem_pools/instrumentation.ts +17 -13
  176. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  177. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  178. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  179. package/src/mem_pools/tx_pool_v2/interfaces.ts +10 -4
  180. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +24 -12
  181. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
  182. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +3 -0
  183. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +21 -1
  184. package/src/msg_validators/attestation_validator/README.md +1 -1
  185. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  186. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  187. package/src/msg_validators/clock_tolerance.ts +72 -3
  188. package/src/msg_validators/proposal_validator/README.md +4 -4
  189. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +4 -1
  190. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +4 -1
  191. package/src/msg_validators/proposal_validator/proposal_validator.ts +17 -10
  192. package/src/msg_validators/tx_validator/README.md +11 -3
  193. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  194. package/src/msg_validators/tx_validator/factory.ts +3 -1
  195. package/src/msg_validators/tx_validator/gas_validator.ts +82 -33
  196. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  197. package/src/services/data_store.ts +5 -13
  198. package/src/services/dummy_service.ts +8 -2
  199. package/src/services/gossipsub/topic_score_params.ts +36 -4
  200. package/src/services/libp2p/instrumentation.ts +14 -0
  201. package/src/services/libp2p/libp2p_service.ts +154 -143
  202. package/src/services/peer-manager/metrics.ts +7 -0
  203. package/src/services/peer-manager/peer_manager.ts +45 -11
  204. package/src/services/peer-manager/peer_scoring.ts +27 -5
  205. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  206. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +78 -111
  207. package/src/services/reqresp/batch-tx-requester/interface.ts +2 -1
  208. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  209. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  210. package/src/services/reqresp/config.ts +2 -2
  211. package/src/services/reqresp/interface.ts +21 -11
  212. package/src/services/reqresp/metrics.ts +0 -1
  213. package/src/services/reqresp/protocols/index.ts +0 -1
  214. package/src/services/reqresp/protocols/tx.ts +1 -3
  215. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  216. package/src/services/reqresp/reqresp.ts +21 -2
  217. package/src/services/service.ts +6 -1
  218. package/src/services/tx_collection/fast_tx_collection.ts +57 -83
  219. package/src/services/tx_collection/proposal_tx_collector.ts +8 -13
  220. package/src/services/tx_collection/request_tracker.ts +127 -0
  221. package/src/services/tx_collection/slow_tx_collection.ts +1 -1
  222. package/src/services/tx_collection/tx_collection.ts +3 -5
  223. package/src/test-helpers/make-test-p2p-clients.ts +3 -1
  224. package/src/test-helpers/mock-pubsub.ts +34 -5
  225. package/src/test-helpers/reqresp-nodes.ts +5 -3
  226. package/src/test-helpers/testbench-utils.ts +29 -3
  227. package/src/testbench/p2p_client_testbench_worker.ts +74 -15
  228. package/src/testbench/worker_client_manager.ts +57 -2
  229. package/src/util.ts +1 -1
  230. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  231. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  232. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  233. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  234. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  235. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  236. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  237. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  238. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  239. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  240. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  241. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
  242. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  243. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  244. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  245. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  246. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  247. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  248. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  249. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  250. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  251. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  252. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  253. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  254. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  255. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  256. package/dest/mem_pools/tx_pool/index.js +0 -2
  257. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  258. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  259. package/dest/mem_pools/tx_pool/priority.js +0 -15
  260. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  261. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  262. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  263. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  264. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  265. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  266. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  267. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  268. package/dest/services/reqresp/protocols/block.js +0 -32
  269. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  270. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  271. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  272. package/src/mem_pools/tx_pool/README.md +0 -270
  273. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  274. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  275. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  276. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
  277. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  278. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  279. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  280. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  281. package/src/mem_pools/tx_pool/index.ts +0 -2
  282. package/src/mem_pools/tx_pool/priority.ts +0 -20
  283. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  284. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  285. package/src/services/reqresp/protocols/block.ts +0 -37
  286. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
@@ -78,6 +78,13 @@ declare class WorkerClientManager {
78
78
  * Cleans up all worker processes with timeout and force kill if needed
79
79
  */
80
80
  cleanup(): Promise<void>;
81
+ /**
82
+ * Checks that the aggregator (client 0) has sufficient peer connections before running a benchmark.
83
+ * This prevents benchmark cases from starting with degraded connectivity after a previous case
84
+ * caused connection failures.
85
+ */
86
+ waitForConnectivity(minPeers: number, timeoutMs?: number): Promise<number>;
87
+ private getPeerCount;
81
88
  /**
82
89
  * Run a req/resp benchmark across all worker clients.
83
90
  *
@@ -95,4 +102,4 @@ declare class WorkerClientManager {
95
102
  export { WorkerClientManager, testChainConfig };
96
103
  export type { DistributionPattern, CollectorType } from './p2p_client_testbench_worker.js';
97
104
  export { COLLECTOR_DISPLAY_NAMES } from './p2p_client_testbench_worker.js';
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUtuRSxPQUFPLEtBQUssRUFHVixhQUFhLEVBQ2IsbUJBQW1CLEVBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsUUFBQSxNQUFNLGVBQWUsRUFBRSxXQU10QixDQUFDO0FBRUYsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztJQUNsQyxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZjtBQUVELE1BQU0sV0FBVyxzQkFBc0I7SUFDckMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixZQUFZLEVBQUUsbUJBQW1CLENBQUM7SUFDbEMsU0FBUyxFQUFFLGFBQWEsQ0FBQztJQUN6QixVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFlBQVksRUFBRSxNQUFNLENBQUM7SUFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEI7QUFFRCxjQUFNLG1CQUFtQjtJQUNoQixTQUFTLEVBQUUsWUFBWSxFQUFFLENBQU07SUFDL0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ3hCLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBcUI7SUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2QixPQUFPLENBQUMsdUJBQXVCLENBQWdCO0lBRS9DLFlBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUd4RDtJQUVELE9BQU8sU0FLTjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBb0IxQjs7O09BR0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBa0cxQjs7Ozs7OztPQU9HO0lBQ0csaUJBQWlCLENBQ3JCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLE9BQU8sR0FBRTtRQUNQLGFBQWEsQ0FBQyxFQUFFLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3ZCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNuQixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDbEIscUJBK0RQO0lBRUQsNEJBQTRCLFNBRTNCO0lBRUQsa0NBQWtDLFdBRWpDO0lBRUQ7Ozs7O09BS0c7SUFDRyxVQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkE4Q3BEO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsZ0JBQWdCO0lBcUN4Qjs7T0FFRztJQUNHLE9BQU8sa0JBZ0NaO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0csbUJBQW1CLENBQUMsTUFBTSxFQUFFLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQXNFekY7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBa0N6QixPQUFPLENBQUMsa0JBQWtCO0NBaUMzQjtBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUNoRCxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUMifQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUtuRSxPQUFPLEtBQUssRUFHVixhQUFhLEVBQ2IsbUJBQW1CLEVBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsUUFBQSxNQUFNLGVBQWUsRUFBRSxXQU10QixDQUFDO0FBRUYsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztJQUNsQyxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZjtBQUVELE1BQU0sV0FBVyxzQkFBc0I7SUFDckMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixZQUFZLEVBQUUsbUJBQW1CLENBQUM7SUFDbEMsU0FBUyxFQUFFLGFBQWEsQ0FBQztJQUN6QixVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFlBQVksRUFBRSxNQUFNLENBQUM7SUFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEI7QUFFRCxjQUFNLG1CQUFtQjtJQUNoQixTQUFTLEVBQUUsWUFBWSxFQUFFLENBQU07SUFDL0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ3hCLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBcUI7SUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2QixPQUFPLENBQUMsdUJBQXVCLENBQWdCO0lBRS9DLFlBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUd4RDtJQUVELE9BQU8sU0FJTjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBb0IxQjs7O09BR0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBa0cxQjs7Ozs7OztPQU9HO0lBQ0csaUJBQWlCLENBQ3JCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLE9BQU8sR0FBRTtRQUNQLGFBQWEsQ0FBQyxFQUFFLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3ZCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNuQixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDbEIscUJBK0RQO0lBRUQsNEJBQTRCLFNBRTNCO0lBRUQsa0NBQWtDLFdBRWpDO0lBRUQ7Ozs7O09BS0c7SUFDRyxVQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkE4Q3BEO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsZ0JBQWdCO0lBcUN4Qjs7T0FFRztJQUNHLE9BQU8sa0JBZ0NaO0lBRUQ7Ozs7T0FJRztJQUNHLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFFLE1BQWUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBa0J2RjtJQUVELE9BQU8sQ0FBQyxZQUFZO0lBOEJwQjs7Ozs7Ozs7O09BU0c7SUFDRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBdUV6RjtJQUVELE9BQU8sQ0FBQyxpQkFBaUI7SUFrQ3pCLE9BQU8sQ0FBQyxrQkFBa0I7Q0FpQzNCO0FBRUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxDQUFDO0FBQ2hELFlBQVksRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAKxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAKnE,OAAO,KAAK,EAGV,aAAa,EACb,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAQ1C,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,OAAO,EAAE,MAAM,EAAE,CAAM;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAGxD;IAED,OAAO,SAKN;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkG1B;;;;;;;OAOG;IACG,iBAAiB,CACrB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB,qBA+DP;IAED,4BAA4B,SAE3B;IAED,kCAAkC,WAEjC;IAED;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBA8CpD;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACG,OAAO,kBAgCZ;IAED;;;;;;;;;OASG;IACG,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAsEzF;IAED,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,kBAAkB;CAiC3B;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAKxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAKnE,OAAO,KAAK,EAGV,aAAa,EACb,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAQ1C,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,OAAO,EAAE,MAAM,EAAE,CAAM;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAGxD;IAED,OAAO,SAIN;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkG1B;;;;;;;OAOG;IACG,iBAAiB,CACrB,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB,qBA+DP;IAED,4BAA4B,SAE3B;IAED,kCAAkC,WAEjC;IAED;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBA8CpD;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACG,OAAO,kBAgCZ;IAED;;;;OAIG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBvF;IAED,OAAO,CAAC,YAAY;IA8BpB;;;;;;;;;OASG;IACG,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAuEzF;IAED,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,kBAAkB;CAiC3B;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -37,7 +37,6 @@ class WorkerClientManager {
37
37
  destroy() {
38
38
  this.cleanup().catch((error)=>{
39
39
  this.logger.error('Failed to cleanup worker client manager', error);
40
- process.exit(1);
41
40
  });
42
41
  }
43
42
  /**
@@ -318,6 +317,55 @@ class WorkerClientManager {
318
317
  this.logger.info('All worker processes cleaned up');
319
318
  }
320
319
  /**
320
+ * Checks that the aggregator (client 0) has sufficient peer connections before running a benchmark.
321
+ * This prevents benchmark cases from starting with degraded connectivity after a previous case
322
+ * caused connection failures.
323
+ */ async waitForConnectivity(minPeers, timeoutMs = 15_000) {
324
+ const waitInterval = 1000;
325
+ let waited = 0;
326
+ while(waited < timeoutMs){
327
+ const count = await this.getPeerCount(0, 5000);
328
+ if (count >= minPeers) {
329
+ this.logger.info(`Connectivity check passed: ${count}/${minPeers} peers connected`);
330
+ return count;
331
+ }
332
+ this.logger.debug(`Waiting for connectivity: ${count}/${minPeers} (waited ${waited}ms)`);
333
+ await sleep(waitInterval);
334
+ waited += waitInterval;
335
+ }
336
+ const finalCount = await this.getPeerCount(0, 5000);
337
+ this.logger.warn(`Connectivity check: only ${finalCount}/${minPeers} peers after ${timeoutMs}ms`);
338
+ return finalCount;
339
+ }
340
+ getPeerCount(clientIndex, timeoutMs) {
341
+ return new Promise((resolve)=>{
342
+ let resolved = false;
343
+ const handler = (msg)=>{
344
+ if (resolved) {
345
+ return;
346
+ }
347
+ if (msg.type === 'PEER_COUNT') {
348
+ resolved = true;
349
+ clearTimeout(timeout);
350
+ this.processes[clientIndex].off('message', handler);
351
+ resolve(msg.count);
352
+ }
353
+ };
354
+ const timeout = setTimeout(()=>{
355
+ if (resolved) {
356
+ return;
357
+ }
358
+ resolved = true;
359
+ this.processes[clientIndex].off('message', handler);
360
+ resolve(0);
361
+ }, timeoutMs);
362
+ this.processes[clientIndex].on('message', handler);
363
+ this.processes[clientIndex].send({
364
+ type: 'GET_PEER_COUNT'
365
+ });
366
+ });
367
+ }
368
+ /**
321
369
  * Run a req/resp benchmark across all worker clients.
322
370
  *
323
371
  * This sends a BENCH_REQRESP command to all workers:
@@ -371,7 +419,8 @@ class WorkerClientManager {
371
419
  seed
372
420
  };
373
421
  this.processes[0].send(aggregatorCmd);
374
- const result = await this.waitForBenchResult(0, config.timeoutMs + 30000);
422
+ const aggregatorBudgetMs = config.timeoutMs + BENCHMARK_CONSTANTS.MAX_PEER_WAIT_MS + 30000;
423
+ const result = await this.waitForBenchResult(0, aggregatorBudgetMs);
375
424
  this.logger.info(`Benchmark complete: fetched=${result.fetchedCount}/${config.txCount}, duration=${result.durationMs.toFixed(0)}ms, success=${result.success}`);
376
425
  return {
377
426
  txCount: config.txCount,
package/dest/util.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SecretValue } from '@aztec/foundation/config';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
- import type { DataStoreConfig } from '@aztec/kv-store/config';
4
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
5
5
  import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
6
6
  import type { Identify } from '@libp2p/identify';
7
7
  import type { PeerId } from '@libp2p/interface';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.0.1-commit.5914bae",
3
+ "version": "0.0.1-commit.59a0419c6",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -67,17 +67,17 @@
67
67
  ]
68
68
  },
69
69
  "dependencies": {
70
- "@aztec/constants": "0.0.1-commit.5914bae",
71
- "@aztec/epoch-cache": "0.0.1-commit.5914bae",
72
- "@aztec/ethereum": "0.0.1-commit.5914bae",
73
- "@aztec/foundation": "0.0.1-commit.5914bae",
74
- "@aztec/kv-store": "0.0.1-commit.5914bae",
75
- "@aztec/noir-contracts.js": "0.0.1-commit.5914bae",
76
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.5914bae",
77
- "@aztec/protocol-contracts": "0.0.1-commit.5914bae",
78
- "@aztec/simulator": "0.0.1-commit.5914bae",
79
- "@aztec/stdlib": "0.0.1-commit.5914bae",
80
- "@aztec/telemetry-client": "0.0.1-commit.5914bae",
70
+ "@aztec/constants": "0.0.1-commit.59a0419c6",
71
+ "@aztec/epoch-cache": "0.0.1-commit.59a0419c6",
72
+ "@aztec/ethereum": "0.0.1-commit.59a0419c6",
73
+ "@aztec/foundation": "0.0.1-commit.59a0419c6",
74
+ "@aztec/kv-store": "0.0.1-commit.59a0419c6",
75
+ "@aztec/noir-contracts.js": "0.0.1-commit.59a0419c6",
76
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.59a0419c6",
77
+ "@aztec/protocol-contracts": "0.0.1-commit.59a0419c6",
78
+ "@aztec/simulator": "0.0.1-commit.59a0419c6",
79
+ "@aztec/stdlib": "0.0.1-commit.59a0419c6",
80
+ "@aztec/telemetry-client": "0.0.1-commit.59a0419c6",
81
81
  "@chainsafe/libp2p-gossipsub": "13.0.0",
82
82
  "@chainsafe/libp2p-noise": "^15.0.0",
83
83
  "@chainsafe/libp2p-yamux": "^6.0.2",
@@ -104,8 +104,8 @@
104
104
  "xxhash-wasm": "^1.1.0"
105
105
  },
106
106
  "devDependencies": {
107
- "@aztec/archiver": "0.0.1-commit.5914bae",
108
- "@aztec/world-state": "0.0.1-commit.5914bae",
107
+ "@aztec/archiver": "0.0.1-commit.59a0419c6",
108
+ "@aztec/world-state": "0.0.1-commit.59a0419c6",
109
109
  "@jest/globals": "^30.0.0",
110
110
  "@types/jest": "^30.0.0",
111
111
  "@types/node": "^22.15.17",
@@ -3,12 +3,13 @@ import { BlockNumber } from '@aztec/foundation/branded-types';
3
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
4
4
  import { DateProvider } from '@aztec/foundation/timer';
5
5
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
6
- import type { DataStoreConfig } from '@aztec/kv-store/config';
7
6
  import { AztecLMDBStoreV2, createStore } from '@aztec/kv-store/lmdb-v2';
8
7
  import type { L2BlockSource } from '@aztec/stdlib/block';
9
8
  import type { ChainConfig } from '@aztec/stdlib/config';
10
9
  import type { ContractDataSource } from '@aztec/stdlib/contract';
10
+ import type { BlockMinFeesProvider } from '@aztec/stdlib/gas';
11
11
  import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
12
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
12
13
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
13
14
 
14
15
  import { P2PClient } from '../client/p2p_client.js';
@@ -52,6 +53,7 @@ export async function createP2PClient(
52
53
  proofVerifier: ClientProtocolCircuitVerifier,
53
54
  worldStateSynchronizer: WorldStateSynchronizer,
54
55
  epochCache: EpochCacheInterface,
56
+ blockMinFeesProvider: BlockMinFeesProvider,
55
57
  packageVersion: string,
56
58
  dateProvider: DateProvider = new DateProvider(),
57
59
  telemetry: TelemetryClient = getTelemetryClient(),
@@ -90,23 +92,6 @@ export async function createP2PClient(
90
92
  () => epochCache.getEpochAndSlotInNextL1Slot().ts,
91
93
  );
92
94
 
93
- const createTxValidator = async () => {
94
- // We accept transactions if they are not expired by the next slot and block number (checked based on the ExpirationTimestamp field)
95
- const currentBlockNumber = await archiver.getBlockNumber();
96
- const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
97
- const l1Constants = await archiver.getL1Constants();
98
- return createTxValidatorForTransactionsEnteringPendingTxPool(
99
- worldStateSynchronizer,
100
- nextSlotTimestamp,
101
- BlockNumber(currentBlockNumber + 1),
102
- {
103
- rollupManaLimit: l1Constants.rollupManaLimit,
104
- maxBlockL2Gas: config.validateMaxL2BlockGas,
105
- maxBlockDAGas: config.validateMaxDABlockGas,
106
- },
107
- );
108
- };
109
-
110
95
  const txPool =
111
96
  deps.txPool ??
112
97
  new AztecKVTxPoolV2(
@@ -116,13 +101,31 @@ export async function createP2PClient(
116
101
  l2BlockSource: archiver,
117
102
  worldStateSynchronizer,
118
103
  checkAllowedSetupCalls,
119
- createTxValidator,
104
+ createTxValidator: async () => {
105
+ const currentBlockNumber = await archiver.getBlockNumber();
106
+ const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
107
+ const l1Constants = await archiver.getL1Constants();
108
+ const gasFees = await blockMinFeesProvider.getCurrentMinFees();
109
+ return createTxValidatorForTransactionsEnteringPendingTxPool(
110
+ worldStateSynchronizer,
111
+ nextSlotTimestamp,
112
+ BlockNumber(currentBlockNumber + 1),
113
+ {
114
+ rollupManaLimit: l1Constants.rollupManaLimit,
115
+ maxBlockL2Gas: config.validateMaxL2BlockGas,
116
+ maxBlockDAGas: config.validateMaxDABlockGas,
117
+ },
118
+ gasFees,
119
+ );
120
+ },
121
+ blockMinFeesProvider,
120
122
  },
121
123
  telemetry,
122
124
  {
123
125
  maxPendingTxCount: config.maxPendingTxCount,
124
126
  archivedTxLimit: config.archivedTxLimit,
125
127
  minTxPoolAgeMs: config.minTxPoolAgeMs,
128
+ dropTransactionsProbability: config.dropTransactionsProbability,
126
129
  priceBumpPercentage: config.priceBumpPercentage,
127
130
  },
128
131
  dateProvider,
@@ -139,6 +142,7 @@ export async function createP2PClient(
139
142
  proofVerifier,
140
143
  worldStateSynchronizer,
141
144
  epochCache,
145
+ blockMinFeesProvider,
142
146
  store,
143
147
  peerStore,
144
148
  mempools,
@@ -215,6 +219,7 @@ async function createP2PService(
215
219
  proofVerifier: ClientProtocolCircuitVerifier,
216
220
  worldStateSynchronizer: WorldStateSynchronizer,
217
221
  epochCache: EpochCacheInterface,
222
+ blockMinFeesProvider: BlockMinFeesProvider,
218
223
  store: AztecAsyncKVStore,
219
224
  peerStore: AztecLMDBStoreV2,
220
225
  mempools: MemPools,
@@ -242,6 +247,7 @@ async function createP2PService(
242
247
  proofVerifier,
243
248
  worldStateSynchronizer,
244
249
  peerStore,
250
+ blockMinFeesProvider,
245
251
  telemetry,
246
252
  logger: logger.createChild(`libp2p_service`),
247
253
  });
@@ -82,7 +82,15 @@ export type P2P = P2PClient & {
82
82
  *
83
83
  * @param handler - A function taking a received checkpoint proposal and producing attestations
84
84
  */
85
- registerCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
85
+ registerValidatorCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
86
+
87
+ /**
88
+ * Registers a callback that runs for ALL nodes (not just validators) when a checkpoint proposal is received.
89
+ * Used to set the proposed checkpoint number on the archiver so the sequencer can build on top of it.
90
+ *
91
+ * @param handler - A function taking a received checkpoint proposal
92
+ */
93
+ registerAllNodesCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
86
94
 
87
95
  /**
88
96
  * Registers a callback invoked when a duplicate proposal is detected (equivocation).
@@ -1,4 +1,3 @@
1
- import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
2
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
3
2
  import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
4
3
  import { createLogger } from '@aztec/foundation/log';
@@ -9,6 +8,7 @@ import { L2TipsKVStore } from '@aztec/kv-store/stores';
9
8
  import {
10
9
  type CheckpointId,
11
10
  type EthAddress,
11
+ GENESIS_BLOCK_HEADER_HASH,
12
12
  type L2Block,
13
13
  type L2BlockId,
14
14
  type L2BlockSource,
@@ -257,7 +257,11 @@ export class P2PClient extends WithTracer implements P2P {
257
257
  });
258
258
  }
259
259
 
260
- this.blockStream!.start();
260
+ // Should never happen: all branches above call initBlockStream()
261
+ if (!this.blockStream) {
262
+ throw new Error('Block stream not initialized');
263
+ }
264
+ this.blockStream.start();
261
265
  await this.txCollection.start();
262
266
  this.txFileStore?.start();
263
267
 
@@ -319,7 +323,11 @@ export class P2PClient extends WithTracer implements P2P {
319
323
  /** Triggers a sync to the archiver. Used for testing. */
320
324
  public async sync() {
321
325
  this.initBlockStream();
322
- await this.blockStream!.sync();
326
+ // Should never happen: initBlockStream() creates blockStream if absent
327
+ if (!this.blockStream) {
328
+ throw new Error('Block stream not initialized');
329
+ }
330
+ await this.blockStream.sync();
323
331
  }
324
332
 
325
333
  @trackSpan('p2pClient.broadcastProposal', async proposal => ({
@@ -357,6 +365,8 @@ export class P2PClient extends WithTracer implements P2P {
357
365
  // Store our own last-block proposal so we can respond to req/resp requests for it.
358
366
  await this.attestationPool.tryAddBlockProposal(blockProposal);
359
367
  }
368
+ // Gossipsub doesn't deliver own messages, so fire the all-nodes handler locally
369
+ await this.p2pService.notifyOwnCheckpointProposal(proposal.toCore());
360
370
  return this.p2pService.propagate(proposal);
361
371
  }
362
372
 
@@ -388,8 +398,12 @@ export class P2PClient extends WithTracer implements P2P {
388
398
  this.p2pService.registerBlockReceivedCallback(handler);
389
399
  }
390
400
 
391
- public registerCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void {
392
- this.p2pService.registerCheckpointReceivedCallback(handler);
401
+ public registerValidatorCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void {
402
+ this.p2pService.registerValidatorCheckpointReceivedCallback(handler);
403
+ }
404
+
405
+ public registerAllNodesCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void {
406
+ this.p2pService.registerAllNodesCheckpointReceivedCallback(handler);
393
407
  }
394
408
 
395
409
  public registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void {
@@ -696,12 +710,23 @@ export class P2PClient extends WithTracer implements P2P {
696
710
 
697
711
  /** Checks if the slot has changed and calls prepareForSlot if so. */
698
712
  private async maybeCallPrepareForSlot(): Promise<void> {
699
- const { currentSlot } = this.epochCache.getCurrentAndNextSlot();
700
- if (currentSlot <= this.lastSlotProcessed) {
713
+ // If we have a proposed checkpoint available, we want to prepare the target slot - otherwise we prepare the current slot
714
+ const l2Tips = await this.l2Tips.getL2Tips();
715
+ const hasProposedCheckpoint = l2Tips.proposedCheckpoint.checkpoint.number > l2Tips.checkpointed.checkpoint.number;
716
+
717
+ let slot;
718
+ if (this.epochCache.isProposerPipeliningEnabled() && hasProposedCheckpoint) {
719
+ const { targetSlot } = this.epochCache.getTargetAndNextSlot();
720
+ slot = targetSlot;
721
+ } else {
722
+ const { currentSlot } = this.epochCache.getCurrentAndNextSlot();
723
+ slot = currentSlot;
724
+ }
725
+ if (slot <= this.lastSlotProcessed) {
701
726
  return;
702
727
  }
703
- this.lastSlotProcessed = currentSlot;
704
- await this.txPool.prepareForSlot(currentSlot);
728
+ this.lastSlotProcessed = slot;
729
+ await this.txPool.prepareForSlot(slot);
705
730
  }
706
731
 
707
732
  private async startServiceIfSynched() {
@@ -3,11 +3,12 @@ import { SecretValue } from '@aztec/foundation/config';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { sleep } from '@aztec/foundation/sleep';
5
5
  import { DateProvider, Timer, executeTimeout } from '@aztec/foundation/timer';
6
- import type { DataStoreConfig } from '@aztec/kv-store/config';
7
6
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
8
7
  import type { L2BlockSource } from '@aztec/stdlib/block';
9
8
  import type { ContractDataSource } from '@aztec/stdlib/contract';
9
+ import { GasFees } from '@aztec/stdlib/gas';
10
10
  import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
11
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
11
12
  import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
12
13
  import type { Tx, TxValidationResult } from '@aztec/stdlib/tx';
13
14
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
@@ -19,7 +20,7 @@ import type { P2PConfig } from '../../../config.js';
19
20
  import { BatchTxRequesterCollector, SendBatchRequestCollector } from '../../../services/index.js';
20
21
  import type { IBatchRequestTxValidator } from '../../../services/reqresp/batch-tx-requester/tx_validator.js';
21
22
  import { RateLimitStatus } from '../../../services/reqresp/rate-limiter/rate_limiter.js';
22
- import { MissingTxsTracker } from '../../../services/tx_collection/missing_txs_tracker.js';
23
+ import { RequestTracker } from '../../../services/tx_collection/request_tracker.js';
23
24
  import {
24
25
  AlwaysTrueCircuitVerifier,
25
26
  BENCHMARK_CONSTANTS,
@@ -119,6 +120,7 @@ async function startClient(config: P2PConfig, clientIndex: number) {
119
120
  proofVerifier as ClientProtocolCircuitVerifier,
120
121
  worldState,
121
122
  epochCache,
123
+ { getCurrentMinFees: () => Promise.resolve(GasFees.empty()) },
122
124
  'proposal-tx-collector-bench-worker',
123
125
  new DateProvider(),
124
126
  telemetry as TelemetryClient,
@@ -213,10 +215,9 @@ async function runCollector(cmd: Extract<WorkerCommand, { type: 'RUN_COLLECTOR'
213
215
  const fetched = await executeTimeout(
214
216
  (_signal: AbortSignal) =>
215
217
  collector.collectTxs(
216
- MissingTxsTracker.fromArray(parsedTxHashes),
218
+ RequestTracker.create(parsedTxHashes, new Date(Date.now() + internalTimeoutMs)),
217
219
  parsedProposal,
218
220
  pinnedPeer,
219
- internalTimeoutMs,
220
221
  ),
221
222
  timeoutMs,
222
223
  () => new Error(`Collector timed out after ${timeoutMs}ms`),
@@ -231,10 +232,9 @@ async function runCollector(cmd: Extract<WorkerCommand, { type: 'RUN_COLLECTOR'
231
232
  const fetched = await executeTimeout(
232
233
  (_signal: AbortSignal) =>
233
234
  collector.collectTxs(
234
- MissingTxsTracker.fromArray(parsedTxHashes),
235
+ RequestTracker.create(parsedTxHashes, new Date(Date.now() + internalTimeoutMs)),
235
236
  parsedProposal,
236
237
  pinnedPeer,
237
- internalTimeoutMs,
238
238
  ),
239
239
  timeoutMs,
240
240
  () => new Error(`Collector timed out after ${timeoutMs}ms`),
@@ -261,9 +261,20 @@ async function stopClient() {
261
261
  attestationPool = undefined;
262
262
  }
263
263
 
264
+ function gracefulExit(code: number = 0) {
265
+ try {
266
+ if (process.connected) {
267
+ process.disconnect();
268
+ }
269
+ } catch {
270
+ // IPC channel already closed
271
+ }
272
+ setTimeout(() => process.exit(code), 5000).unref();
273
+ }
274
+
264
275
  process.on('disconnect', () => {
265
276
  ipcDisconnected = true;
266
- void stopClient().finally(() => process.exit(0));
277
+ void stopClient();
267
278
  });
268
279
 
269
280
  process.on('error', err => {
@@ -327,7 +338,7 @@ process.on('message', (msg: WorkerCommand) => {
327
338
  case 'STOP': {
328
339
  await stopClient();
329
340
  await sendMessage({ type: 'STOPPED', requestId });
330
- process.exit(0);
341
+ gracefulExit(0);
331
342
  break;
332
343
  }
333
344
  default: {
@@ -338,7 +349,8 @@ process.on('message', (msg: WorkerCommand) => {
338
349
  } catch (err: any) {
339
350
  await sendMessage({ type: 'ERROR', requestId, error: err?.message ?? String(err) });
340
351
  if (msg.type === 'START') {
341
- process.exit(1);
352
+ await stopClient();
353
+ gracefulExit(1);
342
354
  }
343
355
  }
344
356
  })();
package/src/config.ts CHANGED
@@ -11,7 +11,6 @@ import {
11
11
  secretStringConfigHelper,
12
12
  } from '@aztec/foundation/config';
13
13
  import { Fr } from '@aztec/foundation/curves/bn254';
14
- import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
15
14
  import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
16
15
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
17
16
  import {
@@ -21,6 +20,7 @@ import {
21
20
  chainConfigMappings,
22
21
  sharedSequencerConfigMappings,
23
22
  } from '@aztec/stdlib/config';
23
+ import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
24
24
 
25
25
  import {
26
26
  type BatchTxRequesterConfig,
@@ -39,7 +39,14 @@ export interface P2PConfig
39
39
  ChainConfig,
40
40
  TxCollectionConfig,
41
41
  TxFileStoreConfig,
42
- Pick<SequencerConfig, 'blockDurationMs' | 'expectedBlockProposalsPerSlot' | 'maxTxsPerBlock'> {
42
+ Pick<
43
+ SequencerConfig,
44
+ | 'blockDurationMs'
45
+ | 'expectedBlockProposalsPerSlot'
46
+ | 'l1PublishingTime'
47
+ | 'maxTxsPerBlock'
48
+ | 'attestationPropagationTime'
49
+ > {
43
50
  /** Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set. */
44
51
  validateMaxTxsPerBlock?: number;
45
52
 
@@ -70,6 +77,9 @@ export interface P2PConfig
70
77
  /** The frequency in which to check for new peers. */
71
78
  peerCheckIntervalMS: number;
72
79
 
80
+ /** How long to ban a peer after it fails MAX_DIAL_ATTEMPTS dials. */
81
+ peerFailedBanTimeMs: number;
82
+
73
83
  /** Size of queue of L2 blocks to store. */
74
84
  l2QueueSize: number;
75
85
 
@@ -186,10 +196,7 @@ export interface P2PConfig
186
196
  /** Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers. */
187
197
  disableTransactions: boolean;
188
198
 
189
- /** True to simulate discarding transactions. - For testing purposes only*/
190
- dropTransactions: boolean;
191
-
192
- /** The probability that a transaction is discarded. - For testing purposes only */
199
+ /** The probability that a transaction is discarded (0 = disabled). - For testing purposes only */
193
200
  dropTransactionsProbability: number;
194
201
 
195
202
  /** Whether to delete transactions from the pool after a reorg instead of moving them back to pending. */
@@ -218,23 +225,23 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
218
225
  env: 'VALIDATOR_MAX_TX_PER_BLOCK',
219
226
  description:
220
227
  'Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set.',
221
- parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
228
+ parseEnv: (val: string) => parseInt(val, 10),
222
229
  },
223
230
  validateMaxTxsPerCheckpoint: {
224
231
  env: 'VALIDATOR_MAX_TX_PER_CHECKPOINT',
225
232
  description:
226
233
  'Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set.',
227
- parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
234
+ parseEnv: (val: string) => parseInt(val, 10),
228
235
  },
229
236
  validateMaxL2BlockGas: {
230
237
  env: 'VALIDATOR_MAX_L2_BLOCK_GAS',
231
238
  description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.',
232
- parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
239
+ parseEnv: (val: string) => parseInt(val, 10),
233
240
  },
234
241
  validateMaxDABlockGas: {
235
242
  env: 'VALIDATOR_MAX_DA_BLOCK_GAS',
236
243
  description: 'Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected.',
237
- parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined),
244
+ parseEnv: (val: string) => parseInt(val, 10),
238
245
  },
239
246
  p2pEnabled: {
240
247
  env: 'P2P_ENABLED',
@@ -266,6 +273,11 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
266
273
  description: 'The frequency in which to check for new peers.',
267
274
  ...numberConfigHelper(30_000),
268
275
  },
276
+ peerFailedBanTimeMs: {
277
+ env: 'P2P_PEER_FAILED_BAN_TIME_MS',
278
+ description: 'How long to ban a peer after it fails maximum dial attempts.',
279
+ ...numberConfigHelper(5 * 60 * 1000),
280
+ },
269
281
  l2QueueSize: {
270
282
  env: 'P2P_L2_QUEUE_SIZE',
271
283
  description: 'Size of queue of L2 blocks to store.',
@@ -359,7 +371,7 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
359
371
  gossipsubMcacheLength: {
360
372
  env: 'P2P_GOSSIPSUB_MCACHE_LENGTH',
361
373
  description: 'The number of gossipsub interval message cache windows to keep.',
362
- ...numberConfigHelper(6),
374
+ ...numberConfigHelper(12),
363
375
  },
364
376
  gossipsubMcacheGossip: {
365
377
  env: 'P2P_GOSSIPSUB_MCACHE_GOSSIP',
@@ -431,7 +443,7 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
431
443
  },
432
444
  p2pStoreMapSizeKb: {
433
445
  env: 'P2P_STORE_MAP_SIZE_KB',
434
- parseEnv: (val: string | undefined) => (val ? +val : undefined),
446
+ parseEnv: (val: string) => +val,
435
447
  description: 'The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb.',
436
448
  },
437
449
  txPublicSetupAllowListExtend: {
@@ -469,11 +481,6 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
469
481
  description: 'Number of auth attempts to allow before peer is banned. Number is inclusive',
470
482
  ...numberConfigHelper(3),
471
483
  },
472
- dropTransactions: {
473
- env: 'P2P_DROP_TX',
474
- description: 'True to simulate discarding transactions. - For testing purposes only',
475
- ...booleanConfigHelper(false),
476
- },
477
484
  dropTransactionsProbability: {
478
485
  env: 'P2P_DROP_TX_CHANCE',
479
486
  description: 'The probability that a transaction is discarded (0 - 1). - For testing purposes only',
@@ -495,6 +502,11 @@ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
495
502
  description: 'Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY',
496
503
  ...booleanConfigHelper(false),
497
504
  },
505
+ l1PublishingTime: {
506
+ env: 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT',
507
+ description: 'How much time (in seconds) we allow in the slot for publishing the L1 tx (defaults to 1 L1 slot).',
508
+ parseEnv: (val: string) => parseInt(val, 10),
509
+ },
498
510
  fishermanMode: {
499
511
  env: 'FISHERMAN_MODE',
500
512
  description:
@@ -0,0 +1,11 @@
1
+ /** Checkpoint Proposal Received Callback Not Registered Error
2
+ *
3
+ * Error triggered if the allNodesCheckpointReceivedCallback is not registered
4
+ * @category Errors
5
+ */
6
+ export class CheckpointProposalReceivedCallbackNotRegisteredError extends Error {
7
+ constructor() {
8
+ super('FATAL (allNodesCheckpointReceivedCallback): All nodes should register a checkpoint proposal handler');
9
+ this.name = 'CheckpointProposalReceivedCallbackNotRegisteredError';
10
+ }
11
+ }
package/src/index.ts CHANGED
@@ -6,7 +6,6 @@ export * from './client/index.js';
6
6
  export * from './enr/index.js';
7
7
  export * from './config.js';
8
8
  export * from './mem_pools/attestation_pool/index.js';
9
- export * from './mem_pools/tx_pool/index.js';
10
9
  export * from './mem_pools/tx_pool_v2/index.js';
11
10
  export * from './msg_validators/index.js';
12
11
  export * from './services/index.js';