@aztec/p2p 0.0.1-commit.aada20e3 → 0.0.1-commit.b1c78909e

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 (378) hide show
  1. package/dest/client/factory.d.ts +11 -11
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +45 -15
  4. package/dest/client/interface.d.ts +46 -33
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +39 -51
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +151 -224
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +7 -8
  10. package/dest/config.d.ts +49 -18
  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 +104 -88
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  25. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  26. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/index.js +1 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  31. package/dest/mem_pools/index.d.ts +3 -2
  32. package/dest/mem_pools/index.d.ts.map +1 -1
  33. package/dest/mem_pools/index.js +1 -1
  34. package/dest/mem_pools/instrumentation.d.ts +4 -2
  35. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  36. package/dest/mem_pools/instrumentation.js +16 -14
  37. package/dest/mem_pools/interface.d.ts +5 -5
  38. package/dest/mem_pools/interface.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  40. package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
  41. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool/priority.js +4 -3
  43. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  44. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  45. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  46. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  47. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  50. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  52. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  54. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +5 -2
  55. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  58. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  59. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  62. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  65. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  66. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  67. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  68. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  69. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  70. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  71. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  72. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  73. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  74. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  75. package/dest/mem_pools/tx_pool_v2/index.d.ts +3 -2
  76. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool_v2/index.js +2 -1
  78. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  79. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  81. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +28 -8
  82. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  83. package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
  84. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +70 -14
  85. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  86. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +132 -16
  87. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -4
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +20 -6
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +467 -592
  96. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  97. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  99. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  100. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  101. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  102. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  103. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  104. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  105. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  106. package/dest/msg_validators/proposal_validator/proposal_validator.js +48 -36
  107. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  108. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  110. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  111. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  112. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  113. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  114. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  115. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  116. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  117. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  119. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  120. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  121. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  122. package/dest/msg_validators/tx_validator/factory.d.ts +125 -6
  123. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/factory.js +226 -58
  125. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  126. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  128. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  129. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  130. package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
  131. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  132. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  133. package/dest/msg_validators/tx_validator/index.js +2 -0
  134. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  135. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  136. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  137. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  138. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  139. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  140. package/dest/msg_validators/tx_validator/phases_validator.d.ts +2 -2
  141. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/phases_validator.js +44 -23
  143. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  144. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  145. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  146. package/dest/services/dummy_service.d.ts +13 -5
  147. package/dest/services/dummy_service.d.ts.map +1 -1
  148. package/dest/services/dummy_service.js +10 -4
  149. package/dest/services/encoding.d.ts +3 -3
  150. package/dest/services/encoding.d.ts.map +1 -1
  151. package/dest/services/encoding.js +11 -10
  152. package/dest/services/gossipsub/index.d.ts +3 -0
  153. package/dest/services/gossipsub/index.d.ts.map +1 -0
  154. package/dest/services/gossipsub/index.js +2 -0
  155. package/dest/services/gossipsub/scoring.d.ts +21 -3
  156. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  157. package/dest/services/gossipsub/scoring.js +24 -7
  158. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  159. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  160. package/dest/services/gossipsub/topic_score_params.js +346 -0
  161. package/dest/services/libp2p/libp2p_service.d.ts +94 -42
  162. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  163. package/dest/services/libp2p/libp2p_service.js +463 -350
  164. package/dest/services/peer-manager/metrics.d.ts +3 -1
  165. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  166. package/dest/services/peer-manager/metrics.js +6 -0
  167. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  168. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  169. package/dest/services/peer-manager/peer_manager.js +2 -1
  170. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  171. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  172. package/dest/services/peer-manager/peer_scoring.js +25 -2
  173. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +6 -5
  174. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  175. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +26 -53
  176. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  177. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  178. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  179. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  180. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  181. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
  182. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  183. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
  184. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  185. package/dest/services/reqresp/interface.d.ts +10 -1
  186. package/dest/services/reqresp/interface.d.ts.map +1 -1
  187. package/dest/services/reqresp/interface.js +15 -1
  188. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  189. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  190. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  191. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  192. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  193. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  194. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  195. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  196. package/dest/services/reqresp/protocols/tx.js +20 -0
  197. package/dest/services/reqresp/reqresp.d.ts +1 -1
  198. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  199. package/dest/services/reqresp/reqresp.js +13 -5
  200. package/dest/services/service.d.ts +39 -3
  201. package/dest/services/service.d.ts.map +1 -1
  202. package/dest/services/tx_collection/config.d.ts +22 -4
  203. package/dest/services/tx_collection/config.d.ts.map +1 -1
  204. package/dest/services/tx_collection/config.js +49 -3
  205. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  206. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  207. package/dest/services/tx_collection/fast_tx_collection.js +64 -48
  208. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  209. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  210. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  211. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  212. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  213. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  214. package/dest/services/tx_collection/index.d.ts +3 -2
  215. package/dest/services/tx_collection/index.d.ts.map +1 -1
  216. package/dest/services/tx_collection/index.js +1 -0
  217. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  218. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  219. package/dest/services/tx_collection/instrumentation.js +2 -1
  220. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  221. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  222. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  223. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -14
  224. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  225. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  226. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  227. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  228. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  229. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  230. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  231. package/dest/services/tx_collection/tx_collection.js +75 -3
  232. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  233. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  234. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  235. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  236. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  237. package/dest/services/tx_collection/tx_source.js +19 -2
  238. package/dest/services/tx_file_store/config.d.ts +1 -3
  239. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  240. package/dest/services/tx_file_store/config.js +0 -4
  241. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  242. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  243. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  244. package/dest/services/tx_provider.d.ts +4 -4
  245. package/dest/services/tx_provider.d.ts.map +1 -1
  246. package/dest/services/tx_provider.js +9 -8
  247. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  248. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  249. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  250. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  251. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  252. package/dest/test-helpers/mock-pubsub.js +105 -4
  253. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  254. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  255. package/dest/test-helpers/reqresp-nodes.js +4 -3
  256. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  257. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  258. package/dest/test-helpers/testbench-utils.js +129 -59
  259. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  260. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  261. package/dest/testbench/p2p_client_testbench_worker.js +17 -16
  262. package/dest/testbench/worker_client_manager.d.ts +3 -1
  263. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  264. package/dest/testbench/worker_client_manager.js +6 -2
  265. package/dest/util.d.ts +3 -3
  266. package/dest/util.d.ts.map +1 -1
  267. package/package.json +14 -14
  268. package/src/client/factory.ts +82 -28
  269. package/src/client/interface.ts +56 -34
  270. package/src/client/p2p_client.ts +181 -269
  271. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +21 -12
  272. package/src/config.ts +141 -44
  273. package/src/errors/tx-pool.error.ts +12 -0
  274. package/src/index.ts +1 -0
  275. package/src/mem_pools/attestation_pool/attestation_pool.ts +497 -91
  276. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  277. package/src/mem_pools/attestation_pool/index.ts +9 -2
  278. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  279. package/src/mem_pools/index.ts +4 -1
  280. package/src/mem_pools/instrumentation.ts +17 -13
  281. package/src/mem_pools/interface.ts +4 -4
  282. package/src/mem_pools/tx_pool/README.md +1 -1
  283. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  284. package/src/mem_pools/tx_pool/priority.ts +6 -3
  285. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  286. package/src/mem_pools/tx_pool_v2/README.md +112 -17
  287. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  288. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  289. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +5 -2
  290. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  291. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  292. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  293. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  294. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  295. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  296. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  297. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  298. package/src/mem_pools/tx_pool_v2/index.ts +2 -1
  299. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  300. package/src/mem_pools/tx_pool_v2/interfaces.ts +28 -8
  301. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +191 -24
  302. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  303. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +24 -7
  304. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +508 -676
  305. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  306. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  307. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  308. package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -40
  309. package/src/msg_validators/tx_validator/README.md +115 -0
  310. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  311. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  312. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  313. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  314. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  315. package/src/msg_validators/tx_validator/factory.ts +366 -77
  316. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  317. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  318. package/src/msg_validators/tx_validator/index.ts +2 -0
  319. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  320. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  321. package/src/msg_validators/tx_validator/phases_validator.ts +51 -26
  322. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  323. package/src/services/dummy_service.ts +18 -6
  324. package/src/services/encoding.ts +9 -9
  325. package/src/services/gossipsub/README.md +641 -0
  326. package/src/services/gossipsub/index.ts +2 -0
  327. package/src/services/gossipsub/scoring.ts +29 -5
  328. package/src/services/gossipsub/topic_score_params.ts +487 -0
  329. package/src/services/libp2p/libp2p_service.ts +488 -372
  330. package/src/services/peer-manager/metrics.ts +7 -0
  331. package/src/services/peer-manager/peer_manager.ts +2 -1
  332. package/src/services/peer-manager/peer_scoring.ts +25 -0
  333. package/src/services/reqresp/batch-tx-requester/README.md +7 -7
  334. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +31 -59
  335. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  336. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  337. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
  338. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  339. package/src/services/reqresp/interface.ts +26 -1
  340. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  341. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  342. package/src/services/reqresp/protocols/tx.ts +22 -0
  343. package/src/services/reqresp/reqresp.ts +16 -4
  344. package/src/services/service.ts +51 -2
  345. package/src/services/tx_collection/config.ts +74 -6
  346. package/src/services/tx_collection/fast_tx_collection.ts +74 -51
  347. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  348. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  349. package/src/services/tx_collection/index.ts +2 -1
  350. package/src/services/tx_collection/instrumentation.ts +7 -1
  351. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  352. package/src/services/tx_collection/proposal_tx_collector.ts +20 -21
  353. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  354. package/src/services/tx_collection/tx_collection.ts +113 -16
  355. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  356. package/src/services/tx_collection/tx_source.ts +22 -3
  357. package/src/services/tx_file_store/config.ts +0 -6
  358. package/src/services/tx_file_store/tx_file_store.ts +10 -8
  359. package/src/services/tx_provider.ts +10 -9
  360. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  361. package/src/test-helpers/mock-pubsub.ts +146 -9
  362. package/src/test-helpers/reqresp-nodes.ts +5 -7
  363. package/src/test-helpers/testbench-utils.ts +128 -71
  364. package/src/testbench/p2p_client_testbench_worker.ts +26 -22
  365. package/src/testbench/worker_client_manager.ts +13 -5
  366. package/src/util.ts +8 -2
  367. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  368. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  369. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  370. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  371. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  372. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  373. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  374. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  375. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  376. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  377. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  378. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -1,11 +1,32 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
