@aztec/p2p 0.0.1-commit.35158ae7e → 0.0.1-commit.3750d92a7

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 (213) hide show
  1. package/dest/client/factory.d.ts +1 -1
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +6 -5
  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 -10
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +14 -3
  10. package/dest/config.d.ts +103 -99
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +10 -5
  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 +4 -2
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +8 -5
  22. package/dest/mem_pools/index.d.ts +1 -2
  23. package/dest/mem_pools/index.d.ts.map +1 -1
  24. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  25. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +1 -1
  26. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  27. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +6 -2
  28. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  29. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  30. package/dest/msg_validators/attestation_validator/attestation_validator.js +17 -9
  31. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  32. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  33. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  34. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  35. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  36. package/dest/msg_validators/clock_tolerance.js +50 -0
  37. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  38. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  39. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  40. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  41. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  42. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  43. package/dest/msg_validators/proposal_validator/proposal_validator.js +16 -8
  44. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  45. package/dest/msg_validators/tx_validator/gas_validator.d.ts +1 -1
  46. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  47. package/dest/msg_validators/tx_validator/gas_validator.js +11 -9
  48. package/dest/services/data_store.d.ts +1 -1
  49. package/dest/services/data_store.d.ts.map +1 -1
  50. package/dest/services/data_store.js +5 -5
  51. package/dest/services/discv5/discV5_service.d.ts +1 -1
  52. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  53. package/dest/services/discv5/discV5_service.js +2 -4
  54. package/dest/services/dummy_service.d.ts +6 -3
  55. package/dest/services/dummy_service.d.ts.map +1 -1
  56. package/dest/services/dummy_service.js +6 -1
  57. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  58. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  59. package/dest/services/gossipsub/topic_score_params.js +21 -4
  60. package/dest/services/libp2p/libp2p_service.d.ts +12 -20
  61. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  62. package/dest/services/libp2p/libp2p_service.js +42 -97
  63. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  64. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  65. package/dest/services/peer-manager/peer_manager.js +33 -8
  66. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  67. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  68. package/dest/services/peer-manager/peer_scoring.js +32 -10
  69. package/dest/services/reqresp/config.d.ts +3 -3
  70. package/dest/services/reqresp/config.d.ts.map +1 -1
  71. package/dest/services/reqresp/interface.d.ts +14 -9
  72. package/dest/services/reqresp/interface.d.ts.map +1 -1
  73. package/dest/services/reqresp/interface.js +10 -11
  74. package/dest/services/reqresp/metrics.d.ts +1 -1
  75. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  76. package/dest/services/reqresp/metrics.js +0 -1
  77. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  78. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  79. package/dest/services/reqresp/protocols/index.js +0 -1
  80. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  81. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  82. package/dest/services/reqresp/protocols/tx.js +1 -3
  83. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  84. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  85. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  86. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  87. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  88. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  89. package/dest/services/reqresp/reqresp.d.ts +4 -2
  90. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  91. package/dest/services/reqresp/reqresp.js +11 -2
  92. package/dest/services/service.d.ts +5 -8
  93. package/dest/services/service.d.ts.map +1 -1
  94. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  95. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  96. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  97. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  98. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  99. package/dest/services/tx_collection/tx_source.js +9 -7
  100. package/dest/test-helpers/mock-pubsub.d.ts +11 -8
  101. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  102. package/dest/test-helpers/mock-pubsub.js +36 -19
  103. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  104. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  105. package/dest/test-helpers/reqresp-nodes.js +1 -2
  106. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  107. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  108. package/dest/test-helpers/testbench-utils.js +1 -0
  109. package/dest/testbench/p2p_client_testbench_worker.js +63 -12
  110. package/dest/testbench/worker_client_manager.d.ts +8 -1
  111. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  112. package/dest/testbench/worker_client_manager.js +49 -1
  113. package/dest/util.d.ts +3 -8
  114. package/dest/util.d.ts.map +1 -1
  115. package/dest/util.js +9 -2
  116. package/package.json +14 -14
  117. package/src/client/factory.ts +8 -3
  118. package/src/client/interface.ts +9 -1
  119. package/src/client/p2p_client.ts +34 -11
  120. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +15 -3
  121. package/src/config.ts +18 -6
  122. package/src/errors/p2p-service.error.ts +11 -0
  123. package/src/index.ts +0 -1
  124. package/src/mem_pools/attestation_pool/attestation_pool.ts +9 -5
  125. package/src/mem_pools/index.ts +0 -3
  126. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  127. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +8 -2
  128. package/src/msg_validators/attestation_validator/attestation_validator.ts +18 -7
  129. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  130. package/src/msg_validators/clock_tolerance.ts +68 -0
  131. package/src/msg_validators/proposal_validator/README.md +1 -1
  132. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +4 -1
  133. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +4 -1
  134. package/src/msg_validators/proposal_validator/proposal_validator.ts +13 -7
  135. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  136. package/src/msg_validators/tx_validator/gas_validator.ts +25 -9
  137. package/src/services/data_store.ts +5 -13
  138. package/src/services/discv5/discV5_service.ts +2 -4
  139. package/src/services/dummy_service.ts +8 -2
  140. package/src/services/gossipsub/topic_score_params.ts +36 -4
  141. package/src/services/libp2p/libp2p_service.ts +47 -106
  142. package/src/services/peer-manager/peer_manager.ts +38 -8
  143. package/src/services/peer-manager/peer_scoring.ts +27 -5
  144. package/src/services/reqresp/config.ts +2 -2
  145. package/src/services/reqresp/interface.ts +21 -11
  146. package/src/services/reqresp/metrics.ts +0 -1
  147. package/src/services/reqresp/protocols/index.ts +0 -1
  148. package/src/services/reqresp/protocols/tx.ts +1 -3
  149. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  150. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  151. package/src/services/reqresp/reqresp.ts +18 -1
  152. package/src/services/service.ts +6 -8
  153. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  154. package/src/services/tx_collection/tx_source.ts +8 -7
  155. package/src/test-helpers/mock-pubsub.ts +31 -14
  156. package/src/test-helpers/reqresp-nodes.ts +2 -2
  157. package/src/test-helpers/testbench-utils.ts +1 -0
  158. package/src/testbench/p2p_client_testbench_worker.ts +67 -9
  159. package/src/testbench/worker_client_manager.ts +55 -1
  160. package/src/util.ts +12 -8
  161. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  162. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  163. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  164. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  165. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  166. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  167. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  168. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  169. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  170. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  171. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  172. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
  173. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  174. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  175. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  176. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  177. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  178. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  179. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  180. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  181. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  182. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  183. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  184. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  185. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  186. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  187. package/dest/mem_pools/tx_pool/index.js +0 -2
  188. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  189. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  190. package/dest/mem_pools/tx_pool/priority.js +0 -15
  191. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  192. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  193. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  194. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  195. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  196. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  197. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  198. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  199. package/dest/services/reqresp/protocols/block.js +0 -32
  200. package/src/mem_pools/tx_pool/README.md +0 -270
  201. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  202. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  203. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  204. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
  205. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  206. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  207. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  208. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  209. package/src/mem_pools/tx_pool/index.ts +0 -2
  210. package/src/mem_pools/tx_pool/priority.ts +0 -20
  211. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  212. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  213. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -160,4 +160,4 @@ export declare function filterTxsByDistribution(allTxs: Tx[], peerIndex: number,
160
160
  * Ensures we return before the outer timeout while maintaining a minimum.
161
161
  */
162
162
  export declare function calculateInternalTimeout(timeoutMs: number): number;
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGJlbmNoLXV0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1oZWxwZXJzL3Rlc3RiZW5jaC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEtBQUssRUFDVixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sWUFBWSxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR3RFOzs7O0dBSUc7QUFDSCxxQkFBYSxjQUFlLFNBQVEsWUFBYSxZQUFXLFFBQVE7SUFDbEUsT0FBTyxDQUFDLFNBQVMsQ0FBeUI7SUFDMUMsT0FBTyxDQUFDLE1BQU0sQ0FBdUI7SUFFckMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUU5QjtJQUVELE1BQU0sQ0FB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
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGJlbmNoLXV0aWxzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1oZWxwZXJzL3Rlc3RiZW5jaC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEtBQUssRUFDVixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sWUFBWSxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR3RFOzs7O0dBSUc7QUFDSCxxQkFBYSxjQUFlLFNBQVEsWUFBYSxZQUFXLFFBQVE7SUFDbEUsT0FBTyxDQUFDLFNBQVMsQ0FBeUI7SUFDMUMsT0FBTyxDQUFDLE1BQU0sQ0FBdUI7SUFFckMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUU5QjtJQUVELE1BQU0sQ0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"testbench-utils.d.ts","sourceRoot":"","sources":["../../src/test-helpers/testbench-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testbench-utils.d.ts","sourceRoot":"","sources":["../../src/test-helpers/testbench-utils.ts"],"names":[],"mappings":"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"}
@@ -249,6 +249,7 @@ import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.j
249
249
  nowMs: 0n
250
250
  }),
