@aztec/p2p 0.0.1-commit.c80b6263 → 0.0.1-commit.cf93bcc56

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 (310) hide show
  1. package/dest/client/factory.d.ts +7 -6
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +47 -10
  4. package/dest/client/interface.d.ts +40 -22
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +37 -41
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +134 -145
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +2 -2
  10. package/dest/config.d.ts +28 -4
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +19 -2
  13. package/dest/errors/tx-pool.error.d.ts +8 -0
  14. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  15. package/dest/errors/tx-pool.error.js +9 -0
  16. package/dest/index.d.ts +2 -1
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +1 -0
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  25. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  26. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/index.js +1 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  31. package/dest/mem_pools/index.d.ts +3 -2
  32. package/dest/mem_pools/index.d.ts.map +1 -1
  33. package/dest/mem_pools/index.js +1 -1
  34. package/dest/mem_pools/interface.d.ts +5 -5
  35. package/dest/mem_pools/interface.d.ts.map +1 -1
  36. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  37. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  38. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  39. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  40. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  41. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  42. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  43. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  44. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +74 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  76. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  77. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  79. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  80. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  82. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +207 -0
  83. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/interfaces.js +8 -0
  85. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
  86. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +58 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +75 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +871 -0
  100. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  101. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  103. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  105. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  107. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +18 -5
  108. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
  110. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  111. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  113. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  114. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  116. package/dest/services/data_store.d.ts +1 -1
  117. package/dest/services/data_store.d.ts.map +1 -1
  118. package/dest/services/data_store.js +10 -6
  119. package/dest/services/dummy_service.d.ts +10 -2
  120. package/dest/services/dummy_service.d.ts.map +1 -1
  121. package/dest/services/dummy_service.js +6 -0
  122. package/dest/services/encoding.d.ts +2 -2
  123. package/dest/services/encoding.d.ts.map +1 -1
  124. package/dest/services/encoding.js +4 -3
  125. package/dest/services/gossipsub/index.d.ts +3 -0
  126. package/dest/services/gossipsub/index.d.ts.map +1 -0
  127. package/dest/services/gossipsub/index.js +2 -0
  128. package/dest/services/gossipsub/scoring.d.ts +21 -3
  129. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  130. package/dest/services/gossipsub/scoring.js +24 -7
  131. package/dest/services/gossipsub/topic_score_params.d.ts +161 -0
  132. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  133. package/dest/services/gossipsub/topic_score_params.js +324 -0
  134. package/dest/services/index.d.ts +2 -1
  135. package/dest/services/index.d.ts.map +1 -1
  136. package/dest/services/index.js +1 -0
  137. package/dest/services/libp2p/libp2p_service.d.ts +84 -35
  138. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  139. package/dest/services/libp2p/libp2p_service.js +375 -280
  140. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  141. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  142. package/dest/services/peer-manager/peer_scoring.js +25 -2
  143. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -4
  144. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  145. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +9 -9
  146. package/dest/services/reqresp/interface.d.ts +10 -1
  147. package/dest/services/reqresp/interface.d.ts.map +1 -1
  148. package/dest/services/reqresp/interface.js +15 -1
  149. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  150. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  151. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +17 -12
  152. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +25 -14
  153. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  154. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +40 -24
  155. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  156. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  157. package/dest/services/reqresp/protocols/tx.js +20 -0
  158. package/dest/services/reqresp/reqresp.d.ts +1 -1
  159. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  160. package/dest/services/reqresp/reqresp.js +11 -4
  161. package/dest/services/service.d.ts +35 -1
  162. package/dest/services/service.d.ts.map +1 -1
  163. package/dest/services/tx_collection/config.d.ts +22 -4
  164. package/dest/services/tx_collection/config.d.ts.map +1 -1
  165. package/dest/services/tx_collection/config.js +49 -3
  166. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  167. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  168. package/dest/services/tx_collection/fast_tx_collection.js +27 -17
  169. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  170. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  171. package/dest/services/tx_collection/file_store_tx_collection.js +165 -0
  172. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  173. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  174. package/dest/services/tx_collection/file_store_tx_source.js +79 -0
  175. package/dest/services/tx_collection/index.d.ts +3 -2
  176. package/dest/services/tx_collection/index.d.ts.map +1 -1
  177. package/dest/services/tx_collection/index.js +1 -0
  178. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  179. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  180. package/dest/services/tx_collection/instrumentation.js +2 -1
  181. package/dest/services/tx_collection/proposal_tx_collector.d.ts +12 -12
  182. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  183. package/dest/services/tx_collection/proposal_tx_collector.js +4 -5
  184. package/dest/services/tx_collection/slow_tx_collection.d.ts +6 -2
  185. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  186. package/dest/services/tx_collection/slow_tx_collection.js +55 -23
  187. package/dest/services/tx_collection/tx_collection.d.ts +19 -7
  188. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  189. package/dest/services/tx_collection/tx_collection.js +75 -3
  190. package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
  191. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  192. package/dest/services/tx_collection/tx_collection_sink.js +13 -7
  193. package/dest/services/tx_file_store/config.d.ts +16 -0
  194. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  195. package/dest/services/tx_file_store/config.js +22 -0
  196. package/dest/services/tx_file_store/index.d.ts +4 -0
  197. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  198. package/dest/services/tx_file_store/index.js +3 -0
  199. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  200. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  201. package/dest/services/tx_file_store/instrumentation.js +29 -0
  202. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  203. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  204. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  205. package/dest/services/tx_provider.d.ts +3 -3
  206. package/dest/services/tx_provider.d.ts.map +1 -1
  207. package/dest/services/tx_provider.js +5 -4
  208. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  209. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  210. package/dest/test-helpers/mock-pubsub.d.ts +27 -1
  211. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  212. package/dest/test-helpers/mock-pubsub.js +97 -2
  213. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  214. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  215. package/dest/test-helpers/reqresp-nodes.js +2 -1
  216. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  217. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  218. package/dest/test-helpers/testbench-utils.js +130 -60
  219. package/dest/testbench/p2p_client_testbench_worker.js +5 -5
  220. package/package.json +14 -14
  221. package/src/client/factory.ts +89 -14
  222. package/src/client/interface.ts +49 -22
  223. package/src/client/p2p_client.ts +170 -168
  224. package/src/client/test/tx_proposal_collector/README.md +4 -4
  225. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +2 -2
  226. package/src/config.ts +41 -2
  227. package/src/errors/tx-pool.error.ts +12 -0
  228. package/src/index.ts +1 -0
  229. package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
  230. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  231. package/src/mem_pools/attestation_pool/index.ts +9 -2
  232. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  233. package/src/mem_pools/index.ts +4 -1
  234. package/src/mem_pools/interface.ts +4 -4
  235. package/src/mem_pools/tx_pool/README.md +1 -1
  236. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  237. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  238. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  239. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  240. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  241. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  242. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  243. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
  244. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  245. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  246. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  247. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  248. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +87 -0
  249. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  250. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  251. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  252. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  253. package/src/mem_pools/tx_pool_v2/interfaces.ts +239 -0
  254. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
  255. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  256. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  257. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  258. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1042 -0
  259. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  260. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  261. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  262. package/src/msg_validators/tx_validator/block_header_validator.ts +18 -8
  263. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  264. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  265. package/src/services/data_store.ts +10 -7
  266. package/src/services/dummy_service.ts +12 -0
  267. package/src/services/encoding.ts +4 -3
  268. package/src/services/gossipsub/README.md +626 -0
  269. package/src/services/gossipsub/index.ts +2 -0
  270. package/src/services/gossipsub/scoring.ts +29 -5
  271. package/src/services/gossipsub/topic_score_params.ts +451 -0
  272. package/src/services/index.ts +1 -0
  273. package/src/services/libp2p/libp2p_service.ts +377 -282
  274. package/src/services/peer-manager/peer_scoring.ts +25 -0
  275. package/src/services/reqresp/batch-tx-requester/README.md +14 -14
  276. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +12 -12
  277. package/src/services/reqresp/interface.ts +26 -1
  278. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +24 -15
  279. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -24
  280. package/src/services/reqresp/protocols/tx.ts +22 -0
  281. package/src/services/reqresp/reqresp.ts +13 -3
  282. package/src/services/service.ts +40 -0
  283. package/src/services/tx_collection/config.ts +74 -6
  284. package/src/services/tx_collection/fast_tx_collection.ts +28 -26
  285. package/src/services/tx_collection/file_store_tx_collection.ts +198 -0
  286. package/src/services/tx_collection/file_store_tx_source.ts +104 -0
  287. package/src/services/tx_collection/index.ts +2 -1
  288. package/src/services/tx_collection/instrumentation.ts +7 -1
  289. package/src/services/tx_collection/proposal_tx_collector.ts +12 -14
  290. package/src/services/tx_collection/slow_tx_collection.ts +64 -30
  291. package/src/services/tx_collection/tx_collection.ts +109 -13
  292. package/src/services/tx_collection/tx_collection_sink.ts +17 -7
  293. package/src/services/tx_file_store/config.ts +37 -0
  294. package/src/services/tx_file_store/index.ts +3 -0
  295. package/src/services/tx_file_store/instrumentation.ts +36 -0
  296. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  297. package/src/services/tx_provider.ts +8 -7
  298. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  299. package/src/test-helpers/mock-pubsub.ts +133 -3
  300. package/src/test-helpers/reqresp-nodes.ts +2 -1
  301. package/src/test-helpers/testbench-utils.ts +129 -71
  302. package/src/testbench/p2p_client_testbench_worker.ts +5 -5
  303. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  304. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  305. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  306. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  307. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  308. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  309. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  310. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -0,0 +1,152 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { RunningPromise } from '@aztec/foundation/promise';
