@aztec/p2p 0.0.1-commit.f2ce05ee → 0.0.1-commit.f504929

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 (326) hide show
  1. package/dest/client/factory.d.ts +8 -8
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +37 -13
  4. package/dest/client/interface.d.ts +39 -33
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +37 -50
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +138 -199
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +6 -7
  10. package/dest/config.d.ts +29 -15
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +39 -35
  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 +21 -12
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +72 -38
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  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 +53 -53
  25. package/dest/mem_pools/attestation_pool/index.d.ts +2 -2
  26. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/index.js +1 -1
  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 +2 -1
  32. package/dest/mem_pools/index.d.ts.map +1 -1
  33. package/dest/mem_pools/instrumentation.d.ts +4 -2
  34. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  35. package/dest/mem_pools/instrumentation.js +16 -14
  36. package/dest/mem_pools/interface.d.ts +3 -3
  37. package/dest/mem_pools/interface.d.ts.map +1 -1
  38. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  39. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  40. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  41. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  42. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  43. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +5 -2
  48. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  51. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  52. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  54. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +48 -5
  55. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  58. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  59. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  60. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  62. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  63. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +14 -4
  65. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  66. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  68. package/dest/mem_pools/tx_pool_v2/index.d.ts +3 -2
  69. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  70. package/dest/mem_pools/tx_pool_v2/index.js +2 -1
  71. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  72. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  73. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  74. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +22 -8
  75. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool_v2/interfaces.js +4 -1
  77. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -8
  78. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  79. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +108 -10
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +36 -14
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -4
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +14 -6
  86. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  87. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +344 -184
  89. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  90. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  91. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  92. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  93. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -1
  94. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/proposal_validator/proposal_validator.js +10 -0
  96. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +2 -1
  97. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  98. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +166 -0
  99. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  100. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  102. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  103. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -10
  105. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  106. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  107. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  108. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  109. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  110. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  111. package/dest/msg_validators/tx_validator/factory.d.ts +114 -6
  112. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  113. package/dest/msg_validators/tx_validator/factory.js +219 -58
  114. package/dest/msg_validators/tx_validator/gas_validator.d.ts +58 -3
  115. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/tx_validator/gas_validator.js +73 -36
  117. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  118. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  119. package/dest/msg_validators/tx_validator/index.js +1 -0
  120. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  121. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  122. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  123. package/dest/msg_validators/tx_validator/phases_validator.d.ts +2 -2
  124. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/tx_validator/phases_validator.js +25 -24
  126. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  127. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  129. package/dest/services/dummy_service.d.ts +9 -5
  130. package/dest/services/dummy_service.d.ts.map +1 -1
  131. package/dest/services/dummy_service.js +7 -4
  132. package/dest/services/encoding.d.ts +3 -3
  133. package/dest/services/encoding.d.ts.map +1 -1
  134. package/dest/services/encoding.js +11 -10
  135. package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
  136. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  137. package/dest/services/gossipsub/topic_score_params.js +32 -10
  138. package/dest/services/libp2p/libp2p_service.d.ts +25 -14
  139. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  140. package/dest/services/libp2p/libp2p_service.js +143 -114
  141. package/dest/services/peer-manager/metrics.d.ts +3 -1
  142. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  143. package/dest/services/peer-manager/metrics.js +6 -0
  144. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  145. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  146. package/dest/services/peer-manager/peer_manager.js +2 -1
  147. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -3
  148. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  149. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +19 -46
  150. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  151. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  152. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  153. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  154. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  155. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
  156. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  157. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
  158. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  159. package/dest/services/reqresp/interface.d.ts +10 -1
  160. package/dest/services/reqresp/interface.d.ts.map +1 -1
  161. package/dest/services/reqresp/interface.js +15 -1
  162. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +3 -3
  163. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  164. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +7 -1
  165. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  166. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +15 -0
  167. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  168. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  169. package/dest/services/reqresp/protocols/tx.js +20 -0
  170. package/dest/services/reqresp/reqresp.d.ts +1 -1
  171. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  172. package/dest/services/reqresp/reqresp.js +13 -5
  173. package/dest/services/service.d.ts +22 -3
  174. package/dest/services/service.d.ts.map +1 -1
  175. package/dest/services/tx_collection/config.d.ts +19 -1
  176. package/dest/services/tx_collection/config.d.ts.map +1 -1
  177. package/dest/services/tx_collection/config.js +46 -0
  178. package/dest/services/tx_collection/fast_tx_collection.d.ts +3 -1
  179. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  180. package/dest/services/tx_collection/fast_tx_collection.js +56 -36
  181. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  182. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  183. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  184. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  185. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  186. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  187. package/dest/services/tx_collection/index.d.ts +2 -1
  188. package/dest/services/tx_collection/index.d.ts.map +1 -1
  189. package/dest/services/tx_collection/index.js +1 -0
  190. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  191. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  192. package/dest/services/tx_collection/instrumentation.js +2 -1
  193. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  194. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  195. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  196. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -6
  197. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  198. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  199. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  200. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  201. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  202. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  203. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  204. package/dest/services/tx_collection/tx_collection.js +75 -3
  205. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  206. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  207. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  208. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  209. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  210. package/dest/services/tx_collection/tx_source.js +19 -2
  211. package/dest/services/tx_file_store/config.d.ts +1 -3
  212. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  213. package/dest/services/tx_file_store/config.js +0 -4
  214. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  215. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  216. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  217. package/dest/services/tx_provider.d.ts +4 -4
  218. package/dest/services/tx_provider.d.ts.map +1 -1
  219. package/dest/services/tx_provider.js +9 -8
  220. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  221. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  222. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  223. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  224. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  225. package/dest/test-helpers/mock-pubsub.js +105 -4
  226. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  227. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  228. package/dest/test-helpers/reqresp-nodes.js +2 -2
  229. package/dest/test-helpers/testbench-utils.d.ts +35 -24
  230. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  231. package/dest/test-helpers/testbench-utils.js +93 -35
  232. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  233. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  234. package/dest/testbench/p2p_client_testbench_worker.js +14 -14
  235. package/dest/util.d.ts +2 -2
  236. package/dest/util.d.ts.map +1 -1
  237. package/package.json +14 -14
  238. package/src/client/factory.ts +71 -23
  239. package/src/client/interface.ts +43 -33
  240. package/src/client/p2p_client.ts +164 -243
  241. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -10
  242. package/src/config.ts +60 -42
  243. package/src/errors/tx-pool.error.ts +12 -0
  244. package/src/index.ts +1 -0
  245. package/src/mem_pools/attestation_pool/attestation_pool.ts +100 -48
  246. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +57 -53
  247. package/src/mem_pools/attestation_pool/index.ts +3 -3
  248. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  249. package/src/mem_pools/index.ts +3 -0
  250. package/src/mem_pools/instrumentation.ts +17 -13
  251. package/src/mem_pools/interface.ts +2 -2
  252. package/src/mem_pools/tx_pool/README.md +1 -1
  253. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  254. package/src/mem_pools/tx_pool_v2/README.md +76 -10
  255. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  256. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  257. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +5 -2
  258. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  259. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  260. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +49 -4
  261. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  262. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  263. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  264. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +24 -6
  265. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +3 -3
  266. package/src/mem_pools/tx_pool_v2/index.ts +2 -1
  267. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  268. package/src/mem_pools/tx_pool_v2/interfaces.ts +23 -8
  269. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +153 -17
  270. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +43 -16
  271. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +21 -7
  272. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +388 -182
  273. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +1 -1
  274. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +1 -1
  275. package/src/msg_validators/proposal_validator/proposal_validator.ts +15 -1
  276. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +144 -1
  277. package/src/msg_validators/tx_validator/README.md +115 -0
  278. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  279. package/src/msg_validators/tx_validator/allowed_public_setup.ts +27 -13
  280. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  281. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  282. package/src/msg_validators/tx_validator/factory.ts +353 -77
  283. package/src/msg_validators/tx_validator/gas_validator.ts +90 -27
  284. package/src/msg_validators/tx_validator/index.ts +1 -0
  285. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  286. package/src/msg_validators/tx_validator/phases_validator.ts +25 -29
  287. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  288. package/src/services/dummy_service.ts +12 -6
  289. package/src/services/encoding.ts +9 -9
  290. package/src/services/gossipsub/README.md +29 -14
  291. package/src/services/gossipsub/topic_score_params.ts +49 -13
  292. package/src/services/libp2p/libp2p_service.ts +153 -123
  293. package/src/services/peer-manager/metrics.ts +7 -0
  294. package/src/services/peer-manager/peer_manager.ts +2 -1
  295. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +20 -48
  296. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  297. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  298. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
  299. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  300. package/src/services/reqresp/interface.ts +26 -1
  301. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +2 -2
  302. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +17 -0
  303. package/src/services/reqresp/protocols/tx.ts +22 -0
  304. package/src/services/reqresp/reqresp.ts +16 -4
  305. package/src/services/service.ts +31 -2
  306. package/src/services/tx_collection/config.ts +68 -0
  307. package/src/services/tx_collection/fast_tx_collection.ts +65 -32
  308. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  309. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  310. package/src/services/tx_collection/index.ts +1 -0
  311. package/src/services/tx_collection/instrumentation.ts +7 -1
  312. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  313. package/src/services/tx_collection/proposal_tx_collector.ts +8 -7
  314. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  315. package/src/services/tx_collection/tx_collection.ts +113 -16
  316. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  317. package/src/services/tx_collection/tx_source.ts +22 -3
  318. package/src/services/tx_file_store/config.ts +0 -6
  319. package/src/services/tx_file_store/tx_file_store.ts +10 -8
  320. package/src/services/tx_provider.ts +10 -9
  321. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  322. package/src/test-helpers/mock-pubsub.ts +146 -9
  323. package/src/test-helpers/reqresp-nodes.ts +2 -5
  324. package/src/test-helpers/testbench-utils.ts +108 -40
  325. package/src/testbench/p2p_client_testbench_worker.ts +23 -20
  326. package/src/util.ts +7 -1
