@aztec/p2p 0.0.1-commit.2eb6648a → 0.0.1-commit.343b43af6

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 (364) hide show
  1. package/dest/client/factory.d.ts +9 -9
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +43 -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 +144 -223
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +6 -7
  10. package/dest/config.d.ts +48 -17
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +92 -38
  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/priority.d.ts +2 -2
  40. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool/priority.js +4 -3
  42. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  43. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  45. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  46. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  47. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  49. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  51. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +5 -2
  54. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  55. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  57. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  58. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  60. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  61. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  62. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  64. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  65. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  66. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  68. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  69. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  70. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  71. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  72. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  73. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  74. package/dest/mem_pools/tx_pool_v2/index.d.ts +3 -2
  75. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool_v2/index.js +2 -1
  77. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  78. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  79. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  80. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +24 -8
  81. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  82. package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
  83. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +70 -14
  84. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +132 -17
  86. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  87. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -4
  90. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +14 -6
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +353 -185
  95. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  96. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  97. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  98. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  99. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  100. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  101. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  102. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  103. package/dest/msg_validators/proposal_validator/proposal_validator.js +48 -36
  104. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  105. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  107. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  108. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  110. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  111. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  112. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  113. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  114. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  116. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  117. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  119. package/dest/msg_validators/tx_validator/factory.d.ts +125 -6
  120. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  121. package/dest/msg_validators/tx_validator/factory.js +226 -58
  122. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  123. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  125. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  126. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
  128. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  129. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  130. package/dest/msg_validators/tx_validator/index.js +2 -0
  131. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  132. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  133. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  134. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  135. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  136. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  137. package/dest/msg_validators/tx_validator/phases_validator.d.ts +2 -2
  138. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  139. package/dest/msg_validators/tx_validator/phases_validator.js +44 -23
  140. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  141. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  143. package/dest/services/dummy_service.d.ts +9 -5
  144. package/dest/services/dummy_service.d.ts.map +1 -1
  145. package/dest/services/dummy_service.js +7 -4
  146. package/dest/services/encoding.d.ts +3 -3
  147. package/dest/services/encoding.d.ts.map +1 -1
  148. package/dest/services/encoding.js +11 -10
  149. package/dest/services/gossipsub/index.d.ts +3 -0
  150. package/dest/services/gossipsub/index.d.ts.map +1 -0
  151. package/dest/services/gossipsub/index.js +2 -0
  152. package/dest/services/gossipsub/scoring.d.ts +21 -3
  153. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  154. package/dest/services/gossipsub/scoring.js +24 -7
  155. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  156. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  157. package/dest/services/gossipsub/topic_score_params.js +346 -0
  158. package/dest/services/libp2p/libp2p_service.d.ts +25 -14
  159. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  160. package/dest/services/libp2p/libp2p_service.js +195 -153
  161. package/dest/services/peer-manager/metrics.d.ts +3 -1
  162. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  163. package/dest/services/peer-manager/metrics.js +6 -0
  164. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  165. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  166. package/dest/services/peer-manager/peer_manager.js +2 -1
  167. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  168. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  169. package/dest/services/peer-manager/peer_scoring.js +25 -2
  170. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -3
  171. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  172. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +19 -46
  173. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  174. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  175. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  176. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  177. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  178. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
  179. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  180. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
  181. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  182. package/dest/services/reqresp/interface.d.ts +10 -1
  183. package/dest/services/reqresp/interface.d.ts.map +1 -1
  184. package/dest/services/reqresp/interface.js +15 -1
  185. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +3 -3
  186. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  187. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +7 -1
  188. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  189. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +15 -0
  190. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  191. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  192. package/dest/services/reqresp/protocols/tx.js +20 -0
  193. package/dest/services/reqresp/reqresp.d.ts +1 -1
  194. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  195. package/dest/services/reqresp/reqresp.js +13 -5
  196. package/dest/services/service.d.ts +22 -3
  197. package/dest/services/service.d.ts.map +1 -1
  198. package/dest/services/tx_collection/config.d.ts +19 -1
  199. package/dest/services/tx_collection/config.d.ts.map +1 -1
  200. package/dest/services/tx_collection/config.js +46 -0
  201. package/dest/services/tx_collection/fast_tx_collection.d.ts +3 -1
  202. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  203. package/dest/services/tx_collection/fast_tx_collection.js +56 -36
  204. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  205. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  206. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  207. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  208. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  209. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  210. package/dest/services/tx_collection/index.d.ts +2 -1
  211. package/dest/services/tx_collection/index.d.ts.map +1 -1
  212. package/dest/services/tx_collection/index.js +1 -0
  213. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  214. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  215. package/dest/services/tx_collection/instrumentation.js +2 -1
  216. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  217. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  218. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  219. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -6
  220. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  221. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  222. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  223. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  224. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  225. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  226. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  227. package/dest/services/tx_collection/tx_collection.js +75 -3
  228. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  229. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  230. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  231. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  232. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  233. package/dest/services/tx_collection/tx_source.js +19 -2
  234. package/dest/services/tx_file_store/config.d.ts +1 -3
  235. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  236. package/dest/services/tx_file_store/config.js +0 -4
  237. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  238. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  239. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  240. package/dest/services/tx_provider.d.ts +4 -4
  241. package/dest/services/tx_provider.d.ts.map +1 -1
  242. package/dest/services/tx_provider.js +9 -8
  243. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  244. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  245. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  246. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  247. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  248. package/dest/test-helpers/mock-pubsub.js +105 -4
  249. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  250. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  251. package/dest/test-helpers/reqresp-nodes.js +4 -3
  252. package/dest/test-helpers/testbench-utils.d.ts +35 -24
  253. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  254. package/dest/test-helpers/testbench-utils.js +104 -36
  255. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  256. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  257. package/dest/testbench/p2p_client_testbench_worker.js +16 -15
  258. package/dest/testbench/worker_client_manager.d.ts +3 -1
  259. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  260. package/dest/testbench/worker_client_manager.js +6 -2
  261. package/dest/util.d.ts +3 -3
  262. package/dest/util.d.ts.map +1 -1
  263. package/package.json +14 -14
  264. package/src/client/factory.ts +79 -24
  265. package/src/client/interface.ts +43 -33
  266. package/src/client/p2p_client.ts +165 -265
  267. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -11
  268. package/src/config.ts +141 -44
  269. package/src/errors/tx-pool.error.ts +12 -0
  270. package/src/index.ts +1 -0
  271. package/src/mem_pools/attestation_pool/attestation_pool.ts +100 -48
  272. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +57 -53
  273. package/src/mem_pools/attestation_pool/index.ts +3 -3
  274. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  275. package/src/mem_pools/index.ts +3 -0
  276. package/src/mem_pools/instrumentation.ts +17 -13
  277. package/src/mem_pools/interface.ts +2 -2
  278. package/src/mem_pools/tx_pool/README.md +1 -1
  279. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  280. package/src/mem_pools/tx_pool/priority.ts +6 -3
  281. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  282. package/src/mem_pools/tx_pool_v2/README.md +85 -11
  283. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  284. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  285. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +5 -2
  286. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  287. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  288. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  289. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  290. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  291. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  292. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  293. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  294. package/src/mem_pools/tx_pool_v2/index.ts +2 -1
  295. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  296. package/src/mem_pools/tx_pool_v2/interfaces.ts +26 -8
  297. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +191 -25
  298. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
  299. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +21 -7
  300. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +398 -183
  301. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  302. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  303. package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -40
  304. package/src/msg_validators/tx_validator/README.md +115 -0
  305. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  306. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  307. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  308. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  309. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  310. package/src/msg_validators/tx_validator/factory.ts +366 -77
  311. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  312. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  313. package/src/msg_validators/tx_validator/index.ts +2 -0
  314. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  315. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  316. package/src/msg_validators/tx_validator/phases_validator.ts +51 -26
  317. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  318. package/src/services/dummy_service.ts +12 -6
  319. package/src/services/encoding.ts +9 -9
  320. package/src/services/gossipsub/README.md +641 -0
  321. package/src/services/gossipsub/index.ts +2 -0
  322. package/src/services/gossipsub/scoring.ts +29 -5
  323. package/src/services/gossipsub/topic_score_params.ts +487 -0
  324. package/src/services/libp2p/libp2p_service.ts +206 -164
  325. package/src/services/peer-manager/metrics.ts +7 -0
  326. package/src/services/peer-manager/peer_manager.ts +2 -1
  327. package/src/services/peer-manager/peer_scoring.ts +25 -0
  328. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +20 -48
  329. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  330. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  331. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
  332. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  333. package/src/services/reqresp/interface.ts +26 -1
  334. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +2 -2
  335. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +17 -0
  336. package/src/services/reqresp/protocols/tx.ts +22 -0
  337. package/src/services/reqresp/reqresp.ts +16 -4
  338. package/src/services/service.ts +31 -2
  339. package/src/services/tx_collection/config.ts +68 -0
  340. package/src/services/tx_collection/fast_tx_collection.ts +65 -32
  341. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  342. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  343. package/src/services/tx_collection/index.ts +1 -0
  344. package/src/services/tx_collection/instrumentation.ts +7 -1
  345. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  346. package/src/services/tx_collection/proposal_tx_collector.ts +8 -7
  347. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  348. package/src/services/tx_collection/tx_collection.ts +113 -16
  349. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  350. package/src/services/tx_collection/tx_source.ts +22 -3
  351. package/src/services/tx_file_store/config.ts +0 -6
  352. package/src/services/tx_file_store/tx_file_store.ts +10 -8
  353. package/src/services/tx_provider.ts +10 -9
  354. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  355. package/src/test-helpers/mock-pubsub.ts +146 -9
  356. package/src/test-helpers/reqresp-nodes.ts +5 -7
  357. package/src/test-helpers/testbench-utils.ts +118 -40
  358. package/src/testbench/p2p_client_testbench_worker.ts +25 -21
  359. package/src/testbench/worker_client_manager.ts +13 -5
  360. package/src/util.ts +8 -2
  361. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  362. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  363. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  364. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -1,7 +1,8 @@
