@aztec/p2p 0.0.1-commit.2ed92850 → 0.0.1-commit.2f68f620

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 (569) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +4 -3
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +13 -5
  5. package/dest/client/factory.d.ts +13 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +65 -20
  8. package/dest/client/interface.d.ts +58 -36
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +52 -58
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +235 -235
  13. package/dest/config.d.ts +163 -84
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +155 -42
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +1 -20
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +0 -21
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +162 -106
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +511 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +507 -125
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  40. package/dest/mem_pools/index.d.ts +3 -3
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +4 -2
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +35 -17
  46. package/dest/mem_pools/interface.d.ts +5 -5
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +39 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +97 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  91. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +914 -0
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  115. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +8 -4
  118. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +11 -7
  120. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  121. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  122. package/dest/msg_validators/clock_tolerance.js +56 -3
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -4
  124. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +10 -4
  127. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  129. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +21 -8
  130. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/proposal_validator/proposal_validator.js +93 -47
  132. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  133. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  135. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  136. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  138. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  139. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  140. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  141. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  142. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  144. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  145. package/dest/msg_validators/tx_validator/block_header_validator.js +5 -4
  146. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  147. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  148. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  149. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  150. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  151. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  152. package/dest/msg_validators/tx_validator/data_validator.d.ts +4 -1
  153. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  154. package/dest/msg_validators/tx_validator/data_validator.js +40 -3
  155. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  156. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  158. package/dest/msg_validators/tx_validator/factory.d.ts +138 -5
  159. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  160. package/dest/msg_validators/tx_validator/factory.js +259 -58
  161. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  162. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  163. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  164. package/dest/msg_validators/tx_validator/gas_validator.d.ts +100 -3
  165. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  166. package/dest/msg_validators/tx_validator/gas_validator.js +138 -53
  167. package/dest/msg_validators/tx_validator/index.d.ts +5 -1
  168. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/index.js +4 -0
  170. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  171. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  172. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
  173. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  174. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  175. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  176. package/dest/msg_validators/tx_validator/phases_validator.d.ts +24 -3
  177. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  178. package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
  179. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  180. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  181. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  182. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  183. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  184. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  185. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  186. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  187. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  188. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +4 -2
  189. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  190. package/dest/msg_validators/tx_validator/tx_proof_validator.js +4 -2
  191. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  192. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  193. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  194. package/dest/services/data_store.d.ts +1 -1
  195. package/dest/services/data_store.d.ts.map +1 -1
  196. package/dest/services/data_store.js +14 -10
  197. package/dest/services/discv5/discV5_service.d.ts +2 -1
  198. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  199. package/dest/services/discv5/discV5_service.js +36 -9
  200. package/dest/services/dummy_service.d.ts +33 -17
  201. package/dest/services/dummy_service.d.ts.map +1 -1
  202. package/dest/services/dummy_service.js +56 -15
  203. package/dest/services/encoding.d.ts +7 -3
  204. package/dest/services/encoding.d.ts.map +1 -1
  205. package/dest/services/encoding.js +18 -11
  206. package/dest/services/gossipsub/index.d.ts +3 -0
  207. package/dest/services/gossipsub/index.d.ts.map +1 -0
  208. package/dest/services/gossipsub/index.js +2 -0
  209. package/dest/services/gossipsub/scoring.d.ts +21 -3
  210. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  211. package/dest/services/gossipsub/scoring.js +24 -7
  212. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  213. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  214. package/dest/services/gossipsub/topic_score_params.js +363 -0
  215. package/dest/services/index.d.ts +2 -1
  216. package/dest/services/index.d.ts.map +1 -1
  217. package/dest/services/index.js +1 -0
  218. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  219. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  220. package/dest/services/libp2p/instrumentation.js +28 -3
  221. package/dest/services/libp2p/libp2p_service.d.ts +107 -59
  222. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  223. package/dest/services/libp2p/libp2p_service.js +701 -569
  224. package/dest/services/peer-manager/metrics.d.ts +4 -2
  225. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  226. package/dest/services/peer-manager/metrics.js +26 -5
  227. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  228. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  229. package/dest/services/peer-manager/peer_manager.js +40 -11
  230. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  231. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  232. package/dest/services/peer-manager/peer_scoring.js +65 -14
  233. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +44 -0
  234. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  235. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +534 -0
  236. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  237. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  238. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  239. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  240. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  241. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  242. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
  243. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  244. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
  245. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
  246. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  247. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
  248. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +11 -0
  249. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  250. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +7 -0
  251. package/dest/services/reqresp/config.d.ts +3 -3
  252. package/dest/services/reqresp/config.d.ts.map +1 -1
  253. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  254. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  255. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  256. package/dest/services/reqresp/interface.d.ts +27 -18
  257. package/dest/services/reqresp/interface.d.ts.map +1 -1
  258. package/dest/services/reqresp/interface.js +23 -19
  259. package/dest/services/reqresp/metrics.d.ts +6 -5
  260. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  261. package/dest/services/reqresp/metrics.js +16 -5
  262. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +8 -3
  263. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  264. package/dest/services/reqresp/protocols/block_txs/bitvector.js +8 -2
  265. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  266. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  267. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +35 -14
  268. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +36 -8
  269. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  270. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +84 -20
  271. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  272. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  273. package/dest/services/reqresp/protocols/index.js +0 -1
  274. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  275. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  276. package/dest/services/reqresp/protocols/tx.js +21 -3
  277. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  278. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  279. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  280. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  281. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  282. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  283. package/dest/services/reqresp/reqresp.d.ts +12 -29
  284. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  285. package/dest/services/reqresp/reqresp.js +58 -187
  286. package/dest/services/service.d.ts +49 -13
  287. package/dest/services/service.d.ts.map +1 -1
  288. package/dest/services/tx_collection/config.d.ts +11 -11
  289. package/dest/services/tx_collection/config.d.ts.map +1 -1
  290. package/dest/services/tx_collection/config.js +27 -26
  291. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  292. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  293. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  294. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  295. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  296. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  297. package/dest/services/tx_collection/index.d.ts +3 -2
  298. package/dest/services/tx_collection/index.d.ts.map +1 -1
  299. package/dest/services/tx_collection/index.js +1 -0
  300. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  301. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  302. package/dest/services/tx_collection/instrumentation.js +8 -2
  303. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  304. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  305. package/dest/services/tx_collection/request_tracker.js +84 -0
  306. package/dest/services/tx_collection/tx_collection.d.ts +47 -53
  307. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  308. package/dest/services/tx_collection/tx_collection.js +298 -70
  309. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  310. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  311. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  312. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  313. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  314. package/dest/services/tx_collection/tx_source.js +26 -7
  315. package/dest/services/tx_file_store/config.d.ts +16 -0
  316. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  317. package/dest/services/tx_file_store/config.js +22 -0
  318. package/dest/services/tx_file_store/index.d.ts +4 -0
  319. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  320. package/dest/services/tx_file_store/index.js +3 -0
  321. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  322. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  323. package/dest/services/tx_file_store/instrumentation.js +29 -0
  324. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  325. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  326. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  327. package/dest/services/tx_provider.d.ts +6 -4
  328. package/dest/services/tx_provider.d.ts.map +1 -1
  329. package/dest/services/tx_provider.js +12 -8
  330. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  331. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  332. package/dest/services/tx_provider_instrumentation.js +5 -5
  333. package/dest/test-helpers/index.d.ts +3 -1
  334. package/dest/test-helpers/index.d.ts.map +1 -1
  335. package/dest/test-helpers/index.js +2 -0
  336. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  337. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  338. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  339. package/dest/test-helpers/mock-pubsub.d.ts +46 -6
  340. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  341. package/dest/test-helpers/mock-pubsub.js +115 -14
  342. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  343. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  344. package/dest/test-helpers/reqresp-nodes.js +19 -20
  345. package/dest/test-helpers/test_tx_provider.d.ts +42 -0
  346. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  347. package/dest/test-helpers/test_tx_provider.js +44 -0
  348. package/dest/test-helpers/testbench-utils.d.ts +161 -0
  349. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  350. package/dest/test-helpers/testbench-utils.js +391 -0
  351. package/dest/testbench/p2p_client_testbench_worker.d.ts +26 -2
  352. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  353. package/dest/testbench/p2p_client_testbench_worker.js +270 -143
  354. package/dest/testbench/worker_client_manager.d.ts +57 -6
  355. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  356. package/dest/testbench/worker_client_manager.js +277 -49
  357. package/dest/util.d.ts +13 -8
  358. package/dest/util.d.ts.map +1 -1
  359. package/dest/util.js +35 -14
  360. package/dest/versioning.d.ts +3 -6
  361. package/dest/versioning.d.ts.map +1 -1
  362. package/dest/versioning.js +3 -24
  363. package/package.json +15 -14
  364. package/src/bootstrap/bootstrap.ts +16 -5
  365. package/src/client/factory.ts +135 -39
  366. package/src/client/interface.ts +70 -44
  367. package/src/client/p2p_client.ts +280 -299
  368. package/src/client/test/p2p_client.batch_tx_requester.bench.README.md +197 -0
  369. package/src/config.ts +272 -46
  370. package/src/errors/p2p-service.error.ts +11 -0
  371. package/src/errors/reqresp.error.ts +0 -25
  372. package/src/errors/tx-pool.error.ts +12 -0
  373. package/src/index.ts +1 -1
  374. package/src/mem_pools/attestation_pool/attestation_pool.ts +575 -94
  375. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +617 -141
  376. package/src/mem_pools/attestation_pool/index.ts +9 -2
  377. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  378. package/src/mem_pools/index.ts +2 -2
  379. package/src/mem_pools/instrumentation.ts +24 -15
  380. package/src/mem_pools/interface.ts +4 -4
  381. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  382. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  383. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +112 -0
  384. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  385. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  386. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  387. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  388. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  389. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  390. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  391. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  392. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  393. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  394. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  395. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  396. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  397. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  398. package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
  399. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  400. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  401. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  402. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  403. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
  404. package/src/msg_validators/attestation_validator/README.md +49 -0
  405. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  406. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +24 -11
  407. package/src/msg_validators/clock_tolerance.ts +73 -3
  408. package/src/msg_validators/proposal_validator/README.md +123 -0
  409. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
  410. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
  411. package/src/msg_validators/proposal_validator/proposal_validator.ts +116 -49
  412. package/src/msg_validators/tx_validator/README.md +127 -0
  413. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  414. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  415. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  416. package/src/msg_validators/tx_validator/archive_cache.ts +2 -2
  417. package/src/msg_validators/tx_validator/block_header_validator.ts +22 -11
  418. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  419. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  420. package/src/msg_validators/tx_validator/data_validator.ts +50 -3
  421. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  422. package/src/msg_validators/tx_validator/factory.ts +424 -56
  423. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  424. package/src/msg_validators/tx_validator/gas_validator.ts +203 -52
  425. package/src/msg_validators/tx_validator/index.ts +4 -0
  426. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  427. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  428. package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
  429. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  430. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
  431. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  432. package/src/msg_validators/tx_validator/tx_proof_validator.ts +10 -3
  433. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  434. package/src/services/data_store.ts +14 -19
  435. package/src/services/discv5/discV5_service.ts +39 -6
  436. package/src/services/dummy_service.ts +71 -39
  437. package/src/services/encoding.ts +18 -10
  438. package/src/services/gossipsub/README.md +641 -0
  439. package/src/services/gossipsub/index.ts +2 -0
  440. package/src/services/gossipsub/scoring.ts +29 -5
  441. package/src/services/gossipsub/topic_score_params.ts +519 -0
  442. package/src/services/index.ts +1 -0
  443. package/src/services/libp2p/instrumentation.ts +29 -2
  444. package/src/services/libp2p/libp2p_service.ts +775 -643
  445. package/src/services/peer-manager/metrics.ts +28 -4
  446. package/src/services/peer-manager/peer_manager.ts +46 -11
  447. package/src/services/peer-manager/peer_scoring.ts +56 -6
  448. package/src/services/reqresp/README.md +215 -0
  449. package/src/services/reqresp/batch-tx-requester/README.md +344 -0
  450. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +660 -0
  451. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  452. package/src/services/reqresp/batch-tx-requester/interface.ts +61 -0
  453. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
  454. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
  455. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +24 -0
  456. package/src/services/reqresp/config.ts +2 -2
  457. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  458. package/src/services/reqresp/interface.ts +48 -46
  459. package/src/services/reqresp/metrics.ts +33 -9
  460. package/src/services/reqresp/protocols/block_txs/bitvector.ts +10 -2
  461. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +44 -17
  462. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +108 -16
  463. package/src/services/reqresp/protocols/index.ts +0 -1
  464. package/src/services/reqresp/protocols/tx.ts +23 -3
  465. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  466. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  467. package/src/services/reqresp/reqresp.ts +68 -224
  468. package/src/services/service.ts +66 -29
  469. package/src/services/tx_collection/config.ts +41 -36
  470. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  471. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  472. package/src/services/tx_collection/index.ts +2 -1
  473. package/src/services/tx_collection/instrumentation.ts +11 -2
  474. package/src/services/tx_collection/request_tracker.ts +127 -0
  475. package/src/services/tx_collection/tx_collection.ts +364 -112
  476. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  477. package/src/services/tx_collection/tx_source.ts +28 -8
  478. package/src/services/tx_file_store/config.ts +37 -0
  479. package/src/services/tx_file_store/index.ts +3 -0
  480. package/src/services/tx_file_store/instrumentation.ts +36 -0
  481. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  482. package/src/services/tx_provider.ts +15 -9
  483. package/src/services/tx_provider_instrumentation.ts +11 -5
  484. package/src/test-helpers/index.ts +2 -0
  485. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  486. package/src/test-helpers/mock-pubsub.ts +137 -14
  487. package/src/test-helpers/reqresp-nodes.ts +17 -29
  488. package/src/test-helpers/test_tx_provider.ts +69 -0
  489. package/src/test-helpers/testbench-utils.ts +453 -0
  490. package/src/testbench/p2p_client_testbench_worker.ts +370 -134
  491. package/src/testbench/worker_client_manager.ts +355 -51
  492. package/src/util.ts +40 -19
  493. package/src/versioning.ts +3 -33
  494. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  495. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  496. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  497. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  498. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  499. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  500. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  501. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  502. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  503. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  504. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  505. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  506. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  507. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  508. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  509. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  510. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  511. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  512. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  513. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  514. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  515. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  516. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  517. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  518. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  519. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  520. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  521. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  522. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  523. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  524. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  525. package/dest/mem_pools/tx_pool/index.js +0 -2
  526. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  527. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  528. package/dest/mem_pools/tx_pool/priority.js +0 -15
  529. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  530. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  531. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  532. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  533. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  534. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  535. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  536. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  537. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  538. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
  539. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  540. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -92
  541. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  542. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  543. package/dest/services/reqresp/protocols/block.js +0 -32
  544. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
  545. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  546. package/dest/services/tx_collection/fast_tx_collection.js +0 -300
  547. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  548. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  549. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  550. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  551. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  552. package/src/mem_pools/tx_pool/README.md +0 -270
  553. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  554. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  555. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  556. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  557. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  558. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  559. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  560. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  561. package/src/mem_pools/tx_pool/index.ts +0 -2
  562. package/src/mem_pools/tx_pool/priority.ts +0 -20
  563. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  564. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  565. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  566. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -100
  567. package/src/services/reqresp/protocols/block.ts +0 -37
  568. package/src/services/tx_collection/fast_tx_collection.ts +0 -341
  569. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