3
+ import { makeBackoff, retry } from '@aztec/foundation/retry';
4
+ import { Timer } from '@aztec/foundation/timer';
5
+ import { createFileStore } from '@aztec/stdlib/file-store';
6
+ import { getTelemetryClient } from '@aztec/telemetry-client';
7
+ import { TxFileStoreInstrumentation } from './instrumentation.js';
8
+ /**
9
+ * Uploads validated transactions to a file store as a fallback retrieval mechanism.
10
+ * Listens to TxPool txs-added events and uploads txs asynchronously with bounded concurrency.
11
+ */ export class TxFileStore {
12
+ fileStore;
13
+ txPool;
14
+ config;
15
+ instrumentation;
16
+ log;
17
+ basePath;
18
+ uploadQueue;
19
+ activeUploads;
20
+ queueProcessor;
21
+ handleTxsAdded;
22
+ /** Recently uploaded tx hashes for deduplication. */ recentUploads;
23
+ recentUploadsOrder;
24
+ maxRecentUploads;
25
+ constructor(fileStore, txPool, config, instrumentation, log, basePath){
26
+ this.fileStore = fileStore;
27
+ this.txPool = txPool;
28
+ this.config = config;
29
+ this.instrumentation = instrumentation;
30
+ this.log = log;
31
+ this.basePath = basePath;
32
+ this.uploadQueue = [];
33
+ this.activeUploads = 0;
34
+ this.recentUploads = new Set();
35
+ this.recentUploadsOrder = [];
36
+ this.maxRecentUploads = 1000;
37
+ this.handleTxsAdded = (args)=>{
38
+ this.enqueueTxs(args.txs);
39
+ };
40
+ this.queueProcessor = new RunningPromise(()=>this.processQueueBatch(), this.log, 100);
41
+ }
42
+ /**
43
+ * Creates and initializes the file store.
44
+ * @param txPool - The transaction pool to listen to.
45
+ * @param config - The file store configuration.
46
+ * @param log - Optional logger.
47
+ * @param telemetry - Optional telemetry client.
48
+ * @param fileStoreOverride - Optional FileStore for testing (bypasses createFileStore).
49
+ * @returns The file store instance, or undefined if not configured/enabled.
50
+ */ static async create(txPool, config, basePath, log = createLogger('p2p:tx_file_store'), telemetry = getTelemetryClient(), fileStoreOverride) {
51
+ if (!config.txFileStoreEnabled) {
52
+ log.debug('Tx file store is disabled');
53
+ return undefined;
54
+ }
55
+ if (!config.txFileStoreUrl) {
56
+ log.warn('Tx file store is enabled but URL is not configured');
57
+ return undefined;
58
+ }
59
+ const fileStore = fileStoreOverride ?? await createFileStore(config.txFileStoreUrl, log);
60
+ if (!fileStore) {
61
+ log.warn('Failed to create file store for tx file store');
62
+ return undefined;
63
+ }
64
+ const instrumentation = new TxFileStoreInstrumentation(telemetry, 'TxFileStore');
65
+ log.info('Created tx file store', {
66
+ url: config.txFileStoreUrl,
67
+ basePath
68
+ });
69
+ return new TxFileStore(fileStore, txPool, config, instrumentation, log, basePath);
70
+ }
71
+ /** Starts listening to TxPool events and uploading txs. */ start() {
72
+ this.queueProcessor.start();
73
+ this.txPool.on('txs-added', this.handleTxsAdded);
74
+ this.log.info('Started tx file store', {
75
+ concurrency: this.config.txFileStoreUploadConcurrency,
76
+ maxQueueSize: this.config.txFileStoreMaxQueueSize
77
+ });
78
+ }
79
+ /** Stops listening and waits for pending uploads to complete. */ async stop() {
80
+ this.txPool.removeListener('txs-added', this.handleTxsAdded);
81
+ await this.queueProcessor.stop();
82
+ this.log.info('Stopped tx file store');
83
+ }
84
+ enqueueTxs(txs) {
85
+ this.uploadQueue.push(...txs);
86
+ // Enforce max queue size by dropping oldest entries
87
+ const overflow = this.uploadQueue.length - this.config.txFileStoreMaxQueueSize;
88
+ if (overflow > 0) {
89
+ this.log.warn(`Upload queue overflow, dropping ${overflow} oldest txs`);
90
+ this.uploadQueue.splice(0, overflow);
91
+ }
92
+ this.instrumentation.recordQueueSize(this.uploadQueue.length);
93
+ // Immediately start uploading txs
94
+ void this.queueProcessor.trigger();
95
+ }
96
+ async processQueueBatch() {
97
+ const batch = this.uploadQueue.splice(0, this.config.txFileStoreUploadConcurrency);
98
+ this.instrumentation.recordQueueSize(this.uploadQueue.length);
99
+ this.activeUploads += batch.length;
100
+ try {
101
+ await Promise.all(batch.map((tx)=>this.uploadTx(tx)));
102
+ } finally{
103
+ this.activeUploads -= batch.length;
104
+ }
105
+ }
106
+ async uploadTx(tx) {
107
+ const txHash = tx.getTxHash().toString();
108
+ const path = `${this.basePath}/txs/${txHash}.bin`;
109
+ const timer = new Timer();
110
+ if (this.recentUploads.has(txHash)) {
111
+ return;
112
+ }
113
+ try {
114
+ this.recentUploads.add(txHash);
115
+ this.recentUploadsOrder.push(txHash);
116
+ if (this.recentUploadsOrder.length > this.maxRecentUploads) {
117
+ // delete old entries in recentUploads
118
+ for (const txHashToRemove of this.recentUploadsOrder.splice(0, this.recentUploadsOrder.length - this.maxRecentUploads)){
119
+ this.recentUploads.delete(txHashToRemove);
120
+ }
121
+ }
122
+ await retry(()=>this.fileStore.save(path, tx.toBuffer(), {
123
+ compress: true
124
+ }), `Uploading tx ${txHash}`, makeBackoff([
125
+ 0.1,
126
+ 0.5,
127
+ 2
128
+ ]), this.log, true);
129
+ const durationMs = Math.trunc(timer.ms());
130
+ this.log.debug(`Uploaded tx to file store`, {
131
+ txHash,
132
+ path,
133
+ durationMs
134
+ });
135
+ this.instrumentation.recordUploadSuccess(durationMs);
136
+ } catch (err) {
137
+ this.log.warn(`Failed to upload tx to file store after retries`, {
138
+ txHash,
139
+ error: err
140
+ });
141
+ this.instrumentation.recordUploadFailed();
142
+ }
143
+ }
144
+ /** Waits for all queued and in-flight uploads to complete. For testing. */ async flush() {
145
+ while(this.uploadQueue.length > 0 || this.activeUploads > 0){
146
+ await this.queueProcessor.trigger();
147
+ }
148
+ }
149
+ /** Returns the number of pending uploads (queued + in-flight). */ getPendingUploadCount() {
150
+ return this.uploadQueue.length + this.activeUploads;
151
+ }
152
+ }
@@ -7,7 +7,7 @@ import { Tx, TxHash } from '@aztec/stdlib/tx';
7
7
  import { type TelemetryClient } from '@aztec/telemetry-client';