1
+ import { insertIntoSortedArray, removeFromSortedArray } from '@aztec/foundation/array';
1
2
  import { SlotNumber } from '@aztec/foundation/branded-types';
2
3
  import type { L2BlockId } from '@aztec/stdlib/block';
3
4
 
4
- import { type TxMetaData, type TxState, compareFee, compareTxHash } from './tx_metadata.js';
5
+ import { type PriorityComparable, type TxMetaData, type TxState, comparePriority } from './tx_metadata.js';
5
6
 
6
7
  /**
7
8
  * Manages in-memory indices for the transaction pool.
@@ -22,8 +23,8 @@ export class TxPoolIndices {
22
23
  #nullifierToTxHash: Map<string, string> = new Map();
23
24
  /** Fee payer to txHashes index (pending txs only) */
24
25
  #feePayerToTxHashes: Map<string, Set<string>> = new Map();
25
- /** Pending txHashes grouped by priority fee */
26
- #pendingByPriority: Map<bigint, Set<string>> = new Map();
26
+ /** Pending transactions sorted ascending by priority fee, ties broken by txHash */
27
+ #pendingByPriority: PriorityComparable[] = [];
27
28
  /** Protected transactions: txHash -> slotNumber */
28
29
  #protectedTransactions: Map<string, SlotNumber> = new Map();
