@aztec/p2p 0.0.1-commit.d6f2b3f94 → 0.0.1-commit.d939eb5aa

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 (420) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +7 -7
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +37 -30
  5. package/dest/client/interface.d.ts +22 -20
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +11 -19
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +92 -104
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -10
  11. package/dest/config.d.ts +128 -96
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +97 -38
  14. package/dest/errors/p2p-service.error.d.ts +9 -0
  15. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  16. package/dest/errors/p2p-service.error.js +10 -0
  17. package/dest/errors/tx-pool.error.d.ts +8 -0
  18. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  19. package/dest/errors/tx-pool.error.js +9 -0
  20. package/dest/index.d.ts +1 -2
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +0 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +10 -6
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.js +21 -9
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
  27. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  30. package/dest/mem_pools/index.d.ts +1 -2
  31. package/dest/mem_pools/index.d.ts.map +1 -1
  32. package/dest/mem_pools/instrumentation.d.ts +4 -2
  33. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  34. package/dest/mem_pools/instrumentation.js +16 -14
  35. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +30 -13
  36. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
  38. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  39. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  41. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  42. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +7 -3
  44. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  47. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  48. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  51. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  54. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +9 -7
  55. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  56. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  58. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  59. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  61. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  62. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  64. package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
  65. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  66. package/dest/mem_pools/tx_pool_v2/index.js +1 -1
  67. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  68. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  70. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +28 -10
  71. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  72. package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
  73. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -15
  74. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  75. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +113 -20
  76. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  77. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -5
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +17 -6
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +319 -147
  85. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  86. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  87. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  88. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  89. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  90. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  91. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  92. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  93. package/dest/msg_validators/clock_tolerance.js +54 -3
  94. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +7 -4
  95. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  97. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +7 -4
  98. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  99. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  100. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +15 -8
  101. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/proposal_validator/proposal_validator.js +67 -47
  103. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
  104. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  105. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  106. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  107. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  108. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  109. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  110. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  111. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  112. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  113. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  114. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  115. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  116. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  117. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  119. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  120. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  121. package/dest/msg_validators/tx_validator/factory.js +247 -60
  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 +112 -43
  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 +22 -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 +72 -24
  140. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
  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/data_store.d.ts +1 -1
  144. package/dest/services/data_store.d.ts.map +1 -1
  145. package/dest/services/data_store.js +5 -5
  146. package/dest/services/dummy_service.d.ts +8 -5
  147. package/dest/services/dummy_service.d.ts.map +1 -1
  148. package/dest/services/dummy_service.js +10 -5
  149. package/dest/services/encoding.d.ts +6 -2
  150. package/dest/services/encoding.d.ts.map +1 -1
  151. package/dest/services/encoding.js +16 -9
  152. package/dest/services/gossipsub/topic_score_params.d.ts +30 -7
  153. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  154. package/dest/services/gossipsub/topic_score_params.js +53 -14
  155. package/dest/services/libp2p/libp2p_service.d.ts +29 -36
  156. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  157. package/dest/services/libp2p/libp2p_service.js +224 -197
  158. package/dest/services/peer-manager/metrics.d.ts +3 -1
  159. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  160. package/dest/services/peer-manager/metrics.js +6 -0
  161. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  162. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  163. package/dest/services/peer-manager/peer_manager.js +39 -11
  164. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  165. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  166. package/dest/services/peer-manager/peer_scoring.js +32 -10
  167. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +12 -8
  168. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  169. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +83 -106
  170. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  171. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  172. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  173. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  174. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  175. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  176. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  177. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  178. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  179. package/dest/services/reqresp/config.d.ts +3 -3
  180. package/dest/services/reqresp/config.d.ts.map +1 -1
  181. package/dest/services/reqresp/interface.d.ts +14 -9
  182. package/dest/services/reqresp/interface.d.ts.map +1 -1
  183. package/dest/services/reqresp/interface.js +10 -11
  184. package/dest/services/reqresp/metrics.d.ts +1 -1
  185. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  186. package/dest/services/reqresp/metrics.js +0 -1
  187. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  188. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  189. package/dest/services/reqresp/protocols/index.js +0 -1
  190. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  191. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  192. package/dest/services/reqresp/protocols/tx.js +1 -3
  193. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  194. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  195. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  196. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  197. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  198. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  199. package/dest/services/reqresp/reqresp.d.ts +4 -2
  200. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  201. package/dest/services/reqresp/reqresp.js +30 -12
  202. package/dest/services/service.d.ts +9 -4
  203. package/dest/services/service.d.ts.map +1 -1
  204. package/dest/services/tx_collection/config.d.ts +13 -1
  205. package/dest/services/tx_collection/config.d.ts.map +1 -1
  206. package/dest/services/tx_collection/config.js +30 -0
  207. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  208. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  209. package/dest/services/tx_collection/fast_tx_collection.js +65 -75
  210. package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
  211. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  212. package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
  213. package/dest/services/tx_collection/file_store_tx_source.d.ts +17 -6
  214. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  215. package/dest/services/tx_collection/file_store_tx_source.js +53 -10
  216. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  217. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  218. package/dest/services/tx_collection/instrumentation.js +2 -1
  219. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -7
  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/request_tracker.d.ts +53 -0
  223. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  224. package/dest/services/tx_collection/request_tracker.js +84 -0
  225. package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
  226. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  227. package/dest/services/tx_collection/slow_tx_collection.js +17 -12
  228. package/dest/services/tx_collection/tx_collection.d.ts +9 -9
  229. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  230. package/dest/services/tx_collection/tx_collection.js +26 -10
  231. package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
  232. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  233. package/dest/services/tx_collection/tx_collection_sink.js +13 -22
  234. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  235. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  236. package/dest/services/tx_collection/tx_source.js +26 -7
  237. package/dest/services/tx_file_store/tx_file_store.d.ts +3 -2
  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 +3 -3
  241. package/dest/services/tx_provider.d.ts.map +1 -1
  242. package/dest/services/tx_provider.js +4 -4
  243. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  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 +14 -6
  247. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  248. package/dest/test-helpers/mock-pubsub.js +43 -12
  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 +3 -4
  252. package/dest/test-helpers/testbench-utils.d.ts +8 -3
  253. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  254. package/dest/test-helpers/testbench-utils.js +30 -4
  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 +78 -26
  258. package/dest/testbench/worker_client_manager.d.ts +10 -1
  259. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  260. package/dest/testbench/worker_client_manager.js +55 -3
  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 +68 -48
  265. package/src/client/interface.ts +26 -21
  266. package/src/client/p2p_client.ts +102 -135
  267. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +33 -14
  268. package/src/config.ts +146 -44
  269. package/src/errors/p2p-service.error.ts +11 -0
  270. package/src/errors/tx-pool.error.ts +12 -0
  271. package/src/index.ts +0 -1
  272. package/src/mem_pools/attestation_pool/attestation_pool.ts +25 -12
  273. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  274. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  275. package/src/mem_pools/index.ts +0 -3
  276. package/src/mem_pools/instrumentation.ts +17 -13
  277. package/src/mem_pools/tx_pool_v2/README.md +52 -28
  278. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
  279. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  280. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +7 -3
  281. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  282. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  283. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  284. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  285. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +8 -8
  286. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  287. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  288. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  289. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  290. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  291. package/src/mem_pools/tx_pool_v2/interfaces.ts +30 -10
  292. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +164 -28
  293. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
  294. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +34 -8
  295. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +353 -143
  296. package/src/msg_validators/attestation_validator/README.md +49 -0
  297. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  298. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  299. package/src/msg_validators/clock_tolerance.ts +72 -3
  300. package/src/msg_validators/proposal_validator/README.md +123 -0
  301. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +17 -4
  302. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +23 -7
  303. package/src/msg_validators/proposal_validator/proposal_validator.ts +79 -49
  304. package/src/msg_validators/tx_validator/README.md +119 -0
  305. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
  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/archive_cache.ts +1 -1
  309. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  310. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  311. package/src/msg_validators/tx_validator/factory.ts +394 -78
  312. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  313. package/src/msg_validators/tx_validator/gas_validator.ts +145 -33
  314. package/src/msg_validators/tx_validator/index.ts +2 -0
  315. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  316. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  317. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  318. package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
  319. package/src/services/data_store.ts +5 -13
  320. package/src/services/dummy_service.ts +13 -7
  321. package/src/services/encoding.ts +16 -8
  322. package/src/services/gossipsub/README.md +29 -14
  323. package/src/services/gossipsub/topic_score_params.ts +85 -17
  324. package/src/services/libp2p/libp2p_service.ts +240 -225
  325. package/src/services/peer-manager/metrics.ts +7 -0
  326. package/src/services/peer-manager/peer_manager.ts +45 -11
  327. package/src/services/peer-manager/peer_scoring.ts +27 -5
  328. package/src/services/reqresp/README.md +229 -0
  329. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  330. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +79 -112
  331. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  332. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  333. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  334. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  335. package/src/services/reqresp/config.ts +2 -2
  336. package/src/services/reqresp/interface.ts +21 -11
  337. package/src/services/reqresp/metrics.ts +0 -1
  338. package/src/services/reqresp/protocols/index.ts +0 -1
  339. package/src/services/reqresp/protocols/tx.ts +1 -3
  340. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  341. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  342. package/src/services/reqresp/reqresp.ts +40 -13
  343. package/src/services/service.ts +17 -3
  344. package/src/services/tx_collection/config.ts +42 -0
  345. package/src/services/tx_collection/fast_tx_collection.ts +71 -76
  346. package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
  347. package/src/services/tx_collection/file_store_tx_source.ts +69 -10
  348. package/src/services/tx_collection/instrumentation.ts +7 -1
  349. package/src/services/tx_collection/proposal_tx_collector.ts +9 -13
  350. package/src/services/tx_collection/request_tracker.ts +127 -0
  351. package/src/services/tx_collection/slow_tx_collection.ts +17 -13
  352. package/src/services/tx_collection/tx_collection.ts +46 -17
  353. package/src/services/tx_collection/tx_collection_sink.ts +15 -29
  354. package/src/services/tx_collection/tx_source.ts +28 -8
  355. package/src/services/tx_file_store/tx_file_store.ts +6 -4
  356. package/src/services/tx_provider.ts +2 -2
  357. package/src/test-helpers/make-test-p2p-clients.ts +1 -3
  358. package/src/test-helpers/mock-pubsub.ts +44 -11
  359. package/src/test-helpers/reqresp-nodes.ts +5 -8
  360. package/src/test-helpers/testbench-utils.ts +41 -6
  361. package/src/testbench/p2p_client_testbench_worker.ts +89 -29
  362. package/src/testbench/worker_client_manager.ts +68 -6
  363. package/src/util.ts +8 -2
  364. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  365. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  366. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  367. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  368. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  369. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  370. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  371. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  372. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  373. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  374. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  375. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  376. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  377. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  378. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  379. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  380. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  381. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  382. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  383. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  384. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  385. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  386. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  387. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  388. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  389. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  390. package/dest/mem_pools/tx_pool/index.js +0 -2
  391. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  392. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  393. package/dest/mem_pools/tx_pool/priority.js +0 -15
  394. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  395. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  396. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  397. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  398. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  399. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  400. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  401. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  402. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  403. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  404. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  405. package/dest/services/reqresp/protocols/block.js +0 -32
  406. package/src/mem_pools/tx_pool/README.md +0 -270
  407. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  408. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  409. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  410. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  411. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  412. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  413. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  414. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  415. package/src/mem_pools/tx_pool/index.ts +0 -2
  416. package/src/mem_pools/tx_pool/priority.ts +0 -20
  417. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  418. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  419. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  420. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -2,7 +2,7 @@ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  import type { BlockHeader } from '@aztec/stdlib/tx';