3
- import type { L2BlockId } from '@aztec/stdlib/block';
4
- import type { Tx } from '@aztec/stdlib/tx';
4
+ import { BlockHash, type L2BlockId } from '@aztec/stdlib/block';
5
+ import { Gas } from '@aztec/stdlib/gas';
6
+ import { type Tx, TxHash } from '@aztec/stdlib/tx';
5
7
 
6
8
  import { getFeePayerBalanceDelta } from '../../msg_validators/tx_validator/fee_payer_balance.js';
7
9
  import { getTxPriorityFee } from '../tx_pool/priority.js';
8
- import type { PreAddResult } from './eviction/interfaces.js';
10
+ import { type PreAddResult, TxPoolRejectionCode } from './eviction/interfaces.js';
11
+
12
+ /** Validator-compatible data interface, mirroring the subset of PrivateKernelTailCircuitPublicInputs used by validators. */
13
+ export type TxMetaValidationData = {
14
+ getNonEmptyNullifiers(): Fr[];
15
+ expirationTimestamp: bigint;
16
+ /** Whether the tx has public calls. Used to select the correct L2 gas minimum. */
17
+ forPublic?: unknown;
18
+ constants: {
19
+ anchorBlockHeader: {
20
+ hash(): Promise<BlockHash>;
21
+ globalVariables: {
22
+ blockNumber: BlockNumber;
23
+ };
24
+ };
25
+ txContext: {
26
+ gasSettings: { gasLimits: Gas };
27
+ };
28
+ };
29
+ };
9
30
 
