@aztec/p2p 0.0.1-commit.9d2bcf6d → 0.0.1-commit.9ebd450e8

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