@aztec/p2p 0.0.1-commit.8afd444 → 0.0.1-commit.8cb2d04d8

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 (489) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +11 -11
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +54 -16
  5. package/dest/client/interface.d.ts +54 -34
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +41 -52
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +179 -226
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +21 -11
  11. package/dest/config.d.ts +133 -92
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +109 -40
  14. package/dest/errors/p2p-service.error.d.ts +9 -0
  15. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  16. package/dest/errors/p2p-service.error.js +10 -0
  17. package/dest/errors/tx-pool.error.d.ts +8 -0
  18. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  19. package/dest/errors/tx-pool.error.js +9 -0
  20. package/dest/index.d.ts +2 -2
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +1 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +106 -88
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.js +448 -3
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  29. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  30. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/index.js +1 -2
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  33. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  35. package/dest/mem_pools/index.d.ts +3 -3
  36. package/dest/mem_pools/index.d.ts.map +1 -1
  37. package/dest/mem_pools/index.js +1 -1
  38. package/dest/mem_pools/instrumentation.d.ts +4 -2
  39. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  40. package/dest/mem_pools/instrumentation.js +16 -14
  41. package/dest/mem_pools/interface.d.ts +5 -5
  42. package/dest/mem_pools/interface.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  44. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  46. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  47. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  49. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  50. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  70. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  82. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  83. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  85. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  86. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  88. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +215 -0
  89. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +134 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +220 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +923 -0
  106. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  107. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  108. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  109. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -3
  110. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  111. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  112. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  113. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  114. package/dest/msg_validators/clock_tolerance.js +54 -3
  115. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +7 -4
  116. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  117. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  118. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +7 -4
  119. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  120. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  121. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +15 -8
  122. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/proposal_validator/proposal_validator.js +67 -47
  124. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  125. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  127. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  128. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  130. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  131. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  132. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  133. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  134. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  135. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  136. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  137. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  138. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  139. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  140. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  141. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  143. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  144. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  145. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  146. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  147. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  148. package/dest/msg_validators/tx_validator/factory.js +247 -60
  149. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  150. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  151. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  152. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  153. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  154. package/dest/msg_validators/tx_validator/gas_validator.js +112 -43
  155. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  156. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/index.js +2 -0
  158. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  159. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  160. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  161. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  162. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  163. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  164. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  165. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  166. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  167. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  168. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  170. package/dest/services/data_store.d.ts +1 -1
  171. package/dest/services/data_store.d.ts.map +1 -1
  172. package/dest/services/data_store.js +5 -5
  173. package/dest/services/dummy_service.d.ts +17 -6
  174. package/dest/services/dummy_service.d.ts.map +1 -1
  175. package/dest/services/dummy_service.js +16 -5
  176. package/dest/services/encoding.d.ts +7 -3
  177. package/dest/services/encoding.d.ts.map +1 -1
  178. package/dest/services/encoding.js +18 -11
  179. package/dest/services/gossipsub/index.d.ts +3 -0
  180. package/dest/services/gossipsub/index.d.ts.map +1 -0
  181. package/dest/services/gossipsub/index.js +2 -0
  182. package/dest/services/gossipsub/scoring.d.ts +21 -3
  183. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  184. package/dest/services/gossipsub/scoring.js +24 -7
  185. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  186. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  187. package/dest/services/gossipsub/topic_score_params.js +363 -0
  188. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  189. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  190. package/dest/services/libp2p/instrumentation.js +14 -0
  191. package/dest/services/libp2p/libp2p_service.d.ts +92 -50
  192. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  193. package/dest/services/libp2p/libp2p_service.js +561 -427
  194. package/dest/services/peer-manager/metrics.d.ts +3 -1
  195. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  196. package/dest/services/peer-manager/metrics.js +6 -0
  197. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  198. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  199. package/dest/services/peer-manager/peer_manager.js +39 -11
  200. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  201. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  202. package/dest/services/peer-manager/peer_scoring.js +57 -12
  203. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
  204. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  205. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +89 -112
  206. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  207. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  208. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  209. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  210. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  211. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  212. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  213. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  214. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  215. package/dest/services/reqresp/config.d.ts +3 -3
  216. package/dest/services/reqresp/config.d.ts.map +1 -1
  217. package/dest/services/reqresp/interface.d.ts +23 -9
  218. package/dest/services/reqresp/interface.d.ts.map +1 -1
  219. package/dest/services/reqresp/interface.js +23 -10
  220. package/dest/services/reqresp/metrics.d.ts +1 -1
  221. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  222. package/dest/services/reqresp/metrics.js +0 -1
  223. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  224. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  225. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  226. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  227. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  228. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  229. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  230. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  231. package/dest/services/reqresp/protocols/index.js +0 -1
  232. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  233. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  234. package/dest/services/reqresp/protocols/tx.js +21 -3
  235. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  236. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  237. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  238. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  239. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  240. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  241. package/dest/services/reqresp/reqresp.d.ts +4 -2
  242. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  243. package/dest/services/reqresp/reqresp.js +40 -15
  244. package/dest/services/service.d.ts +43 -4
  245. package/dest/services/service.d.ts.map +1 -1
  246. package/dest/services/tx_collection/config.d.ts +22 -4
  247. package/dest/services/tx_collection/config.d.ts.map +1 -1
  248. package/dest/services/tx_collection/config.js +49 -3
  249. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -8
  250. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  251. package/dest/services/tx_collection/fast_tx_collection.js +88 -88
  252. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  253. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  254. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  255. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  256. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  257. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  258. package/dest/services/tx_collection/index.d.ts +3 -2
  259. package/dest/services/tx_collection/index.d.ts.map +1 -1
  260. package/dest/services/tx_collection/index.js +1 -0
  261. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  262. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  263. package/dest/services/tx_collection/instrumentation.js +2 -1
  264. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -15
  265. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  266. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  267. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  268. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  269. package/dest/services/tx_collection/request_tracker.js +84 -0
  270. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  271. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  272. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  273. package/dest/services/tx_collection/tx_collection.d.ts +23 -13
  274. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  275. package/dest/services/tx_collection/tx_collection.js +75 -3
  276. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  277. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  278. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  279. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  280. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  281. package/dest/services/tx_collection/tx_source.js +26 -7
  282. package/dest/services/tx_file_store/config.d.ts +1 -3
  283. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  284. package/dest/services/tx_file_store/config.js +0 -4
  285. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  286. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  287. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  288. package/dest/services/tx_provider.d.ts +4 -4
  289. package/dest/services/tx_provider.d.ts.map +1 -1
  290. package/dest/services/tx_provider.js +9 -8
  291. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  292. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  293. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  294. package/dest/test-helpers/mock-pubsub.d.ts +40 -6
  295. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  296. package/dest/test-helpers/mock-pubsub.js +139 -13
  297. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  298. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  299. package/dest/test-helpers/reqresp-nodes.js +5 -5
  300. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  301. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  302. package/dest/test-helpers/testbench-utils.js +150 -61
  303. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  304. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  305. package/dest/testbench/p2p_client_testbench_worker.js +80 -28
  306. package/dest/testbench/worker_client_manager.d.ts +10 -1
  307. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  308. package/dest/testbench/worker_client_manager.js +55 -3
  309. package/dest/util.d.ts +3 -3
  310. package/dest/util.d.ts.map +1 -1
  311. package/package.json +14 -14
  312. package/src/client/factory.ts +105 -29
  313. package/src/client/interface.ts +65 -35
  314. package/src/client/p2p_client.ts +216 -272
  315. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +34 -15
  316. package/src/config.ts +172 -46
  317. package/src/errors/p2p-service.error.ts +11 -0
  318. package/src/errors/tx-pool.error.ts +12 -0
  319. package/src/index.ts +1 -1
  320. package/src/mem_pools/attestation_pool/attestation_pool.ts +501 -91
  321. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  322. package/src/mem_pools/attestation_pool/index.ts +9 -2
  323. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  324. package/src/mem_pools/index.ts +2 -2
  325. package/src/mem_pools/instrumentation.ts +17 -13
  326. package/src/mem_pools/interface.ts +4 -4
  327. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  328. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  329. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  330. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  331. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  332. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  333. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  334. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  335. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  336. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  337. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  338. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  339. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  340. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  341. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  342. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  343. package/src/mem_pools/tx_pool_v2/interfaces.ts +247 -0
  344. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +343 -0
  345. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  346. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  347. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  348. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1105 -0
  349. package/src/msg_validators/attestation_validator/README.md +49 -0
  350. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  351. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +6 -3
  352. package/src/msg_validators/clock_tolerance.ts +72 -3
  353. package/src/msg_validators/proposal_validator/README.md +123 -0
  354. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +17 -4
  355. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +23 -7
  356. package/src/msg_validators/proposal_validator/proposal_validator.ts +79 -49
  357. package/src/msg_validators/tx_validator/README.md +119 -0
  358. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  359. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  360. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  361. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  362. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  363. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  364. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  365. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  366. package/src/msg_validators/tx_validator/factory.ts +394 -78
  367. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  368. package/src/msg_validators/tx_validator/gas_validator.ts +145 -33
  369. package/src/msg_validators/tx_validator/index.ts +2 -0
  370. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  371. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  372. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  373. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  374. package/src/services/data_store.ts +5 -13
  375. package/src/services/dummy_service.ts +25 -7
  376. package/src/services/encoding.ts +18 -10
  377. package/src/services/gossipsub/README.md +641 -0
  378. package/src/services/gossipsub/index.ts +2 -0
  379. package/src/services/gossipsub/scoring.ts +29 -5
  380. package/src/services/gossipsub/topic_score_params.ts +519 -0
  381. package/src/services/libp2p/instrumentation.ts +14 -0
  382. package/src/services/libp2p/libp2p_service.ts +586 -465
  383. package/src/services/peer-manager/metrics.ts +7 -0
  384. package/src/services/peer-manager/peer_manager.ts +45 -11
  385. package/src/services/peer-manager/peer_scoring.ts +52 -5
  386. package/src/services/reqresp/README.md +229 -0
  387. package/src/services/reqresp/batch-tx-requester/README.md +53 -14
  388. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +89 -122
  389. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  390. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  391. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  392. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  393. package/src/services/reqresp/config.ts +2 -2
  394. package/src/services/reqresp/interface.ts +45 -10
  395. package/src/services/reqresp/metrics.ts +0 -1
  396. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  397. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  398. package/src/services/reqresp/protocols/index.ts +0 -1
  399. package/src/services/reqresp/protocols/tx.ts +23 -3
  400. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  401. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  402. package/src/services/reqresp/reqresp.ts +53 -16
  403. package/src/services/service.ts +57 -3
  404. package/src/services/tx_collection/config.ts +74 -6
  405. package/src/services/tx_collection/fast_tx_collection.ts +94 -97
  406. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  407. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  408. package/src/services/tx_collection/index.ts +2 -1
  409. package/src/services/tx_collection/instrumentation.ts +7 -1
  410. package/src/services/tx_collection/proposal_tx_collector.ts +21 -27
  411. package/src/services/tx_collection/request_tracker.ts +127 -0
  412. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  413. package/src/services/tx_collection/tx_collection.ts +114 -19
  414. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  415. package/src/services/tx_collection/tx_source.ts +28 -8
  416. package/src/services/tx_file_store/config.ts +0 -6
  417. package/src/services/tx_file_store/tx_file_store.ts +10 -8
  418. package/src/services/tx_provider.ts +10 -9
  419. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  420. package/src/test-helpers/mock-pubsub.ts +177 -14
  421. package/src/test-helpers/reqresp-nodes.ts +7 -9
  422. package/src/test-helpers/testbench-utils.ts +157 -74
  423. package/src/testbench/p2p_client_testbench_worker.ts +91 -31
  424. package/src/testbench/worker_client_manager.ts +68 -6
  425. package/src/util.ts +8 -2
  426. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  427. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  428. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  429. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  430. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  431. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  432. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  433. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  434. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  435. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  436. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  437. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  438. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  439. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  440. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  441. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  442. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  443. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  444. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  445. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  446. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  447. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  448. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  449. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  450. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  451. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  452. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  453. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  454. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  455. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  456. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  457. package/dest/mem_pools/tx_pool/index.js +0 -2
  458. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  459. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  460. package/dest/mem_pools/tx_pool/priority.js +0 -15
  461. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  462. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  463. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  464. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  465. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  466. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  467. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  468. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  469. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  470. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  471. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  472. package/dest/services/reqresp/protocols/block.js +0 -32
  473. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  474. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  475. package/src/mem_pools/tx_pool/README.md +0 -270
  476. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  477. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  478. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  479. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  480. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  481. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  482. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  483. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  484. package/src/mem_pools/tx_pool/index.ts +0 -2
  485. package/src/mem_pools/tx_pool/priority.ts +0 -20
  486. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  487. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  488. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  489. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -1,10 +1,10 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