29
30
 
@@ -72,23 +73,33 @@ export class TxPoolIndices {
72
73
  * Iterates pending transaction hashes in priority order.
73
74
  * @param order - 'desc' for highest priority first, 'asc' for lowest priority first
74
75
  */
75
- *iteratePendingByPriority(order: 'asc' | 'desc'): Generator<string> {
76
- // Use compareFee from tx_metadata, swap args for descending order
77
- const feeCompareFn = order === 'desc' ? (a: bigint, b: bigint) => compareFee(b, a) : compareFee;
78
- const hashCompareFn = order === 'desc' ? (a: string, b: string) => compareTxHash(b, a) : compareTxHash;
79
-
80
- const sortedFees = [...this.#pendingByPriority.keys()].sort(feeCompareFn);
81
-
82
- for (const fee of sortedFees) {
83
- const hashesAtFee = this.#pendingByPriority.get(fee)!;
84
- // Use compareTxHash from tx_metadata, swap args for descending order
85
- const sortedHashes = [...hashesAtFee].sort(hashCompareFn);
86
- for (const hash of sortedHashes) {
87
- yield hash;
76
+ *iteratePendingByPriority(order: 'asc' | 'desc', filter?: (hash: string) => boolean): Generator<string> {
77
+ const arr = this.#pendingByPriority;
78
+ const start = order === 'asc' ? 0 : arr.length - 1;
79
+ const step = order === 'asc' ? 1 : -1;
80
+ const inBounds = order === 'asc' ? (i: number) => i < arr.length : (i: number) => i >= 0;
81
+
82
+ for (let i = start; inBounds(i); i += step) {
83
+ if (filter === undefined || filter(arr[i].txHash)) {
84
+ yield arr[i].txHash;
88
85
  }
89
86
  }
90
87
  }
91
88
 
89
+ /**
90
+ * Iterates pending transaction hashes in priority order, skipping txs received after maxReceivedAt.
91
+ * @param order - 'desc' for highest priority first, 'asc' for lowest priority first
92
+ * @param maxReceivedAt - Only yield txs with receivedAt <= this value
93
+ */
94
+ *iterateEligiblePendingByPriority(order: 'asc' | 'desc', maxReceivedAt: number): Generator<string> {
95
+ const filter = (hash: string) => {
96
+ const meta = this.#metadata.get(hash);
97
+ return meta !== undefined && meta.receivedAt <= maxReceivedAt;
98
+ };
99
+
100
+ yield* this.iteratePendingByPriority(order, filter);
101
+ }
102
+
92
103
  /** Iterates all metadata entries */
93
104
  *iterateMetadata(): Generator<[string, TxMetaData]> {
94
105
  yield* this.#metadata;
@@ -211,11 +222,7 @@ export class TxPoolIndices {
211
222
 
212
223
  /** Gets the count of pending transactions */
213
224
  getPendingTxCount(): number {
214
- let count = 0;
215
- for (const hashes of this.#pendingByPriority.values()) {
216
- count += hashes.size;
217
- }
218
- return count;
225
+ return this.#pendingByPriority.length;
219
226
  }
220
227
 
221
228
  /** Gets the lowest priority pending transaction hashes (up to limit) */
@@ -248,12 +255,10 @@ export class TxPoolIndices {
248
255
  /** Gets all pending transactions */
249
256
  getPendingTxs(): TxMetaData[] {
250
257
  const result: TxMetaData[] = [];
251
- for (const hashSet of this.#pendingByPriority.values()) {
252
- for (const txHash of hashSet) {
253
- const meta = this.#metadata.get(txHash);
254
- if (meta) {
255
- result.push(meta);
256
- }
258
+ for (const entry of this.#pendingByPriority) {
259
+ const meta = this.#metadata.get(entry.txHash);
260
+ if (meta) {
261
+ result.push(meta);
257
262
  }
258
263
  }
259
264
  return result;
@@ -332,13 +337,15 @@ export class TxPoolIndices {
332
337
  // METRICS
333
338
  // ============================================================================
334
339
 
335
- /** Counts transactions by state */
336
- countTxs(): { pending: number; protected: number; mined: number } {
340
+ /** Counts transactions by state and estimates total metadata memory usage */
341
+ countTxs(): { pending: number; protected: number; mined: number; totalMetadataBytes: number } {
337
342
  let pending = 0;
338
343
  let protected_ = 0;
339
344
  let mined = 0;
345
+ let totalMetadataBytes = 0;
340
346
 
341
347
  for (const meta of this.#metadata.values()) {
348
+ totalMetadataBytes += meta.estimatedSizeBytes;
342
349
  const state = this.getTxState(meta);
343
350
  if (state === 'pending') {
344
351
  pending++;
@@ -349,7 +356,16 @@ export class TxPoolIndices {
349
356
  }
350
357
  }
351
358
 
352
- return { pending, protected: protected_, mined };
359
+ return { pending, protected: protected_, mined, totalMetadataBytes };
360
+ }
361
+
362
+ /** Returns the estimated total memory consumed by all metadata objects */
363
+ getTotalMetadataBytes(): number {
364
+ let total = 0;
365
+ for (const meta of this.#metadata.values()) {
366
+ total += meta.estimatedSizeBytes;
367
+ }
368
+ return total;
353
369
  }
354
370
 
355
371
  /** Gets all mined transactions with their block IDs */
@@ -381,13 +397,12 @@ export class TxPoolIndices {
381
397
  }
382
398
  feePayerSet.add(meta.txHash);
383
399
 
384
- // Add to priority bucket
385
- let prioritySet = this.#pendingByPriority.get(meta.priorityFee);
386
- if (!prioritySet) {
387
- prioritySet = new Set();
388
- this.#pendingByPriority.set(meta.priorityFee, prioritySet);
389
- }
390
- prioritySet.add(meta.txHash);
400
+ insertIntoSortedArray(
401
+ this.#pendingByPriority,
402
+ { txHash: meta.txHash, priorityFee: meta.priorityFee, txHashBigInt: meta.txHashBigInt },
403
+ comparePriority,
404
+ false,
405
+ );
391
406
  }
392
407
 
393
408
  #removeFromPendingIndices(meta: TxMetaData): void {
@@ -405,13 +420,11 @@ export class TxPoolIndices {
405
420
  }
406
421
  }
407
422
 
408
- // Remove from priority map
409
- const hashSet = this.#pendingByPriority.get(meta.priorityFee);
410
- if (hashSet) {
411
- hashSet.delete(meta.txHash);
412
- if (hashSet.size === 0) {
413
- this.#pendingByPriority.delete(meta.priorityFee);
414
- }
415
- }
423
+ // Remove from priority array
424
+ removeFromSortedArray(
425
+ this.#pendingByPriority,
426
+ { txHash: meta.txHash, priorityFee: meta.priorityFee, txHashBigInt: meta.txHashBigInt },
427
+ comparePriority,
428
+ );
416
429
  }
417
430
  }
@@ -1,6 +1,7 @@
1
1
  import { SlotNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
3
  import { SerialQueue } from '@aztec/foundation/queue';
4
+ import { DateProvider } from '@aztec/foundation/timer';
4
5
  import type { TypedEventEmitter } from '@aztec/foundation/types';
5
6
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
6
7
  import type { L2Block, L2BlockId } from '@aztec/stdlib/block';
@@ -35,6 +36,7 @@ export class AztecKVTxPoolV2 extends (EventEmitter as new () => TypedEventEmitte
35
36
  deps: TxPoolV2Dependencies,
36
37
  telemetry: TelemetryClient = getTelemetryClient(),
37
38
  config: Partial<TxPoolV2Config> = {},
39
+ dateProvider: DateProvider = new DateProvider(),
38
40
  log = createLogger('p2p:tx_pool_v2'),
39
41
  ) {
40
42
  super();
@@ -56,10 +58,13 @@ export class AztecKVTxPoolV2 extends (EventEmitter as new () => TypedEventEmitte
56
58
  const hashes = txHashes.map(h => (typeof h === 'string' ? TxHash.fromString(h) : TxHash.fromBigInt(h)));
57
59
  this.emit('txs-removed', { txHashes: hashes });
58
60
  },
61
+ onTxsMined: (txHashes: string[]) => {
62
+ this.#metrics?.transactionsRemoved(txHashes);
63
+ },
59
64
  };
60
65
 
61
66
  // Create the implementation
62
- this.#impl = new TxPoolV2Impl(store, archiveStore, deps, callbacks, config, log);
67
+ this.#impl = new TxPoolV2Impl(store, archiveStore, deps, callbacks, telemetry, config, dateProvider, log);
63
68
  }
64
69
 
65
70
  // ============================================================================
@@ -68,11 +73,11 @@ export class AztecKVTxPoolV2 extends (EventEmitter as new () => TypedEventEmitte
68
73
 
69
74
  // === Core Operations ===
70
75
 
71
- addPendingTxs(txs: Tx[], opts: { source?: string } = {}): Promise<AddTxsResult> {
76
+ addPendingTxs(txs: Tx[], opts: { source?: string; feeComparisonOnly?: boolean } = {}): Promise<AddTxsResult> {
72
77
  return this.#queue.put(() => this.#impl.addPendingTxs(txs, opts));
73
78
  }
74
79
 
75
- canAddPendingTx(tx: Tx): Promise<'accepted' | 'ignored' | 'rejected'> {
80
+ canAddPendingTx(tx: Tx): Promise<'accepted' | 'ignored'> {
76
81
  return this.#queue.put(() => this.#impl.canAddPendingTx(tx));
77
82
  }
78
83
 
@@ -81,7 +86,7 @@ export class AztecKVTxPoolV2 extends (EventEmitter as new () => TypedEventEmitte
81
86
  }
82
87
 
83
88
  protectTxs(txHashes: TxHash[], block: BlockHeader): Promise<TxHash[]> {
84
- return this.#queue.put(() => Promise.resolve(this.#impl.protectTxs(txHashes, block)));
89
+ return this.#queue.put(() => this.#impl.protectTxs(txHashes, block));
85
90
  }
86
91
 
87
92
  addMinedTxs(txs: Tx[], block: BlockHeader, opts: { source?: string } = {}): Promise<void> {
@@ -98,8 +103,8 @@ export class AztecKVTxPoolV2 extends (EventEmitter as new () => TypedEventEmitte
98
103
  return this.#queue.put(() => this.#impl.prepareForSlot(slotNumber));
99
104
  }
100
105
 
101
- handlePrunedBlocks(latestBlock: L2BlockId): Promise<void> {
102
- return this.#queue.put(() => this.#impl.handlePrunedBlocks(latestBlock));
106
+ handlePrunedBlocks(latestBlock: L2BlockId, options?: { deleteAllTxs?: boolean }): Promise<void> {
107
+ return this.#queue.put(() => this.#impl.handlePrunedBlocks(latestBlock, options));
103
108
  }
104
109
 
105
110
  handleFailedExecution(txHashes: TxHash[]): Promise<void> {
@@ -132,6 +137,10 @@ export class AztecKVTxPoolV2 extends (EventEmitter as new () => TypedEventEmitte
132
137
  return this.#queue.put(() => Promise.resolve(this.#impl.getPendingTxHashes()));
133
138
  }
134
139
 
140
+ getEligiblePendingTxHashes(): Promise<TxHash[]> {
141
+ return this.#queue.put(() => Promise.resolve(this.#impl.getEligiblePendingTxHashes()));
142
+ }
143
+
135
144
  getPendingTxCount(): Promise<number> {
136
145
  return this.#queue.put(() => Promise.resolve(this.#impl.getPendingTxCount()));
137
146
  }
@@ -189,7 +198,12 @@ export class AztecKVTxPoolV2 extends (EventEmitter as new () => TypedEventEmitte
189
198
  this.#queue.put(() => {
190
199
  const counts = this.#impl.countTxs();
191
200
  return Promise.resolve({
192
- itemCount: { pending: counts.pending, protected: counts.protected, mined: counts.mined },
201
+ itemCount: {
202
+ pending: counts.pending,
203
+ protected: counts.protected,
204
+ mined: counts.mined,
205
+ softDeleted: counts.softDeleted,
206
+ },
193
207
  });
194
208
  }),
195
209
  () => this.#store.estimateSize(),