10
31
  /**
11
32
  * Lightweight in-memory representation of a transaction.
@@ -19,6 +40,9 @@ export type TxMetaData = {
19
40
  /** The transaction hash as hex string */
20
41
  readonly txHash: string;
21
42
 
43
+ /** The transaction hash as bigint (for efficient Fr conversion in comparisons) */
44
+ readonly txHashBigInt: bigint;
45
+
22
46
  /** Block ID (number and hash) in which the transaction was mined (undefined if not mined) */
23
47
  minedL2BlockId?: L2BlockId;
24
48
 
@@ -41,46 +65,106 @@ export type TxMetaData = {
41
65
  readonly nullifiers: readonly string[];
42
66
 
43
67
  /** Timestamp by which the transaction must be included (for expiration checks) */
44
- readonly includeByTimestamp: bigint;
68
+ readonly expirationTimestamp: bigint;
69
+
70
+ /** Validator-compatible data, providing the same access patterns as Tx.data */
71
+ readonly data: TxMetaValidationData;
72
+
73
+ /** Timestamp (ms) when the tx was received into the pool. 0 for hydrated txs (always eligible). */
74
+ receivedAt: number;
75
+
76
+ /** Estimated memory footprint of this metadata object in bytes */
77
+ readonly estimatedSizeBytes: number;
45
78
  };