@@ -1,120 +1,41 @@
1
1
  /**
2
2
  * A testbench worker that creates a p2p client and listens for commands from the parent.
3
3
  *
4
- * Used when running testbench commands
4
+ * Used when running testbench commands.
5
5
  */ import { MockL2BlockSource } from '@aztec/archiver/test';
6
- import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
6
+ import { BlockNumber } from '@aztec/foundation/branded-types';
7
7
  import { SecretValue } from '@aztec/foundation/config';
8
+ import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
9
+ import { Fr } from '@aztec/foundation/curves/bn254';
8
10
  import { createLogger } from '@aztec/foundation/log';
9
11
  import { sleep } from '@aztec/foundation/sleep';
12
+ import { DateProvider, Timer } from '@aztec/foundation/timer';
10
13
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
11
- import { P2PClientType, P2PMessage } from '@aztec/stdlib/p2p';
12
- import { Tx, TxStatus } from '@aztec/stdlib/tx';
14
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
15
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
16
+ import { GasFees } from '@aztec/stdlib/gas';
17
+ import { P2PMessage } from '@aztec/stdlib/p2p';
18
+ import { ChonkProof } from '@aztec/stdlib/proofs';
19
+ import { makeAztecAddress, makeBlockHeader, makeBlockProposal, mockTx } from '@aztec/stdlib/testing';
20
+ import { Tx } from '@aztec/stdlib/tx';
13
21
  import { getTelemetryClient } from '@aztec/telemetry-client';
