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

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 (385) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +1 -1
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +9 -1
  4. package/dest/client/factory.d.ts +4 -3
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +28 -23
  7. package/dest/client/interface.d.ts +14 -5
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +13 -9
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +78 -22
  12. package/dest/config.d.ts +131 -101
  13. package/dest/config.d.ts.map +1 -1
  14. package/dest/config.js +53 -8
  15. package/dest/errors/p2p-service.error.d.ts +9 -0
  16. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  17. package/dest/errors/p2p-service.error.js +10 -0
  18. package/dest/errors/reqresp.error.d.ts +1 -20
  19. package/dest/errors/reqresp.error.d.ts.map +1 -1
  20. package/dest/errors/reqresp.error.js +0 -21
  21. package/dest/index.d.ts +1 -2
  22. package/dest/index.d.ts.map +1 -1
  23. package/dest/index.js +0 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +96 -56
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.js +262 -196
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +175 -59
  30. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  31. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/mocks.js +6 -4
  33. package/dest/mem_pools/index.d.ts +1 -2
  34. package/dest/mem_pools/index.d.ts.map +1 -1
  35. package/dest/mem_pools/instrumentation.d.ts +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  37. package/dest/mem_pools/instrumentation.js +17 -1
  38. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +1 -5
  39. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +1 -7
  41. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  42. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  44. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  48. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +4 -1
  49. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -2
  51. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
  53. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
  54. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +75 -84
  56. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  57. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/attestation_validator/attestation_validator.js +34 -10
  59. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  60. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  61. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  62. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  63. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  64. package/dest/msg_validators/clock_tolerance.js +52 -0
  65. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -2
  66. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  67. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -2
  68. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  69. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +10 -2
  70. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  71. package/dest/msg_validators/proposal_validator/proposal_validator.js +44 -10
  72. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  73. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  74. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +8 -15
  75. package/dest/msg_validators/tx_validator/allowed_public_setup.js +3 -3
  76. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  77. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  78. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  79. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  80. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  81. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  82. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  83. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  84. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  86. package/dest/msg_validators/tx_validator/factory.d.ts +6 -5
  87. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  88. package/dest/msg_validators/tx_validator/factory.js +21 -11
  89. package/dest/msg_validators/tx_validator/gas_validator.d.ts +36 -4
  90. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  91. package/dest/msg_validators/tx_validator/gas_validator.js +50 -33
  92. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  93. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  94. package/dest/msg_validators/tx_validator/index.js +2 -0
  95. package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
  96. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  97. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  99. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  100. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  101. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  102. package/dest/services/data_store.d.ts +1 -1
  103. package/dest/services/data_store.d.ts.map +1 -1
  104. package/dest/services/data_store.js +5 -5
  105. package/dest/services/discv5/discV5_service.d.ts +2 -1
  106. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  107. package/dest/services/discv5/discV5_service.js +35 -8
  108. package/dest/services/dummy_service.d.ts +11 -15
  109. package/dest/services/dummy_service.d.ts.map +1 -1
  110. package/dest/services/dummy_service.js +12 -16
  111. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  112. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  113. package/dest/services/gossipsub/topic_score_params.js +21 -4
  114. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  115. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  116. package/dest/services/libp2p/instrumentation.js +14 -0
  117. package/dest/services/libp2p/libp2p_service.d.ts +36 -39
  118. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  119. package/dest/services/libp2p/libp2p_service.js +268 -241
  120. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  121. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  122. package/dest/services/peer-manager/peer_manager.js +36 -8
  123. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  124. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  125. package/dest/services/peer-manager/peer_scoring.js +32 -10
  126. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +1 -8
  127. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  128. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +38 -44
  129. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +8 -5
  130. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  131. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  132. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  133. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  134. package/dest/services/reqresp/config.d.ts +3 -3
  135. package/dest/services/reqresp/config.d.ts.map +1 -1
  136. package/dest/services/reqresp/interface.d.ts +16 -18
  137. package/dest/services/reqresp/interface.d.ts.map +1 -1
  138. package/dest/services/reqresp/interface.js +10 -20
  139. package/dest/services/reqresp/metrics.d.ts +1 -1
  140. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  141. package/dest/services/reqresp/metrics.js +0 -1
  142. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
  143. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  144. package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
  145. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  146. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  147. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +31 -28
  148. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +12 -7
  149. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  150. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +42 -24
  151. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  152. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  153. package/dest/services/reqresp/protocols/index.js +0 -1
  154. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  155. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  156. package/dest/services/reqresp/protocols/tx.js +1 -3
  157. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  158. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  159. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  160. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  161. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  162. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  163. package/dest/services/reqresp/reqresp.d.ts +7 -29
  164. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  165. package/dest/services/reqresp/reqresp.js +26 -207
  166. package/dest/services/service.d.ts +9 -12
  167. package/dest/services/service.d.ts.map +1 -1
  168. package/dest/services/tx_collection/config.d.ts +2 -23
  169. package/dest/services/tx_collection/config.d.ts.map +1 -1
  170. package/dest/services/tx_collection/config.js +2 -55
  171. package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
  172. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  173. package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
  174. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  175. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  176. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  177. package/dest/services/tx_collection/index.d.ts +2 -3
  178. package/dest/services/tx_collection/index.d.ts.map +1 -1
  179. package/dest/services/tx_collection/index.js +0 -1
  180. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  181. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  182. package/dest/services/tx_collection/instrumentation.js +0 -2
  183. package/dest/services/tx_collection/tx_collection.d.ts +35 -51
  184. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  185. package/dest/services/tx_collection/tx_collection.js +275 -119
  186. package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
  187. package/dest/services/tx_collection/tx_collection_sink.js +2 -2
  188. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  189. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  190. package/dest/services/tx_collection/tx_source.js +9 -7
  191. package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
  192. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  193. package/dest/services/tx_file_store/tx_file_store.js +4 -14
  194. package/dest/services/tx_provider.d.ts +3 -1
  195. package/dest/services/tx_provider.d.ts.map +1 -1
  196. package/dest/services/tx_provider.js +3 -0
  197. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  198. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  199. package/dest/test-helpers/make-test-p2p-clients.js +5 -2
  200. package/dest/test-helpers/mock-pubsub.d.ts +23 -9
  201. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  202. package/dest/test-helpers/mock-pubsub.js +44 -44
  203. package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
  204. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  205. package/dest/test-helpers/reqresp-nodes.js +16 -18
  206. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  207. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  208. package/dest/test-helpers/test_tx_provider.js +3 -0
  209. package/dest/test-helpers/testbench-utils.d.ts +12 -14
  210. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  211. package/dest/test-helpers/testbench-utils.js +19 -13
  212. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  213. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  214. package/dest/testbench/p2p_client_testbench_worker.js +84 -40
  215. package/dest/testbench/worker_client_manager.d.ts +10 -6
  216. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  217. package/dest/testbench/worker_client_manager.js +51 -9
  218. package/dest/util.d.ts +11 -6
  219. package/dest/util.d.ts.map +1 -1
  220. package/dest/util.js +35 -14
  221. package/dest/versioning.d.ts +3 -6
  222. package/dest/versioning.d.ts.map +1 -1
  223. package/dest/versioning.js +3 -24
  224. package/package.json +15 -14
  225. package/src/bootstrap/bootstrap.ts +9 -1
  226. package/src/client/factory.ts +48 -23
  227. package/src/client/interface.ts +15 -11
  228. package/src/client/p2p_client.ts +91 -43
  229. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  230. package/src/config.ts +107 -7
  231. package/src/errors/p2p-service.error.ts +11 -0
  232. package/src/errors/reqresp.error.ts +0 -25
  233. package/src/index.ts +0 -1
  234. package/src/mem_pools/attestation_pool/attestation_pool.ts +313 -238
  235. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +198 -62
  236. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  237. package/src/mem_pools/index.ts +0 -3
  238. package/src/mem_pools/instrumentation.ts +5 -1
  239. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +1 -9
  240. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  241. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  242. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  243. package/src/mem_pools/tx_pool_v2/interfaces.ts +3 -0
  244. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +20 -8
  245. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +75 -90
  246. package/src/msg_validators/attestation_validator/attestation_validator.ts +38 -7
  247. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -7
  248. package/src/msg_validators/clock_tolerance.ts +69 -0
  249. package/src/msg_validators/proposal_validator/README.md +1 -1
  250. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +12 -2
  251. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +17 -2
  252. package/src/msg_validators/proposal_validator/proposal_validator.ts +51 -8
  253. package/src/msg_validators/tx_validator/README.md +11 -3
  254. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
  255. package/src/msg_validators/tx_validator/allowed_public_setup.ts +3 -3
  256. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  257. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  258. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  259. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  260. package/src/msg_validators/tx_validator/factory.ts +25 -7
  261. package/src/msg_validators/tx_validator/gas_validator.ts +82 -33
  262. package/src/msg_validators/tx_validator/index.ts +2 -0
  263. package/src/msg_validators/tx_validator/phases_validator.ts +1 -1
  264. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  265. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  266. package/src/services/data_store.ts +5 -13
  267. package/src/services/discv5/discV5_service.ts +38 -5
  268. package/src/services/dummy_service.ts +14 -39
  269. package/src/services/gossipsub/topic_score_params.ts +36 -4
  270. package/src/services/libp2p/instrumentation.ts +14 -0
  271. package/src/services/libp2p/libp2p_service.ts +297 -274
  272. package/src/services/peer-manager/peer_manager.ts +41 -8
  273. package/src/services/peer-manager/peer_scoring.ts +27 -5
  274. package/src/services/reqresp/README.md +0 -14
  275. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +42 -52
  276. package/src/services/reqresp/batch-tx-requester/interface.ts +11 -4
  277. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  278. package/src/services/reqresp/config.ts +2 -2
  279. package/src/services/reqresp/interface.ts +21 -47
  280. package/src/services/reqresp/metrics.ts +0 -1
  281. package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
  282. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -30
  283. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -20
  284. package/src/services/reqresp/protocols/index.ts +0 -1
  285. package/src/services/reqresp/protocols/tx.ts +1 -3
  286. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  287. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  288. package/src/services/reqresp/reqresp.ts +29 -252
  289. package/src/services/service.ts +12 -28
  290. package/src/services/tx_collection/config.ts +3 -80
  291. package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
  292. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  293. package/src/services/tx_collection/index.ts +1 -6
  294. package/src/services/tx_collection/instrumentation.ts +1 -7
  295. package/src/services/tx_collection/tx_collection.ts +330 -173
  296. package/src/services/tx_collection/tx_collection_sink.ts +2 -2
  297. package/src/services/tx_collection/tx_source.ts +8 -7
  298. package/src/services/tx_file_store/tx_file_store.ts +5 -17
  299. package/src/services/tx_provider.ts +5 -0
  300. package/src/test-helpers/make-test-p2p-clients.ts +3 -0
  301. package/src/test-helpers/mock-pubsub.ts +46 -60
  302. package/src/test-helpers/reqresp-nodes.ts +12 -22
  303. package/src/test-helpers/test_tx_provider.ts +5 -0
  304. package/src/test-helpers/testbench-utils.ts +23 -26
  305. package/src/testbench/p2p_client_testbench_worker.ts +89 -54
  306. package/src/testbench/worker_client_manager.ts +59 -20
  307. package/src/util.ts +32 -17
  308. package/src/versioning.ts +3 -33
  309. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  310. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  311. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  312. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  313. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  314. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  315. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  316. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  317. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  318. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  319. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  320. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  321. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  322. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  323. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  324. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  325. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  326. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
  327. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  328. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  329. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  330. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  331. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  332. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  333. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  334. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  335. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  336. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  337. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  338. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  339. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  340. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  341. package/dest/mem_pools/tx_pool/index.js +0 -2
  342. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  343. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  344. package/dest/mem_pools/tx_pool/priority.js +0 -15
  345. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  346. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  347. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  348. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  349. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  350. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  351. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  352. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  353. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  354. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  355. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  356. package/dest/services/reqresp/protocols/block.js +0 -32
  357. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
  358. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  359. package/dest/services/tx_collection/fast_tx_collection.js +0 -311
  360. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  361. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  362. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  363. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
  364. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  365. package/dest/services/tx_collection/slow_tx_collection.js +0 -211
  366. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -344
  367. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  368. package/src/mem_pools/tx_pool/README.md +0 -270
  369. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  370. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  371. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  372. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
  373. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  374. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  375. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  376. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  377. package/src/mem_pools/tx_pool/index.ts +0 -2
  378. package/src/mem_pools/tx_pool/priority.ts +0 -20
  379. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  380. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  381. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  382. package/src/services/reqresp/protocols/block.ts +0 -37
  383. package/src/services/tx_collection/fast_tx_collection.ts +0 -361
  384. package/src/services/tx_collection/proposal_tx_collector.ts +0 -108
  385. package/src/services/tx_collection/slow_tx_collection.ts +0 -266