46
79
 
47
80
  /** Transaction state derived from TxMetaData fields and pool protection status */
48
- export type TxState = 'pending' | 'protected' | 'mined';
81
+ export type TxState = 'pending' | 'protected' | 'mined' | 'deleted';
49
82
 
50
83
  /**
51
84
  * Builds TxMetaData from a full Tx object.
52
85
  * Extracts all relevant fields for efficient in-memory storage and querying.
86
+ * Fr values are captured in closures for zero-cost re-validation.
53
87
  */
54
88
  export async function buildTxMetaData(tx: Tx): Promise<TxMetaData> {
55
- const txHash = tx.getTxHash().toString();
56
- const anchorBlockHeaderHash = (await tx.data.constants.anchorBlockHeader.hash()).toString();
89
+ const txHashObj = tx.getTxHash();
90
+ const txHash = txHashObj.toString();
91
+ const txHashBigInt = txHashObj.toBigInt();
92
+ const nullifierFrs = tx.data.getNonEmptyNullifiers();
93
+ const nullifiers = nullifierFrs.map(n => n.toString());
94
+ const anchorBlockHeaderHashFr = await tx.data.constants.anchorBlockHeader.hash();
95
+ const anchorBlockHeaderHash = anchorBlockHeaderHashFr.toString();
96
+ const expirationTimestamp = tx.data.expirationTimestamp;
97
+ const anchorBlockNumber = tx.data.constants.anchorBlockHeader.globalVariables.blockNumber;
57
98
  const priorityFee = getTxPriorityFee(tx);
58
99
  const feePayer = tx.data.feePayer.toString();
59
- const nullifiers = tx.data.getNonEmptyNullifiers().map(n => n.toString());
60
- const includeByTimestamp = tx.data.includeByTimestamp;
61
100
 
62
101
  const { feeLimit, claimAmount } = await getFeePayerBalanceDelta(tx, ProtocolContractAddress.FeeJuice);
63
102
 
103
+ const estimatedSizeBytes = estimateTxMetaDataSize(nullifiers.length);
104
+
64
105
  return {
65
106
  txHash,
107
+ txHashBigInt,
66
108
  anchorBlockHeaderHash,
67
109
  priorityFee,
68
110
  feePayer,
69
111
  claimAmount,
70
112
  feeLimit,
71
113
  nullifiers,
72
- includeByTimestamp,
114
+ expirationTimestamp,
115
+ receivedAt: 0,
116
+ estimatedSizeBytes,
117
+ data: {
118
+ getNonEmptyNullifiers: () => nullifierFrs,
119
+ expirationTimestamp,
120
+ forPublic: !!tx.data.forPublic,
121
+ constants: {
122
+ anchorBlockHeader: {
123
+ hash: () => Promise.resolve(anchorBlockHeaderHashFr),
124
+ globalVariables: { blockNumber: anchorBlockNumber },
125
+ },
126
+ txContext: {
127
+ gasSettings: { gasLimits: tx.data.constants.txContext.gasSettings.gasLimits },
128
+ },
129
+ },
130
+ },
73
131
  };
74
132
  }