8
8
  import type { PeerId } from '@libp2p/interface';
9
9
  import type { P2PClient } from '../client/p2p_client.js';
10
- import type { TxPool } from '../mem_pools/index.js';
10
+ import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
11
11
  import type { TxCollection } from './tx_collection/tx_collection.js';
12
12
  import { TxProviderInstrumentation } from './tx_provider_instrumentation.js';
13
13
  /**
@@ -20,7 +20,7 @@ export declare class TxProvider implements ITxProvider {
20
20
  private txValidator;
21
21
  private log;
22
22
  protected instrumentation: TxProviderInstrumentation;
23
- constructor(txCollection: TxCollection, txPool: TxPool, txValidator: Pick<P2PClient, 'validate'>, log?: Logger, client?: TelemetryClient);
23
+ constructor(txCollection: TxCollection, txPool: TxPoolV2, txValidator: Pick<P2PClient, 'validate'>, log?: Logger, client?: TelemetryClient);
24
24
  /** Returns txs from the tx pool given their hashes.*/
25
25
  getAvailableTxs(txHashes: TxHash[]): Promise<{
26
26
  txs: Tx[];
@@ -48,4 +48,4 @@ export declare class TxProvider implements ITxProvider {
48
48
  private extractFromProposal;
49
49
  private processProposalTxs;
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvdmlkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy90eF9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBZSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUE4QixZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RTs7O0dBR0c7QUFDSCxxQkFBYSxVQUFXLFlBQVcsV0FBVztJQUkxQyxPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxHQUFHO0lBTmIsU0FBUyxDQUFDLGVBQWUsRUFBRSx5QkFBeUIsQ0FBQztJQUVyRCxZQUNVLFlBQVksRUFBRSxZQUFZLEVBQzFCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQ3hDLEdBQUcsR0FBRSxNQUF5QyxFQUN0RCxNQUFNLEdBQUUsZUFBc0MsRUFHL0M7SUFFRCxzREFBc0Q7SUFDekMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBa0I3RjtJQUVELGtGQUFrRjtJQUMzRSxzQkFBc0IsQ0FDM0IsYUFBYSxFQUFFLGFBQWEsRUFDNUIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsSUFBSSxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FDdkQsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQU85QztJQUVELG1FQUFtRTtJQUM1RCxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBTzVHO1lBRWEsMkJBQTJCO0lBZ0N6QyxPQUFPLENBQUMsUUFBUTtZQUtGLG9CQUFvQjtZQXlGcEIsY0FBYztJQVk1QixPQUFPLENBQUMsbUJBQW1CO1lBT2Isa0JBQWtCO0NBT2pDIn0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvdmlkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy90eF9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBZSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBOEIsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFN0U7OztHQUdHO0FBQ0gscUJBQWEsVUFBVyxZQUFXLFdBQVc7SUFJMUMsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsV0FBVztJQUNuQixPQUFPLENBQUMsR0FBRztJQU5iLFNBQVMsQ0FBQyxlQUFlLEVBQUUseUJBQXlCLENBQUM7SUFFckQsWUFDVSxZQUFZLEVBQUUsWUFBWSxFQUMxQixNQUFNLEVBQUUsUUFBUSxFQUNoQixXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFDeEMsR0FBRyxHQUFFLE1BQXlDLEVBQ3RELE1BQU0sR0FBRSxlQUFzQyxFQUcvQztJQUVELHNEQUFzRDtJQUN6QyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQTtLQUFFLENBQUMsQ0FrQjdGO0lBRUQsa0ZBQWtGO0lBQzNFLHNCQUFzQixDQUMzQixhQUFhLEVBQUUsYUFBYSxFQUM1QixXQUFXLEVBQUUsV0FBVyxFQUN4QixJQUFJLEVBQUU7UUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUFDLFFBQVEsRUFBRSxJQUFJLENBQUE7S0FBRSxHQUN2RCxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBTzlDO0lBRUQsbUVBQW1FO0lBQzVELGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtRQUFFLFFBQVEsRUFBRSxJQUFJLENBQUE7S0FBRSxHQUFHLE9BQU8sQ0FBQztRQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQTtLQUFFLENBQUMsQ0FPNUc7WUFFYSwyQkFBMkI7SUFnQ3pDLE9BQU8sQ0FBQyxRQUFRO1lBS0Ysb0JBQW9CO1lBMEZwQixjQUFjO0lBWTVCLE9BQU8sQ0FBQyxtQkFBbUI7WUFPYixrQkFBa0I7Q0FPakMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"tx_provider.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAA8B,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAI1C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IANb,SAAS,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAErD,YACU,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EACxC,GAAG,GAAE,MAAyC,EACtD,MAAM,GAAE,eAAsC,EAG/C;IAED,sDAAsD;IACzC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAkB7F;IAED,kFAAkF;IAC3E,sBAAsB,CAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,GACvD,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO9C;IAED,mEAAmE;IAC5D,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO5G;YAEa,2BAA2B;IAgCzC,OAAO,CAAC,QAAQ;YAKF,oBAAoB;YAyFpB,cAAc;IAY5B,OAAO,CAAC,mBAAmB;YAOb,kBAAkB;CAOjC"}
1
+ {"version":3,"file":"tx_provider.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,KAAK,EAA8B,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAI1C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IANb,SAAS,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAErD,YACU,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EACxC,GAAG,GAAE,MAAyC,EACtD,MAAM,GAAE,eAAsC,EAG/C;IAED,sDAAsD;IACzC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAkB7F;IAED,kFAAkF;IAC3E,sBAAsB,CAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,GACvD,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO9C;IAED,mEAAmE;IAC5D,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO5G;YAEa,2BAA2B;IAgCzC,OAAO,CAAC,QAAQ;YAKF,oBAAoB;YA0FpB,cAAc;IAY5B,OAAO,CAAC,mBAAmB;YAOb,kBAAkB;CAOjC"}
@@ -123,6 +123,7 @@ import { TxProviderInstrumentation } from './tx_provider_instrumentation.js';
123
123
  // Take txs from the proposal body if there are any
124
124
  // Note that we still have to validate these txs, but we do it in parallel with tx collection
125
125
  const proposal = request.type === 'proposal' ? request.blockProposal : undefined;
126
+ const proposalBlockHeader = proposal?.blockHeader;
126
127
  const txsFromProposal = this.extractFromProposal(proposal, [
127
128
  ...missingTxHashes
128
129
  ]);
@@ -137,7 +138,7 @@ import { TxProviderInstrumentation } from './tx_provider_instrumentation.js';
137
138
  });