251
251
  isProposerPipeliningEnabled: ()=>false,
252
+ pipeliningOffset: ()=>0,
252
253
  computeProposerIndex: ()=>0n,
253
254
  getCurrentAndNextSlot: ()=>({
254
255
  currentSlot: SlotNumber.ZERO,
@@ -110,6 +110,21 @@ function installUnlimitedRateLimits(client) {
110
110
  rateLimiter.getRateLimits = ()=>UNLIMITED_RATE_LIMIT_QUOTA;
111
111
  rateLimiter.allow = ()=>RateLimitStatus.Allowed;
112
112
  }
113
+ /** Resets peer scores to prevent cross-case contamination in benchmarks. */ function resetPeerScores(client) {
114
+ const peerManager = client.p2pService.peerManager;
115
+ const peerScoring = peerManager?.peerScoring;
116
+ if (peerScoring?.resetAllScores) {
117
+ peerScoring.resetAllScores();
118
+ }
119
+ }
120
+ /** Returns the number of connected peers for connectivity checks. */ function getConnectedPeerCount(client) {
121
+ const p2pService = client.p2pService;
122
+ const connectionSampler = p2pService?.reqresp?.getConnectionSampler?.();
123
+ if (connectionSampler?.getPeerListSortedByConnectionCountAsc) {
124
+ return connectionSampler.getPeerListSortedByConnectionCountAsc().length;
125
+ }
126
+ return 0;
127
+ }
113
128
  async function runAggregatorBenchmark(client, blockProposal, collectorType, timeoutMs, pinnedPeerId, pinnedPeerIndex, logger, expectedPeerCount) {
114
129
  let timer = new Timer();
115
130
  try {
@@ -188,6 +203,35 @@ let workerAttestationPool = null;
188
203
  let workerConfig = null;
189
204
  let workerLogger = null;
190
205
  let kvStore = null;
206
+ async function stopWorker() {
207
+ try {
208
+ if (workerClient) {
209
+ await workerClient.stop();
210
+ workerClient = null;
211
+ }
212
+ } catch (e) {
213
+ workerLogger?.error('Error stopping worker client', e);
214
+ }
215
+ try {
216
+ if (kvStore?.close) {
217
+ await kvStore.close();
218
+ kvStore = null;
219
+ }
220
+ } catch (e) {
221
+ workerLogger?.error('Error closing kv store', e);
222
+ }
223
+ }
224
+ function gracefulExit(code = 0) {
225
+ try {
226
+ if (process.connected) {
227
+ process.disconnect();
228
+ }
229
+ } catch {
230
+ // IPC channel already closed
231
+ }
232
+ // Safety fallback if lingering handles prevent the event loop from draining
233
+ setTimeout(()=>process.exit(code), 5000).unref();
234
+ }
191
235
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
192
236
  process.on('message', async (msg)=>{
193
237
  const { type, config: rawConfig, clientIndex } = msg;
@@ -238,13 +282,8 @@ process.on('message', async (msg)=>{
238
282
  const cmd = msg;
239
283
  switch(cmd.type){
240
284
  case 'STOP':
241
- if (workerClient) {
242
- await workerClient.stop();
243
- }
244
- if (kvStore?.close) {
245
- await kvStore.close();
246
- }
247
- process.exit(0);
285
+ await stopWorker();
286
+ gracefulExit(0);
248
287
  break;
249
288
  case 'SEND_TX':
250
289
  if (workerClient) {
@@ -254,6 +293,12 @@ process.on('message', async (msg)=>{
254
293
  });
255
294
  }
256
295
  break;
296
+ case 'GET_PEER_COUNT':
297
+ process.send({
298
+ type: 'PEER_COUNT',
299
+ count: workerClient ? getConnectedPeerCount(workerClient) : 0
300
+ });
301
+ break;
257
302
  case 'BENCH_REQRESP':
258
303
  {
259
304
  const benchCmd = cmd;
@@ -270,6 +315,7 @@ process.on('message', async (msg)=>{
270
315
  // Reset state before each benchmark run to avoid cross-run contamination
271
316
  workerTxPool.resetState();
272
317
  workerAttestationPool.resetState();
318
+ resetPeerScores(workerClient);
273
319
  installUnlimitedRateLimits(workerClient);
274
320
  const allTxs = await generateDeterministicTxs(benchCmd.txCount, benchCmd.seed, workerConfig);
275
321
  const txHashes = allTxs.map((tx)=>tx.getTxHash());
@@ -293,10 +339,15 @@ process.on('message', async (msg)=>{
293
339
  }
294
340
  }
295
341
  } catch (err) {
296
- process.send({
297
- type: 'ERROR',
298
- error: err.message
299
- });
300
- process.exit(1);
342
+ try {
343
+ process.send({
344
+ type: 'ERROR',
345
+ error: err.message
346
+ });
347
+ } catch {
348
+ // IPC channel may be closed
349
+ }
350
+ await stopWorker();
351
+ gracefulExit(1);
301
352
  }
302
353
  });
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUtuRSxPQUFPLEtBQUssRUFHVixhQUFhLEVBQ2IsbUJBQW1CLEVBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsUUFBQSxNQUFNLGVBQWUsRUFBRSxXQU10QixDQUFDO0FBRUYsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztJQUNsQyxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZjtBQUVELE1BQU0sV0FBVyxzQkFBc0I7SUFDckMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixZQUFZLEVBQUUsbUJBQW1CLENBQUM7SUFDbEMsU0FBUyxFQUFFLGFBQWEsQ0FBQztJQUN6QixVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFlBQVksRUFBRSxNQUFNLENBQUM7SUFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEI7QUFFRCxjQUFNLG1CQUFtQjtJQUNoQixTQUFTLEVBQUUsWUFBWSxFQUFFLENBQU07SUFDL0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ3hCLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBcUI7SUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2QixPQUFPLENBQUMsdUJBQXVCLENBQWdCO0lBRS9DLFlBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUd4RDtJQUVELE9BQU8sU0FLTjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBb0IxQjs7O09BR0c7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBa0cxQjs7Ozs7OztPQU9HO0lBQ0csaUJBQWlCLENBQ3JCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLE9BQU8sR0FBRTtRQUNQLGFBQWEsQ0FBQyxFQUFFLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3ZCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNuQixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDbEIscUJBK0RQO0lBRUQsNEJBQTRCLFNBRTNCO0lBRUQsa0NBQWtDLFdBRWpDO0lBRUQ7Ozs7O09BS0c7SUFDRyxVQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkE4Q3BEO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsZ0JBQWdCO0lBcUN4Qjs7T0FFRztJQUNHLE9BQU8sa0JBZ0NaO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0csbUJBQW1CLENBQUMsTUFBTSxFQUFFLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQXVFekY7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBa0N6QixPQUFPLENBQUMsa0JBQWtCO0NBaUMzQjtBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUNoRCxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUMifQ==
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,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"}
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:
package/dest/util.d.ts CHANGED
@@ -5,7 +5,7 @@ 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';
8
- import type { AddressManager, ConnectionManager } from '@libp2p/interface-internal';
8
+ import type { ConnectionManager } from '@libp2p/interface-internal';
9
9
  import type { Libp2p } from 'libp2p';
10
10
  import type { P2PConfig } from './config.js';
11
11
  export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' | 'peerId'> {
@@ -13,10 +13,6 @@ export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' |
13
13
  pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct' | 'getMeshPeers'> & {
14
14
  score: Pick<GossipSub['score'], 'score'>;
15
15
  };
16
- components: {
17
- connectionManager: ConnectionManager;
18
- addressManager: AddressManager;
19
- };
20
16
  };
21
17
  }
22
18
  export type FullLibp2p = Libp2p<{
@@ -24,7 +20,6 @@ export type FullLibp2p = Libp2p<{
24
20
  pubsub: GossipSub;
25
21
  components: {
26
22
  connectionManager: ConnectionManager;
27
- addressManager: AddressManager;
28
23
  };
29
24
  }>;
30
25
  /**
@@ -42,7 +37,7 @@ export declare function convertToMultiaddr(address: string, port: number, protoc
42
37
  export declare function getPublicIp(): Promise<string>;
43
38
  export declare function isValidIpAddress(address: string): boolean;
44
39
  export declare function resolveAddressIfNecessary(address: string, port: string): Promise<string>;
45
- export declare function configureP2PClientAddresses(_config: P2PConfig & DataStoreConfig): P2PConfig & DataStoreConfig;
40
+ export declare function configureP2PClientAddresses(_config: P2PConfig & DataStoreConfig): Promise<P2PConfig & DataStoreConfig>;
46
41
  /**
47
42
  * Get the peer id private key
48
43
  *
@@ -63,4 +58,4 @@ export declare function getPeerIdPrivateKey(config: {
63
58
  * @returns The peer ID.
64
59
  */
65
60
  export declare function createLibP2PPeerIdFromPrivateKey(privateKey: string): Promise<PeerId>;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXBGLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUlyQyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJN0MsTUFBTSxXQUFXLFlBQWEsU0FBUSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsR0FBRyxPQUFPLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUN4RixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSSxDQUNWLFNBQVMsRUFDUCxrQkFBa0IsR0FDbEIscUJBQXFCLEdBQ3JCLFNBQVMsR0FDVCxXQUFXLEdBQ1gsK0JBQStCLEdBQy9CLFFBQVEsR0FDUixjQUFjLENBQ2pCLEdBQUc7WUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUFFLENBQUM7UUFDakQsVUFBVSxFQUFFO1lBQ1YsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUM7WUFDckMsY0FBYyxFQUFFLGNBQWMsQ0FBQztTQUNoQyxDQUFDO0tBQ0gsQ0FBQztDQUNIO0FBRUQsTUFBTSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDOUIsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUNuQixNQUFNLEVBQUUsU0FBUyxDQUFDO0lBQ2xCLFVBQVUsRUFBRTtRQUNWLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDO1FBQ3JDLGNBQWMsRUFBRSxjQUFjLENBQUM7S0FDaEMsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVIOzs7Ozs7OzZDQU82QztBQUM3Qyx3QkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FPakc7QUFFRDs7R0FFRztBQUNILHdCQUFzQixXQUFXLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVFuRDtBQUVELHdCQUFnQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FHekQ7QUFFRCx3QkFBc0IseUJBQXlCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FXOUY7QUFjRCx3QkFBZ0IsMkJBQTJCLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxlQUFlLEdBQUcsU0FBUyxHQUFHLGVBQWUsQ0FZN0c7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixtQkFBbUIsQ0FDdkMsTUFBTSxFQUFFO0lBQUUsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFBQyxvQkFBb0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQ3pHLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBMkQ5QjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsZ0NBQWdDLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBUzFGIn0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSXJDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk3QyxNQUFNLFdBQVcsWUFBYSxTQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3hGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJLENBQ1YsU0FBUyxFQUNQLGtCQUFrQixHQUNsQixxQkFBcUIsR0FDckIsU0FBUyxHQUNULFdBQVcsR0FDWCwrQkFBK0IsR0FDL0IsUUFBUSxHQUNSLGNBQWMsQ0FDakIsR0FBRztZQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQUUsQ0FBQztLQUNsRCxDQUFDO0NBQ0g7QUFFRCxNQUFNLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM5QixRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ25CLE1BQU0sRUFBRSxTQUFTLENBQUM7SUFDbEIsVUFBVSxFQUFFO1FBQ1YsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUM7S0FDdEMsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVIOzs7Ozs7OzZDQU82QztBQUM3Qyx3QkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FPakc7QUFFRDs7R0FFRztBQUNILHdCQUFzQixXQUFXLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVFuRDtBQUVELHdCQUFnQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FHekQ7QUFFRCx3QkFBc0IseUJBQXlCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FXOUY7QUFjRCx3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxTQUFTLEdBQUcsZUFBZSxHQUNuQyxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQW1CdEM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixtQkFBbUIsQ0FDdkMsTUFBTSxFQUFFO0lBQUUsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFBQyxvQkFBb0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQ3pHLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBMkQ5QjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsZ0NBQWdDLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBUzFGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACP,kBAAkB,GAClB,qBAAqB,GACrB,SAAS,GACT,WAAW,GACX,+BAA+B,GAC/B,QAAQ,GACR,cAAc,CACjB,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;QACjD,UAAU,EAAE;YACV,iBAAiB,EAAE,iBAAiB,CAAC;YACrC,cAAc,EAAE,cAAc,CAAC;SAChC,CAAC;KACH,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS,GAAG,eAAe,CAY7G;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACP,kBAAkB,GAClB,qBAAqB,GACrB,SAAS,GACT,WAAW,GACX,+BAA+B,GAC/B,QAAQ,GACR,cAAc,CACjB,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
package/dest/util.js CHANGED
@@ -58,15 +58,22 @@ function addressToMultiAddressType(address) {
58
58
  return 'dns';
59
59
  }
60
60
  }
61
- export function configureP2PClientAddresses(_config) {
61
+ export async function configureP2PClientAddresses(_config) {
62
62
  const config = {
63
63
  ..._config
64
64
  };
65
- const { p2pBroadcastPort, p2pPort } = config;
65
+ const { p2pIp, queryForIp, p2pBroadcastPort, p2pPort } = config;
66
66
  // If no broadcast port is provided, use the given p2p port as the broadcast port
67
67
  if (!p2pBroadcastPort) {
68
68
  config.p2pBroadcastPort = p2pPort;
69
69
  }
70
+ // check if no announce IP was provided
71
+ if (!p2pIp) {
72
+ if (queryForIp) {
73
+ const publicIp = await getPublicIp();
74
+ config.p2pIp = publicIp;
75
+ }
76
+ }
70
77
  // TODO(md): guard against setting a local ip address as the announce ip
71
78
  return config;
72
79
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.0.1-commit.35158ae7e",
3
+ "version": "0.0.1-commit.3750d92a7",
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.35158ae7e",
71
- "@aztec/epoch-cache": "0.0.1-commit.35158ae7e",
72
- "@aztec/ethereum": "0.0.1-commit.35158ae7e",
73
- "@aztec/foundation": "0.0.1-commit.35158ae7e",
74
- "@aztec/kv-store": "0.0.1-commit.35158ae7e",
75
- "@aztec/noir-contracts.js": "0.0.1-commit.35158ae7e",
76
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.35158ae7e",
77
- "@aztec/protocol-contracts": "0.0.1-commit.35158ae7e",
78
- "@aztec/simulator": "0.0.1-commit.35158ae7e",
79
- "@aztec/stdlib": "0.0.1-commit.35158ae7e",
80
- "@aztec/telemetry-client": "0.0.1-commit.35158ae7e",
70
+ "@aztec/constants": "0.0.1-commit.3750d92a7",
71
+ "@aztec/epoch-cache": "0.0.1-commit.3750d92a7",
72
+ "@aztec/ethereum": "0.0.1-commit.3750d92a7",
73
+ "@aztec/foundation": "0.0.1-commit.3750d92a7",
74
+ "@aztec/kv-store": "0.0.1-commit.3750d92a7",
75
+ "@aztec/noir-contracts.js": "0.0.1-commit.3750d92a7",
76
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.3750d92a7",
77
+ "@aztec/protocol-contracts": "0.0.1-commit.3750d92a7",
78
+ "@aztec/simulator": "0.0.1-commit.3750d92a7",
79
+ "@aztec/stdlib": "0.0.1-commit.3750d92a7",
80
+ "@aztec/telemetry-client": "0.0.1-commit.3750d92a7",
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.35158ae7e",
108
- "@aztec/world-state": "0.0.1-commit.35158ae7e",
107
+ "@aztec/archiver": "0.0.1-commit.3750d92a7",
108
+ "@aztec/world-state": "0.0.1-commit.3750d92a7",
109
109
  "@jest/globals": "^30.0.0",
110
110
  "@types/jest": "^30.0.0",
111
111
  "@types/node": "^22.15.17",
@@ -19,6 +19,7 @@ import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
19
19
  import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
20
20
  import {
21
21
  createCheckAllowedSetupCalls,
22
+ createTxValidatorForReqResponseReceivedTxs,
22
23
  createTxValidatorForTransactionsEnteringPendingTxPool,
23
24
  getDefaultAllowedSetupFunctions,
24
25
  } from '../msg_validators/index.js';
@@ -56,7 +57,7 @@ export async function createP2PClient(
56
57
  telemetry: TelemetryClient = getTelemetryClient(),
57
58
  deps: P2PClientDeps = {},
58
59
  ) {
59
- const config = configureP2PClientAddresses({
60
+ const config = await configureP2PClientAddresses({
60
61
  ...inputConfig,
61
62
  dataStoreMapSizeKb: inputConfig.p2pStoreMapSizeKb ?? inputConfig.dataStoreMapSizeKb,
62
63
  });
@@ -148,9 +149,12 @@ export async function createP2PClient(
148
149
  telemetry,
149
150
  );
150
151
 
152
+ const txValidatorForTxCollection = createTxValidatorForReqResponseReceivedTxs(proofVerifier, config);
151
153
  const nodeSources = [
152
- ...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
153
- ...(deps.rpcTxProviders ?? []).map((node, i) => new NodeRpcTxSource(node, `node-rpc-provider-${i}`)),
154
+ ...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, txValidatorForTxCollection, config),
155
+ ...(deps.rpcTxProviders ?? []).map(
156
+ (node, i) => new NodeRpcTxSource(node, txValidatorForTxCollection, `node-rpc-provider-${i}`),
157
+ ),
154
158
  ...(deps.txCollectionNodeSources ?? []),
155
159
  ];
156
160
  if (nodeSources.length > 0) {
@@ -162,6 +166,7 @@ export async function createP2PClient(
162
166
  const fileStoreSources = await createFileStoreTxSources(
163
167
  config.txCollectionFileStoreUrls,
164
168
  txFileStoreBasePath,
169
+ txValidatorForTxCollection,
165
170
  logger.createChild('file-store-tx-source'),
166
171
  telemetry,
167
172
  );
@@ -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,14 +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
- // If we have a pending checkpoint available, we want to prepare the target slot - otherwise we prepare the current slot
700
- // Knowledege of pending checkpoints is in the PR above
701
- const { targetSlot } = this.epochCache.getTargetAndNextSlot();
702
- if (targetSlot <= 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) {
703
726
  return;
704
727
  }
705
- this.lastSlotProcessed = targetSlot;
706
- await this.txPool.prepareForSlot(targetSlot);
728
+ this.lastSlotProcessed = slot;
729
+ await this.txPool.prepareForSlot(slot);
707
730
  }
708
731
 
709
732
  private async startServiceIfSynched() {
@@ -259,9 +259,20 @@ async function stopClient() {
259
259
  attestationPool = undefined;
260
260
  }
261
261
 
262
+ function gracefulExit(code: number = 0) {
263
+ try {
264
+ if (process.connected) {
265
+ process.disconnect();
266
+ }
267
+ } catch {
268
+ // IPC channel already closed
269
+ }
270
+ setTimeout(() => process.exit(code), 5000).unref();
271
+ }
272
+
262
273
  process.on('disconnect', () => {
263
274
  ipcDisconnected = true;
264
- void stopClient().finally(() => process.exit(0));
275
+ void stopClient();
265
276
  });
266
277
 
267
278
  process.on('error', err => {
@@ -325,7 +336,7 @@ process.on('message', (msg: WorkerCommand) => {
325
336
  case 'STOP': {
326
337
  await stopClient();
327
338
  await sendMessage({ type: 'STOPPED', requestId });
328
- process.exit(0);
339
+ gracefulExit(0);
329
340
  break;
330
341
  }
331
342
  default: {
@@ -336,7 +347,8 @@ process.on('message', (msg: WorkerCommand) => {
336
347
  } catch (err: any) {
337
348
  await sendMessage({ type: 'ERROR', requestId, error: err?.message ?? String(err) });
338
349
  if (msg.type === 'START') {
339
- process.exit(1);
350
+ await stopClient();
351
+ gracefulExit(1);
340
352
  }
341
353
  }
342
354
  })();