75
133
 
134
+ // V8 JS object overhead (~64 bytes for a plain object with hidden class).
135
+ // String overhead: ~32 bytes header + 1 byte per ASCII char (V8 one-byte strings).
136
+ // Hex string (0x + 64 hex chars = 66 chars): ~98 bytes per string.
137
+ // bigint: ~32 bytes. number: 8 bytes. Fr: ~80 bytes (32 data + object overhead).
138
+ const OBJECT_OVERHEAD = 64;
139
+ const HEX_STRING_BYTES = 98;
140
+ const BIGINT_BYTES = 32;
141
+ const FR_BYTES = 80;
142
+ // Fixed cost: object shell + txHash + anchorBlockHeaderHash + feePayer (3 hex strings)
143
+ // + txHashBigInt + priorityFee + claimAmount + feeLimit + includeByTimestamp (5 bigints)
144
+ // + receivedAt (number, 8 bytes) + estimatedSizeBytes (number, 8 bytes)
145
+ // + data closure object (~OBJECT_OVERHEAD + anchorBlockHeaderHashFr Fr + anchorBlockNumber number)
146
+ const FIXED_METADATA_BYTES =
147
+ OBJECT_OVERHEAD + 3 * HEX_STRING_BYTES + 5 * BIGINT_BYTES + 8 + 8 + OBJECT_OVERHEAD + FR_BYTES + 8;
148
+
149
+ /** Estimates the in-memory size of a TxMetaData object based on the number of nullifiers. */
150
+ function estimateTxMetaDataSize(nullifierCount: number): number {
151
+ // Per nullifier: one hex string in nullifiers[] + one Fr in the captured nullifierFrs[]
152
+ return FIXED_METADATA_BYTES + nullifierCount * (HEX_STRING_BYTES + FR_BYTES);
153
+ }
154
+
155
+ /** Converts a txHash bigint back to the canonical 0x-prefixed 64-char hex string. */
156
+ export function txHashFromBigInt(value: bigint): string {
157
+ return TxHash.fromBigInt(value).toString();
158
+ }
159
+
76
160
  /** Minimal fields required for priority comparison. */
77
- type PriorityComparable = Pick<TxMetaData, 'txHash' | 'priorityFee'>;
161
+ export type PriorityComparable = Pick<TxMetaData, 'txHash' | 'txHashBigInt' | 'priorityFee'>;
78
162
 
79
163
  /**
80
164
  * Compares two priority fees in ascending order.
81
165
  * Returns negative if a < b, positive if a > b, 0 if equal.
82
166
  */
