@aztec/p2p 0.0.1-commit.d431d1c → 0.0.1-commit.dbf9cec

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 (476) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +10 -10
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +45 -18
  7. package/dest/client/interface.d.ts +46 -33
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +41 -51
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +156 -200
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  18. package/dest/config.d.ts +35 -7
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +21 -7
  21. package/dest/errors/tx-pool.error.d.ts +8 -0
  22. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  23. package/dest/errors/tx-pool.error.js +9 -0
  24. package/dest/index.d.ts +2 -1
  25. package/dest/index.d.ts.map +1 -1
  26. package/dest/index.js +1 -0
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  33. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  34. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/index.js +1 -2
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  39. package/dest/mem_pools/index.d.ts +3 -2
  40. package/dest/mem_pools/index.d.ts.map +1 -1
  41. package/dest/mem_pools/index.js +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +2 -2
  45. package/dest/mem_pools/interface.d.ts +5 -5
  46. package/dest/mem_pools/interface.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -3
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +3 -2
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +3 -2
  52. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +3 -3
  54. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +8 -1
  56. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  57. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +3 -3
  58. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  60. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  61. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  63. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  64. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  66. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  67. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  99. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  100. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  102. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  103. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  105. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +211 -0
  106. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +119 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +193 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  114. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  115. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  116. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +354 -0
  117. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  121. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  122. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +905 -0
  123. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
  124. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/attestation_validator/attestation_validator.js +40 -9
  126. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
  127. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
  129. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  130. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  131. package/dest/msg_validators/clock_tolerance.js +37 -0
  132. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
  133. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  134. package/dest/msg_validators/proposal_validator/proposal_validator.js +46 -15
  135. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
  136. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  137. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +66 -11
  138. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  139. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  140. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  141. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  142. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  144. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  145. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  146. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  147. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  148. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  149. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  150. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  151. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  152. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  153. package/dest/msg_validators/tx_validator/factory.d.ts +118 -5
  154. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  155. package/dest/msg_validators/tx_validator/factory.js +228 -57
  156. package/dest/msg_validators/tx_validator/gas_validator.d.ts +59 -3
  157. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  158. package/dest/msg_validators/tx_validator/gas_validator.js +76 -38
  159. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  160. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  161. package/dest/msg_validators/tx_validator/index.js +1 -0
  162. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  163. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  165. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  166. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  167. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  168. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  169. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  171. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  172. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  174. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  175. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  177. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  178. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  179. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  180. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  181. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  182. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  183. package/dest/services/data_store.d.ts +1 -1
  184. package/dest/services/data_store.d.ts.map +1 -1
  185. package/dest/services/data_store.js +10 -6
  186. package/dest/services/discv5/discV5_service.js +1 -1
  187. package/dest/services/dummy_service.d.ts +24 -4
  188. package/dest/services/dummy_service.d.ts.map +1 -1
  189. package/dest/services/dummy_service.js +46 -1
  190. package/dest/services/encoding.d.ts +3 -3
  191. package/dest/services/encoding.d.ts.map +1 -1
  192. package/dest/services/encoding.js +11 -10
  193. package/dest/services/gossipsub/index.d.ts +3 -0
  194. package/dest/services/gossipsub/index.d.ts.map +1 -0
  195. package/dest/services/gossipsub/index.js +2 -0
  196. package/dest/services/gossipsub/scoring.d.ts +21 -3
  197. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  198. package/dest/services/gossipsub/scoring.js +24 -7
  199. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  200. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  201. package/dest/services/gossipsub/topic_score_params.js +346 -0
  202. package/dest/services/index.d.ts +2 -1
  203. package/dest/services/index.d.ts.map +1 -1
  204. package/dest/services/index.js +1 -0
  205. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  206. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  207. package/dest/services/libp2p/instrumentation.js +14 -3
  208. package/dest/services/libp2p/libp2p_service.d.ts +101 -43
  209. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  210. package/dest/services/libp2p/libp2p_service.js +455 -363
  211. package/dest/services/peer-manager/metrics.d.ts +2 -2
  212. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  213. package/dest/services/peer-manager/metrics.js +20 -5
  214. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  215. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  216. package/dest/services/peer-manager/peer_scoring.js +33 -4
  217. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  218. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  219. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +539 -0
  220. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  221. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  222. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  223. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  224. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  225. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  226. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  227. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  228. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  229. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +60 -0
  230. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  231. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +173 -0
  232. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  233. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  234. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  235. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  236. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  237. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  238. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  239. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  240. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  241. package/dest/services/reqresp/interface.d.ts +14 -3
  242. package/dest/services/reqresp/interface.d.ts.map +1 -1
  243. package/dest/services/reqresp/interface.js +17 -3
  244. package/dest/services/reqresp/metrics.d.ts +6 -5
  245. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  246. package/dest/services/reqresp/metrics.js +17 -5
  247. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  248. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  249. package/dest/services/reqresp/protocols/block_txs/bitvector.js +5 -0
  250. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  251. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  252. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  253. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  254. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  255. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  256. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  257. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  258. package/dest/services/reqresp/protocols/tx.js +20 -0
  259. package/dest/services/reqresp/reqresp.d.ts +6 -1
  260. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  261. package/dest/services/reqresp/reqresp.js +71 -27
  262. package/dest/services/service.d.ts +42 -3
  263. package/dest/services/service.d.ts.map +1 -1
  264. package/dest/services/tx_collection/config.d.ts +22 -1
  265. package/dest/services/tx_collection/config.d.ts.map +1 -1
  266. package/dest/services/tx_collection/config.js +55 -1
  267. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  268. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  269. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  270. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  271. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  272. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  273. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  274. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  275. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  276. package/dest/services/tx_collection/index.d.ts +3 -1
  277. package/dest/services/tx_collection/index.d.ts.map +1 -1
  278. package/dest/services/tx_collection/index.js +2 -0
  279. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  280. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  281. package/dest/services/tx_collection/instrumentation.js +10 -2
  282. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  283. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  284. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  285. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  286. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  287. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  288. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
  289. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  290. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  291. package/dest/services/tx_collection/tx_collection.d.ts +29 -16
  292. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  293. package/dest/services/tx_collection/tx_collection.js +79 -7
  294. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  295. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  296. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  297. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  298. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  299. package/dest/services/tx_collection/tx_source.js +19 -2
  300. package/dest/services/tx_file_store/config.d.ts +16 -0
  301. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  302. package/dest/services/tx_file_store/config.js +22 -0
  303. package/dest/services/tx_file_store/index.d.ts +4 -0
  304. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  305. package/dest/services/tx_file_store/index.js +3 -0
  306. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  307. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  308. package/dest/services/tx_file_store/instrumentation.js +29 -0
  309. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  310. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  311. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  312. package/dest/services/tx_provider.d.ts +6 -6
  313. package/dest/services/tx_provider.d.ts.map +1 -1
  314. package/dest/services/tx_provider.js +9 -8
  315. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  316. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  317. package/dest/services/tx_provider_instrumentation.js +5 -5
  318. package/dest/test-helpers/index.d.ts +3 -1
  319. package/dest/test-helpers/index.d.ts.map +1 -1
  320. package/dest/test-helpers/index.js +2 -0
  321. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  322. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  323. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  324. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  325. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  326. package/dest/test-helpers/mock-pubsub.js +105 -4
  327. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  328. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  329. package/dest/test-helpers/reqresp-nodes.js +4 -3
  330. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  331. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  332. package/dest/test-helpers/test_tx_provider.js +41 -0
  333. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  334. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  335. package/dest/test-helpers/testbench-utils.js +366 -0
  336. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  337. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  338. package/dest/testbench/p2p_client_testbench_worker.js +219 -137
  339. package/dest/testbench/worker_client_manager.d.ts +51 -6
  340. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  341. package/dest/testbench/worker_client_manager.js +226 -44
  342. package/dest/util.d.ts +2 -2
  343. package/dest/util.d.ts.map +1 -1
  344. package/package.json +14 -14
  345. package/src/bootstrap/bootstrap.ts +7 -4
  346. package/src/client/factory.ts +83 -36
  347. package/src/client/interface.ts +56 -34
  348. package/src/client/p2p_client.ts +196 -251
  349. package/src/client/test/tx_proposal_collector/README.md +227 -0
  350. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
  351. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  352. package/src/config.ts +47 -11
  353. package/src/errors/tx-pool.error.ts +12 -0
  354. package/src/index.ts +1 -0
  355. package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
  356. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  357. package/src/mem_pools/attestation_pool/index.ts +9 -2
  358. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  359. package/src/mem_pools/index.ts +4 -1
  360. package/src/mem_pools/instrumentation.ts +2 -1
  361. package/src/mem_pools/interface.ts +4 -4
  362. package/src/mem_pools/tx_pool/README.md +1 -1
  363. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +2 -2
  364. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +2 -1
  365. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +2 -1
  366. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +10 -7
  367. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  368. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  369. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  370. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  371. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  372. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  373. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  374. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  375. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  376. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  377. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  378. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  379. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  380. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  381. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  382. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  383. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  384. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  385. package/src/mem_pools/tx_pool_v2/interfaces.ts +242 -0
  386. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +297 -0
  387. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  388. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  389. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  390. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1083 -0
  391. package/src/msg_validators/attestation_validator/attestation_validator.ts +25 -13
  392. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -10
  393. package/src/msg_validators/clock_tolerance.ts +51 -0
  394. package/src/msg_validators/proposal_validator/proposal_validator.ts +21 -14
  395. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +53 -14
  396. package/src/msg_validators/tx_validator/README.md +115 -0
  397. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  398. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  399. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  400. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  401. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  402. package/src/msg_validators/tx_validator/factory.ts +372 -55
  403. package/src/msg_validators/tx_validator/gas_validator.ts +98 -29
  404. package/src/msg_validators/tx_validator/index.ts +1 -0
  405. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  406. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  407. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  408. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  409. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
  410. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  411. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  412. package/src/services/data_store.ts +10 -7
  413. package/src/services/discv5/discV5_service.ts +1 -1
  414. package/src/services/dummy_service.ts +59 -2
  415. package/src/services/encoding.ts +9 -9
  416. package/src/services/gossipsub/README.md +641 -0
  417. package/src/services/gossipsub/index.ts +2 -0
  418. package/src/services/gossipsub/scoring.ts +29 -5
  419. package/src/services/gossipsub/topic_score_params.ts +487 -0
  420. package/src/services/index.ts +1 -0
  421. package/src/services/libp2p/instrumentation.ts +15 -2
  422. package/src/services/libp2p/libp2p_service.ts +505 -396
  423. package/src/services/peer-manager/metrics.ts +21 -4
  424. package/src/services/peer-manager/peer_scoring.ts +29 -1
  425. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  426. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +678 -0
  427. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  428. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  429. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  430. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +244 -0
  431. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  432. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  433. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  434. package/src/services/reqresp/interface.ts +31 -3
  435. package/src/services/reqresp/metrics.ts +34 -9
  436. package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
  437. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  438. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  439. package/src/services/reqresp/protocols/tx.ts +22 -0
  440. package/src/services/reqresp/reqresp.ts +82 -23
  441. package/src/services/service.ts +55 -2
  442. package/src/services/tx_collection/config.ts +83 -1
  443. package/src/services/tx_collection/fast_tx_collection.ts +93 -47
  444. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  445. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  446. package/src/services/tx_collection/index.ts +6 -0
  447. package/src/services/tx_collection/instrumentation.ts +17 -2
  448. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  449. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  450. package/src/services/tx_collection/slow_tx_collection.ts +68 -35
  451. package/src/services/tx_collection/tx_collection.ts +121 -24
  452. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  453. package/src/services/tx_collection/tx_source.ts +22 -3
  454. package/src/services/tx_file_store/config.ts +37 -0
  455. package/src/services/tx_file_store/index.ts +3 -0
  456. package/src/services/tx_file_store/instrumentation.ts +36 -0
  457. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  458. package/src/services/tx_provider.ts +12 -11
  459. package/src/services/tx_provider_instrumentation.ts +11 -5
  460. package/src/test-helpers/index.ts +2 -0
  461. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  462. package/src/test-helpers/mock-pubsub.ts +146 -9
  463. package/src/test-helpers/reqresp-nodes.ts +4 -6
  464. package/src/test-helpers/test_tx_provider.ts +64 -0
  465. package/src/test-helpers/testbench-utils.ts +430 -0
  466. package/src/testbench/p2p_client_testbench_worker.ts +333 -131
  467. package/src/testbench/worker_client_manager.ts +304 -47
  468. package/src/util.ts +7 -1
  469. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  470. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  471. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  472. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  473. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  474. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  475. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  476. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -0,0 +1,193 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
