@aztec/p2p 0.0.1-commit.b655e406 → 0.0.1-commit.b6e433891

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