138
139
  }
139
140
  if (missingTxHashes.size === 0) {
140
- await this.processProposalTxs(txsFromProposal);
141
+ await this.processProposalTxs(txsFromProposal, proposalBlockHeader);
141
142
  this.instrumentation.incTxsFromP2P(0, txHashes.length);
142
143
  return {
143
144
  txsFromMempool,
@@ -149,7 +150,7 @@ import { TxProviderInstrumentation } from './tx_provider_instrumentation.js';
149
150
  this.collectFromP2P(request, [
150
151
  ...missingTxHashes
151
152
  ], opts),
152
- this.processProposalTxs(txsFromProposal)
153
+ this.processProposalTxs(txsFromProposal, proposalBlockHeader)
153
154
  ]);
154
155
  if (txsFromNetwork.length > 0) {
155
156
  txsFromNetwork.forEach((tx)=>missingTxHashes.delete(tx.txHash.toString()));
@@ -209,11 +210,11 @@ import { TxProviderInstrumentation } from './tx_provider_instrumentation.js';
209
210
  }
210
211
  return compactArray(proposal.txs ?? []).filter((tx)=>missingTxHashes.includes(tx.getTxHash().toString()));
211
212
  }
212
- async processProposalTxs(txs) {
213
+ async processProposalTxs(txs, blockHeader) {
213
214
  if (txs.length === 0) {
214
215
  return;
215
216
  }
216
217
  await this.txValidator.validate(txs);
217
- await this.txPool.addTxs(txs);
218
+ await this.txPool.addProtectedTxs(txs, blockHeader);
218
219
  }
219
220
  }