+ import { BlockHash } from '@aztec/stdlib/block';
5
+ import { Gas } from '@aztec/stdlib/gas';
6
+ import { TxHash } from '@aztec/stdlib/tx';
7
+ import { getFeePayerBalanceDelta } from '../../msg_validators/tx_validator/fee_payer_balance.js';
8
+ import { getTxPriorityFee } from '../tx_pool/priority.js';
9
+ import { TxPoolRejectionCode } from './eviction/interfaces.js';
10
+ /**
11
+ * Builds TxMetaData from a full Tx object.
12
+ * Extracts all relevant fields for efficient in-memory storage and querying.
13
+ * Fr values are captured in closures for zero-cost re-validation.
14
+ */ export async function buildTxMetaData(tx) {
15
+ const txHashObj = tx.getTxHash();
16
+ const txHash = txHashObj.toString();
17
+ const txHashBigInt = txHashObj.toBigInt();
18
+ const nullifierFrs = tx.data.getNonEmptyNullifiers();
19
+ const nullifiers = nullifierFrs.map((n)=>n.toString());
20
+ const anchorBlockHeaderHashFr = await tx.data.constants.anchorBlockHeader.hash();
21
+ const anchorBlockHeaderHash = anchorBlockHeaderHashFr.toString();
22
+ const expirationTimestamp = tx.data.expirationTimestamp;
23
+ const anchorBlockNumber = tx.data.constants.anchorBlockHeader.globalVariables.blockNumber;
24
+ const priorityFee = getTxPriorityFee(tx);
25
+ const feePayer = tx.data.feePayer.toString();
26
+ const { feeLimit, claimAmount } = await getFeePayerBalanceDelta(tx, ProtocolContractAddress.FeeJuice);
27
+ const estimatedSizeBytes = estimateTxMetaDataSize(nullifiers.length);
28
+ return {
29
+ txHash,
30
+ txHashBigInt,
31
+ anchorBlockHeaderHash,
32
+ priorityFee,
33
+ feePayer,
34
+ claimAmount,
35
+ feeLimit,
36
+ nullifiers,
37
+ expirationTimestamp,
38
+ receivedAt: 0,
39
+ estimatedSizeBytes,
40
+ data: {
41
+ getNonEmptyNullifiers: ()=>nullifierFrs,
42
+ expirationTimestamp,
43
+ forPublic: !!tx.data.forPublic,
44
+ constants: {
45
+ anchorBlockHeader: {
46
+ hash: ()=>Promise.resolve(anchorBlockHeaderHashFr),
47
+ globalVariables: {
48
+ blockNumber: anchorBlockNumber
49
+ }
50
+ },
51
+ txContext: {
52
+ gasSettings: {
53
+ gasLimits: tx.data.constants.txContext.gasSettings.gasLimits
54
+ }
55
+ }
56
+ }
57
+ }
58
+ };
59
+ }
60
+ // V8 JS object overhead (~64 bytes for a plain object with hidden class).
61
+ // String overhead: ~32 bytes header + 1 byte per ASCII char (V8 one-byte strings).
62
+ // Hex string (0x + 64 hex chars = 66 chars): ~98 bytes per string.
63
+ // bigint: ~32 bytes. number: 8 bytes. Fr: ~80 bytes (32 data + object overhead).
64
+ const OBJECT_OVERHEAD = 64;
65
+ const HEX_STRING_BYTES = 98;
66
+ const BIGINT_BYTES = 32;
67
+ const FR_BYTES = 80;
68
+ // Fixed cost: object shell + txHash + anchorBlockHeaderHash + feePayer (3 hex strings)
69
+ // + txHashBigInt + priorityFee + claimAmount + feeLimit + includeByTimestamp (5 bigints)
70
+ // + receivedAt (number, 8 bytes) + estimatedSizeBytes (number, 8 bytes)
71
+ // + data closure object (~OBJECT_OVERHEAD + anchorBlockHeaderHashFr Fr + anchorBlockNumber number)
72
+ const FIXED_METADATA_BYTES = OBJECT_OVERHEAD + 3 * HEX_STRING_BYTES + 5 * BIGINT_BYTES + 8 + 8 + OBJECT_OVERHEAD + FR_BYTES + 8;
73
+ /** Estimates the in-memory size of a TxMetaData object based on the number of nullifiers. */ function estimateTxMetaDataSize(nullifierCount) {
74
+ // Per nullifier: one hex string in nullifiers[] + one Fr in the captured nullifierFrs[]
75
+ return FIXED_METADATA_BYTES + nullifierCount * (HEX_STRING_BYTES + FR_BYTES);
76
+ }
77
+ /** Converts a txHash bigint back to the canonical 0x-prefixed 64-char hex string. */ export function txHashFromBigInt(value) {
78
+ return TxHash.fromBigInt(value).toString();
79
+ }
80
+ /**
81
+ * Compares two priority fees in ascending order.
82
+ * Returns negative if a < b, positive if a > b, 0 if equal.
83
+ */ export function compareFee(a, b) {
84
+ return a < b ? -1 : a > b ? 1 : 0;
85
+ }
86
+ /**
87
+ * Compares two tx hashes in ascending order.
88
+ * Uses field element comparison for deterministic ordering.
89
+ * Returns negative if a < b, positive if a > b, 0 if equal.
90
+ */ export function compareTxHash(a, b) {
91
+ return Fr.cmpAsBigInt(a, b);
92
+ }
93
+ /**
94
+ * Compares two transactions by priority fee, with txHash as tiebreaker.
95
+ * Returns negative if a < b, positive if a > b, 0 if equal.
96
+ * Use with sort() for ascending order, or negate/reverse for descending.
97
+ */ export function comparePriority(a, b) {
98
+ const feeComparison = compareFee(a.priorityFee, b.priorityFee);
99
+ if (feeComparison !== 0) {
100
+ return feeComparison;
101
+ }
102
+ return compareTxHash(a.txHashBigInt, b.txHashBigInt);
103
+ }
104
+ /**
105
+ * Checks for nullifier conflicts between an incoming transaction and existing pool state.
106
+ *
107
+ * When the incoming tx shares nullifiers with existing pending txs:
108
+ * - If the incoming tx has strictly higher priority, mark conflicting txs for eviction
109
+ * - If any conflicting tx has equal or higher priority, ignore the incoming tx
110
+ *
111
+ * @param incomingMeta - Metadata for the incoming transaction
112
+ * @param getTxHashByNullifier - Accessor to find which tx uses a nullifier
113
+ * @param getMetadata - Accessor to get metadata for a tx hash
114
+ */ export function checkNullifierConflict(incomingMeta, getTxHashByNullifier, getMetadata) {
115
+ const txHashesToEvict = [];
116
+ for (const nullifier of incomingMeta.nullifiers){
117
+ const conflictingHashStr = getTxHashByNullifier(nullifier);
118
+ if (!conflictingHashStr || conflictingHashStr === incomingMeta.txHash) {
119
+ continue;
120
+ }
121
+ // Skip if already marked for eviction
122
+ if (txHashesToEvict.includes(conflictingHashStr)) {
123
+ continue;
124
+ }
125
+ const conflictingMeta = getMetadata(conflictingHashStr);
126
+ if (!conflictingMeta) {
127
+ continue;
128
+ }
129
+ // If incoming tx has strictly higher priority, mark for eviction
130
+ // Otherwise, ignore incoming tx (ties go to existing tx)
131
+ // Use comparePriority for deterministic ordering (includes txHash as tiebreaker)
132
+ if (comparePriority(incomingMeta, conflictingMeta) > 0) {
133
+ txHashesToEvict.push(conflictingHashStr);
134
+ } else {
135
+ return {
136
+ shouldIgnore: true,
137
+ txHashesToEvict: [],
138
+ reason: {
139
+ code: TxPoolRejectionCode.NULLIFIER_CONFLICT,
140
+ message: `Nullifier conflict with existing tx ${conflictingHashStr}`,
141
+ conflictingTxHash: conflictingHashStr
142
+ }
143
+ };
144
+ }
145
+ }
146
+ return {
147
+ shouldIgnore: false,
148
+ txHashesToEvict
149
+ };
150
+ }
151
+ /** Creates a stub TxMetaValidationData for tests that don't exercise validators. */ export function stubTxMetaValidationData(overrides = {}) {
152
+ return {
153
+ getNonEmptyNullifiers: ()=>[],
154
+ expirationTimestamp: overrides.expirationTimestamp ?? 0n,
155
+ constants: {
156
+ anchorBlockHeader: {
157
+ hash: ()=>Promise.resolve(new BlockHash(Fr.ZERO)),
158
+ globalVariables: {
159
+ blockNumber: BlockNumber(0)
160
+ }
161
+ },
162
+ txContext: {
163
+ gasSettings: {
164
+ gasLimits: Gas.empty()
165
+ }
166
+ }
167
+ }
168
+ };
169
+ }
170
+ /** Creates a stub TxMetaData for tests. All fields have sensible defaults and can be overridden. */ export function stubTxMetaData(txHash, overrides = {}) {
171
+ const txHashBigInt = Fr.fromHexString(txHash).toBigInt();
172
+ // Normalize to canonical zero-padded hex so txHashFromBigInt(txHashBigInt) === normalizedTxHash
173
+ const normalizedTxHash = txHashFromBigInt(txHashBigInt);
174
+ const expirationTimestamp = overrides.expirationTimestamp ?? 0n;
175
+ return {
176
+ txHash: normalizedTxHash,
177
+ txHashBigInt,
178
+ anchorBlockHeaderHash: overrides.anchorBlockHeaderHash ?? '0x1234',
179
+ priorityFee: overrides.priorityFee ?? 100n,
180
+ feePayer: overrides.feePayer ?? '0xfeepayer',
181
+ claimAmount: overrides.claimAmount ?? 0n,
182
+ feeLimit: overrides.feeLimit ?? 100n,
183
+ nullifiers: overrides.nullifiers ?? [
184
+ `0x${normalizedTxHash.slice(2)}null1`
185
+ ],
186
+ expirationTimestamp,
187
+ receivedAt: 0,
188
+ estimatedSizeBytes: 0,
189
+ data: stubTxMetaValidationData({
190
+ expirationTimestamp
191
+ })
192
+ };
193
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Metrics types for tx pool benchmarks.
3
+ */
4
+ export declare enum TxPoolOperation {
5
+ ADD_PENDING_TXS = "addPendingTxs",
6
+ CAN_ADD_PENDING_TX = "canAddPendingTx",
7
+ GET_PENDING_TX_HASHES = "getPendingTxHashes",
8
+ GET_TX_BY_HASH = "getTxByHash",
9
+ GET_TXS_BY_HASH = "getTxsByHash",
10
+ HAS_TXS = "hasTxs",
11
+ HANDLE_MINED_BLOCK = "handleMinedBlock",
12
+ PREPARE_FOR_SLOT = "prepareForSlot",
13
+ HANDLE_PRUNED_BLOCKS = "handlePrunedBlocks",
14
+ GET_LOWEST_PRIORITY_PENDING = "getLowestPriorityPending",
15
+ HYDRATE_FROM_DATABASE = "hydrateFromDatabase"
16
+ }
17
+ /**
18
+ * Collects and formats tx pool benchmark metrics.
19
+ */
20
+ export declare class TxPoolBenchMetrics {
21
+ private metrics;
22
+ addMetric(operation: TxPoolOperation, poolSize: number, batchSize: number, value: number): void;
23
+ toPrettyString(): string;
24
+ toGithubActionBenchmarkJSON(indent?: number): string;
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcG9vbF9iZW5jaF9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL3R4X3Bvb2xfdjIvdHhfcG9vbF9iZW5jaF9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsb0JBQVksZUFBZTtJQUN6QixlQUFlLGtCQUFrQjtJQUNqQyxrQkFBa0Isb0JBQW9CO0lBQ3RDLHFCQUFxQix1QkFBdUI7SUFDNUMsY0FBYyxnQkFBZ0I7SUFDOUIsZUFBZSxpQkFBaUI7SUFDaEMsT0FBTyxXQUFXO0lBQ2xCLGtCQUFrQixxQkFBcUI7SUFDdkMsZ0JBQWdCLG1CQUFtQjtJQUNuQyxvQkFBb0IsdUJBQXVCO0lBQzNDLDJCQUEyQiw2QkFBNkI7SUFDeEQscUJBQXFCLHdCQUF3QjtDQUM5QztBQVNEOztHQUVHO0FBQ0gscUJBQWEsa0JBQWtCO0lBQzdCLE9BQU8sQ0FBQyxPQUFPLENBQXlCO0lBRWpDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUU5RjtJQUVNLGNBQWMsSUFBSSxNQUFNLENBd0I5QjtJQUVNLDJCQUEyQixDQUFDLE1BQU0sU0FBSSxHQUFHLE1BQU0sQ0FjckQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx_pool_bench_metrics.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,eAAe;IACzB,eAAe,kBAAkB;IACjC,kBAAkB,oBAAoB;IACtC,qBAAqB,uBAAuB;IAC5C,cAAc,gBAAgB;IAC9B,eAAe,iBAAiB;IAChC,OAAO,WAAW;IAClB,kBAAkB,qBAAqB;IACvC,gBAAgB,mBAAmB;IACnC,oBAAoB,uBAAuB;IAC3C,2BAA2B,6BAA6B;IACxD,qBAAqB,wBAAwB;CAC9C;AASD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAyB;IAEjC,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAE9F;IAEM,cAAc,IAAI,MAAM,CAwB9B;IAEM,2BAA2B,CAAC,MAAM,SAAI,GAAG,MAAM,CAcrD;CACF"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Metrics types for tx pool benchmarks.
3
+ */ export var TxPoolOperation = /*#__PURE__*/ function(TxPoolOperation) {
4
+ TxPoolOperation["ADD_PENDING_TXS"] = "addPendingTxs";
5
+ TxPoolOperation["CAN_ADD_PENDING_TX"] = "canAddPendingTx";
6
+ TxPoolOperation["GET_PENDING_TX_HASHES"] = "getPendingTxHashes";
7
+ TxPoolOperation["GET_TX_BY_HASH"] = "getTxByHash";
8
+ TxPoolOperation["GET_TXS_BY_HASH"] = "getTxsByHash";
9
+ TxPoolOperation["HAS_TXS"] = "hasTxs";
10
+ TxPoolOperation["HANDLE_MINED_BLOCK"] = "handleMinedBlock";
11
+ TxPoolOperation["PREPARE_FOR_SLOT"] = "prepareForSlot";
12
+ TxPoolOperation["HANDLE_PRUNED_BLOCKS"] = "handlePrunedBlocks";
13
+ TxPoolOperation["GET_LOWEST_PRIORITY_PENDING"] = "getLowestPriorityPending";
14
+ TxPoolOperation["HYDRATE_FROM_DATABASE"] = "hydrateFromDatabase";
15
+ return TxPoolOperation;
16
+ }({});
17
+ /**
18
+ * Collects and formats tx pool benchmark metrics.
19
+ */ export class TxPoolBenchMetrics {
20
+ metrics = [];
21
+ addMetric(operation, poolSize, batchSize, value) {
22
+ this.metrics.push({
23
+ operation,
24
+ poolSize,
25
+ batchSize,
26
+ value
27
+ });
28
+ }
29
+ toPrettyString() {
30
+ let pretty = 'TxPool Benchmark Metrics:\n';
31
+ pretty += '='.repeat(60) + '\n';
32
+ // Group by operation
33
+ const byOperation = new Map();
34
+ for (const metric of this.metrics){
35
+ if (!byOperation.has(metric.operation)) {
36
+ byOperation.set(metric.operation, []);
37
+ }
38
+ byOperation.get(metric.operation).push(metric);
39
+ }
40
+ for (const [operation, opMetrics] of byOperation){
41
+ pretty += `\n${operation}:\n`;
42
+ for (const metric of opMetrics){
43
+ const poolSizeStr = metric.poolSize > 0 ? `pool=${metric.poolSize}` : '';
44
+ const batchSizeStr = metric.batchSize > 0 ? `batch=${metric.batchSize}` : '';
45
+ const params = [
46
+ poolSizeStr,
47
+ batchSizeStr
48
+ ].filter(Boolean).join(', ');
49
+ pretty += ` ${params ? `(${params})` : ''}: ${metric.value.toFixed(3)} ms\n`;
50
+ }
51
+ }
52
+ return pretty;
53
+ }
54
+ toGithubActionBenchmarkJSON(indent = 2) {
55
+ const data = this.metrics.map((metric)=>{
56
+ const poolSizeStr = metric.poolSize > 0 ? `${metric.poolSize} txs in pool` : '';
57
+ const batchSizeStr = metric.batchSize > 0 ? `batch of ${metric.batchSize}` : '';
58
+ const params = [
59
+ poolSizeStr,
60
+ batchSizeStr
61
+ ].filter(Boolean).join('/');
62
+ return {
63
+ name: `TxPool/${metric.operation}${params ? `/${params}` : ''}`,
64
+ value: metric.value,
65
+ unit: 'ms'
66
+ };
67
+ });
68
+ return JSON.stringify(data, null, indent);
69
+ }
70
+ }
@@ -0,0 +1,108 @@
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
2
+ import type { L2BlockId } from '@aztec/stdlib/block';
3
+ import { type TxMetaData, type TxState } from './tx_metadata.js';
4
+ /**
5
+ * Manages in-memory indices for the transaction pool.
6
+ *
7
+ * Tracks transaction metadata and maintains several indices for efficient querying:
8
+ * - Metadata by txHash (primary store)
9
+ * - Nullifier to txHash mapping (pending txs only)
10
+ * - Fee payer to txHashes mapping (pending txs only)
11
+ * - Priority-ordered pending txs
12
+ * - Protected transaction tracking
13
+ *
14
+ * Key invariant: Only pending txs appear in nullifier/feePayer/priority indices.
15
+ */
16
+ export declare class TxPoolIndices {
17
+ #private;
18
+ /**
19
+ * Derives the transaction state from its metadata and protection status.
20
+ * A transaction is:
21
+ * - 'mined' if it has a minedL2BlockId
22
+ * - 'protected' if it's in the protectedTransactions map (but not mined)
23
+ * - 'pending' otherwise
24
+ */
25
+ getTxState(meta: TxMetaData): TxState;
26
+ getMetadata(txHash: string): TxMetaData | undefined;
27
+ has(txHash: string): boolean;
28
+ isEmpty(): boolean;
29
+ getTxCount(): number;
30
+ /**
31
+ * Iterates pending transaction hashes in priority order.
32
+ * @param order - 'desc' for highest priority first, 'asc' for lowest priority first
33
+ */
34
+ iteratePendingByPriority(order: 'asc' | 'desc', filter?: (hash: string) => boolean): Generator<string>;
35
+ /**
36
+ * Iterates pending transaction hashes in priority order, skipping txs received after maxReceivedAt.
37
+ * @param order - 'desc' for highest priority first, 'asc' for lowest priority first
38
+ * @param maxReceivedAt - Only yield txs with receivedAt <= this value
39
+ */
40
+ iterateEligiblePendingByPriority(order: 'asc' | 'desc', maxReceivedAt: number): Generator<string>;
41
+ /** Iterates all metadata entries */
42
+ iterateMetadata(): Generator<[string, TxMetaData]>;
43
+ /** Adds a new pending transaction to all indices */
44
+ addPending(meta: TxMetaData): void;
45
+ /** Adds a new protected transaction (not added to pending indices) */
46
+ addProtected(meta: TxMetaData, slot: SlotNumber): void;
47
+ /** Adds a new mined transaction (not added to pending indices) */
48
+ addMined(meta: TxMetaData): void;
49
+ /** Marks an existing transaction as mined and removes from pending indices */
50
+ markAsMined(meta: TxMetaData, blockId: L2BlockId): void;
51
+ /** Clears the mined status from a transaction */
52
+ markAsUnmined(meta: TxMetaData): void;
53
+ /**
54
+ * Updates protection status for an existing transaction.
55
+ * Removes from pending indices if transitioning from pending to protected.
56
+ */
57
+ updateProtection(txHash: string, slotNumber: SlotNumber): void;
58
+ /** Sets protection for a txHash that may not have metadata yet */
59
+ setProtection(txHash: string, slotNumber: SlotNumber): void;
60
+ /** Gets the protection slot for a txHash, if protected */
61
+ getProtectionSlot(txHash: string): SlotNumber | undefined;
62
+ /** Removes protection from tx hashes */
63
+ clearProtection(txHashes: string[]): void;
64
+ /** Removes a transaction from all indices */
65
+ remove(txHash: string): void;
66
+ /** Removes a transaction from pending indices only (not metadata) */
67
+ removeFromPendingIndices(meta: TxMetaData): void;
68
+ /** Adds a transaction to pending indices (used during conflict resolution) */
69
+ addToPendingIndices(meta: TxMetaData): void;
70
+ /** Gets all pending transactions for a given fee payer */
71
+ getFeePayerPendingTxs(feePayer: string): TxMetaData[];
72
+ /** Gets the count of pending transactions */
73
+ getPendingTxCount(): number;
74
+ /** Gets the lowest priority pending transaction hashes (up to limit) */
75
+ getLowestPriorityPending(limit: number): string[];
76
+ /** Gets the lowest priority pending transaction */
77
+ getLowestPriorityPendingTx(): TxMetaData | undefined;
78
+ /** Gets all pending transactions */
79
+ getPendingTxs(): TxMetaData[];
80
+ /** Gets all fee payers with pending transactions */
81
+ getPendingFeePayers(): string[];
82
+ /** Gets the txHash that uses a given nullifier (pending txs only) */
83
+ getTxHashByNullifier(nullifier: string): string | undefined;
84
+ /** Gets txHashes for a fee payer */
85
+ getTxHashesByFeePayer(feePayer: string): Set<string> | undefined;
86
+ /** Finds all transactions mined in blocks after the given block number */
87
+ findTxsMinedAfter(blockNumber: number): TxMetaData[];
88
+ /** Finds tx hashes mined at or before the given block number */
89
+ findTxsMinedAtOrBefore(blockNumber: number): string[];
90
+ /** Finds protected tx hashes from slots earlier than the given slot number */
91
+ findExpiredProtectedTxs(slotNumber: SlotNumber): string[];
92
+ /** Filters out transactions that are currently protected */
93
+ filterUnprotected(txs: TxMetaData[]): TxMetaData[];
94
+ /** Filters to transactions that have metadata and are not mined */
95
+ filterRestorable(txHashes: string[]): TxMetaData[];
96
+ /** Counts transactions by state and estimates total metadata memory usage */
97
+ countTxs(): {
98
+ pending: number;
99
+ protected: number;
100
+ mined: number;
101
+ totalMetadataBytes: number;
102
+ };
103
+ /** Returns the estimated total memory consumed by all metadata objects */
104
+ getTotalMetadataBytes(): number;
105
+ /** Gets all mined transactions with their block IDs */
106
+ getMinedTxs(): [string, L2BlockId][];
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcG9vbF9pbmRpY2VzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL3R4X3Bvb2xfdjIvdHhfcG9vbF9pbmRpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxPQUFPLEVBQStDLE1BQU0sa0JBQWtCLENBQUM7QUFFOUc7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxxQkFBYSxhQUFhOztJQWdCeEI7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQVFwQztJQUVELFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFVBQVUsR0FBRyxTQUFTLENBRWxEO0lBRUQsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUUzQjtJQUVELE9BQU8sSUFBSSxPQUFPLENBRWpCO0lBRUQsVUFBVSxJQUFJLE1BQU0sQ0FFbkI7SUFNRDs7O09BR0c7SUFDRix3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FpQnRHO0lBRUQ7Ozs7T0FJRztJQUNGLGdDQUFnQyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQU9qRztJQUVELG9DQUFvQztJQUNuQyxlQUFlLElBQUksU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBRWxEO0lBTUQsb0RBQW9EO0lBQ3BELFVBQVUsQ0FB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx_pool_indices.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool_v2/tx_pool_indices.ts"],"names":[],"mappings":"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"}