14
22
  import { TopicValidatorResult } from '@libp2p/interface';
15
- import EventEmitter from 'events';
23
+ import { peerIdFromString } from '@libp2p/peer-id';
16
24
  import { createP2PClient } from '../index.js';
17
- import { LibP2PService } from '../services/libp2p/libp2p_service.js';
18
- import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
19
- // Simple mock implementation
20
- function mockTxPool() {
21
- // Mock all methods
22
- const pool = {
23
- isEmpty: ()=>Promise.resolve(false),
24
- addTxs: ()=>Promise.resolve(1),
25
- getTxByHash: ()=>Promise.resolve(undefined),
26
- getArchivedTxByHash: ()=>Promise.resolve(undefined),
27
- markAsMined: ()=>Promise.resolve(),
28
- markMinedAsPending: ()=>Promise.resolve(),
29
- deleteTxs: ()=>Promise.resolve(),
30
- getAllTxs: ()=>Promise.resolve([]),
31
- getAllTxHashes: ()=>Promise.resolve([]),
32
- getPendingTxHashes: ()=>Promise.resolve([]),
33
- getPendingTxCount: ()=>Promise.resolve(0),
34
- getMinedTxHashes: ()=>Promise.resolve([]),
35
- getTxStatus: ()=>Promise.resolve(TxStatus.PENDING),
36
- getTxsByHash: ()=>Promise.resolve([]),
37
- hasTxs: ()=>Promise.resolve([]),
38
- hasTx: ()=>Promise.resolve(false),
39
- updateConfig: ()=>{},
40
- markTxsAsNonEvictable: ()=>Promise.resolve(),
41
- clearNonEvictableTxs: ()=>Promise.resolve(),
42
- cleanupDeletedMinedTxs: ()=>Promise.resolve(0)
43
- };
44
- return Object.assign(new EventEmitter(), pool);
45
- }
46
- function mockAttestationPool() {
47
- return {
48
- isEmpty: ()=>Promise.resolve(false),
49
- addBlockProposal: ()=>Promise.resolve(),
50
- getBlockProposal: ()=>Promise.resolve(undefined),
51
- hasBlockProposal: ()=>Promise.resolve(false),
52
- canAddProposal: ()=>Promise.resolve(true),
53
- // Checkpoint attestation methods
54
- addCheckpointProposal: ()=>Promise.resolve(),
55
- getCheckpointProposal: ()=>Promise.resolve(undefined),
56
- hasCheckpointProposal: ()=>Promise.resolve(false),
57
- addCheckpointAttestations: ()=>Promise.resolve(),
58
- getCheckpointAttestationsForSlot: ()=>Promise.resolve([]),
59
- getCheckpointAttestationsForSlotAndProposal: ()=>Promise.resolve([]),
60
- deleteCheckpointAttestationsOlderThan: ()=>Promise.resolve(),
61
- hasReachedCheckpointProposalCap: ()=>Promise.resolve(false),
62
- hasReachedCheckpointAttestationCap: ()=>Promise.resolve(false),
63
- canAddCheckpointProposal: ()=>Promise.resolve(true),
64
- canAddCheckpointAttestation: ()=>Promise.resolve(true),
65
- hasCheckpointAttestation: ()=>Promise.resolve(false)
66
- };
67
- }
68
- function mockEpochCache() {
69
- return {
70
- getCommittee: ()=>Promise.resolve({
71
- committee: [],
72
- seed: 1n,
73
- epoch: EpochNumber.ZERO,
74
- isEscapeHatchOpen: false
75
- }),
76
- getProposerIndexEncoding: ()=>'0x',
77
- getEpochAndSlotNow: ()=>({
78
- epoch: EpochNumber.ZERO,
79
- slot: SlotNumber.ZERO,
80
- ts: 0n,
81
- nowMs: 0n
82
- }),
83
- computeProposerIndex: ()=>0n,
84
- getCurrentAndNextSlot: ()=>({
85
- currentSlot: SlotNumber.ZERO,
86
- nextSlot: SlotNumber.ZERO
87
- }),
88
- getProposerAttesterAddressInSlot: ()=>Promise.resolve(undefined),
89
- getEpochAndSlotInNextL1Slot: ()=>({
90
- epoch: EpochNumber.ZERO,
91
- slot: SlotNumber.ZERO,
92
- ts: 0n,
93
- now: 0n
94
- }),
95
- isInCommittee: ()=>Promise.resolve(false),
96
- getRegisteredValidators: ()=>Promise.resolve([]),
97
- filterInCommittee: ()=>Promise.resolve([])
98
- };
99
- }
100
- function mockWorldStateSynchronizer() {
101
- return {
102
- status: ()=>Promise.resolve({
103
- syncSummary: {
104
- latestBlockNumber: 0,
105
- latestBlockHash: '',
106
- finalizedBlockNumber: 0,
107
- treesAreSynched: false,
108
- oldestHistoricBlockNumber: 0
109
- }
110
- })
111
- };
112
- }
25
+ import { LibP2PService } from '../services/index.js';
26
+ import { BatchTxRequester } from '../services/reqresp/batch-tx-requester/batch_tx_requester.js';
27
+ import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
28
+ import { RequestTracker } from '../services/tx_collection/request_tracker.js';
29
+ import { AlwaysTrueCircuitVerifier } from '../test-helpers/index.js';
30
+ import { BENCHMARK_CONSTANTS, InMemoryAttestationPool, InMemoryTxPool, UNLIMITED_RATE_LIMIT_QUOTA, createMockEpochCache, createMockWorldStateSynchronizer, filterTxsByDistribution } from '../test-helpers/index.js';
31
+ const txCache = new Map();
113
32
  class TestLibP2PService extends LibP2PService {
114
33
  disableTxValidation;
115
34
  gossipMessageCount = 0;
116
- constructor(clientType, config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:test:libp2p_service'), disableTxValidation = true){
117
- super(clientType, config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
35
+ constructor(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:test:libp2p_service'), disableTxValidation = true){
36
+ super(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, {
37
+ getCurrentMinFees: ()=>Promise.resolve(GasFees.empty())
38
+ }, telemetry, logger);
118
39
  this.disableTxValidation = disableTxValidation;
119
40
  }
120
41
  getGossipMessageCount() {
@@ -131,7 +52,7 @@ class TestLibP2PService extends LibP2PService {
131
52
  const txHash = tx.getTxHash();
132
53
  const txHashString = txHash.toString();
133
54
  this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
134
- await this.mempools.txPool.addTxs([
55
+ await this.mempools.txPool.addPendingTxs([
135
56
  tx
136
57
  ]);
137
58
  } else {
@@ -147,74 +68,280 @@ class TestLibP2PService extends LibP2PService {
147
68
  await super.handleNewGossipMessage(msg, msgId, source);
148
69
  }
149
70
  }
71
+ async function generateDeterministicTxs(txCount, seed, config) {
72
+ const cached = txCache.get(seed) ?? [];
73
+ if (cached.length >= txCount) {
74
+ return cached.slice(0, txCount);
75
+ }
76
+ const expirationTimestampBase = BigInt(seed);
77
+ for(let i = cached.length; i < txCount; i++){
78
+ const txSeed = seed * 10000 + i;
79
+ const tx = await mockTx(txSeed, {
80
+ chainId: new Fr(config.l1ChainId),
81
+ version: new Fr(config.rollupVersion),
82
+ vkTreeRoot: getVKTreeRoot(),
83
+ protocolContractsHash,
84
+ feePayer: makeAztecAddress(txSeed + 1),
85
+ chonkProof: ChonkProof.empty(),
86
+ numberOfNonRevertiblePublicCallRequests: 0,
87
+ numberOfRevertiblePublicCallRequests: 0,
88
+ numberOfRevertibleNullifiers: 0,
89
+ hasPublicTeardownCallRequest: false,
90
+ publicCalldataSize: 0
91
+ });
92
+ tx.data.expirationTimestamp = expirationTimestampBase + BigInt(i);
93
+ await tx.recomputeHash();
94
+ cached.push(tx);
95
+ }
96
+ txCache.set(seed, cached);
97
+ return cached.slice(0, txCount);
98
+ }
99
+ async function createBlockProposal(blockNumber, txHashes, seed) {
100
+ const archiveRoot = new Fr(BigInt(seed) * 1000000n + BigInt(blockNumber));
101
+ return await makeBlockProposal({
102
+ signer: Secp256k1Signer.random(),
103
+ blockHeader: makeBlockHeader(1, {
104
+ blockNumber: BlockNumber(blockNumber)
105
+ }),
106
+ archiveRoot,
107
+ txHashes
108
+ });
109
+ }
110
+ function installUnlimitedRateLimits(client) {
111
+ const reqResp = client.p2pService.reqresp;
112
+ const rateLimiter = reqResp.rateLimiter;
113
+ rateLimiter.getRateLimits = ()=>UNLIMITED_RATE_LIMIT_QUOTA;
114
+ rateLimiter.allow = ()=>RateLimitStatus.Allowed;
115
+ }
116
+ /** Resets peer scores to prevent cross-case contamination in benchmarks. */ function resetPeerScores(client) {
117
+ const peerManager = client.p2pService.peerManager;
118
+ const peerScoring = peerManager?.peerScoring;
119
+ if (peerScoring?.resetAllScores) {
120
+ peerScoring.resetAllScores();
121
+ }
122
+ }
123
+ /** Returns the number of connected peers for connectivity checks. */ function getConnectedPeerCount(client) {
124
+ const p2pService = client.p2pService;
125
+ const connectionSampler = p2pService?.reqresp?.getConnectionSampler?.();
126
+ if (connectionSampler?.getPeerListSortedByConnectionCountAsc) {
127
+ return connectionSampler.getPeerListSortedByConnectionCountAsc().length;
128
+ }
129
+ return 0;
130
+ }
131
+ async function runAggregatorBenchmark(client, blockProposal, timeoutMs, pinnedPeerId, pinnedPeerIndex, logger, expectedPeerCount) {
132
+ let timer = new Timer();
133
+ try {
134
+ installUnlimitedRateLimits(client);
135
+ const txHashes = blockProposal.txHashes;
136
+ logger.info(`[BENCH] Using block proposal with archive ${blockProposal.archive.toString().slice(0, 10)}...`);
137
+ const p2pService = client.p2pService;
138
+ const batchTxRequesterService = p2pService.getBatchTxRequesterService();
139
+ const minPeersRequired = Math.max(1, expectedPeerCount - 1);
140
+ const maxWaitMs = BENCHMARK_CONSTANTS.MAX_PEER_WAIT_MS;
141
+ const waitInterval = BENCHMARK_CONSTANTS.PEER_CHECK_INTERVAL_MS;
142
+ let waited = 0;
143
+ while(waited < maxWaitMs){
144
+ const connectedPeers = batchTxRequesterService.connectionSampler.getPeerListSortedByConnectionCountAsc();
145
+ if (connectedPeers.length >= minPeersRequired) {
146
+ logger.info(`[BENCH] Aggregator has ${connectedPeers.length} connected peers, starting benchmark`);
147
+ break;
148
+ }
149
+ logger.debug(`[BENCH] Waiting for peers: ${connectedPeers.length}/${minPeersRequired} (waited ${waited}ms)`);
150
+ await sleep(waitInterval);
151
+ waited += waitInterval;
152
+ }
153
+ const connectedPeers = batchTxRequesterService.connectionSampler.getPeerListSortedByConnectionCountAsc();
154
+ logger.info(`[BENCH] Aggregator has ${connectedPeers.length} connected peers`);
155
+ logger.info(`[BENCH] Requesting ${txHashes.length} tx hashes: ${txHashes.slice(0, 3).map((h)=>h.toString()).join(', ')}...`);
156
+ let pinnedPeer;
157
+ if (pinnedPeerId) {
158
+ pinnedPeer = peerIdFromString(pinnedPeerId);
159
+ } else if (pinnedPeerIndex !== undefined) {
160
+ if (pinnedPeerIndex > 0 && pinnedPeerIndex <= connectedPeers.length) {
161
+ pinnedPeer = connectedPeers[pinnedPeerIndex - 1];
162
+ }
163
+ }
164
+ const noopTxValidator = {
165
+ validateTx: (_tx)=>Promise.resolve({
166
+ result: 'valid'
167
+ })
168
+ };
169
+ timer = new Timer();
170
+ const tracker = RequestTracker.create(txHashes, new Date(Date.now() + timeoutMs));
171
+ const batchRequester = new BatchTxRequester(tracker, blockProposal, pinnedPeer, batchTxRequesterService, logger, new DateProvider(), {
172
+ txValidator: noopTxValidator
173
+ });
174
+ const fetchedTxs = await BatchTxRequester.collectAllTxs(batchRequester.run());
175
+ const durationMs = timer.ms();
176
+ return {
177
+ type: 'BENCH_RESULT',
178
+ durationMs,
179
+ fetchedCount: fetchedTxs.length,
180
+ success: fetchedTxs.length === txHashes.length
181
+ };
182
+ } catch (err) {
183
+ return {
184
+ type: 'BENCH_RESULT',
185
+ durationMs: timer.ms(),
186
+ fetchedCount: 0,
187
+ success: false,
188
+ error: err?.message ?? String(err)
189
+ };
190
+ }
191
+ }
192
+ let workerClient = null;
193
+ let workerTxPool = null;
194
+ let workerAttestationPool = null;
195
+ let workerConfig = null;
196
+ let workerLogger = null;
197
+ let kvStore = null;
198
+ async function stopWorker() {
199
+ try {
200
+ if (workerClient) {
201
+ await workerClient.stop();
202
+ workerClient = null;
203
+ }
204
+ } catch (e) {
205
+ workerLogger?.error('Error stopping worker client', e);
206
+ }
207
+ try {
208
+ if (kvStore?.close) {
209
+ await kvStore.close();
210
+ kvStore = null;
211
+ }
212
+ } catch (e) {
213
+ workerLogger?.error('Error closing kv store', e);
214
+ }
215
+ }
216
+ function gracefulExit(code = 0) {
217
+ try {
218
+ if (process.connected) {
219
+ process.disconnect();
220
+ }
221
+ } catch {
222
+ // IPC channel already closed
223
+ }
224
+ // Safety fallback if lingering handles prevent the event loop from draining
225
+ setTimeout(()=>process.exit(code), 5000).unref();
226
+ }
150
227
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
151
228
  process.on('message', async (msg)=>{
152
- // Note: peerIdPrivateKey comes as a raw string (not SecretValue) because
153
- // SecretValue's private fields can't be serialized via IPC
154
229
  const { type, config: rawConfig, clientIndex } = msg;
155
230
  try {
156
231
  if (type === 'START') {
157
- // Re-wrap the peerIdPrivateKey with SecretValue
158
232
  const config = {
159
233
  ...rawConfig,
160
- peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined
234
+ peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined,
235
+ priceBumpPercentage: 10n
161
236
  };
162
- const txPool = mockTxPool();
163
- const attestationPool = mockAttestationPool();
164
- const epochCache = mockEpochCache();
165
- const worldState = mockWorldStateSynchronizer();
237
+ workerConfig = config;
238
+ workerTxPool = new InMemoryTxPool();
239
+ workerAttestationPool = new InMemoryAttestationPool();
240
+ const epochCache = createMockEpochCache();
241
+ const worldState = createMockWorldStateSynchronizer();
166
242
  const l2BlockSource = new MockL2BlockSource();
167
243
  const proofVerifier = new AlwaysTrueCircuitVerifier();
168
- const kvStore = await openTmpStore(`test-${clientIndex}`);
169
- const logger = createLogger(`p2p:${clientIndex}`);
244
+ kvStore = await openTmpStore(`test-${clientIndex}`, true, BENCHMARK_CONSTANTS.KV_STORE_MAP_SIZE_KB);
245
+ workerLogger = createLogger(`p2p:${clientIndex}`);
246
+ workerTxPool.setLogger(workerLogger);
170
247
  const telemetry = getTelemetryClient();
171
248
  const deps = {
172
- txPool,
173
- attestationPool,
249
+ txPool: workerTxPool,
250
+ attestationPool: workerAttestationPool,
174
251
  store: kvStore,
175
- logger
252
+ logger: workerLogger
176
253
  };
177
- const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, worldState, epochCache, 'test-p2p-bench-worker', undefined, telemetry, deps);
178
- // Create test service with validation disabled
179
- // Note: Parameter order must match LibP2PService constructor
180
- const testService = new TestLibP2PService(P2PClientType.Full, config, client.p2pService.node, client.p2pService.peerDiscoveryService, client.p2pService.reqresp, client.p2pService.peerManager, client.p2pService.mempools, client.p2pService.archiver, epochCache, proofVerifier, worldState, telemetry, logger, true);
181
- // Replace the existing p2pService with our test version
254
+ const client = await createP2PClient(config, l2BlockSource, proofVerifier, worldState, epochCache, {
255
+ getCurrentMinFees: ()=>Promise.resolve(GasFees.empty())
256
+ }, 'test-p2p-bench-worker', undefined, telemetry, deps, await l2BlockSource.getInitialHeader().hash());
257
+ const testService = new TestLibP2PService(config, client.p2pService.node, client.p2pService.peerDiscoveryService, client.p2pService.reqresp, client.p2pService.peerManager, client.p2pService.mempools, client.p2pService.archiver, epochCache, proofVerifier, worldState, telemetry, workerLogger, true);
182
258
  client.p2pService = testService;
183
259
  await client.start();
184
- // Wait until the client is ready
185
260
  for(let i = 0; i < 100; i++){
186
261
  const isReady = client.isReady();
187
- logger.debug(`Client ${clientIndex} isReady: ${isReady}`);
262
+ workerLogger.debug(`Client ${clientIndex} isReady: ${isReady}`);
188
263
  if (isReady) {
189
264
  break;
190
265
  }
191
266
  await sleep(1000);
192
267
  }
193
- // Listen for commands from parent
194
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
195
- process.on('message', async (cmd)=>{
196
- switch(cmd.type){
197
- case 'STOP':
198
- await client.stop();
199
- process.exit(0);
200
- break;
201
- case 'SEND_TX':
202
- await client.sendTx(Tx.fromBuffer(Buffer.from(cmd.tx)));
268
+ workerClient = client;
269
+ const peerId = client.p2pService.node.peerId.toString();
270
+ process.send({
271
+ type: 'READY',
272
+ peerId
273
+ });
274
+ return;
275
+ }
276
+ const cmd = msg;
277
+ switch(cmd.type){
278
+ case 'STOP':
279
+ await stopWorker();
280
+ gracefulExit(0);
281
+ break;
282
+ case 'SEND_TX':
283
+ if (workerClient) {
284
+ await workerClient.sendTx(Tx.fromBuffer(Buffer.from(cmd.tx)));
285
+ process.send({
286
+ type: 'TX_SENT'
287
+ });
288
+ }
289
+ break;
290
+ case 'GET_PEER_COUNT':
291
+ process.send({
292
+ type: 'PEER_COUNT',
293
+ count: workerClient ? getConnectedPeerCount(workerClient) : 0
294
+ });
295
+ break;
296
+ case 'BENCH_REQRESP':
297
+ {
298
+ const benchCmd = cmd;
299
+ if (!workerClient || !workerTxPool || !workerAttestationPool || !workerConfig || !workerLogger) {
203
300
  process.send({
204
- type: 'TX_SENT'
301
+ type: 'BENCH_RESULT',
302
+ durationMs: 0,
303
+ fetchedCount: 0,
304
+ success: false,
305
+ error: 'Worker not initialized'
205
306
  });
206
307
  break;
308
+ }
309
+ // Reset state before each benchmark run to avoid cross-run contamination
310
+ workerTxPool.resetState();
311
+ workerAttestationPool.resetState();
312
+ resetPeerScores(workerClient);
313
+ installUnlimitedRateLimits(workerClient);
314
+ const allTxs = await generateDeterministicTxs(benchCmd.txCount, benchCmd.seed, workerConfig);
315
+ const txHashes = allTxs.map((tx)=>tx.getTxHash());
316
+ const blockProposal = await createBlockProposal(benchCmd.blockNumber, txHashes, benchCmd.seed);
317
+ await workerAttestationPool.tryAddBlockProposal(blockProposal);
318
+ workerLogger.debug(`[BENCH] Added block proposal with archive ${blockProposal.archive.toString().slice(0, 10)}...`);
319
+ if (benchCmd.isAggregator) {
320
+ workerTxPool.clearTxs();
321
+ workerLogger.info(`[BENCH] Aggregator starting benchmark: txCount=${benchCmd.txCount}, distribution=${benchCmd.distribution}`);
322
+ const result = await runAggregatorBenchmark(workerClient, blockProposal, benchCmd.timeoutMs, benchCmd.pinnedPeerId, benchCmd.pinnedPeerIndex, workerLogger, benchCmd.peerCount);
323
+ process.send(result);
324
+ } else {
325
+ const myTxs = filterTxsByDistribution(allTxs, benchCmd.peerIndex, benchCmd.peerCount, benchCmd.distribution, benchCmd.pinnedPeerIndex);
326
+ workerTxPool.setTxs(myTxs);
327
+ workerLogger.info(`[BENCH] Peer ${benchCmd.peerIndex} populated tx pool with ${myTxs.length}/${benchCmd.txCount} txs (${benchCmd.distribution})`);
328
+ process.send({
329
+ type: 'BENCH_READY'
330
+ });
331
+ }
332
+ break;
207
333
  }
208
- });
334
+ }
335
+ } catch (err) {
336
+ try {
209
337
  process.send({
210
- type: 'READY'
338
+ type: 'ERROR',
339
+ error: err.message
211
340
  });
341
+ } catch {
342
+ // IPC channel may be closed
212
343
  }
213
- } catch (err) {
214
- process.send({
215
- type: 'ERROR',
216
- error: err.message
217
- });
218
- process.exit(1);
344
+ await stopWorker();
345
+ gracefulExit(1);
219
346
  }
220
347
  });
@@ -2,33 +2,63 @@ import type { Logger } from '@aztec/foundation/log';
2
2
  import type { ChainConfig } from '@aztec/stdlib/config';
3
3
  import { type ChildProcess } from 'child_process';
4
4
  import { type P2PConfig } from '../config.js';
5
+ import type { DistributionPattern } from './p2p_client_testbench_worker.js';
5
6
  declare const testChainConfig: ChainConfig;
7
+ export interface ReqRespBenchmarkConfig {
8
+ txCount: number;
9
+ distribution: DistributionPattern;
10
+ timeoutMs: number;
11
+ pinnedPeerIndex?: number;
12
+ blockNumber?: number;
13
+ seed?: number;
14
+ }
15
+ export interface ReqRespBenchmarkResult {
16
+ txCount: number;
17
+ distribution: DistributionPattern;
18
+ durationMs: number;
19
+ fetchedCount: number;
20
+ success: boolean;
21
+ error?: string;
22
+ }
6
23
  declare class WorkerClientManager {
7
24
  processes: ChildProcess[];
8
25
  peerIdPrivateKeys: string[];
9
26
  peerEnrs: string[];
10
27
  ports: number[];
28
+ peerIds: string[];
11
29
  private p2pConfig;
12
30
  private logger;
13
31
  private messageReceivedByClient;
14
32
  constructor(logger: Logger, p2pConfig: Partial<P2PConfig>);
15
33
  destroy(): void;
16
34
  /**
17
- * Creates a client configuration object
35
+ * Creates a client configuration object for IPC.
36
+ * Note: We send the raw peerIdPrivateKey string instead of SecretValue
37
+ * because SecretValue.toJSON() returns '[Redacted]', losing the value.
38
+ * The worker must re-wrap it in SecretValue.
39
+ * We also omit priceBumpPercentage since it's a bigint and can't be
40
+ * serialized over IPC (which uses JSON under the hood).
18
41
  */
19
42
  private createClientConfig;
20
43
  /**
21
- * Spawns a worker process and returns a promise that resolves when the worker is ready
44
+ * Spawns a worker process and returns a promise that resolves when the worker is ready.
45
+ * Config uses raw string for peerIdPrivateKey (not SecretValue) for IPC serialization.
22
46
  */
23
47
  private spawnWorkerProcess;
24
48
  /**
25
- * Creates a number of worker clients in separate processes
26
- * All are configured to connect to each other and overrided with the test specific config
49
+ * Creates a number of worker clients in separate processes.
50
+ * All are configured to connect to each other and overridden with the test-specific config.
27
51
  *
28
52
  * @param numberOfClients - The number of clients to create
53
+ * @param options - Optional overrides for seeding/bootstrapping strategy
29
54
  * @returns The ENRs of the created clients
30
55
  */
31
- makeWorkerClients(numberOfClients: number): Promise<string[]>;
56
+ makeWorkerClients(numberOfClients: number, options?: {
57
+ bootstrapMode?: 'subset' | 'all';
58
+ seedPeerLimit?: number;
59
+ batchSize?: number;
60
+ batchDelayMs?: number;
61
+ }): Promise<string[]>;
32
62
  purgeMessageReceivedByClient(): void;
33
63
  numberOfClientsThatReceivedMessage(): number;
34
64
  /**
@@ -46,6 +76,27 @@ declare class WorkerClientManager {
46
76
  * Cleans up all worker processes with timeout and force kill if needed
47
77
  */
48
78
  cleanup(): Promise<void>;
79
+ /**
80
+ * Checks that the aggregator (client 0) has sufficient peer connections before running a benchmark.
81
+ * This prevents benchmark cases from starting with degraded connectivity after a previous case
82
+ * caused connection failures.
83
+ */
84
+ waitForConnectivity(minPeers: number, timeoutMs?: number): Promise<number>;
85
+ private getPeerCount;
86
+ /**
87
+ * Run a req/resp benchmark across all worker clients.
88
+ *
89
+ * This sends a BENCH_REQRESP command to all workers:
90
+ * - Aggregator (client 0) runs the collector and returns timing results
91
+ * - Responders (clients 1..N) populate their tx pools based on distribution
92
+ *
93
+ * All workers generate the same txs deterministically from a shared seed,
94
+ * then filter based on their peerIndex and distribution pattern.
95
+ */
96
+ runReqRespBenchmark(config: ReqRespBenchmarkConfig): Promise<ReqRespBenchmarkResult>;
97
+ private waitForBenchReady;
98
+ private waitForBenchResult;
49
99
  }
50
100
  export { WorkerClientManager, testChainConfig };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFJeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQVFuRSxRQUFBLE1BQU0sZUFBZSxFQUFFLFdBTXRCLENBQUM7QUFFRixjQUFNLG1CQUFtQjtJQUNoQixTQUFTLEVBQUUsWUFBWSxFQUFFLENBQU07SUFDL0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ3hCLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUM1QixPQUFPLENBQUMsU0FBUyxDQUFxQjtJQUN0QyxPQUFPLENBQUMsTUFBTSxDQUFTO0lBQ3ZCLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBZ0I7SUFFL0MsWUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBR3hEO0lBRUQsT0FBTyxTQUtOO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBaUIxQjs7T0FFRztJQUNILE9BQU8sQ0FBQyxrQkFBa0I7SUF5RDFCOzs7Ozs7T0FNRztJQUNHLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxNQUFNLHFCQXlDOUM7SUFFRCw0QkFBNEIsU0FFM0I7SUFFRCxrQ0FBa0MsV0FFakM7SUFFRDs7Ozs7T0FLRztJQUNHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQTRDcEQ7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxnQkFBZ0I7SUFzQ3hCOztPQUVHO0lBQ0csT0FBTyxrQkFnQ1o7Q0FDRjtBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsQ0FBQyJ9
101
+ export type { DistributionPattern } from './p2p_client_testbench_worker.js';
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUtuRSxPQUFPLEtBQUssRUFBMkMsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVFySCxRQUFBLE1BQU0sZUFBZSxFQUFFLFdBSXRCLENBQUM7QUFFRixNQUFNLFdBQVcsc0JBQXNCO0lBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsWUFBWSxFQUFFLG1CQUFtQixDQUFDO0lBQ2xDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZjtBQUVELE1BQU0sV0FBVyxzQkFBc0I7SUFDckMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixZQUFZLEVBQUUsbUJBQW1CLENBQUM7SUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDakIsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2hCO0FBRUQsY0FBTSxtQkFBbUI7SUFDaEIsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFNO0lBQy9CLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ2pDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUN4QixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDckIsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQzlCLE9BQU8sQ0FBQyxTQUFTLENBQXFCO0lBQ3RDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHVCQUF1QixDQUFnQjtJQUUvQyxZQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFHeEQ7SUFFRCxPQUFPLFNBSU47SUFFRDs7Ozs7OztPQU9HO0lBQ0gsT0FBTyxDQUFDLGtCQUFrQjtJQW9CMUI7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLGtCQUFrQjtJQWtHMUI7Ozs7Ozs7T0FPRztJQUNHLGlCQUFpQixDQUNyQixlQUFlLEVBQUUsTUFBTSxFQUN2QixPQUFPLEdBQUU7UUFDUCxhQUFhLENBQUMsRUFBRSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN2QixTQUFTLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDbkIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ2xCLHFCQStEUDtJQUVELDRCQUE0QixTQUUzQjtJQUVELGtDQUFrQyxXQUVqQztJQUVEOzs7OztPQUtHO0lBQ0csVUFBVSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBOENwRDtJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLGdCQUFnQjtJQXFDeEI7O09BRUc7SUFDRyxPQUFPLGtCQWdDWjtJQUVEOzs7O09BSUc7SUFDRyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRSxNQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQWtCdkY7SUFFRCxPQUFPLENBQUMsWUFBWTtJQThCcEI7Ozs7Ozs7OztPQVNHO0lBQ0csbUJBQW1CLENBQUMsTUFBTSxFQUFFLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQWtFekY7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBa0N6QixPQUFPLENBQUMsa0JBQWtCO0NBaUMzQjtBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUNoRCxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":"AAEA,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;AAIxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAQnE,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,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;IAC5B,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;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyD1B;;;;;;OAMG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM,qBAyC9C;IAED,4BAA4B,SAE3B;IAED,kCAAkC,WAEjC;IAED;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBA4CpD;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACG,OAAO,kBAgCZ;CACF;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,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,EAA2C,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAQrH,QAAA,MAAM,eAAe,EAAE,WAItB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,mBAAmB,CAAC;IAClC,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,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,CAkEzF;IAED,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,kBAAkB;CAiC3B;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC"}