@@ -5,11 +5,11 @@ import { P2PClientType } from '@aztec/stdlib/p2p';
5
5
  import type { P2PClient } from '../client/p2p_client.js';
6
6
  import type { P2PConfig } from '../config.js';
7
7
  import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
8
- import type { TxPool } from '../mem_pools/tx_pool/index.js';
8
+ import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
9
9
  import { type MockGossipSubNetwork } from './mock-pubsub.js';
10
10
  export interface MakeTestP2PClientOptions {
11
11
  mockAttestationPool: AttestationPool;
12
- mockTxPool: TxPool;
12
+ mockTxPool: TxPoolV2;
13
13
  mockEpochCache: EpochCache;
14
14
  mockWorldState: WorldStateSynchronizer;
15
15
  alwaysTrueVerifier?: boolean;
@@ -61,4 +61,4 @@ export declare function makeTestP2PClients(numberOfPeers: number, testConfig: Ma
61
61
  enr: string;
62
62
  }[]>;
63
63
  export declare function startTestP2PClients(clients: P2PClient[]): Promise<void>;
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS10ZXN0LXAycC1jbGllbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1oZWxwZXJzL21ha2UtdGVzdC1wMnAtY2xpZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFLbEUsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3pGLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFrQyxNQUFNLGtCQUFrQixDQUFDO0FBRzdGLE1BQU0sV0FBVyx3QkFBd0I7SUFDdkMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDO0lBQ3JDLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIsY0FBYyxFQUFFLFVBQVUsQ0FBQztJQUMzQixjQUFjLEVBQUUsc0JBQXNCLENBQUM7SUFDdkMsa0JBQWtCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDN0IsYUFBYSxFQUFFLFNBQVMsQ0FBQztJQUN6QixrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEIsb0JBQW9CLENBQUMsRUFBRSxvQkFBb0IsQ0FBQztDQUM3QztBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0IseUJBQXlCLENBQzdDLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsSUFBSSxFQUFFLE1BQU0sRUFDWixLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQ2YsT0FBTyxFQUFFLHdCQUF3QiwwQ0FNbEM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQXNCLGlCQUFpQixDQUNyQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQ3hCLElBQUksRUFBRSxNQUFNLEVBQ1osS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUNmLEVBQ0Usa0JBQXlCLEVBQ3pCLGFBQWEsRUFDYixrQkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixNQUF3QyxFQUN6QyxFQUFFLHdCQUF3QiwwQ0EyQzVCO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsMEJBQTBCLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsd0JBQXdCOzs7OztLQXVDM0c7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQixrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSx3QkFBd0I7Ozs7O0tBZ0NuRztBQUVELHdCQUFzQixtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUc3RCJ9
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS10ZXN0LXAycC1jbGllbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1oZWxwZXJzL21ha2UtdGVzdC1wMnAtY2xpZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFLbEUsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3pGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSXRFLE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFrQyxNQUFNLGtCQUFrQixDQUFDO0FBRzdGLE1BQU0sV0FBVyx3QkFBd0I7SUFDdkMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDO0lBQ3JDLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDckIsY0FBYyxFQUFFLFVBQVUsQ0FBQztJQUMzQixjQUFjLEVBQUUsc0JBQXNCLENBQUM7SUFDdkMsa0JBQWtCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDN0IsYUFBYSxFQUFFLFNBQVMsQ0FBQztJQUN6QixrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEIsb0JBQW9CLENBQUMsRUFBRSxvQkFBb0IsQ0FBQztDQUM3QztBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0IseUJBQXlCLENBQzdDLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsSUFBSSxFQUFFLE1BQU0sRUFDWixLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQ2YsT0FBTyxFQUFFLHdCQUF3QiwwQ0FNbEM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQXNCLGlCQUFpQixDQUNyQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQ3hCLElBQUksRUFBRSxNQUFNLEVBQ1osS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUNmLEVBQ0Usa0JBQXlCLEVBQ3pCLGFBQWEsRUFDYixrQkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixNQUF3QyxFQUN6QyxFQUFFLHdCQUF3QiwwQ0EyQzVCO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsMEJBQTBCLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsd0JBQXdCOzs7OztLQXVDM0c7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQixrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSx3QkFBd0I7Ozs7O0tBZ0NuRztBQUVELHdCQUFzQixtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUc3RCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"make-test-p2p-clients.d.ts","sourceRoot":"","sources":["../../src/test-helpers/make-test-p2p-clients.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAI5D,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,kBAAkB,CAAC;AAG7F,MAAM,WAAW,wBAAwB;IACvC,mBAAmB,EAAE,eAAe,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,UAAU,CAAC;IAC3B,cAAc,EAAE,sBAAsB,CAAC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,SAAS,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,wBAAwB,0CAMlC;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,EACE,kBAAyB,EACzB,aAAa,EACb,kBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,MAAwC,EACzC,EAAE,wBAAwB,0CA2C5B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB;;;;;KAuC3G;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB;;;;;KAgCnG;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAG7D"}
1
+ {"version":3,"file":"make-test-p2p-clients.d.ts","sourceRoot":"","sources":["../../src/test-helpers/make-test-p2p-clients.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAItE,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,kBAAkB,CAAC;AAG7F,MAAM,WAAW,wBAAwB;IACvC,mBAAmB,EAAE,eAAe,CAAC;IACrC,UAAU,EAAE,QAAQ,CAAC;IACrB,cAAc,EAAE,UAAU,CAAC;IAC3B,cAAc,EAAE,sBAAsB,CAAC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,SAAS,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,wBAAwB,0CAMlC;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,EACE,kBAAyB,EACzB,aAAa,EACb,kBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,MAAwC,EACzC,EAAE,wBAAwB,0CA2C5B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB;;;;;KAuC3G;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB;;;;;KAgCnG;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAG7D"}
@@ -3,6 +3,9 @@ import type { GossipsubEvents, GossipsubMessage } from '@chainsafe/libp2p-gossip
3
3
  import type { MsgIdStr, PeerIdStr, PublishOpts, TopicStr } from '@chainsafe/libp2p-gossipsub/types';
4
4
  import { type Libp2pStatus, type PeerId, type PublishResult, type TopicValidatorResult, TypedEventEmitter } from '@libp2p/interface';
5
5
  import { LibP2PService } from '../services/index.js';
6
+ import type { P2PReqRespConfig } from '../services/reqresp/config.js';
7
+ import type { ConnectionSampler } from '../services/reqresp/connection-sampler/connection_sampler.js';
8
+ import { type ReqRespInterface, type ReqRespResponse, type ReqRespSubProtocol, type ReqRespSubProtocolHandler, type ReqRespSubProtocolHandlers, type ReqRespSubProtocolValidators, type SubProtocolMap } from '../services/reqresp/interface.js';
6
9
  import type { PubSubLibp2p } from '../util.js';
7
10
  type GossipSubService = PubSubLibp2p['services']['pubsub'];
8
11
  /**
@@ -10,6 +13,26 @@ type GossipSubService = PubSubLibp2p['services']['pubsub'];
10
13
  * Designed to be used in tests in P2PClientDeps.p2pServiceFactory.
11
14
  */
12
15
  export declare function getMockPubSubP2PServiceFactory<T extends P2PClientType>(network: MockGossipSubNetwork): (...args: Parameters<(typeof LibP2PService<T>)['new']>) => Promise<LibP2PService<T>>;
16
+ /**
17
+ * Mock implementation of ReqRespInterface that routes requests to other peers' handlers through the mock network.
18
+ * When a peer calls sendBatchRequest, the mock iterates over network peers and invokes their registered handler
19
+ * for the sub-protocol, simulating the request-response protocol without actual libp2p streams.
20
+ */
21
+ declare class MockReqResp implements ReqRespInterface {
22
+ private peerId;
23
+ private network;
24
+ private handlers;
25
+ private logger;
26
+ constructor(peerId: PeerId, network: MockGossipSubNetwork);
27
+ updateConfig(_config: Partial<P2PReqRespConfig>): void;
28
+ start(subProtocolHandlers: Partial<ReqRespSubProtocolHandlers>, _subProtocolValidators: ReqRespSubProtocolValidators): Promise<void>;
29
+ addSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
30
+ stop(): Promise<void>;
31
+ getHandler(subProtocol: ReqRespSubProtocol): ReqRespSubProtocolHandler | undefined;
32
+ sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(subProtocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], pinnedPeer: PeerId | undefined, _timeoutMs?: number, _maxPeers?: number, _maxRetryAttempts?: number): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]>;
33
+ sendRequestToPeer(peerId: PeerId, subProtocol: ReqRespSubProtocol, payload: Buffer, _dialTimeout?: number): Promise<ReqRespResponse>;
34
+ getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'>;
35
+ }
13
36
  /**
14
37
  * Implementation of PubSub services that relies on a mock gossip sub network.
15
38
  * This is used in tests to simulate a gossip sub network without needing a real P2P network.
@@ -49,11 +72,14 @@ declare class MockGossipSubService extends TypedEventEmitter<GossipsubEvents> im
49
72
  */