@@ -1,12 +1,18 @@
1
- import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
2
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
3
- import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import {
3
+ BlockNumber,
4
+ CheckpointNumber,
5
+ type CheckpointProposalHash,
6
+ SlotNumber,
7
+ } from '@aztec/foundation/branded-types';
4
8
  import { createLogger } from '@aztec/foundation/log';
5
9
  import { RunningPromise } from '@aztec/foundation/promise';
6
10
  import { DateProvider } from '@aztec/foundation/timer';
7
11
  import type { AztecAsyncKVStore, AztecAsyncSingleton } from '@aztec/kv-store';
8
12
  import { L2TipsKVStore } from '@aztec/kv-store/stores';
9
13
  import {
14
+ type BlockData,
15
+ type BlockHash,
10
16
  type CheckpointId,
11
17
  type EthAddress,
12
18
  type L2Block,
@@ -18,6 +24,7 @@ import {
18
24
  type L2TipsStore,
19
25
  } from '@aztec/stdlib/block';
20
26
  import type { ContractDataSource } from '@aztec/stdlib/contract';
27
+ import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
21
28
  import { type PeerInfo, tryStop } from '@aztec/stdlib/interfaces/server';
22
29
  import { type BlockProposal, CheckpointAttestation, type CheckpointProposal, type TopicType } from '@aztec/stdlib/p2p';
23
30
  import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
@@ -28,15 +35,11 @@ import type { ENR } from '@nethermindeth/enr';
28
35
 
29
36
  import { type P2PConfig, getP2PDefaultConfig } from '../config.js';
30
37
  import { TxPoolError } from '../errors/tx-pool.error.js';
31
- import type { AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
38
+ import type { AttestationPoolApi, ProposalsForSlot } from '../mem_pools/attestation_pool/attestation_pool.js';
32
39
  import type { MemPools } from '../mem_pools/interface.js';
33
40
  import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
34
41
  import type { AuthRequest, StatusMessage } from '../services/index.js';
35
- import {
36
- ReqRespSubProtocol,
37
- type ReqRespSubProtocolHandler,
38
- type ReqRespSubProtocolValidators,
39
- } from '../services/reqresp/interface.js';
42
+ import { ReqRespSubProtocol, type ReqRespSubProtocolHandler } from '../services/reqresp/interface.js';
40
43
  import type {
41
44
  DuplicateAttestationInfo,
42
45
  DuplicateProposalInfo,
@@ -95,6 +98,7 @@ export class P2PClient extends WithTracer implements P2P {
95
98
  private _dateProvider: DateProvider = new DateProvider(),
96
99
  private telemetry: TelemetryClient = getTelemetryClient(),
97
100
  private log = createLogger('p2p'),
101
+ initialBlockHash: BlockHash,
98
102
  ) {
99
103
  super(telemetry, 'P2PClient');
100
104
 
@@ -110,7 +114,7 @@ export class P2PClient extends WithTracer implements P2P {
110
114
  this.telemetry,
111
115
  );
112
116
 
113
- this.l2Tips = new L2TipsKVStore(store, 'p2p_client');
117
+ this.l2Tips = new L2TipsKVStore(store, 'p2p_client', initialBlockHash);
114
118
  this.synchedLatestSlot = store.openSingleton('p2p_pool_last_l2_slot');
115
119
  }
116
120
 
@@ -164,7 +168,7 @@ export class P2PClient extends WithTracer implements P2P {
164
168
  const from = BlockNumber(oldFinalizedBlockNum + 1);
165
169
  const limit = event.block.number - from + 1;
166
170
  if (limit > 0) {
167
- const oldBlocks = await this.l2BlockSource.getBlocks(from, limit);
171
+ const oldBlocks = await this.l2BlockSource.getBlocksData({ from, limit });
168
172
  await this.handleFinalizedL2Blocks(oldBlocks);
169
173
  }
170
174
  break;
@@ -257,8 +261,11 @@ export class P2PClient extends WithTracer implements P2P {
257
261
  });
258
262
  }
259
263
 
260
- this.blockStream!.start();
261
- await this.txCollection.start();
264
+ // Should never happen: all branches above call initBlockStream()
265
+ if (!this.blockStream) {
266
+ throw new Error('Block stream not initialized');
267
+ }
268
+ this.blockStream.start();
262
269
  this.txFileStore?.start();
263
270
 
264
271
  // Start slot monitor to call prepareForSlot when the slot changes
@@ -272,12 +279,8 @@ export class P2PClient extends WithTracer implements P2P {
272
279
  return this.syncPromise;
273
280
  }
274
281
 
275
- addReqRespSubProtocol(
276
- subProtocol: ReqRespSubProtocol,
277
- handler: ReqRespSubProtocolHandler,
278
- validator: ReqRespSubProtocolValidators[ReqRespSubProtocol],
279
- ): Promise<void> {
280
- return this.p2pService.addReqRespSubProtocol(subProtocol, handler, validator);
282
+ addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler): Promise<void> {
283
+ return this.p2pService.addReqRespSubProtocol(subProtocol, handler);
281
284
  }
282
285
 
283
286
  private initBlockStream(startingBlock?: BlockNumber) {
@@ -319,7 +322,11 @@ export class P2PClient extends WithTracer implements P2P {
319
322
  /** Triggers a sync to the archiver. Used for testing. */
320
323
  public async sync() {
321
324
  this.initBlockStream();
322
- await this.blockStream!.sync();
325
+ // Should never happen: initBlockStream() creates blockStream if absent
326
+ if (!this.blockStream) {
327
+ throw new Error('Block stream not initialized');
328
+ }
329
+ await this.blockStream.sync();
323
330
  }
324
331
 
325
332
  @trackSpan('p2pClient.broadcastProposal', async proposal => ({
@@ -357,6 +364,19 @@ export class P2PClient extends WithTracer implements P2P {
357
364
  // Store our own last-block proposal so we can respond to req/resp requests for it.
358
365
  await this.attestationPool.tryAddBlockProposal(blockProposal);
359
366
  }
367
+ const checkpointCore = proposal.toCore();
368
+ const { count } = await this.attestationPool.tryAddCheckpointProposal(checkpointCore);
369
+ if (count > 1) {
370
+ if (this.config.broadcastEquivocatedProposals) {
371
+ this.log.warn(`Broadcasting equivocated checkpoint proposal for slot ${proposal.slotNumber}`, {
372
+ slot: proposal.slotNumber,
373
+ archive: proposal.archive.toString(),
374
+ count,
375
+ });
376
+ } else {
377
+ throw new Error(`Attempted to broadcast a duplicate checkpoint proposal for slot ${proposal.slotNumber}`);
378
+ }
379
+ }
360
380
  return this.p2pService.propagate(proposal);
361
381
  }
362
382
 
@@ -367,10 +387,10 @@ export class P2PClient extends WithTracer implements P2P {
367
387
 
368
388
  public async getCheckpointAttestationsForSlot(
369
389
  slot: SlotNumber,
370
- proposalId?: string,
390
+ proposalPayloadHash?: CheckpointProposalHash,
371
391
  ): Promise<CheckpointAttestation[]> {
372
- return await (proposalId
373
- ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalId)
392
+ return await (proposalPayloadHash
393
+ ? this.attestationPool.getCheckpointAttestationsForSlotAndProposal(slot, proposalPayloadHash)
374
394
  : this.attestationPool.getCheckpointAttestationsForSlot(slot));
375
395
  }
376
396
 
@@ -378,6 +398,10 @@ export class P2PClient extends WithTracer implements P2P {
378
398
  return this.attestationPool.addOwnCheckpointAttestations(attestations);
379
399
  }
380
400
 
401
+ public getProposalsForSlot(slot: SlotNumber): Promise<ProposalsForSlot> {
402
+ return this.attestationPool.getProposalsForSlot(slot);
403
+ }
404
+
381
405
  public hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean> {
382
406
  return this.attestationPool.hasBlockProposalsForSlot(slot);
383
407
  }
@@ -388,8 +412,12 @@ export class P2PClient extends WithTracer implements P2P {
388
412
  this.p2pService.registerBlockReceivedCallback(handler);
389
413
  }
390
414
 
391
- public registerCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void {
392
- this.p2pService.registerCheckpointReceivedCallback(handler);
415
+ public registerValidatorCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void {
416
+ this.p2pService.registerValidatorCheckpointReceivedCallback(handler);
417
+ }
418
+
419
+ public registerAllNodesCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void {
420
+ this.p2pService.registerAllNodesCheckpointReceivedCallback(handler);
393
421
  }
394
422
 
395
423
  public registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void {
@@ -400,6 +428,10 @@ export class P2PClient extends WithTracer implements P2P {
400
428
  this.p2pService.registerDuplicateAttestationCallback(callback);
401
429
  }
402
430
 
431
+ public registerCheckpointAttestationCallback(callback: (attestation: CheckpointAttestation) => void): void {
432
+ this.p2pService.registerCheckpointAttestationCallback(callback);
433
+ }
434
+
403
435
  public async getPendingTxs(limit?: number, after?: TxHash): Promise<Tx[]> {
404
436
  if (limit !== undefined && limit <= 0) {
405
437
  throw new TypeError('limit must be greater than 0');
@@ -570,13 +602,10 @@ export class P2PClient extends WithTracer implements P2P {
570
602
  */
571
603
  public async getStatus(): Promise<P2PSyncState> {
572
604
  const blockNumber = await this.getSyncedLatestBlockNum();
573
- const blockHash =
574
- blockNumber === 0
575
- ? GENESIS_BLOCK_HEADER_HASH.toString()
576
- : await this.l2BlockSource
577
- .getBlockHeader(blockNumber)
578
- .then(header => header?.hash())
579
- .then(hash => hash?.toString());
605
+ const blockHash = await this.l2BlockSource
606
+ .getBlockData({ number: blockNumber })
607
+ .then(data => data?.header.hash())
608
+ .then(hash => hash?.toString());
580
609
 
581
610
  return {
582
611
  state: this.currentState,
@@ -607,13 +636,13 @@ export class P2PClient extends WithTracer implements P2P {
607
636
 
608
637
  await this.handleMinedBlocks(blocks);
609
638
  await this.maybeCallPrepareForSlot();
610
- await this.startCollectingMissingTxs(blocks);
639
+ await this.collectingMissingTxs(blocks);
611
640
  const lastBlock = blocks.at(-1)!;
612
641
  await this.synchedLatestSlot.set(BigInt(lastBlock.header.getSlot()));
613
642
  }
614
643
 
615
- /** Request txs for unproven blocks so the prover node has more chances to get them. */
616
- private async startCollectingMissingTxs(blocks: L2Block[]): Promise<void> {
644
+ /** Request txs for unproven blocks so the prover node can prove. */
645
+ private async collectingMissingTxs(blocks: L2Block[]): Promise<void> {
617
646
  try {
618
647
  // TODO(#15435): If the archiver has lagged behind L1, the reported proven block number may
619
648
  // be much lower than the actual one, and it does not update until the pending chain is
@@ -621,7 +650,7 @@ export class P2PClient extends WithTracer implements P2P {
621
650
  // are already proven, but the archiver has not yet updated its state. Until this is properly
622
651
  // fixed, it is mitigated by the expiration date of collection requests, which depends on
623
652
  // the slot number of the block.
624
- const provenBlockNumber = await this.l2BlockSource.getProvenBlockNumber();
653
+ const provenBlockNumber = (await this.l2BlockSource.getBlockNumber({ tag: 'proven' })) ?? BlockNumber.ZERO;
625
654
  const unprovenBlocks = blocks.filter(block => block.number > provenBlockNumber);
626
655
  for (const block of unprovenBlocks) {
627
656
  const txHashes = block.body.txEffects.map(txEffect => txEffect.txHash);
@@ -633,7 +662,17 @@ export class P2PClient extends WithTracer implements P2P {
633
662
  `Starting collection of ${missingTxHashes.length} missing txs for unproven mined block ${block.number}`,
634
663
  { missingTxHashes, blockNumber: block.number, blockHash: await block.hash().then(h => h.toString()) },
635
664
  );
636
- this.txCollection.startCollecting(block, missingTxHashes);
665
+ // Both `slashDataWithholdingToleranceSlots` and `p2pMissingTxCollectionDeadlineSlots`
666
+ // count *full slots after the block slot* — value N means collection runs until
667
+ // `slotStart(block.slot + N + 1)`. Take the larger of the two so collection never
668
+ // gives up before the data-withholding slash verdict is rendered.
669
+ const blockSlot = block.header.getSlot();
670
+ const toleranceSlots = this.config.slashDataWithholdingToleranceSlots;
671
+ const configuredSlots = this.config.p2pMissingTxCollectionDeadlineSlots ?? 0;
672
+ const deadlineSlot = SlotNumber(blockSlot + Math.max(toleranceSlots, configuredSlots) + 1);
673
+ const deadlineSeconds = getTimestampForSlot(deadlineSlot, this.epochCache.getL1Constants());
674
+ const deadline = new Date(Number(deadlineSeconds) * 1000);
675
+ await this.txCollection.collectFastForBlock(block, missingTxHashes, { deadline });
637
676
  }
638
677
  }
639
678
  } catch (err) {
@@ -646,7 +685,7 @@ export class P2PClient extends WithTracer implements P2P {
646
685
  * @param blocks - A list of finalized L2 blocks.
647
686
  * @returns Empty promise.
648
687
  */
649
- private async handleFinalizedL2Blocks(blocks: L2Block[]): Promise<void> {
688
+ private async handleFinalizedL2Blocks(blocks: BlockData[]): Promise<void> {
650
689
  if (!blocks.length) {
651
690
  return;
652
691
  }
@@ -696,14 +735,23 @@ export class P2PClient extends WithTracer implements P2P {
696
735
 
697
736
  /** Checks if the slot has changed and calls prepareForSlot if so. */
698
737
  private async maybeCallPrepareForSlot(): Promise<void> {
699
- // If we have a pending checkpoint available, we want to prepare the target slot - otherwise we prepare the current slot
700
- // Knowledege of pending checkpoints is in the PR above
701
- const { targetSlot } = this.epochCache.getTargetAndNextSlot();
702
- if (targetSlot <= this.lastSlotProcessed) {
738
+ // If we have a proposed checkpoint available, we want to prepare the target slot - otherwise we prepare the current slot
739
+ const l2Tips = await this.l2Tips.getL2Tips();
740
+ const hasProposedCheckpoint = l2Tips.proposedCheckpoint.checkpoint.number > l2Tips.checkpointed.checkpoint.number;
741
+
742
+ let slot;
743
+ if (hasProposedCheckpoint) {
744
+ const { targetSlot } = this.epochCache.getTargetAndNextSlot();
745
+ slot = targetSlot;
746
+ } else {
747
+ const { currentSlot } = this.epochCache.getCurrentAndNextSlot();
748
+ slot = currentSlot;
749
+ }
750
+ if (slot <= this.lastSlotProcessed) {
703
751
  return;
704
752
  }
705
- this.lastSlotProcessed = targetSlot;
706
- await this.txPool.prepareForSlot(targetSlot);
753
+ this.lastSlotProcessed = slot;
754
+ await this.txPool.prepareForSlot(slot);
707
755
  }
708
756
 
709
757
  private async startServiceIfSynched() {
@@ -1,6 +1,6 @@
1
- # ProposalTxCollector Benchmarks
1
+ # BatchTxRequester Benchmarks
2
2
 
3
- This benchmark suite measures **how quickly a proposer node can fetch missing transactions from P2P peers** when building a block proposal. It compares two alternative transaction-collection implementations under several controlled "who-has-which-txs" distributions.
3
+ This benchmark suite measures **how quickly a proposer node can fetch missing transactions from P2P peers** when building a block proposal under several controlled "who-has-which-txs" distributions.
4
4
 
5
5
  ## Purpose
6
6
 
@@ -10,12 +10,6 @@ This benchmark answers:
10
10
 
11
11
  - How long does it take to fetch **N missing txs** (N ∈ **{10, 50, 100, 500}**)?
12
12
  - How do different **peer availability patterns** affect performance?
13
- - Which collector strategy performs better under each pattern?
14
-
15
- The suite compares two collectors:
16
-
17
- - **`BatchTxRequesterCollector`** (collector type: `batch-requester`)
18
- - **`SendBatchRequestCollector`** (collector type: `send-batch-request`)
19
13
 
20
14
  ## Architecture
21
15
 
@@ -24,7 +18,7 @@ The benchmark runs a small simulated network on localhost:
24
18
  ```
25
19
  ┌─────────────────────────────────────────────────────────────────────┐
26
20
  │ Test Process (Driver) │
27
- │ p2p_client.proposal_tx_collector.bench.test.ts │
21
+ │ p2p_client.batch_tx_requester.bench.test.ts │
28
22
  │ ┌─────────────────────────────────────────────────────────────┐ │
29
23
  │ │ WorkerClientManager │ │
30
24
  │ │ (src/testbench/worker_client_manager.ts) │ │
@@ -34,7 +28,7 @@ The benchmark runs a small simulated network on localhost:
34
28
  │ ▼ ▼ ▼ │
35
29
  │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
36
30
  │ │ Worker 0 │◄──────►│ Worker 1 │◄──────►│ Worker N-1│ │
37
- │ │ (Collector│ P2P │(Responder)│ P2P │(Responder)│ │
31
+ │ │(Aggregator│ P2P │(Responder)│ P2P │(Responder)│ │
38
32
  │ │ Node) │ │ │ │ │ │
39
33
  │ │ TxPool:[] │ │ TxPool: │ │ TxPool: │ │
40
34
  │ │ │ │ [txs...] │ │ [txs...] │ │
@@ -54,12 +48,12 @@ Using separate OS processes makes the setup closer to real networking behavior (
54
48
 
55
49
  The network is intentionally asymmetric:
56
50
 
57
- - **Worker 0 is the collector/proposer node**
51
+ - **Worker 0 is the aggregator/proposer node**
58
52
  - Starts with an **empty tx pool** (`[]`)
59
- - Is the only worker instructed to run the collector for each `BENCH_REQRESP` command
53
+ - Is the only worker instructed to run `BatchTxRequester` for each `BENCH_REQRESP` command
60
54
  - **Workers 1..N-1 are responder peers**
61
55
  - Locally generate and filter txs according to the distribution pattern
62
- - Respond to req/resp queries made by Worker 0's collector
56
+ - Respond to req/resp queries made by Worker 0's `BatchTxRequester`
63
57
 
64
58
  This models a proposer that has only `txHashes` in a proposal and must fetch the full tx bodies from the network.
65
59
 
@@ -72,7 +66,7 @@ Each benchmark case generates `missingTxCount` mock txs and assigns them to peer
72
66
  **Every responder peer has every transaction.**
73
67
 
74
68
  - Simulates the best-case: high replication / high gossip success
75
- - Expectation: collector should quickly succeed; differences mostly reflect collector overhead and batching strategy
69
+ - Expectation: the requester should quickly succeed; differences mostly reflect requester overhead and batching strategy
76
70
 
77
71
  ### `sparse`
78
72
 
@@ -81,7 +75,7 @@ Each benchmark case generates `missingTxCount` mock txs and assigns them to peer
81
75
  Each responder is bucketed and holds txs whose index falls into its bucket or the "next" bucket (striped by tx index).
82
76
 
83
77
  - Simulates partial propagation, churn, or uneven mempool convergence
84
- - Expectation: collector must query multiple peers and cope with "misses"
78
+ - Expectation: the requester must query multiple peers and cope with "misses"
85
79
 
86
80
  ### `pinned-only`
87
81
 
@@ -92,33 +86,13 @@ Each responder is bucketed and holds txs whose index falls into its bucket or th
92
86
 
93
87
  > **Guardrail:** the pinned peer index must be within `(0, numberOfPeers)` (Worker 0 cannot be pinned).
94
88
 
95
- ## Collectors Under Test
96
-
97
- ### `BatchTxRequesterCollector` (`batch-requester`)
98
-
99
- ```typescript
100
- new BatchTxRequesterCollector(p2pService, logger, new DateProvider())
101
- ```
102
-
103
- Uses the P2P service plus internal logic to fetch missing txs, coordinating requests in a batched or staged way.
104
-
105
- ### `SendBatchRequestCollector` (`send-batch-request`)
106
-
107
- ```typescript
108
- const maxPeers = 10;
109
- const maxRetryAttempts = Math.max(peerIds.length, 3);
110
- new SendBatchRequestCollector(p2pService, maxPeers, maxRetryAttempts)
111
- ```
112
-
113
- Explicitly caps the number of peers it will involve (`maxPeers`) and uses a retry budget derived from peer count.
114
-
115
89
  ## Test Parameters
116
90
 
117
91
  | Parameter | Value | Description |
118
92
  |-----------|-------|-------------|
119
93
  | `PEERS_PER_RUN` | 30 | Number of worker processes spawned |
120
94
  | `MISSING_TX_COUNTS` | 10, 50, 100, 500 | Number of missing transactions to fetch |
121
- | `TIMEOUT_MS` | 30,000 ms | Collector timeout per case |
95
+ | `TIMEOUT_MS` | 30,000 ms | Per-case timeout for the requester |
122
96
  | `TEST_TIMEOUT_MS` | 600,000 ms | Overall Jest timeout (10 minutes) |
123
97
 
124
98
  ## Running
@@ -127,13 +101,13 @@ From the p2p package:
127
101
 
128
102
  ```bash
129
103
  cd yarn-project/p2p
130
- yarn test src/client/test/tx_proposal_collector/p2p_client.proposal_tx_collector.bench.test.ts
104
+ yarn test src/client/test/p2p_client.batch_tx_requester.bench.test.ts
131
105
  ```
132
106
 
133
107
  Or from repo root:
134
108
 
135
109
  ```bash
136
- yarn test p2p_client.proposal_tx_collector.bench.test.ts
110
+ yarn test p2p_client.batch_tx_requester.bench.test.ts
137
111
  ```
138
112
 
139
113
  The benchmark is intentionally long due to spawning many processes and running multiple cases.
@@ -145,14 +119,12 @@ The benchmark is intentionally long due to spawning many processes and running m
145
119
  If no env vars are set, the suite prints a table:
146
120
 
147
121
  ```
148
- | Collector | Distribution | Missing | Duration (ms) | Fetched | Success |
149
- |---------------------|--------------|---------|---------------|---------|---------|
150
- | batch-requester | pinned-only | 10 | 123 | 10 | Yes |
151
- | send-batch-request | pinned-only | 10 | 145 | 10 | Yes |
122
+ | Distribution | Missing | Duration (ms) | Fetched | Success |
123
+ |--------------|---------|---------------|---------|---------|
124
+ | pinned-only | 10 | 123 | 10 | Yes |
125
+ | pinned-only | 50 | 145 | 50 | Yes |
152
126
  ```
153
127
 
154
- Plus a comparison summary stating which collector was faster per `(distribution, missing)` pair.
155
-
156
128
  ### JSON metrics (for CI/dashboards)
157
129
 
158
130
  ```bash
@@ -160,8 +132,8 @@ BENCH_OUTPUT=/path/results.json yarn test ...
160
132
  ```
161
133
 
162
134
  Writes JSON metrics like:
163
- - `ProposalTxCollector/<collector>/<distribution>/missing_<N>/duration` (ms)
164
- - `ProposalTxCollector/<collector>/<distribution>/missing_<N>/fetched` (txs)
135
+ - `BatchTxRequester/<distribution>/missing_<N>/duration` (ms)
136
+ - `BatchTxRequester/<distribution>/missing_<N>/fetched` (txs)
165
137
 
166
138
  ### Markdown file output
167
139
 
@@ -175,14 +147,14 @@ Writes the pretty table + summary to disk.
175
147
 
176
148
  For each case the benchmark records:
177
149
 
178
- - `durationMs`: wall-clock time spent inside the collector call
179
- - `fetchedCount`: how many txs were returned by the collector
150
+ - `durationMs`: wall-clock time spent inside the requester call
151
+ - `fetchedCount`: how many txs were returned by the requester
180
152
  - `success`: `fetchedCount === missingTxCount`
181
153
 
182
154
  **Guidelines:**
183
155
 
184
156
  - **Always check `Success` first.** A faster run that fetched fewer txs is not a win.
185
- - Compare collectors **within the same distribution + missing count** only.
157
+ - Compare runs **within the same distribution + missing count** only.
186
158
  - Expect `pinned-only` to highlight pinned-peer behavior (fast if pinned peer is used effectively; slow if the algorithm wastes time sampling other peers).
187
159
  - Expect `sparse` to be the most "network-like" stress case, since many peers won't have each requested tx.
188
160
 
@@ -193,7 +165,7 @@ Inside each worker, the benchmark intentionally reduces variability:
193
165
  - **Unlimited rate limits** are installed so the req/resp rate limiter doesn't dominate results
194
166
  - **Deterministic tx generation** ensures all workers see the same tx set without large IPC payloads
195
167
 
196
- This makes the benchmark better for *comparing collectors* (A vs B), but it is **not** a perfect model of production networking conditions.
168
+ This makes the benchmark better for tracking regressions, but it is **not** a perfect model of production networking conditions.
197
169
 
198
170
  ## Limitations
199
171
 
@@ -207,9 +179,7 @@ This benchmark does **not** measure:
207
179
 
208
180
  | File | Purpose |
209
181
  |------|---------|
210
- | `p2p_client.proposal_tx_collector.bench.test.ts` | Test suite (cases, distributions, output formatting) |
211
- | `proposal_tx_collector_worker.ts` | Collector-specific worker implementation |
212
- | `proposal_tx_collector_worker_protocol.ts` | IPC message types and serialization |
182
+ | `p2p_client.batch_tx_requester.bench.test.ts` | Test suite (cases, distributions, output formatting) |
213
183
  | `src/testbench/worker_client_manager.ts` | Worker process manager (forking, IPC, orchestration) |
214
184
  | `src/testbench/p2p_client_testbench_worker.ts` | General testbench worker implementation |
215
185
  | `src/test-helpers/testbench-utils.ts` | Shared mocks and utilities (InMemoryTxPool, InMemoryAttestationPool, etc.) |