@@ -1,6 +1,7 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { type BlockNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import type { Logger } from '@aztec/foundation/log';
4
+ import type { L2Block, L2BlockId } from '@aztec/stdlib/block';
4
5
  import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
5
6
  import type {
6
7
  BlockProposal,
@@ -13,14 +14,16 @@ import { type BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
13
14
  import EventEmitter from 'events';
14
15
 
15
16
  import type { TryAddResult } from '../mem_pools/attestation_pool/attestation_pool.js';
16
- import type { TxPool } from '../mem_pools/tx_pool/index.js';
17
+ import type { AddTxsResult, TxPoolV2, TxPoolV2Config } from '../mem_pools/tx_pool_v2/interfaces.js';
18
+ import type { TxState } from '../mem_pools/tx_pool_v2/tx_metadata.js';
17
19
  import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
18
20
 
19
21
  /**
20
22
  * In-memory TxPool implementation for testing.
21
23
  * Provides basic tx storage without persistence.
24
+ * Implements TxPoolV2 interface with stub implementations for testing.
22
25
  */
23
- export class InMemoryTxPool extends EventEmitter implements TxPool {
26
+ export class InMemoryTxPool extends EventEmitter implements TxPoolV2 {
24
27
  private txsByHash = new Map<string, Tx>();
25
28
  private logger: Logger | null = null;
26
29
 
@@ -54,93 +57,154 @@ export class InMemoryTxPool extends EventEmitter implements TxPool {
54
57
  this.removeAllListeners();
55
58
  }
56
59
 
57
- addTxs(txs: Tx[], opts?: { source?: string }): Promise<number> {
60
+ // === Core Operations (TxPoolV2) ===
61
+
62
+ addPendingTxs(txs: Tx[], opts?: { source?: string; feeComparisonOnly?: boolean }): Promise<AddTxsResult> {
63
+ const accepted: TxHash[] = [];
58
64
  const newTxs: Tx[] = [];
59
- let added = 0;
60
65
  for (const tx of txs) {
61
66
  const key = tx.getTxHash().toString();
62
67
  if (!this.txsByHash.has(key)) {
63
68
  newTxs.push(tx);
64
- added += 1;
69
+ accepted.push(tx.getTxHash());
65
70
  }
66
71
  this.txsByHash.set(key, tx);
67
72
  }
68
73
  if (newTxs.length > 0) {
69
74
  this.emit('txs-added', { txs: newTxs, source: opts?.source });
70
75
  }
71
- return Promise.resolve(added);
76
+ return Promise.resolve({ accepted, ignored: [], rejected: [] });
72
77
  }
73
78
 
74
- getTxByHash(hash: TxHash): Promise<Tx | undefined> {
75
- return Promise.resolve(this.txsByHash.get(hash.toString()));
79
+ canAddPendingTx(tx: Tx): Promise<'accepted' | 'ignored'> {
80
+ const key = tx.getTxHash().toString();
81
+ if (this.txsByHash.has(key)) {
82
+ return Promise.resolve('ignored');
83
+ }
84
+ return Promise.resolve('accepted');
76
85
  }
77
86
 
78
- getTxsByHash(hashes: TxHash[]): Promise<(Tx | undefined)[]> {
79
- const result = hashes.map(h => this.txsByHash.get(h.toString()));
80
- const found = result.filter(tx => tx !== undefined).length;
81
- this.logger?.debug(`[TxPool] getTxsByHash: requested ${hashes.length}, found ${found}`);
82
- return Promise.resolve(result);
87
+ addProtectedTxs(txs: Tx[], _block: BlockHeader, opts?: { source?: string }): Promise<void> {
88
+ for (const tx of txs) {
89
+ const key = tx.getTxHash().toString();
90
+ this.txsByHash.set(key, tx);
91
+ }
92
+ if (txs.length > 0) {
93
+ this.emit('txs-added', { txs, source: opts?.source });
94
+ }
95
+ return Promise.resolve();
83
96
  }
84
97
 
85
- hasTxs(hashes: TxHash[]): Promise<boolean[]> {
86
- return Promise.resolve(hashes.map(h => this.txsByHash.has(h.toString())));
98
+ protectTxs(txHashes: TxHash[], _block: BlockHeader): Promise<TxHash[]> {
99
+ const notFound: TxHash[] = [];
100
+ for (const txHash of txHashes) {
101
+ if (!this.txsByHash.has(txHash.toString())) {
102
+ notFound.push(txHash);
103
+ }
104
+ }
105
+ return Promise.resolve(notFound);
87
106
  }
88
107
 
89
- hasTx(hash: TxHash): Promise<boolean> {
90
- return Promise.resolve(this.txsByHash.has(hash.toString()));
108
+ addMinedTxs(txs: Tx[], _block: BlockHeader, _opts?: { source?: string }): Promise<void> {
109
+ for (const tx of txs) {
110
+ const key = tx.getTxHash().toString();
111
+ this.txsByHash.set(key, tx);
112
+ }
113
+ return Promise.resolve();
91
114
  }
92
115
 
93
- getArchivedTxByHash(_hash: TxHash): Promise<Tx | undefined> {
94
- return Promise.resolve(undefined);
116
+ // === State Transition Handlers (TxPoolV2) ===
117
+
118
+ handleMinedBlock(_block: L2Block): Promise<void> {
119
+ return Promise.resolve();
95
120
  }
96
121
 
97
- async markAsMined(_txHashes: TxHash[], _blockHeader: BlockHeader): Promise<void> {}
122
+ prepareForSlot(_slotNumber: SlotNumber): Promise<void> {
123
+ return Promise.resolve();
124
+ }
98
125
 
99
- async markMinedAsPending(_txHashes: TxHash[], _latestBlock: BlockNumber): Promise<void> {}
126
+ handlePrunedBlocks(_latestBlock: L2BlockId, _options?: { deleteAllTxs?: boolean }): Promise<void> {
127
+ return Promise.resolve();
128
+ }
100
129
 
101
- deleteTxs(txHashes: TxHash[], _opts?: { permanently?: boolean }): Promise<void> {
130
+ handleFailedExecution(txHashes: TxHash[]): Promise<void> {
102
131
  for (const txHash of txHashes) {
103
132
  this.txsByHash.delete(txHash.toString());
104
133
  }
105
134
  return Promise.resolve();
106
135
  }
107
136
 
108
- getAllTxs(): Promise<Tx[]> {
109
- return Promise.resolve([...this.txsByHash.values()]);
137
+ handleFinalizedBlock(_block: BlockHeader): Promise<void> {
138
+ return Promise.resolve();
110
139
  }
111
140
 
112
- getAllTxHashes(): Promise<TxHash[]> {
113
- return Promise.resolve([...this.txsByHash.keys()].map(key => TxHash.fromString(key)));
141
+ // === Query Operations (TxPoolV2) ===
142
+
143
+ getTxByHash(hash: TxHash): Promise<Tx | undefined> {
144
+ return Promise.resolve(this.txsByHash.get(hash.toString()));
145
+ }
146
+
147
+ getTxsByHash(hashes: TxHash[]): Promise<(Tx | undefined)[]> {
148
+ const result = hashes.map(h => this.txsByHash.get(h.toString()));
149
+ const found = result.filter(tx => tx !== undefined).length;
150
+ this.logger?.debug(`[TxPool] getTxsByHash: requested ${hashes.length}, found ${found}`);
151
+ return Promise.resolve(result);
152
+ }
153
+
154
+ hasTxs(hashes: TxHash[]): Promise<boolean[]> {
155
+ return Promise.resolve(hashes.map(h => this.txsByHash.has(h.toString())));
156
+ }
157
+
158
+ getArchivedTxByHash(_hash: TxHash): Promise<Tx | undefined> {
159
+ return Promise.resolve(undefined);
114
160
  }
115
161
 
116
162
  getPendingTxHashes(): Promise<TxHash[]> {
117
163
  return Promise.resolve([...this.txsByHash.keys()].map(key => TxHash.fromString(key)));
118
164
  }
119
165
 
166
+ getEligiblePendingTxHashes(): Promise<TxHash[]> {
167
+ return this.getPendingTxHashes();
168
+ }
169
+
120
170
  getPendingTxCount(): Promise<number> {
121
171
  return Promise.resolve(this.txsByHash.size);
122
172
  }
123
173
 
124
- getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: BlockNumber][]> {
174
+ getMinedTxHashes(): Promise<[TxHash, L2BlockId][]> {
125
175
  return Promise.resolve([]);
126
176
  }
127
177
 
128
- getTxStatus(hash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined> {
129
- return Promise.resolve(this.txsByHash.has(hash.toString()) ? 'pending' : undefined);
178
+ getMinedTxCount(): Promise<number> {
179
+ return Promise.resolve(0);
130
180
  }
131
181
 
132
- updateConfig(_config: { maxPendingTxCount?: number; archivedTxLimit?: number }): void {}
182
+ getTxStatus(hash: TxHash): Promise<TxState | 'deleted' | undefined> {
183
+ return Promise.resolve(this.txsByHash.has(hash.toString()) ? 'pending' : undefined);
184
+ }
133
185
 
134
186
  isEmpty(): Promise<boolean> {
135
187
  return Promise.resolve(this.txsByHash.size === 0);
136
188
  }
137
189
 
138
- async markTxsAsNonEvictable(_txHashes: TxHash[]): Promise<void> {}
190
+ getLowestPriorityPending(_limit: number): Promise<TxHash[]> {
191
+ return Promise.resolve([]);
192
+ }
139
193
 
140
- async clearNonEvictableTxs(): Promise<void> {}
194
+ // === Configuration (TxPoolV2) ===
141
195
 
142
- cleanupDeletedMinedTxs(_blockNumber: BlockNumber): Promise<number> {
143
- return Promise.resolve(0);
196
+ updateConfig(_config: Partial<TxPoolV2Config>): Promise<void> {
197
+ return Promise.resolve();
198
+ }
199
+
200
+ // === Lifecycle (TxPoolV2) ===
201
+
202
+ start(): Promise<void> {
203
+ return Promise.resolve();
204
+ }
205
+
206
+ stop(): Promise<void> {
207
+ return Promise.resolve();
144
208
  }
145
209
  }
146
210
 
@@ -155,10 +219,10 @@ export class InMemoryAttestationPool {
155
219
  const id = blockProposal.archive.toString();
156
220
  const alreadyExists = this.proposals.has(id);
157
221
  if (alreadyExists) {
158
- return Promise.resolve({ added: false, alreadyExists: true, totalForPosition: 1 });
222
+ return Promise.resolve({ added: false, alreadyExists: true, count: 1 });
159
223
  }
160
224
  this.proposals.set(id, blockProposal);
161
- return Promise.resolve({ added: true, alreadyExists: false, totalForPosition: 1 });
225
+ return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
162
226
  }
163
227
 
164
228
  getBlockProposal(id: string): Promise<BlockProposal | undefined> {
@@ -166,7 +230,7 @@ export class InMemoryAttestationPool {
166
230
  }
167
231
 
168
232
  tryAddCheckpointProposal(_proposal: CheckpointProposal): Promise<TryAddResult> {
169
- return Promise.resolve({ added: true, alreadyExists: false, totalForPosition: 1 });
233
+ return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
170
234
  }
171
235
 
172
236
  getCheckpointProposal(_id: string): Promise<CheckpointProposalCore | undefined> {
@@ -188,8 +252,12 @@ export class InMemoryAttestationPool {
188
252
  return Promise.resolve([]);
189
253
  }
190
254
 
191
- tryAddCheckpointAttestation(_attestation: CheckpointAttestation, _committeeSize: number): Promise<TryAddResult> {
192
- return Promise.resolve({ added: true, alreadyExists: false, totalForPosition: 1 });
255
+ tryAddCheckpointAttestation(_attestation: CheckpointAttestation): Promise<TryAddResult> {
256
+ return Promise.resolve({ added: true, alreadyExists: false, count: 1 });
257
+ }
258
+
259
+ hasBlockProposalsForSlot(_slot: SlotNumber): Promise<boolean> {
260
+ return Promise.resolve(false);
193
261
  }
194
262
 
195
263
  isEmpty(): Promise<boolean> {
@@ -19,7 +19,7 @@ import { protocolContractsHash } from '@aztec/protocol-contracts';
19
19
  import type { L2BlockSource } from '@aztec/stdlib/block';
20
20
  import type { ContractDataSource } from '@aztec/stdlib/contract';
21
21
  import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
22
- import { type BlockProposal, P2PClientType, P2PMessage } from '@aztec/stdlib/p2p';
22
+ import { type BlockProposal, P2PMessage } from '@aztec/stdlib/p2p';
23
23
  import { ChonkProof } from '@aztec/stdlib/proofs';
24
24
  import { makeAztecAddress, makeBlockHeader, makeBlockProposal, mockTx } from '@aztec/stdlib/testing';
25
25
  import { Tx, TxHash, type TxValidationResult } from '@aztec/stdlib/tx';
@@ -29,22 +29,19 @@ import type { Message, PeerId } from '@libp2p/interface';
29
29
  import { TopicValidatorResult } from '@libp2p/interface';
30
30
  import { peerIdFromString } from '@libp2p/peer-id';
31
31
 
32
- import type { P2PClient } from '../client/p2p_client.js';
32
+ import type { P2PClient } from '../client/index.js';
33
33
  import type { P2PConfig } from '../config.js';
34
34
  import { createP2PClient } from '../index.js';
35
- import type { MemPools } from '../mem_pools/interface.js';
36
- import { LibP2PService } from '../services/libp2p/libp2p_service.js';
35
+ import type { MemPools } from '../mem_pools/index.js';
36
+ import { BatchTxRequesterCollector, LibP2PService, SendBatchRequestCollector } from '../services/index.js';
37
37
  import type { PeerManager } from '../services/peer-manager/peer_manager.js';
38
38
  import type { BatchTxRequesterLibP2PService } from '../services/reqresp/batch-tx-requester/interface.js';
39
39
  import type { IBatchRequestTxValidator } from '../services/reqresp/batch-tx-requester/tx_validator.js';
40
40
  import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
41
41
  import type { ReqResp } from '../services/reqresp/reqresp.js';
42
42
  import type { PeerDiscoveryService } from '../services/service.js';
43
- import {
44
- BatchTxRequesterCollector,
45
- SendBatchRequestCollector,
46
- } from '../services/tx_collection/proposal_tx_collector.js';
47
- import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
43
+ import { MissingTxsTracker } from '../services/tx_collection/missing_txs_tracker.js';
44
+ import { AlwaysTrueCircuitVerifier } from '../test-helpers/index.js';
48
45
  import {
49
46
  BENCHMARK_CONSTANTS,
50
47
  type CollectorType,
@@ -55,7 +52,7 @@ import {
55
52
  createMockEpochCache,
56
53
  createMockWorldStateSynchronizer,
57
54
  filterTxsByDistribution,
58
- } from '../test-helpers/testbench-utils.js';
55
+ } from '../test-helpers/index.js';
59
56
  import type { PubSubLibp2p } from '../util.js';
60
57
 
61
58
  export type { DistributionPattern, CollectorType } from '../test-helpers/testbench-utils.js';
@@ -89,12 +86,11 @@ export interface BenchReadyMessage {
89
86
  }
90
87
  const txCache = new Map<number, Tx[]>();
91
88
 
92
- class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends LibP2PService<T> {
89
+ class TestLibP2PService extends LibP2PService {
93
90
  private disableTxValidation: boolean;
94
91
  private gossipMessageCount = 0;
95
92
 
96
93
  constructor(
97
- clientType: T,
98
94
  config: P2PConfig,
99
95
  node: PubSubLibp2p,
100
96
  peerDiscoveryService: PeerDiscoveryService,
@@ -110,7 +106,6 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
110
106
  disableTxValidation = true,
111
107
  ) {
112
108
  super(
113
- clientType,
114
109
  config,
115
110
  node,
116
111
  peerDiscoveryService,
@@ -144,7 +139,7 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
144
139
  const txHash = tx.getTxHash();
145
140
  const txHashString = txHash.toString();
146
141
  this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
147
- await this.mempools.txPool.addTxs([tx]);
142
+ await this.mempools.txPool.addPendingTxs([tx]);
148
143
  } else {
149
144
  await super.handleGossipedTx(payload, msgId, source);
150
145
  }
@@ -166,7 +161,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
166
161
  return cached.slice(0, txCount);
167
162
  }
168
163
 
169
- const includeByTimestampBase = BigInt(seed);
164
+ const expirationTimestampBase = BigInt(seed);
170
165
  for (let i = cached.length; i < txCount; i++) {
171
166
  const txSeed = seed * 10000 + i;
172
167
  const tx = await mockTx(txSeed, {
@@ -182,7 +177,7 @@ async function generateDeterministicTxs(txCount: number, seed: number, config: P
182
177
  hasPublicTeardownCallRequest: false,
183
178
  publicCalldataSize: 0,
184
179
  });
185
- tx.data.includeByTimestamp = includeByTimestampBase + BigInt(i);
180
+ tx.data.expirationTimestamp = expirationTimestampBase + BigInt(i);
186
181
  await tx.recomputeHash();
187
182
  cached.push(tx);
188
183
  }
@@ -277,7 +272,12 @@ async function runAggregatorBenchmark(
277
272
  new DateProvider(),
278
273
  noopTxValidator,
279
274
  );
280
- const fetchedTxs = await collector.collectTxs(txHashes, blockProposal, pinnedPeer, timeoutMs);
275
+ const fetchedTxs = await collector.collectTxs(
276
+ MissingTxsTracker.fromArray(txHashes),
277
+ blockProposal,
278
+ pinnedPeer,
279
+ timeoutMs,
280
+ );
281
281
  const durationMs = timer.ms();
282
282
  return {
283
283
  type: 'BENCH_RESULT',
@@ -292,7 +292,12 @@ async function runAggregatorBenchmark(
292
292
  BENCHMARK_CONSTANTS.FIXED_MAX_PEERS,
293
293
  BENCHMARK_CONSTANTS.FIXED_MAX_RETRY_ATTEMPTS,
294
294
  );
295
- const fetchedTxs = await collector.collectTxs(txHashes, blockProposal, pinnedPeer, timeoutMs);
295
+ const fetchedTxs = await collector.collectTxs(
296
+ MissingTxsTracker.fromArray(txHashes),
297
+ blockProposal,
298
+ pinnedPeer,
299
+ timeoutMs,
300
+ );
296
301
  const durationMs = timer.ms();
297
302
  return {
298
303
  type: 'BENCH_RESULT',
@@ -358,7 +363,6 @@ process.on('message', async msg => {
358
363
  };
359
364
 
360
365
  const client = await createP2PClient(
361
- P2PClientType.Full,
362
366
  config as P2PConfig & DataStoreConfig,
363
367
  l2BlockSource,
364
368
  proofVerifier as ClientProtocolCircuitVerifier,
@@ -371,7 +375,6 @@ process.on('message', async msg => {
371
375
  );
372
376
 
373
377
  const testService = new TestLibP2PService(
374
- P2PClientType.Full,
375
378
  config,
376
379
  (client as any).p2pService.node,
377
380
  (client as any).p2pService.peerDiscoveryService,
package/src/util.ts CHANGED
@@ -23,7 +23,13 @@ export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' |
23
23
  services: {
24
24
  pubsub: Pick<
25
25
  GossipSub,
26
- 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct'
26
+ | 'addEventListener'
27
+ | 'removeEventListener'
28
+ | 'publish'
29
+ | 'subscribe'
30
+ | 'reportMessageValidationResult'
31
+ | 'direct'
32
+ | 'getMeshPeers'
27
33
  > & { score: Pick<GossipSub['score'], 'score'> };
28
34
  };
29
35
  }