4
4
  import type { TxMetaData } from '../tx_metadata.js';
5
- import { type EvictionConfig, type EvictionRule, type PoolOperations, type PreAddPoolAccess, type PreAddResult, type PreAddRule } from './interfaces.js';
5
+ import { type EvictionConfig, type EvictionRule, type PoolOperations, type PreAddContext, type PreAddPoolAccess, type PreAddResult, type PreAddRule } from './interfaces.js';
6
6
  /**
7
7
  * Manages eviction rules for the transaction pool.
8
8
  * Coordinates pre-add rules (run during addPendingTxs) and post-event rules (run after events).
@@ -25,7 +25,7 @@ export declare class EvictionManager {
25
25
  * Runs all pre-add rules for an incoming transaction.
26
26
  * Returns combined result of all rules.
27
27
  */
28
- runPreAddRules(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess): Promise<PreAddResult>;
28
+ runPreAddRules(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess, context?: PreAddContext): Promise<PreAddResult>;
29
29
  /**
30
30
  * Runs post-event eviction after new transactions are added.
31
31
  */
@@ -44,4 +44,4 @@ export declare class EvictionManager {
44
44
  updateConfig(config: EvictionConfig): void;
45
45
  private runPostEventRules;
46
46
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZpY3Rpb25fbWFuYWdlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2V2aWN0aW9uX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUduQixLQUFLLFlBQVksRUFDakIsS0FBSyxjQUFjLEVBQ25CLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6Qjs7O0dBR0c7QUFDSCxxQkFBYSxlQUFlO0lBS3hCLE9BQU8sQ0FBQyxJQUFJO0lBQ1osT0FBTyxDQUFDLEdBQUc7SUFMYixPQUFPLENBQUMsV0FBVyxDQUFvQjtJQUN2QyxPQUFPLENBQUMsY0FBYyxDQUFzQjtJQUU1QyxZQUNVLElBQUksRUFBRSxjQUFjLEVBQ3BCLEdBQUcsRUFBRSxNQUFNLEVBQ2pCO0lBRUo7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FHekM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxHQUFHLElBQUksQ0FHckM7SUFFRDs7O09BR0c7SUFDRyxjQUFjLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQWdDbEc7SUFFRDs7T0FFRztJQUNHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVFoRjtJQUVEOztPQUVHO0lBQ0csa0JBQWtCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FTeEc7SUFFRDs7T0FFRztJQUNHLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU9sRTtJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLEdBQUcsSUFBSSxDQU96QztZQUVhLGlCQUFpQjtDQVloQyJ9
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZpY3Rpb25fbWFuYWdlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2V2aWN0aW9uX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUduQixLQUFLLFlBQVksRUFDakIsS0FBSyxjQUFjLEVBQ25CLEtBQUssYUFBYSxFQUNsQixLQUFLLGdCQUFnQixFQUNyQixLQUFLLFlBQVksRUFDakIsS0FBSyxVQUFVLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFFekI7OztHQUdHO0FBQ0gscUJBQWEsZUFBZTtJQUt4QixPQUFPLENBQUMsSUFBSTtJQUNaLE9BQU8sQ0FBQyxHQUFHO0lBTGIsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFDdkMsT0FBTyxDQUFDLGNBQWMsQ0FBc0I7SUFFNUMsWUFDVSxJQUFJLEVBQUUsY0FBYyxFQUNwQixHQUFHLEVBQUUsTUFBTSxFQUNqQjtJQUVKOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBR3pDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksR0FBRyxJQUFJLENBR3JDO0lBRUQ7OztPQUdHO0lBQ0csY0FBYyxDQUNsQixZQUFZLEVBQUUsVUFBVSxFQUN4QixVQUFVLEVBQUUsZ0JBQWdCLEVBQzVCLE9BQU8sQ0FBQyxFQUFFLGFBQWEsR0FDdEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQXNDdkI7SUFFRDs7T0FFRztJQUNHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVFoRjtJQUVEOztPQUVHO0lBQ0csa0JBQWtCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FTeEc7SUFFRDs7T0FFRztJQUNHLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU9sRTtJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLEdBQUcsSUFBSSxDQU96QztZQUVhLGlCQUFpQjtDQVloQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"eviction_manager.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,qBAAa,eAAe;IAKxB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,GAAG;IALb,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,cAAc,CAAsB;IAE5C,YACU,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACjB;IAEJ;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAGzC;IAED;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAGrC;IAED;;;OAGG;IACG,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgClG;IAED;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhF;IAED;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASxG;IAED;;OAEG;IACG,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlE;IAED;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAOzC;YAEa,iBAAiB;CAYhC"}
1
+ {"version":3,"file":"eviction_manager.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EAGhB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,qBAAa,eAAe;IAKxB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,GAAG;IALb,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,cAAc,CAAsB;IAE5C,YACU,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACjB;IAEJ;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAGzC;IAED;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAGrC;IAED;;;OAGG;IACG,cAAc,CAClB,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CAsCvB;IAED;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhF;IAED;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASxG;IAED;;OAEG;IACG,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlE;IAED;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAOzC;YAEa,iBAAiB;CAYhC"}
@@ -1,4 +1,4 @@
1
- import { EvictionEvent } from './interfaces.js';
1
+ import { EvictionEvent, TxPoolRejectionCode } from './interfaces.js';
2
2
  /**
3
3
  * Manages eviction rules for the transaction pool.
4
4
  * Coordinates pre-add rules (run during addPendingTxs) and post-event rules (run after events).
@@ -28,18 +28,23 @@ import { EvictionEvent } from './interfaces.js';
28
28
  /**
29
29
  * Runs all pre-add rules for an incoming transaction.
30
30
  * Returns combined result of all rules.
31
- */ async runPreAddRules(incomingMeta, poolAccess) {
32
- const allTxHashesToEvict = [];
31
+ */ async runPreAddRules(incomingMeta, poolAccess, context) {
32
+ const evictions = [];
33
+ const seen = new Set();
33
34
  for (const rule of this.preAddRules){
34
35
  try {
35
- const result = await rule.check(incomingMeta, poolAccess);
36
+ const result = await rule.check(incomingMeta, poolAccess, context);
36
37
  if (result.shouldIgnore) {
37
38
  return result;
38
39
  }
39
- // Collect txs to evict from all rules
40
+ // Collect txs to evict from all rules, tagged with the rule name
40
41
  for (const txHash of result.txHashesToEvict){
41
- if (!allTxHashesToEvict.includes(txHash)) {
42
- allTxHashesToEvict.push(txHash);
42
+ if (!seen.has(txHash)) {
43
+ seen.add(txHash);
44
+ evictions.push({
45
+ txHash,
46
+ reason: rule.name
47
+ });
43
48
  }
44
49
  }
45
50
  } catch (err) {
@@ -51,13 +56,17 @@ import { EvictionEvent } from './interfaces.js';
51
56
  return {
52
57
  shouldIgnore: true,
53
58
  txHashesToEvict: [],
54
- reason: `pre-add rule ${rule.name} error: ${err}`
59
+ reason: {
60
+ code: TxPoolRejectionCode.INTERNAL_ERROR,
61
+ message: `Pre-add rule ${rule.name} error: ${err}`
62
+ }
55
63
  };
56
64
  }
57
65
  }
58
66
  return {
59
67
  shouldIgnore: false,
60
- txHashesToEvict: allTxHashesToEvict
68
+ txHashesToEvict: evictions.map((e)=>e.txHash),
69
+ evictions
61
70
  };
62
71
  }
63
72
  /**
@@ -14,4 +14,4 @@ export declare class FeePayerBalanceEvictionRule implements EvictionRule {
14
14
  private evictForFeePayers;
15
15
  private getEvictionsForFeePayer;
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2VfZXZpY3Rpb25fcnVsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2ZlZV9wYXllcl9iYWxhbmNlX2V2aWN0aW9uX3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUk5RSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRzs7O0dBR0c7QUFDSCxxQkFBYSwyQkFBNEIsWUFBVyxZQUFZO0lBTWxELE9BQU8sQ0FBQyxVQUFVO0lBTDlCLFNBQWdCLElBQUksNkJBQTZCO0lBQ2pELFNBQWdCLE1BQU0sdUJBQXVCO0lBRTdDLE9BQU8sQ0FBQyxHQUFHLENBQWtFO0lBRTdFLFlBQW9CLFVBQVUsRUFBRSxzQkFBc0IsRUFBSTtJQUVwRCxLQUFLLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FnQ25GO1lBRWEsaUJBQWlCO1lBc0JqQix1QkFBdUI7Q0FzQ3RDIn0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2VfZXZpY3Rpb25fcnVsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2ZlZV9wYXllcl9iYWxhbmNlX2V2aWN0aW9uX3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUk5RSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRzs7O0dBR0c7QUFDSCxxQkFBYSwyQkFBNEIsWUFBVyxZQUFZO0lBTWxELE9BQU8sQ0FBQyxVQUFVO0lBTDlCLFNBQWdCLElBQUksNkJBQTZCO0lBQ2pELFNBQWdCLE1BQU0sdUJBQXVCO0lBRTdDLE9BQU8sQ0FBQyxHQUFHLENBQWtFO0lBRTdFLFlBQW9CLFVBQVUsRUFBRSxzQkFBc0IsRUFBSTtJQUVwRCxLQUFLLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FpQ25GO1lBRWEsaUJBQWlCO1lBeUJqQix1QkFBdUI7Q0FzQ3RDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"fee_payer_balance_eviction_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAI9E,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrG;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,YAAY;IAMlD,OAAO,CAAC,UAAU;IAL9B,SAAgB,IAAI,6BAA6B;IACjD,SAAgB,MAAM,uBAAuB;IAE7C,OAAO,CAAC,GAAG,CAAkE;IAE7E,YAAoB,UAAU,EAAE,sBAAsB,EAAI;IAEpD,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAgCnF;YAEa,iBAAiB;YAsBjB,uBAAuB;CAsCtC"}
1
+ {"version":3,"file":"fee_payer_balance_eviction_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAI9E,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrG;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,YAAY;IAMlD,OAAO,CAAC,UAAU;IAL9B,SAAgB,IAAI,6BAA6B;IACjD,SAAgB,MAAM,uBAAuB;IAE7C,OAAO,CAAC,GAAG,CAAkE;IAE7E,YAAoB,UAAU,EAAE,sBAAsB,EAAI;IAEpD,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAiCnF;YAEa,iBAAiB;YAyBjB,uBAAuB;CAsCtC"}
@@ -26,11 +26,12 @@ import { EvictionEvent } from './interfaces.js';
26
26
  }
27
27
  if (context.event === EvictionEvent.BLOCK_MINED) {
28
28
  const blockNumber = context.block.getBlockNumber();
29
- await this.worldState.syncImmediate(blockNumber);
29
+ const blockHash = await context.block.hash();
30
+ await this.worldState.syncImmediate(blockNumber, blockHash);
30
31
  return await this.evictForFeePayers(context.feePayers, this.worldState.getSnapshot(blockNumber), pool);
31
32
  }
32
33
  if (context.event === EvictionEvent.CHAIN_PRUNED) {
33
- await this.worldState.syncImmediate(context.blockNumber);
34
+ await this.worldState.syncImmediate();
34
35
  const feePayers = pool.getPendingFeePayers();
35
36
  return await this.evictForFeePayers(feePayers, this.worldState.getSnapshot(context.blockNumber), pool);
36
37
  }
@@ -57,7 +58,10 @@ import { EvictionEvent } from './interfaces.js';
57
58
  const publicStateSource = new DatabasePublicStateSource(db);
58
59
  const txsToEvict = (await Promise.all(feePayers.map((feePayer)=>this.getEvictionsForFeePayer(feePayer, publicStateSource, pool)))).flat();
59
60
  if (txsToEvict.length > 0) {
60
- await pool.deleteTxs(txsToEvict);
61
+ await pool.deleteTxs(txsToEvict, this.name);
62
+ this.log.debug(`Evicted ${txsToEvict.length} txs due to insufficient fee payer balance`, {
63
+ txHashes: txsToEvict
64
+ });
61
65
  }
62
66
  return {
63
67
  reason: this.reason,
@@ -1,5 +1,5 @@
1
1
  import { type TxMetaData } from '../tx_metadata.js';
2
- import type { PreAddPoolAccess, PreAddResult, PreAddRule } from './interfaces.js';
2
+ import { type PreAddContext, type PreAddPoolAccess, type PreAddResult, type PreAddRule } from './interfaces.js';
3
3
  /**
4
4
  * Pre-add rule that checks if a fee payer has sufficient balance to cover the incoming transaction.
5
5
  *
@@ -14,6 +14,6 @@ import type { PreAddPoolAccess, PreAddResult, PreAddRule } from './interfaces.js
14
14
  export declare class FeePayerBalancePreAddRule implements PreAddRule {
15
15
  readonly name = "FeePayerBalancePreAdd";
16
16
  private log;
17
- check(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess): Promise<PreAddResult>;
17
+ check(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess, _context?: PreAddContext): Promise<PreAddResult>;
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2VfcHJlX2FkZF9ydWxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL3R4X3Bvb2xfdjIvZXZpY3Rpb24vZmVlX3BheWVyX2JhbGFuY2VfcHJlX2FkZF9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBbUIsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEY7Ozs7Ozs7Ozs7R0FVRztBQUNILHFCQUFhLHlCQUEwQixZQUFXLFVBQVU7SUFDMUQsU0FBZ0IsSUFBSSwyQkFBMkI7SUFFL0MsT0FBTyxDQUFDLEdBQUcsQ0FBaUU7SUFFdEUsS0FBSyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0F3RnpGO0NBQ0YifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2VfcHJlX2FkZF9ydWxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL3R4X3Bvb2xfdjIvZXZpY3Rpb24vZmVlX3BheWVyX2JhbGFuY2VfcHJlX2FkZF9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBbUIsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsS0FBSyxhQUFhLEVBQ2xCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFFaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6Qjs7Ozs7Ozs7OztHQVVHO0FBQ0gscUJBQWEseUJBQTBCLFlBQVcsVUFBVTtJQUMxRCxTQUFnQixJQUFJLDJCQUEyQjtJQUUvQyxPQUFPLENBQUMsR0FBRyxDQUFpRTtJQUV0RSxLQUFLLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FnR25IO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"fee_payer_balance_pre_add_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElF;;;;;;;;;;GAUG;AACH,qBAAa,yBAA0B,YAAW,UAAU;IAC1D,SAAgB,IAAI,2BAA2B;IAE/C,OAAO,CAAC,GAAG,CAAiE;IAEtE,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAwFzF;CACF"}
1
+ {"version":3,"file":"fee_payer_balance_pre_add_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;GAUG;AACH,qBAAa,yBAA0B,YAAW,UAAU;IAC1D,SAAgB,IAAI,2BAA2B;IAE/C,OAAO,CAAC,GAAG,CAAiE;IAEtE,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAgGnH;CACF"}
@@ -1,5 +1,6 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { comparePriority } from '../tx_metadata.js';
3
+ import { TxPoolRejectionCode } from './interfaces.js';
3
4
  /**
4
5
  * Pre-add rule that checks if a fee payer has sufficient balance to cover the incoming transaction.
5
6
  *
@@ -13,7 +14,7 @@ import { comparePriority } from '../tx_metadata.js';
13
14
  */ export class FeePayerBalancePreAddRule {
14
15
  name = 'FeePayerBalancePreAdd';
15
16
  log = createLogger('p2p:tx_pool_v2:fee_payer_balance_pre_add_rule');
16
- async check(incomingMeta, poolAccess) {
17
+ async check(incomingMeta, poolAccess, _context) {
17
18
  // Get fee payer's on-chain balance
18
19
  const initialBalance = await poolAccess.getFeePayerBalance(incomingMeta.feePayer);
19
20
  // Get existing pending txs for this fee payer
@@ -22,6 +23,7 @@ import { comparePriority } from '../tx_metadata.js';
22
23
  const allTxs = [
23
24
  ...existingTxs.map((t)=>({
24
25
  txHash: t.txHash,
26
+ txHashBigInt: t.txHashBigInt,
25
27
  priorityFee: t.priorityFee,
26
28
  feeLimit: t.feeLimit,
27
29
  claimAmount: t.claimAmount,
@@ -29,6 +31,7 @@ import { comparePriority } from '../tx_metadata.js';
29
31
  })),
30
32
  {
31
33
  txHash: incomingMeta.txHash,
34
+ txHashBigInt: incomingMeta.txHashBigInt,
32
35
  priorityFee: incomingMeta.priorityFee,
33
36
  feeLimit: incomingMeta.feeLimit,
34
37
  claimAmount: incomingMeta.claimAmount,
@@ -61,7 +64,13 @@ import { comparePriority } from '../tx_metadata.js';
61
64
  return {
62
65
  shouldIgnore: true,
63
66
  txHashesToEvict: [],
64
- reason: `fee payer ${incomingMeta.feePayer} has insufficient balance`
67
+ reason: {
68
+ code: TxPoolRejectionCode.INSUFFICIENT_FEE_PAYER_BALANCE,
69
+ message: `Fee payer ${incomingMeta.feePayer} has insufficient balance. Balance at transaction: ${available}, required: ${incomingMeta.feeLimit}`,
70
+ currentBalance: initialBalance,
71
+ availableBalance: available,
72
+ feeLimit: incomingMeta.feeLimit
73
+ }
65
74
  };
66
75
  } else {
67
76
  // Existing tx cannot be covered after adding incoming - mark for eviction
@@ -74,8 +83,7 @@ import { comparePriority } from '../tx_metadata.js';
74
83
  this.log.warn(`Incoming tx ${incomingMeta.txHash} was not covered but also not ignored - this is a bug`);
75
84
  return {
76
85
  shouldIgnore: true,
77
- txHashesToEvict: [],
78
- reason: 'internal error: tx coverage not determined'
86
+ txHashesToEvict: []
79
87
  };
80
88
  }
81
89
  if (txsToEvict.length > 0) {
@@ -1,5 +1,5 @@
1
1
  export { EvictionManager } from './eviction_manager.js';
2
- export { type EvictionConfig, type EvictionContext, EvictionEvent, type EvictionResult, type EvictionRule, type PoolOperations, type PreAddPoolAccess, type PreAddResult, type PreAddRule, } from './interfaces.js';
2
+ export { type EvictionConfig, type EvictionContext, EvictionEvent, type EvictionResult, type EvictionRule, type PoolOperations, type PreAddContext, type PreAddPoolAccess, type PreAddResult, type PreAddRule, type TaggedEviction, TxPoolRejectionCode, type TxPoolRejectionError, } from './interfaces.js';
3
3
  export { NullifierConflictRule } from './nullifier_conflict_rule.js';
4
4
  export { FeePayerBalancePreAddRule } from './fee_payer_balance_pre_add_rule.js';
5
5
  export { LowPriorityPreAddRule } from './low_priority_pre_add_rule.js';
@@ -7,4 +7,4 @@ export { InvalidTxsAfterMiningRule } from './invalid_txs_after_mining_rule.js';
7
7
  export { InvalidTxsAfterReorgRule } from './invalid_txs_after_reorg_rule.js';
8
8
  export { FeePayerBalanceEvictionRule } from './fee_payer_balance_eviction_rule.js';
9
9
  export { LowPriorityEvictionRule } from './low_priority_eviction_rule.js';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbF92Mi9ldmljdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUNuQixLQUFLLGVBQWUsRUFDcEIsYUFBYSxFQUNiLEtBQUssY0FBYyxFQUNuQixLQUFLLFlBQVksRUFDakIsS0FBSyxjQUFjLEVBQ25CLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsR0FDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQyJ9
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbF92Mi9ldmljdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUNuQixLQUFLLGVBQWUsRUFDcEIsYUFBYSxFQUNiLEtBQUssY0FBYyxFQUNuQixLQUFLLFlBQVksRUFDakIsS0FBSyxjQUFjLEVBQ25CLEtBQUssYUFBYSxFQUNsQixLQUFLLGdCQUFnQixFQUNyQixLQUFLLFlBQVksRUFDakIsS0FBSyxVQUFVLEVBQ2YsS0FBSyxjQUFjLEVBQ25CLG1CQUFtQixFQUNuQixLQUFLLG9CQUFvQixHQUMxQixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,mBAAmB,EACnB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { EvictionManager } from './eviction_manager.js';
2
- export { EvictionEvent } from './interfaces.js';
2
+ export { EvictionEvent, TxPoolRejectionCode } from './interfaces.js';
3
3
  // Pre-add rules
4
4
  export { NullifierConflictRule } from './nullifier_conflict_rule.js';
5
5
  export { FeePayerBalancePreAddRule } from './fee_payer_balance_pre_add_rule.js';
@@ -52,6 +52,45 @@ export interface PreAddPoolAccess {
52
52
  /** Get the lowest priority pending tx metadata */
53
53
  getLowestPriorityPendingTx(): TxMetaData | undefined;
54
54
  }
55
+ /** A single eviction tagged with the rule that caused it. */
56
+ export interface TaggedEviction {
57
+ readonly txHash: string;
58
+ readonly reason: string;
59
+ }
60
+ /**
61
+ * Machine-readable rejection codes for pre-add rule rejections.
62
+ */
63
+ export declare const TxPoolRejectionCode: {
64
+ readonly LOW_PRIORITY_FEE: "LOW_PRIORITY_FEE";
65
+ readonly INSUFFICIENT_FEE_PAYER_BALANCE: "INSUFFICIENT_FEE_PAYER_BALANCE";
66
+ readonly NULLIFIER_CONFLICT: "NULLIFIER_CONFLICT";
67
+ readonly INTERNAL_ERROR: "INTERNAL_ERROR";
68
+ };
69
+ export type TxPoolRejectionCode = (typeof TxPoolRejectionCode)[keyof typeof TxPoolRejectionCode];
70
+ /** Structured rejection reason returned by pre-add rules. */
71
+ export type TxPoolRejectionError = {
72
+ code: typeof TxPoolRejectionCode.LOW_PRIORITY_FEE;
73
+ message: string;
74
+ minimumPriorityFee: bigint;
75
+ txPriorityFee: bigint;
76
+ } | {
77
+ code: typeof TxPoolRejectionCode.INSUFFICIENT_FEE_PAYER_BALANCE;
78
+ message: string;
79
+ currentBalance: bigint;
80
+ availableBalance: bigint;
81
+ feeLimit: bigint;
82
+ } | {
83
+ code: typeof TxPoolRejectionCode.NULLIFIER_CONFLICT;
84
+ message: string;
85
+ conflictingTxHash: string;
86
+ /** Minimum fee needed to replace the conflicting tx (only set when price bump applies). */
87
+ minimumPriceBumpFee?: bigint;
88
+ /** Incoming tx's priority fee. */
89
+ txPriorityFee?: bigint;
90
+ } | {
91
+ code: typeof TxPoolRejectionCode.INTERNAL_ERROR;
92
+ message: string;
93
+ };
55
94
  /**
56
95
  * Result of a pre-add check for a single transaction.
57
96
  */
@@ -60,8 +99,17 @@ export interface PreAddResult {
60
99
  readonly shouldIgnore: boolean;
61
100
  /** Tx hashes (as strings) that should be evicted if this tx is added */
62
101
  readonly txHashesToEvict: string[];
102
+ /** Evictions tagged with the rule name that produced them. Populated by EvictionManager. */
103
+ readonly evictions?: TaggedEviction[];
63
104
  /** Optional reason for ignoring */
64
- readonly reason?: string;
105
+ readonly reason?: TxPoolRejectionError;
106
+ }
107
+ /** Context passed to pre-add rules from addPendingTxs. */
108
+ export interface PreAddContext {
109
+ /** If true, compare priority fee only (no tx hash tiebreaker). Used for RPC submissions. */
110
+ feeComparisonOnly?: boolean;
111
+ /** Percentage-based price bump required for tx replacement. Only set for RPC submissions. */
112
+ priceBumpPercentage?: bigint;
65
113
  }
66
114
  /**
67
115
  * Pre-add rule interface. Rules check incoming txs before they're added to the pool.
@@ -73,9 +121,10 @@ export interface PreAddRule {
73
121
  * Check if incoming tx should be added and which existing txs to evict.
74
122
  * @param incomingMeta - Metadata for the incoming transaction
75
123
  * @param poolAccess - Read-only access to current pool state
124
+ * @param context - Optional context from addPendingTxs caller
76
125
  * @returns Result indicating whether to ignore and what to evict
77
126
  */
78
- check(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess): Promise<PreAddResult>;
127
+ check(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess, context?: PreAddContext): Promise<PreAddResult>;
79
128
  /**
80
129
  * Updates the configuration for this rule.
81
130
  */
@@ -96,8 +145,8 @@ export interface PoolOperations {
96
145
  getPendingTxCount(): number;
97
146
  /** Get the N lowest priority pending tx hashes */
98
147
  getLowestPriorityPending(limit: number): string[];
99
- /** Delete transactions by hash */
100
- deleteTxs(txHashes: string[]): Promise<void>;
148
+ /** Delete transactions by hash, with an optional reason for metrics */
149
+ deleteTxs(txHashes: string[], reason?: string): Promise<void>;
101
150
  }
102
151
  /**
103
152
  * Post-event eviction rule interface. Rules run after events to clean up the pool.
@@ -128,4 +177,4 @@ export declare function txHashToString(txHash: TxHash): string;
128
177
  * Converts an array of TxHash to string array.
129
178
  */
130
179
  export declare function txHashesToStrings(txHashes: TxHash[]): string[];
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsZUFBTyxNQUFNLGFBQWE7Ozs7Q0FJaEIsQ0FBQztBQUVYLE1BQU0sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sYUFBYSxDQUFDLENBQUMsTUFBTSxPQUFPLGFBQWEsQ0FBQyxDQUFDO0FBRW5GOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGVBQWUsR0FDdkI7SUFDRSxLQUFLLEVBQUUsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ3RDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN0QixTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDckIsR0FDRDtJQUNFLEtBQUssRUFBRSxPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDekMsV0FBVyxFQUFFLFdBQVcsQ0FBQztDQUMxQixHQUNEO0lBQ0UsS0FBSyxFQUFFLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxLQUFLLEVBQUUsV0FBVyxDQUFDO0lBQ25CLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN4QixTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDckIsQ0FBQztBQUVOOztHQUVHO0FBQ0gsTUFBTSxXQUFXLGNBQWM7SUFDN0IsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FB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
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsZUFBTyxNQUFNLGFBQWE7Ozs7Q0FJaEIsQ0FBQztBQUVYLE1BQU0sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sYUFBYSxDQUFDLENBQUMsTUFBTSxPQUFPLGFBQWEsQ0FBQyxDQUFDO0FBRW5GOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGVBQWUsR0FDdkI7SUFDRSxLQUFLLEVBQUUsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ3RDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN0QixTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDckIsR0FDRDtJQUNFLEtBQUssRUFBRSxPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDekMsV0FBVyxFQUFFLFdBQVcsQ0FBQztDQUMxQixHQUNEO0lBQ0UsS0FBSyxFQUFFLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxLQUFLLEVBQUUsV0FBVyxDQUFDO0lBQ25CLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN4QixTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDckIsQ0FBQztBQUVOOztHQUVHO0FBQ0gsTUFBTSxXQUFXLGNBQWM7SUFDN0IsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/interfaces.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,14 @@
5
5
  BLOCK_MINED: 'block_mined',
6
6
  CHAIN_PRUNED: 'chain_pruned'
7
7
  };
8
+ /**
9
+ * Machine-readable rejection codes for pre-add rule rejections.
10
+ */ export const TxPoolRejectionCode = {
11
+ LOW_PRIORITY_FEE: 'LOW_PRIORITY_FEE',
12
+ INSUFFICIENT_FEE_PAYER_BALANCE: 'INSUFFICIENT_FEE_PAYER_BALANCE',
13
+ NULLIFIER_CONFLICT: 'NULLIFIER_CONFLICT',
14
+ INTERNAL_ERROR: 'INTERNAL_ERROR'
15
+ };
8
16
  /**
9
17
  * Converts a TxHash to its string representation for use in eviction results.
10
18
  */ export function txHashToString(txHash) {
@@ -26,21 +26,23 @@ import { EvictionEvent } from './interfaces.js';
26
26
  for (const meta of pendingTxs){
27
27
  // Evict pending txs that share nullifiers with mined txs
28
28
  if (meta.nullifiers.some((nullifier)=>minedNullifiers.has(nullifier))) {
29
- this.log.verbose(`Evicting tx ${meta.txHash} from pool due to a duplicate nullifier with a mined tx`);
30
29
  txsToEvict.push(meta.txHash);
31
30
  continue;
32
31
  }
33
32
  // Evict pending txs with an expiration timestamp less than or equal to the mined block timestamp
34
- if (meta.includeByTimestamp <= timestamp) {
35
- this.log.verbose(`Evicting tx ${meta.txHash} from pool due to the tx being expired (includeByTimestamp: ${meta.includeByTimestamp}, mined block timestamp: ${timestamp})`);
33
+ if (meta.expirationTimestamp <= timestamp) {
34
+ this.log.verbose(`Evicting tx ${meta.txHash} from pool due to the tx being expired (expirationTimestamp: ${meta.expirationTimestamp}, mined block timestamp: ${timestamp})`);
36
35
  txsToEvict.push(meta.txHash);
37
36
  continue;
38
37
  }
39
38
  }
40
39
  if (txsToEvict.length > 0) {
41
- await pool.deleteTxs(txsToEvict);
40
+ this.log.info(`Evicted ${txsToEvict.length} invalid txs after block mined`);
41
+ await pool.deleteTxs(txsToEvict, this.name);
42
42
  }
43
- this.log.debug(`Evicted ${txsToEvict.length} invalid txs after block mined`);
43
+ this.log.debug(`Evicted ${txsToEvict.length} invalid txs after block mined`, {
44
+ txHashes: txsToEvict
45
+ });
44
46
  return {
45
47
  reason: 'block_mined_invalid_txs',
46
48
  success: true,
@@ -1,5 +1,5 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
1
  import { createLogger } from '@aztec/foundation/log';
2
+ import { BlockHash } from '@aztec/stdlib/block';
3
3
  import { MerkleTreeId } from '@aztec/stdlib/trees';
4
4
  import { EvictionEvent } from './interfaces.js';
5
5
  /**
@@ -34,12 +34,12 @@ import { EvictionEvent } from './interfaces.js';
34
34
  const blockHashStr = meta.anchorBlockHeaderHash;
35
35
  if (!txsByBlockHash.has(blockHashStr)) {
36
36
  txsByBlockHash.set(blockHashStr, []);
37
- uniqueBlockHashes.set(blockHashStr, Fr.fromHexString(blockHashStr));
37
+ uniqueBlockHashes.set(blockHashStr, BlockHash.fromString(blockHashStr));
38
38
  }
39
39
  txsByBlockHash.get(blockHashStr).push(meta.txHash);
40
40
  }
41
- // Ensure world state is synced to this block before accessing the snapshot
42
- await this.worldState.syncImmediate(context.blockNumber);
41
+ // Sync without a block number to ensure the world state processes the prune event.
42
+ await this.worldState.syncImmediate();
43
43
  const db = this.worldState.getSnapshot(context.blockNumber);
44
44
  // Check which blocks exist in the archive
45
45
  const blockHashArray = Array.from(uniqueBlockHashes.values());
@@ -61,14 +61,16 @@ import { EvictionEvent } from './interfaces.js';
61
61
  }
62
62
  }
63
63
  if (txsToEvict.length > 0) {
64
- this.log.verbose(`Evicting ${txsToEvict.length} txs from pool due to referencing pruned blocks`);
65
- await pool.deleteTxs(txsToEvict);
64
+ this.log.info(`Evicting ${txsToEvict.length} txs from pool due to referencing pruned blocks`);
65
+ await pool.deleteTxs(txsToEvict, this.name);
66
66
  }
67
67
  const keptCount = pendingTxs.length - txsToEvict.length;
68
68
  if (keptCount > 0) {
69
69
  this.log.verbose(`Kept ${keptCount} txs that did not reference pruned blocks`);
70
70
  }
71
- this.log.debug(`Evicted ${txsToEvict.length} invalid txs after reorg`);
71
+ this.log.debug(`Evicted ${txsToEvict.length} invalid txs after reorg`, {
72
+ txHashes: txsToEvict
73
+ });
72
74
  return {
73
75
  reason: 'reorg_invalid_txs',
74
76
  success: true,
@@ -1,7 +1,7 @@
1
1
  import type { EvictionConfig, EvictionContext, EvictionResult, EvictionRule, PoolOperations } from './interfaces.js';
2
2
  /**
3
3
  * Eviction rule that removes low-priority transactions when the pool exceeds configured limits.
4
- * Only triggers on TXS_ADDED events.
4
+ * Triggers on TXS_ADDED and CHAIN_PRUNED events.
5
5
  */
6
6
  export declare class LowPriorityEvictionRule implements EvictionRule {
7
7
  readonly name = "LowPriorityEviction";
@@ -13,4 +13,4 @@ export declare class LowPriorityEvictionRule implements EvictionRule {
13
13
  evict(context: EvictionContext, pool: PoolOperations): Promise<EvictionResult>;
14
14
  updateConfig(config: EvictionConfig): void;
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93X3ByaW9yaXR5X2V2aWN0aW9uX3J1bGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbF92Mi9ldmljdGlvbi9sb3dfcHJpb3JpdHlfZXZpY3Rpb25fcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHckg7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXdCLFlBQVcsWUFBWTtJQUMxRCxTQUFnQixJQUFJLHlCQUF5QjtJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUE2RDtJQUN4RSxPQUFPLENBQUMsV0FBVyxDQUFTO0lBRTVCLFlBQVksTUFBTSxFQUFFO1FBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBRTFDO0lBRUssS0FBSyxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBMkRuRjtJQUVELFlBQVksQ0FBQyxNQUFNLEVBQUUsY0FBYyxHQUFHLElBQUksQ0FJekM7Q0FDRiJ9
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93X3ByaW9yaXR5X2V2aWN0aW9uX3J1bGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbF92Mi9ldmljdGlvbi9sb3dfcHJpb3JpdHlfZXZpY3Rpb25fcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHckg7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXdCLFlBQVcsWUFBWTtJQUMxRCxTQUFnQixJQUFJLHlCQUF5QjtJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUE2RDtJQUN4RSxPQUFPLENBQUMsV0FBVyxDQUFTO0lBRTVCLFlBQVksTUFBTSxFQUFFO1FBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBRTFDO0lBRUssS0FBSyxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBZ0VuRjtJQUVELFlBQVksQ0FBQyxNQUFNLEVBQUUsY0FBYyxHQUFHLElBQUksQ0FJekM7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"low_priority_eviction_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrH;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,SAAgB,IAAI,yBAAyB;IAE7C,OAAO,CAAC,GAAG,CAA6D;IACxE,OAAO,CAAC,WAAW,CAAS;IAE5B,YAAY,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,EAE1C;IAEK,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CA2DnF;IAED,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIzC;CACF"}
1
+ {"version":3,"file":"low_priority_eviction_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrH;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,SAAgB,IAAI,yBAAyB;IAE7C,OAAO,CAAC,GAAG,CAA6D;IACxE,OAAO,CAAC,WAAW,CAAS;IAE5B,YAAY,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,EAE1C;IAEK,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAgEnF;IAED,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIzC;CACF"}
@@ -2,7 +2,7 @@ import { createLogger } from '@aztec/foundation/log';
2
2
  import { EvictionEvent } from './interfaces.js';
3
3
  /**
4
4
  * Eviction rule that removes low-priority transactions when the pool exceeds configured limits.
5
- * Only triggers on TXS_ADDED events.
5
+ * Triggers on TXS_ADDED and CHAIN_PRUNED events.
6
6
  */ export class LowPriorityEvictionRule {
7
7
  name = 'LowPriorityEviction';
8
8
  log = createLogger('p2p:tx_pool_v2:low_priority_eviction_rule');
@@ -11,7 +11,7 @@ import { EvictionEvent } from './interfaces.js';
11
11
  this.maxPoolSize = config.maxPoolSize;
12
12
  }
13
13
  async evict(context, pool) {
14
- if (context.event !== EvictionEvent.TXS_ADDED) {
14
+ if (context.event !== EvictionEvent.TXS_ADDED && context.event !== EvictionEvent.CHAIN_PRUNED) {
15
15
  return {
16
16
  reason: 'low_priority',
17
17
  success: true,
@@ -35,14 +35,22 @@ import { EvictionEvent } from './interfaces.js';
35
35
  txsEvicted: []
36
36
  };
37
37
  }
38
- this.log.verbose(`Evicting low priority txs. Pending tx count above limit: ${currentTxCount} > ${this.maxPoolSize}`);
38
+ this.log.info(`Evicting low priority txs. Pending tx count above limit: ${currentTxCount} > ${this.maxPoolSize}`);
39
39
  const numberToEvict = currentTxCount - this.maxPoolSize;
40
40
  const txsToEvict = pool.getLowestPriorityPending(numberToEvict);
41
41
  if (txsToEvict.length > 0) {
42
- await pool.deleteTxs(txsToEvict);
42
+ if (context.event === EvictionEvent.TXS_ADDED) {
43
+ const toEvictSet = new Set(txsToEvict);
44
+ const numNewTxsEvicted = context.newTxHashes.filter((newTxHash)=>toEvictSet.has(newTxHash)).length;
45
+ this.log.info(`Evicted ${txsToEvict.length} low priority txs, including ${numNewTxsEvicted} newly added txs`);
46
+ } else {
47
+ this.log.info(`Evicted ${txsToEvict.length} low priority txs after chain prune`);
48
+ }
49
+ await pool.deleteTxs(txsToEvict, this.name);
43
50
  }
44
- const numNewTxsEvicted = context.newTxHashes.filter((newTxHash)=>txsToEvict.includes(newTxHash)).length;
45
- this.log.verbose(`Evicted ${txsToEvict.length} low priority txs, including ${numNewTxsEvicted} newly added txs`);
51
+ this.log.debug(`Evicted ${txsToEvict.length} low priority txs`, {
52
+ txHashes: txsToEvict
53
+ });
46
54
  return {
47
55
  reason: 'low_priority',
48
56
  success: true,
@@ -1,5 +1,5 @@
1
- import type { TxMetaData } from '../tx_metadata.js';
2
- import type { EvictionConfig, PreAddPoolAccess, PreAddResult, PreAddRule } from './interfaces.js';
1
+ import { type TxMetaData } from '../tx_metadata.js';
2
+ import { type EvictionConfig, type PreAddContext, type PreAddPoolAccess, type PreAddResult, type PreAddRule } from './interfaces.js';
3
3
  /**
4
4
  * Pre-add rule that checks if the pool is at capacity and handles low-priority eviction.
5
5
  *
@@ -14,7 +14,7 @@ export declare class LowPriorityPreAddRule implements PreAddRule {
14
14
  constructor(config: {
15
15
  maxPoolSize: number;
16
16
  });
17
- check(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess): Promise<PreAddResult>;
17
+ check(incomingMeta: TxMetaData, poolAccess: PreAddPoolAccess, context?: PreAddContext): Promise<PreAddResult>;
18
18
  updateConfig(config: EvictionConfig): void;
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93X3ByaW9yaXR5X3ByZV9hZGRfcnVsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2xvd19wcmlvcml0eV9wcmVfYWRkX3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRzs7Ozs7O0dBTUc7QUFDSCxxQkFBYSxxQkFBc0IsWUFBVyxVQUFVO0lBQ3RELFNBQWdCLElBQUksdUJBQXVCO0lBRTNDLE9BQU8sQ0FBQyxHQUFHLENBQTREO0lBQ3ZFLE9BQU8sQ0FBQyxXQUFXLENBQVM7SUFFNUIsWUFBWSxNQUFNLEVBQUU7UUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFFMUM7SUFFRCxLQUFLLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQTBDbkY7SUFFRCxZQUFZLENBQUMsTUFBTSxFQUFFLGNBQWMsR0FBRyxJQUFJLENBSXpDO0NBQ0YifQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93X3ByaW9yaXR5X3ByZV9hZGRfcnVsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sX3YyL2V2aWN0aW9uL2xvd19wcmlvcml0eV9wcmVfYWRkX3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssVUFBVSxFQUEyQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdGLE9BQU8sRUFDTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyxhQUFhLEVBQ2xCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFFaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6Qjs7Ozs7O0dBTUc7QUFDSCxxQkFBYSxxQkFBc0IsWUFBVyxVQUFVO0lBQ3RELFNBQWdCLElBQUksdUJBQXVCO0lBRTNDLE9BQU8sQ0FBQyxHQUFHLENBQTREO0lBQ3ZFLE9BQU8sQ0FBQyxXQUFXLENBQVM7SUFFNUIsWUFBWSxNQUFNLEVBQUU7UUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFFMUM7SUFFRCxLQUFLLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0E4RDVHO0lBRUQsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLEdBQUcsSUFBSSxDQUl6QztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"low_priority_pre_add_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElG;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,UAAU;IACtD,SAAgB,IAAI,uBAAuB;IAE3C,OAAO,CAAC,GAAG,CAA4D;IACvE,OAAO,CAAC,WAAW,CAAS;IAE5B,YAAY,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,EAE1C;IAED,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0CnF;IAED,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIzC;CACF"}
1
+ {"version":3,"file":"low_priority_pre_add_rule.d.ts","sourceRoot":"","sources":["../../../../src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,UAAU;IACtD,SAAgB,IAAI,uBAAuB;IAE3C,OAAO,CAAC,GAAG,CAA4D;IACvE,OAAO,CAAC,WAAW,CAAS;IAE5B,YAAY,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,EAE1C;IAED,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA8D5G;IAED,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIzC;CACF"}