83
- export function compareFee(a: bigint, b: bigint): number {
167
+ export function compareFee(a: bigint, b: bigint): -1 | 0 | 1 {
84
168
  return a < b ? -1 : a > b ? 1 : 0;
85
169
  }
86
170
 
@@ -89,10 +173,8 @@ export function compareFee(a: bigint, b: bigint): number {
89
173
  * Uses field element comparison for deterministic ordering.
90
174
  * Returns negative if a < b, positive if a > b, 0 if equal.
91
175
  */
92
- export function compareTxHash(a: string, b: string): number {
93
- const fieldA = Fr.fromHexString(a);
94
- const fieldB = Fr.fromHexString(b);
95
- return fieldA.cmp(fieldB);
176
+ export function compareTxHash(a: bigint, b: bigint): -1 | 0 | 1 {
177
+ return Fr.cmpAsBigInt(a, b);
96
178
  }
97
179
 
98
180
  /**
@@ -100,29 +182,46 @@ export function compareTxHash(a: string, b: string): number {
100
182
  * Returns negative if a < b, positive if a > b, 0 if equal.
101
183
  * Use with sort() for ascending order, or negate/reverse for descending.
102
184
  */
103
- export function comparePriority(a: PriorityComparable, b: PriorityComparable): number {
185
+ export function comparePriority(a: PriorityComparable, b: PriorityComparable): -1 | 0 | 1 {
104
186
  const feeComparison = compareFee(a.priorityFee, b.priorityFee);
105
187
  if (feeComparison !== 0) {
106
188
  return feeComparison;
107
189
  }
108
- return compareTxHash(a.txHash, b.txHash);
190
+ return compareTxHash(a.txHashBigInt, b.txHashBigInt);
191
+ }
192
+
193
+ /**
194
+ * Returns the minimum fee required to replace an existing tx with the given price bump percentage.
195
+ * Uses integer arithmetic: `existingFee + existingFee * priceBumpPercentage / 100`.
196
+ */
197
+ export function getMinimumPriceBumpFee(existingFee: bigint, priceBumpPercentage: bigint): bigint {
198
+ const bump = (existingFee * priceBumpPercentage) / 100n;
199
+ // Ensure the minimum bump is at least 1, so that replacement always requires
200
+ // paying strictly more — even with 0% bump or zero existing fee.
201
+ const effectiveBump = bump > 0n ? bump : 1n;
202
+ return existingFee + effectiveBump;
109
203
  }
110
204
 
111
205
  /**
112
206
  * Checks for nullifier conflicts between an incoming transaction and existing pool state.
113
207
  *
114
208
  * When the incoming tx shares nullifiers with existing pending txs:
115
- * - If the incoming tx has strictly higher priority, mark conflicting txs for eviction
116
- * - If any conflicting tx has equal or higher priority, ignore the incoming tx
209
+ * - If the incoming tx meets or exceeds the required priority, mark conflicting txs for eviction
210
+ * - Otherwise, ignore the incoming tx
211
+ *
212
+ * When `priceBumpPercentage` is provided (RPC path), uses fee-only comparison with the
213
+ * percentage bump instead of `comparePriority`.
117
214
  *
118
215
  * @param incomingMeta - Metadata for the incoming transaction
119
216
  * @param getTxHashByNullifier - Accessor to find which tx uses a nullifier
120
217
  * @param getMetadata - Accessor to get metadata for a tx hash
218
+ * @param priceBumpPercentage - Optional percentage bump required for fee-based replacement
121
219
  */
122
220
  export function checkNullifierConflict(
123
221
  incomingMeta: TxMetaData,
124
222
  getTxHashByNullifier: (nullifier: string) => string | undefined,
125
223
  getMetadata: (txHash: string) => TxMetaData | undefined,
224
+ priceBumpPercentage?: bigint,
126
225
  ): PreAddResult {
127
226
  const txHashesToEvict: string[] = [];
128
227
 
@@ -143,18 +242,86 @@ export function checkNullifierConflict(
143
242
  continue;
144
243
  }
145
244
 
146
- // If incoming tx has strictly higher priority, mark for eviction
147
- // Otherwise, ignore incoming tx (ties go to existing tx)
148
- if (incomingMeta.priorityFee > conflictingMeta.priorityFee) {
245
+ // When price bump is set (RPC path), require the incoming fee to meet the bumped threshold.
246
+ // Otherwise (P2P path), use full comparePriority with tx hash tiebreaker.
247
+ const isHigherPriority =
248
+ priceBumpPercentage !== undefined
249
+ ? incomingMeta.priorityFee >= getMinimumPriceBumpFee(conflictingMeta.priorityFee, priceBumpPercentage)
250
+ : comparePriority(incomingMeta, conflictingMeta) > 0;
251
+
252
+ if (isHigherPriority) {
149
253
  txHashesToEvict.push(conflictingHashStr);
150
254
  } else {
255
+ const minimumFee =
256
+ priceBumpPercentage !== undefined
257
+ ? getMinimumPriceBumpFee(conflictingMeta.priorityFee, priceBumpPercentage)
258
+ : undefined;
151
259
  return {
152
260
  shouldIgnore: true,
153
261
  txHashesToEvict: [],
154
- reason: `nullifier conflict with ${conflictingHashStr}`,
262
+ reason: {
263
+ code: TxPoolRejectionCode.NULLIFIER_CONFLICT,
264
+ message:
265
+ minimumFee !== undefined
266
+ ? `Nullifier conflict with existing tx ${conflictingHashStr}. Minimum required fee: ${minimumFee}, got: ${incomingMeta.priorityFee}`
267
+ : `Nullifier conflict with existing tx ${conflictingHashStr}`,
268
+ conflictingTxHash: conflictingHashStr,
269
+ minimumPriceBumpFee: minimumFee,
270
+ txPriorityFee: minimumFee !== undefined ? incomingMeta.priorityFee : undefined,
271
+ },
155
272
  };
156
273
  }
157
274
  }
158
275
 
159
276
  return { shouldIgnore: false, txHashesToEvict };
160
277
  }
278
+
279
+ /** Creates a stub TxMetaValidationData for tests that don't exercise validators. */
280
+ export function stubTxMetaValidationData(overrides: { expirationTimestamp?: bigint } = {}): TxMetaValidationData {
281
+ return {
282
+ getNonEmptyNullifiers: () => [],
283
+ expirationTimestamp: overrides.expirationTimestamp ?? 0n,
284
+ constants: {
285
+ anchorBlockHeader: {
286
+ hash: () => Promise.resolve(new BlockHash(Fr.ZERO)),
287
+ globalVariables: { blockNumber: BlockNumber(0) },
288
+ },
289
+ txContext: {
290
+ gasSettings: { gasLimits: Gas.empty() },
291
+ },
292
+ },
293
+ };
294
+ }
295
+
296
+ /** Creates a stub TxMetaData for tests. All fields have sensible defaults and can be overridden. */
297
+ export function stubTxMetaData(
298
+ txHash: string,
299
+ overrides: {
300
+ priorityFee?: bigint;
301
+ feePayer?: string;
302
+ claimAmount?: bigint;
303
+ feeLimit?: bigint;
304
+ nullifiers?: string[];
305
+ expirationTimestamp?: bigint;
306
+ anchorBlockHeaderHash?: string;
307
+ } = {},
308
+ ): TxMetaData {
309
+ const txHashBigInt = Fr.fromHexString(txHash).toBigInt();
310
+ // Normalize to canonical zero-padded hex so txHashFromBigInt(txHashBigInt) === normalizedTxHash
311
+ const normalizedTxHash = txHashFromBigInt(txHashBigInt);
312
+ const expirationTimestamp = overrides.expirationTimestamp ?? 0n;
313
+ return {
314
+ txHash: normalizedTxHash,
315
+ txHashBigInt,
316
+ anchorBlockHeaderHash: overrides.anchorBlockHeaderHash ?? '0x1234',
317
+ priorityFee: overrides.priorityFee ?? 100n,
318
+ feePayer: overrides.feePayer ?? '0xfeepayer',
319
+ claimAmount: overrides.claimAmount ?? 0n,
320
+ feeLimit: overrides.feeLimit ?? 100n,
321
+ nullifiers: overrides.nullifiers ?? [`0x${normalizedTxHash.slice(2)}null1`],
322
+ expirationTimestamp,
323
+ receivedAt: 0,
324
+ estimatedSizeBytes: 0,
325
+ data: stubTxMetaValidationData({ expirationTimestamp }),
326
+ };
327
+ }