50
73
  export declare class MockGossipSubNetwork {
51
74
  private peers;
75
+ private reqRespPeers;
52
76
  private nextMsgId;
53
77
  private logger;
54
78
  getPeers(): PeerId[];
55
79
  registerPeer(peer: MockGossipSubService): void;
80
+ registerReqRespPeer(peer: MockReqResp): void;
81
+ getReqRespPeers(): MockReqResp[];
56
82
  publishToPeers(topic: TopicStr, data: Uint8Array, sender: PeerId): void;
57
83
  }
58
84
  export {};
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wdWJzdWIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LWhlbHBlcnMvbW9jay1wdWJzdWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BHLE9BQU8sRUFDTCxLQUFLLFlBQVksRUFDakIsS0FBSyxNQUFNLEVBQ1gsS0FBSyxhQUFhLEVBQ2xCLEtBQUssb0JBQW9CLEVBQ3pCLGlCQUFpQixFQUNsQixNQUFNLG1CQUFtQixDQUFDO0FBSTNCLE9BQU8sRUFBNkQsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHaEgsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRS9DLEtBQUssZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTNEOzs7R0FHRztBQUNILHdCQUFnQiw4QkFBOEIsQ0FBQyxDQUFDLFNBQVMsYUFBYSxFQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEdBQzVCLENBQUMsR0FBRyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0F3Q3RGO0FBRUQ7Ozs7R0FJRztBQUNILHFCQUFhLFVBQVcsWUFBVyxZQUFZO0lBTXBDLE1BQU0sRUFBRSxNQUFNO0lBTGhCLE1BQU0sRUFBRSxZQUFZLENBQWE7SUFFeEMsT0FBTyxDQUFDLFNBQVMsQ0FBbUI7SUFFcEMsWUFDUyxNQUFNLEVBQUUsTUFBTSxFQUNyQixPQUFPLEVBQUUsb0JBQW9CLEVBRzlCO0lBRUQsSUFBSSxRQUFROzs7O01BSVg7SUFFRCxLQUFLLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHNUI7SUFDRCxJQUFJLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHM0I7Q0FDRjtBQUVELGNBQU0sb0JBQXFCLFNBQVEsaUJBQWlCLENBQUMsZUFBZSxDQUFFLFlBQVcsZ0JBQWdCO0lBTXRGLE1BQU0sRUFBRSxNQUFNO0lBQ3JCLE9BQU8sQ0FBQyxPQUFPO0lBTmpCLE9BQU8sQ0FBQyxNQUFNLENBQTJDO0lBQ2xELGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBYTtJQUNuRCxTQUFnQixNQUFNLGNBQXFCO0lBRTNDLFlBQ1MsTUFBTSxFQUFFLE1BQU0sRUFDYixPQUFPLEVBQUUsb0JBQW9CLEVBSXRDO0lBRUQsS0FBSzs7TUFFSDtJQUVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FJdEY7SUFFRCxPQUFPLENBQUMsR0FBRyxFQUFFLGdCQUFnQixRQU01QjtJQUVELFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FHL0I7SUFFRCw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEdBQUcsSUFBSSxDQUtuSDtDQUNGO0FBRUQ7OztHQUdHO0FBQ0gscUJBQWEsb0JBQW9CO0lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQThCO0lBQzNDLE9BQU8sQ0FBQyxTQUFTLENBQUs7SUFFdEIsT0FBTyxDQUFDLE1BQU0sQ0FBbUQ7SUFFMUQsUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUUxQjtJQUVNLFlBQVksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEdBQUcsSUFBSSxDQUVwRDtJQUVNLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBZTdFO0NBQ0YifQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wdWJzdWIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LWhlbHBlcnMvbW9jay1wdWJzdWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BHLE9BQU8sRUFDTCxLQUFLLFlBQVksRUFDakIsS0FBSyxNQUFNLEVBQ1gsS0FBSyxhQUFhLEVBQ2xCLEtBQUssb0JBQW9CLEVBQ3pCLGlCQUFpQixFQUNsQixNQUFNLG1CQUFtQixDQUFDO0FBSTNCLE9BQU8sRUFBK0MsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3RHLE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLGVBQWUsRUFDcEIsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyx5QkFBeUIsRUFDOUIsS0FBSywwQkFBMEIsRUFDL0IsS0FBSyw0QkFBNEIsRUFDakMsS0FBSyxjQUFjLEVBRXBCLE1BQU0sa0NBQWtDLENBQUM7QUFHMUMsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRS9DLEtBQUssZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTNEOzs7R0FHRztBQUNILHdCQUFnQiw4QkFBOEIsQ0FBQyxDQUFDLFNBQVMsYUFBYSxFQUNwRSxPQUFPLEVBQUUsb0JB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
@@ -1 +1 @@
1
- {"version":3,"file":"mock-pubsub.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-pubsub.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAA6D,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,KAAK,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,aAAa,EACpE,OAAO,EAAE,oBAAoB,GAC5B,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAwCtF;AAED;;;;GAIG;AACH,qBAAa,UAAW,YAAW,YAAY;IAMpC,MAAM,EAAE,MAAM;IALhB,MAAM,EAAE,YAAY,CAAa;IAExC,OAAO,CAAC,SAAS,CAAmB;IAEpC,YACS,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,oBAAoB,EAG9B;IAED,IAAI,QAAQ;;;;MAIX;IAED,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5B;IACD,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3B;CACF;AAED,cAAM,oBAAqB,SAAQ,iBAAiB,CAAC,eAAe,CAAE,YAAW,gBAAgB;IAMtF,MAAM,EAAE,MAAM;IACrB,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,MAAM,CAA2C;IAClD,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAa;IACnD,SAAgB,MAAM,cAAqB;IAE3C,YACS,MAAM,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,EAItC;IAED,KAAK;;MAEH;IAEF,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAItF;IAED,OAAO,CAAC,GAAG,EAAE,gBAAgB,QAM5B;IAED,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAG/B;IAED,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAKnH;CACF;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,MAAM,CAAmD;IAE1D,QAAQ,IAAI,MAAM,EAAE,CAE1B;IAEM,YAAY,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAEpD;IAEM,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAe7E;CACF"}
1
+ {"version":3,"file":"mock-pubsub.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-pubsub.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { TypedEventEmitter } from '@libp2p/interface';
3
- import { DummyPeerDiscoveryService, DummyPeerManager, DummyReqResp, LibP2PService } from '../services/index.js';
3
+ import { DummyPeerDiscoveryService, DummyPeerManager, LibP2PService } from '../services/index.js';
4
+ import { responseFromBuffer } from '../services/reqresp/interface.js';
5
+ import { ReqRespStatus } from '../services/reqresp/status.js';
4
6
  import { GossipSubEvent } from '../types/index.js';
5
7
  /**
6
8
  * Given a mock gossip sub network, returns a factory function that creates an instance LibP2PService connected to it.
@@ -10,12 +12,98 @@ import { GossipSubEvent } from '../types/index.js';
10
12
  deps.logger.verbose('Creating mock PubSub service');
11
13
  const libp2p = new MockPubSub(peerId, network);
12
14
  const peerManager = new DummyPeerManager(peerId, network);
13
- const reqresp = new DummyReqResp();
15
+ const reqresp = new MockReqResp(peerId, network);
14
16
  const peerDiscoveryService = new DummyPeerDiscoveryService();
15
17
  const service = new LibP2PService(clientType, config, libp2p, peerDiscoveryService, reqresp, peerManager, deps.mempools, deps.l2BlockSource, deps.epochCache, deps.proofVerifier, deps.worldStateSynchronizer, deps.telemetry, deps.logger);
16
18
  return Promise.resolve(service);
17
19
  };
18
20
  }
21
+ /**
22
+ * Mock implementation of ReqRespInterface that routes requests to other peers' handlers through the mock network.
23
+ * When a peer calls sendBatchRequest, the mock iterates over network peers and invokes their registered handler
24
+ * for the sub-protocol, simulating the request-response protocol without actual libp2p streams.
25
+ */ class MockReqResp {
26
+ peerId;
27
+ network;
28
+ handlers;
29
+ logger;
30
+ constructor(peerId, network){
31
+ this.peerId = peerId;
32
+ this.network = network;
33
+ this.handlers = {};
34
+ this.logger = createLogger('p2p:test:mock-reqresp');
35
+ network.registerReqRespPeer(this);
36
+ }
37
+ updateConfig(_config) {}
38
+ start(subProtocolHandlers, _subProtocolValidators) {
39
+ Object.assign(this.handlers, subProtocolHandlers);
40
+ return Promise.resolve();
41
+ }
42
+ addSubProtocol(subProtocol, handler, _validator) {
43
+ this.handlers[subProtocol] = handler;
44
+ return Promise.resolve();
45
+ }
46
+ stop() {
47
+ this.handlers = {};
48
+ return Promise.resolve();
49
+ }
50
+ getHandler(subProtocol) {
51
+ return this.handlers[subProtocol];
52
+ }
53
+ async sendBatchRequest(subProtocol, requests, pinnedPeer, _timeoutMs, _maxPeers, _maxRetryAttempts) {
54
+ const responses = [];
55
+ const peers = this.network.getReqRespPeers().filter((p)=>!p.peerId.equals(this.peerId));
56
+ const targetPeers = pinnedPeer ? peers.filter((p)=>p.peerId.equals(pinnedPeer)) : peers;
57
+ for (const request of requests){
58
+ const requestBuffer = request.toBuffer();
59
+ for (const peer of targetPeers){
60
+ const handler = peer.getHandler(subProtocol);
61
+ if (!handler) {
62
+ continue;
63
+ }
64
+ try {
65
+ const responseBuffer = await handler(this.peerId, requestBuffer);
66
+ if (responseBuffer.length > 0) {
67
+ const response = responseFromBuffer(subProtocol, responseBuffer);
68
+ responses.push(response);
69
+ break;
70
+ }
71
+ } catch (err) {
72
+ this.logger.debug(`Mock reqresp handler error from peer ${peer.peerId}`, {
73
+ err
74
+ });
75
+ }
76
+ }
77
+ }
78
+ return responses;
79
+ }
80
+ async sendRequestToPeer(peerId, subProtocol, payload, _dialTimeout) {
81
+ const peer = this.network.getReqRespPeers().find((p)=>p.peerId.equals(peerId));
82
+ const handler = peer?.getHandler(subProtocol);
83
+ if (!handler) {
84
+ return {
85
+ status: ReqRespStatus.SUCCESS,
86
+ data: Buffer.from([])
87
+ };
88
+ }
89
+ try {
90
+ const data = await handler(this.peerId, payload);
91
+ return {
92
+ status: ReqRespStatus.SUCCESS,
93
+ data
94
+ };
95
+ } catch {
96
+ return {
97
+ status: ReqRespStatus.FAILURE
98
+ };
99
+ }
100
+ }
101
+ getConnectionSampler() {
102
+ return {
103
+ getPeerListSortedByConnectionCountAsc: ()=>this.network.getReqRespPeers().filter((p)=>!p.peerId.equals(this.peerId)).map((p)=>p.peerId)
104
+ };
105
+ }
106
+ }
19
107
  /**
20
108
  * Implementation of PubSub services that relies on a mock gossip sub network.
21
109
  * This is used in tests to simulate a gossip sub network without needing a real P2P network.
@@ -96,6 +184,7 @@ class MockGossipSubService extends TypedEventEmitter {
96
184
  * All instances of MockGossipSubService connected to the same network will instantly receive the same messages.
97
185
  */ export class MockGossipSubNetwork {
98
186
  peers = [];
187
+ reqRespPeers = [];
99
188
  nextMsgId = 0;
100
189
  logger = createLogger('p2p:test:mock-gossipsub-network');
101
190
  getPeers() {
@@ -104,6 +193,12 @@ class MockGossipSubService extends TypedEventEmitter {
104
193
  registerPeer(peer) {
105
194
  this.peers.push(peer);
106
195
  }
196
+ registerReqRespPeer(peer) {
197
+ this.reqRespPeers.push(peer);
198
+ }
199
+ getReqRespPeers() {
200
+ return this.reqRespPeers;
201
+ }
107
202
  publishToPeers(topic, data, sender) {
108
203
  const msgId = (this.nextMsgId++).toString();
109
204
  this.logger.debug(`Network is distributing message on topic ${topic}`, {
@@ -67,4 +67,4 @@ export declare function createBootstrapNodeFromPrivateKey(privateKey: string, po
67
67
  */
68
68
  export declare function getBootstrapNodeEnr(privateKey: string, port: number): Promise<SignableENR>;
69
69
  export declare function createBootstrapNode(port: number, telemetry?: TelemetryClient, chainConfig?: ChainConfig): Promise<BootstrapNode>;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC1ub2Rlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy9yZXFyZXNwLW5vZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTXJELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUNWLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3ZCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBT25GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQW9DLE1BQU0sUUFBUSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSww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
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC1ub2Rlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy9yZXFyZXNwLW5vZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTXJELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUNWLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3ZCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBT25GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQW9DLE1BQU0sUUFBUSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSww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
@@ -1 +1 @@
1
- {"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ import getPort from 'get-port';
18
18
  import { createLibp2p } from 'libp2p';
19
19
  import { BootstrapNode } from '../bootstrap/bootstrap.js';
20
20
  import { DiscV5Service } from '../services/discv5/discV5_service.js';
21
+ import { APP_SPECIFIC_WEIGHT } from '../services/gossipsub/scoring.js';
21
22
  import { LibP2PService } from '../services/libp2p/libp2p_service.js';
22
23
  import { PeerManager } from '../services/peer-manager/peer_manager.js';
23
24
  import { PeerScoring } from '../services/peer-manager/peer_scoring.js';
@@ -102,7 +103,7 @@ import { getVersions } from '../versioning.js';
102
103
  const versions = getVersions(config);
103
104
  const protocolVersion = compressComponentVersions(versions);
104
105
  const peerManager = new PeerManager(p2pNode, discoveryService, config, telemetry, createLogger(`p2p:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
105
- p2pNode.services.pubsub.score.params.appSpecificWeight = 10;
106
+ p2pNode.services.pubsub.score.params.appSpecificWeight = APP_SPECIFIC_WEIGHT;
106
107
  p2pNode.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
107
108
  return new LibP2PService(clientType, config, p2pNode, discoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry);
108
109
  }