2
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
+ import { sleep } from '@aztec/foundation/sleep';
3
4
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
5
  import type { L2BlockSource } from '@aztec/stdlib/block';
5
6
  import type { ContractDataSource } from '@aztec/stdlib/contract';
6
7
  import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
7
- import { P2PClientType } from '@aztec/stdlib/p2p';
8
8
  import type { TelemetryClient } from '@aztec/telemetry-client';
9
9
 
10
10
  import type { GossipsubEvents, GossipsubMessage } from '@chainsafe/libp2p-gossipsub';
@@ -19,8 +19,20 @@ import {
19
19
 
20
20
  import type { P2PConfig } from '../config.js';
21
21
  import type { MemPools } from '../mem_pools/interface.js';
22
- import { DummyPeerDiscoveryService, DummyPeerManager, DummyReqResp, LibP2PService } from '../services/index.js';
23
- import type { ReqRespInterface } from '../services/reqresp/interface.js';
22
+ import { DummyPeerDiscoveryService, DummyPeerManager, LibP2PService } from '../services/index.js';
23
+ import type { P2PReqRespConfig } from '../services/reqresp/config.js';
24
+ import type { ConnectionSampler } from '../services/reqresp/connection-sampler/connection_sampler.js';
25
+ import {
26
+ type ReqRespInterface,
27
+ type ReqRespResponse,
28
+ type ReqRespSubProtocol,
29
+ type ReqRespSubProtocolHandler,
30
+ type ReqRespSubProtocolHandlers,
31
+ type ReqRespSubProtocolValidators,
32
+ type SubProtocolMap,
33
+ responseFromBuffer,
34
+ } from '../services/reqresp/interface.js';
35
+ import { ReqRespStatus } from '../services/reqresp/status.js';
24
36
  import { GossipSubEvent } from '../types/index.js';
25
37
  import type { PubSubLibp2p } from '../util.js';
26
38
 
@@ -30,11 +42,10 @@ type GossipSubService = PubSubLibp2p['services']['pubsub'];
30
42
  * Given a mock gossip sub network, returns a factory function that creates an instance LibP2PService connected to it.
31
43
  * Designed to be used in tests in P2PClientDeps.p2pServiceFactory.
32
44
  */
33
- export function getMockPubSubP2PServiceFactory<T extends P2PClientType>(
45
+ export function getMockPubSubP2PServiceFactory(
34
46
  network: MockGossipSubNetwork,
35
- ): (...args: Parameters<(typeof LibP2PService<T>)['new']>) => Promise<LibP2PService<T>> {
47
+ ): (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService> {
36
48
  return (
37
- clientType: P2PClientType,
38
49
  config: P2PConfig,
39
50
  peerId: PeerId,
40
51
  deps: {
@@ -52,10 +63,9 @@ export function getMockPubSubP2PServiceFactory<T extends P2PClientType>(
52
63
  deps.logger.verbose('Creating mock PubSub service');
53
64
  const libp2p = new MockPubSub(peerId, network);
54
65
  const peerManager = new DummyPeerManager(peerId, network);
55
- const reqresp: ReqRespInterface = new DummyReqResp();
66
+ const reqresp: ReqRespInterface = new MockReqResp(peerId, network);
56
67
  const peerDiscoveryService = new DummyPeerDiscoveryService();
57
- const service = new LibP2PService<T>(
58
- clientType as T,
68
+ const service = new LibP2PService(
59
69
  config,
60
70
  libp2p,
61
71
  peerDiscoveryService,
@@ -74,6 +84,126 @@ export function getMockPubSubP2PServiceFactory<T extends P2PClientType>(
74
84
  };
75
85
  }
76
86
 
87
+ /**
88
+ * Mock implementation of ReqRespInterface that routes requests to other peers' handlers through the mock network.
89
+ * When a peer calls sendBatchRequest, the mock iterates over network peers and invokes their registered handler
90
+ * for the sub-protocol, simulating the request-response protocol without actual libp2p streams.
91
+ */
92
+ class MockReqResp implements ReqRespInterface {
93
+ private handlers: Partial<ReqRespSubProtocolHandlers> = {};
94
+ private logger = createLogger('p2p:test:mock-reqresp');
95
+
96
+ constructor(
97
+ private peerId: PeerId,
98
+ private network: MockGossipSubNetwork,
99
+ ) {
100
+ network.registerReqRespPeer(this);
101
+ }
102
+
103
+ updateConfig(_config: Partial<P2PReqRespConfig>): void {}
104
+ setShouldRejectPeer(): void {}
105
+
106
+ start(
107
+ subProtocolHandlers: Partial<ReqRespSubProtocolHandlers>,
108
+ _subProtocolValidators: ReqRespSubProtocolValidators,
109
+ ): Promise<void> {
110
+ Object.assign(this.handlers, subProtocolHandlers);
111
+ return Promise.resolve();
112
+ }
113
+
114
+ addSubProtocol(
115
+ subProtocol: ReqRespSubProtocol,
116
+ handler: ReqRespSubProtocolHandler,
117
+ _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol],
118
+ ): Promise<void> {
119
+ this.handlers[subProtocol] = handler;
120
+ return Promise.resolve();
121
+ }
122
+
123
+ stop(): Promise<void> {
124
+ this.handlers = {};
125
+ return Promise.resolve();
126
+ }
127
+
128
+ getHandler(subProtocol: ReqRespSubProtocol): ReqRespSubProtocolHandler | undefined {
129
+ return this.handlers[subProtocol];
130
+ }
131
+
132
+ async sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(
133
+ subProtocol: SubProtocol,
134
+ requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[],
135
+ pinnedPeer: PeerId | undefined,
136
+ _timeoutMs?: number,
137
+ _maxPeers?: number,
138
+ _maxRetryAttempts?: number,
139
+ ): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]> {
140
+ const responses: InstanceType<SubProtocolMap[SubProtocol]['response']>[] = [];
141
+ const peers = this.network.getReqRespPeers().filter(p => !p.peerId.equals(this.peerId));
142
+ const targetPeers = pinnedPeer ? peers.filter(p => p.peerId.equals(pinnedPeer)) : peers;
143
+ const delayMs = this.network.getPropagationDelayMs();
144
+
145
+ if (delayMs > 0) {
146
+ await sleep(delayMs);
147
+ }
148
+
149
+ for (const request of requests) {
150
+ const requestBuffer = request.toBuffer();
151
+ for (const peer of targetPeers) {
152
+ const handler = peer.getHandler(subProtocol);
153
+ if (!handler) {
154
+ continue;
155
+ }
156
+ try {
157
+ const responseBuffer = await handler(this.peerId, requestBuffer);
158
+ if (responseBuffer.length > 0) {
159
+ const response = responseFromBuffer(subProtocol, responseBuffer);
160
+ responses.push(response as InstanceType<SubProtocolMap[SubProtocol]['response']>);
161
+ break;
162
+ }
163
+ } catch (err) {
164
+ this.logger.debug(`Mock reqresp handler error from peer ${peer.peerId}`, { err });
165
+ }
166
+ }
167
+ }
168
+
169
+ return responses;
170
+ }
171
+
172
+ async sendRequestToPeer(
173
+ peerId: PeerId,
174
+ subProtocol: ReqRespSubProtocol,
175
+ payload: Buffer,
176
+ _dialTimeout?: number,
177
+ ): Promise<ReqRespResponse> {
178
+ const peer = this.network.getReqRespPeers().find(p => p.peerId.equals(peerId));
179
+ const handler = peer?.getHandler(subProtocol);
180
+ if (!handler) {
181
+ return { status: ReqRespStatus.SUCCESS, data: Buffer.from([]) };
182
+ }
183
+ try {
184
+ const delayMs = this.network.getPropagationDelayMs();
185
+ if (delayMs > 0) {
186
+ await sleep(delayMs);
187
+ }
188
+ const data = await handler(this.peerId, payload);
189
+
190
+ return { status: ReqRespStatus.SUCCESS, data };
191
+ } catch {
192
+ return { status: ReqRespStatus.FAILURE };
193
+ }
194
+ }
195
+
196
+ getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'> {
197
+ return {
198
+ getPeerListSortedByConnectionCountAsc: () =>
199
+ this.network
200
+ .getReqRespPeers()
201
+ .filter(p => !p.peerId.equals(this.peerId))
202
+ .map(p => p.peerId),
203
+ };
204
+ }
205
+ }
206
+
77
207
  /**
78
208
  * Implementation of PubSub services that relies on a mock gossip sub network.
79
209
  * This is used in tests to simulate a gossip sub network without needing a real P2P network.
@@ -124,10 +254,10 @@ class MockGossipSubService extends TypedEventEmitter<GossipsubEvents> implements
124
254
  score: (_peerId: PeerIdStr) => 0,
125
255
  };
126
256
 
127
- publish(topic: TopicStr, data: Uint8Array, _opts?: PublishOpts): Promise<PublishResult> {
257
+ async publish(topic: TopicStr, data: Uint8Array, _opts?: PublishOpts): Promise<PublishResult> {
128
258
  this.logger.debug(`Publishing message on topic ${topic}`, { topic, sender: this.peerId.toString() });
129
- this.network.publishToPeers(topic, data, this.peerId);
130
- return Promise.resolve({ recipients: this.network.getPeers().filter(peer => !this.peerId.equals(peer)) });
259
+ await this.network.publishToPeers(topic, data, this.peerId);
260
+ return { recipients: this.network.getPeers().filter(peer => !this.peerId.equals(peer)) };
131
261
  }
132
262
 
133
263
  receive(msg: GossipsubMessage) {
@@ -149,18 +279,39 @@ class MockGossipSubService extends TypedEventEmitter<GossipsubEvents> implements
149
279
  { msgId, propagationSource, acceptance },
150
280
  );
151
281
  }
282
+
283
+ getMeshPeers(topic?: TopicStr): PeerIdStr[] {
284
+ if (topic && !this.subscribedTopics.has(topic)) {
285
+ return [];
286
+ }
287
+ return this.network
288
+ .getPeers()
289
+ .filter(peer => !this.peerId.equals(peer))
290
+ .map(peer => peer.toString());
291
+ }
152
292
  }
153
293
 
154
294
  /**
155
295
  * Mock gossip sub network used for testing.
156
- * All instances of MockGossipSubService connected to the same network will instantly receive the same messages.
296
+ * All instances of MockGossipSubService connected to the same network receive the same messages,
297
+ * optionally delayed by a configurable propagation time.
157
298
  */
158
299
  export class MockGossipSubNetwork {
159
300
  private peers: MockGossipSubService[] = [];
301
+ private reqRespPeers: MockReqResp[] = [];
160
302
  private nextMsgId = 0;
161
303
 
162
304
  private logger = createLogger('p2p:test:mock-gossipsub-network');
163
305
 
306
+ constructor(
307
+ /** Artificial propagation delay in milliseconds applied to each message delivery. */
308
+ private propagationDelayMs: number = 0,
309
+ ) {}
310
+
311
+ public getPropagationDelayMs(): number {
312
+ return this.propagationDelayMs;
313
+ }
314
+
164
315
  public getPeers(): PeerId[] {
165
316
  return this.peers.map(peer => peer.peerId);
166
317
  }
@@ -169,7 +320,15 @@ export class MockGossipSubNetwork {
169
320
  this.peers.push(peer);
170
321
  }
171
322
 
172
- public publishToPeers(topic: TopicStr, data: Uint8Array, sender: PeerId): void {
323
+ public registerReqRespPeer(peer: MockReqResp): void {
324
+ this.reqRespPeers.push(peer);
325
+ }
326
+
327
+ public getReqRespPeers(): MockReqResp[] {
328
+ return this.reqRespPeers;
329
+ }
330
+
331
+ public async publishToPeers(topic: TopicStr, data: Uint8Array, sender: PeerId): Promise<void> {
173
332
  const msgId = (this.nextMsgId++).toString();
174
333
  this.logger.debug(`Network is distributing message on topic ${topic}`, {
175
334
  topic,
@@ -178,6 +337,10 @@ export class MockGossipSubNetwork {
178
337
  msgId,
179
338
  });
180
339
 
340
+ if (this.propagationDelayMs > 0) {
341
+ await sleep(this.propagationDelayMs);
342
+ }
343
+
181
344
  const gossipSubMsg: GossipsubMessage = { msgId, msg: { type: 'unsigned', topic, data }, propagationSource: sender };
182
345
  for (const peer of this.peers) {
183
346
  if (peer.subscribedTopics.has(topic)) {
@@ -2,7 +2,6 @@ import type { EpochCache } from '@aztec/epoch-cache';
2
2
  import { timesParallel } from '@aztec/foundation/collection';
3
3
  import { SecretValue } from '@aztec/foundation/config';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
- import type { DataStoreConfig } from '@aztec/kv-store/config';
6
5
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
7
6
  import type { L2BlockSource } from '@aztec/stdlib/block';
8
7
  import { type ChainConfig, emptyChainConfig } from '@aztec/stdlib/config';
@@ -12,7 +11,7 @@ import type {
12
11
  IVCProofVerificationResult,
13
12
  WorldStateSynchronizer,
14
13
  } from '@aztec/stdlib/interfaces/server';
15
- import type { P2PClientType } from '@aztec/stdlib/p2p';
14
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
16
15
  import type { Tx } from '@aztec/stdlib/tx';
17
16
  import { compressComponentVersions } from '@aztec/stdlib/versioning';
18
17
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
@@ -34,6 +33,7 @@ import { BootstrapNode } from '../bootstrap/bootstrap.js';
34
33
  import type { BootnodeConfig, P2PConfig } from '../config.js';
35
34
  import type { MemPools } from '../mem_pools/interface.js';
36
35
  import { DiscV5Service } from '../services/discv5/discV5_service.js';
36
+ import { APP_SPECIFIC_WEIGHT } from '../services/gossipsub/scoring.js';
37
37
  import { LibP2PService } from '../services/libp2p/libp2p_service.js';
38
38
  import { PeerManager } from '../services/peer-manager/peer_manager.js';
39
39
  import { PeerScoring } from '../services/peer-manager/peer_scoring.js';
@@ -106,8 +106,7 @@ export async function createLibp2pNode(
106
106
  *
107
107
  *
108
108
  */
109
- export async function createTestLibP2PService<T extends P2PClientType>(
110
- clientType: T,
109
+ export async function createTestLibP2PService(
111
110
  boostrapAddrs: string[] = [],
112
111
  archiver: L2BlockSource & ContractDataSource,
113
112
  worldStateSynchronizer: WorldStateSynchronizer,
@@ -154,12 +153,13 @@ export async function createTestLibP2PService<T extends P2PClientType>(
154
153
  epochCache,
155
154
  );
156
155
 
157
- p2pNode.services.pubsub.score.params.appSpecificWeight = 10;
156
+ reqresp.setShouldRejectPeer(peerId => peerManager.shouldDisableP2PGossip(peerId));
157
+
158
+ p2pNode.services.pubsub.score.params.appSpecificWeight = APP_SPECIFIC_WEIGHT;
158
159
  p2pNode.services.pubsub.score.params.appSpecificScore = (peerId: string) =>
159
160
  peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
160
161
 
161
- return new LibP2PService<T>(
162
- clientType,
162
+ return new LibP2PService(
163
163
  config,
164
164
  p2pNode as PubSubLibp2p,
165
165
  discoveryService,
@@ -189,7 +189,6 @@ export const MOCK_SUB_PROTOCOL_HANDLERS: ReqRespSubProtocolHandlers = {
189
189
  [ReqRespSubProtocol.STATUS]: (_msg: any) => Promise.resolve(Buffer.from('status')),
190
190
  [ReqRespSubProtocol.TX]: (_msg: any) => Promise.resolve(Buffer.from('tx')),
191
191
  [ReqRespSubProtocol.GOODBYE]: (_msg: any) => Promise.resolve(Buffer.from('goodbye')),
192
- [ReqRespSubProtocol.BLOCK]: (_msg: any) => Promise.resolve(Buffer.from('block')),
193
192
  [ReqRespSubProtocol.AUTH]: (_msg: any) => Promise.resolve(Buffer.from('auth')),
194
193
  [ReqRespSubProtocol.BLOCK_TXS]: (_msg: any) => Promise.resolve(Buffer.from('block_txs')),
195
194
  };
@@ -201,7 +200,6 @@ export const MOCK_SUB_PROTOCOL_VALIDATORS: ReqRespSubProtocolValidators = {
201
200
  [ReqRespSubProtocol.STATUS]: noopValidator,
202
201
  [ReqRespSubProtocol.TX]: noopValidator,
203
202
  [ReqRespSubProtocol.GOODBYE]: noopValidator,
204
- [ReqRespSubProtocol.BLOCK]: noopValidator,
205
203
  [ReqRespSubProtocol.AUTH]: noopValidator,
206
204
  [ReqRespSubProtocol.BLOCK_TXS]: noopValidator,
207
205
  };