@aztec/p2p 0.0.1-commit.fcb71a6 → 0.0.1-commit.ff7989d6c

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 (524) 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 +7 -6
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +53 -14
  7. package/dest/client/interface.d.ts +58 -25
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +46 -51
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +601 -259
  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 +305 -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 +23 -9
  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 +111 -76
  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 +527 -287
  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 +9 -6
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/mocks.js +16 -12
  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 +5 -14
  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 +15 -10
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  51. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  53. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  54. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  56. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  57. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  62. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  65. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  66. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  68. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  70. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  71. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  73. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  74. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  76. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  77. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  109. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  110. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  111. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  112. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  113. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  114. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  115. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +211 -0
  116. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  117. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
  121. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  122. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  123. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  124. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  125. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  126. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
  127. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  128. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  129. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +896 -0
  133. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  134. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  135. package/dest/msg_validators/attestation_validator/attestation_validator.js +51 -18
  136. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
  137. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  138. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  139. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  140. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  141. package/dest/msg_validators/clock_tolerance.js +37 -0
  142. package/dest/msg_validators/index.d.ts +2 -2
  143. package/dest/msg_validators/index.d.ts.map +1 -1
  144. package/dest/msg_validators/index.js +1 -1
  145. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  146. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  147. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  148. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  149. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  150. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  151. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  152. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  153. package/dest/msg_validators/proposal_validator/index.js +3 -0
  154. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  155. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  156. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  157. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  158. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  159. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  160. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  161. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  163. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  165. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  166. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  167. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  168. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  169. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  171. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  172. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  174. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  175. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/factory.js +21 -11
  177. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  178. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  179. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  180. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  181. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  182. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  183. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  184. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  185. package/dest/msg_validators/tx_validator/index.js +1 -0
  186. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  187. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  188. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  189. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  190. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  191. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  192. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  193. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  194. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  195. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  196. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  197. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  198. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  199. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  200. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  201. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  202. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  203. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  204. package/dest/services/data_store.d.ts +1 -1
  205. package/dest/services/data_store.d.ts.map +1 -1
  206. package/dest/services/data_store.js +10 -6
  207. package/dest/services/discv5/discV5_service.js +1 -1
  208. package/dest/services/dummy_service.d.ts +28 -3
  209. package/dest/services/dummy_service.d.ts.map +1 -1
  210. package/dest/services/dummy_service.js +51 -0
  211. package/dest/services/encoding.d.ts +2 -2
  212. package/dest/services/encoding.d.ts.map +1 -1
  213. package/dest/services/encoding.js +9 -7
  214. package/dest/services/gossipsub/index.d.ts +3 -0
  215. package/dest/services/gossipsub/index.d.ts.map +1 -0
  216. package/dest/services/gossipsub/index.js +2 -0
  217. package/dest/services/gossipsub/scoring.d.ts +21 -3
  218. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  219. package/dest/services/gossipsub/scoring.js +24 -7
  220. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  221. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  222. package/dest/services/gossipsub/topic_score_params.js +346 -0
  223. package/dest/services/index.d.ts +2 -1
  224. package/dest/services/index.d.ts.map +1 -1
  225. package/dest/services/index.js +1 -0
  226. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  227. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  228. package/dest/services/libp2p/instrumentation.js +30 -72
  229. package/dest/services/libp2p/libp2p_service.d.ts +106 -33
  230. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  231. package/dest/services/libp2p/libp2p_service.js +984 -317
  232. package/dest/services/peer-manager/metrics.d.ts +2 -2
  233. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  234. package/dest/services/peer-manager/metrics.js +21 -26
  235. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  236. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  237. package/dest/services/peer-manager/peer_manager.js +0 -10
  238. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  239. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  240. package/dest/services/peer-manager/peer_scoring.js +32 -6
  241. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  242. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  243. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +562 -0
  244. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  245. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  246. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  247. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  248. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  249. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  250. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  251. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  252. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  253. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  254. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  255. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  256. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  257. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  258. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  259. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  260. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  261. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  262. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  263. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  264. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  265. package/dest/services/reqresp/constants.d.ts +12 -0
  266. package/dest/services/reqresp/constants.d.ts.map +1 -0
  267. package/dest/services/reqresp/constants.js +7 -0
  268. package/dest/services/reqresp/interface.d.ts +12 -1
  269. package/dest/services/reqresp/interface.d.ts.map +1 -1
  270. package/dest/services/reqresp/interface.js +15 -1
  271. package/dest/services/reqresp/metrics.d.ts +6 -5
  272. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  273. package/dest/services/reqresp/metrics.js +17 -21
  274. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  275. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  276. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  277. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  278. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  279. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  280. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  281. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  282. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  283. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  284. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  285. package/dest/services/reqresp/protocols/status.js +4 -1
  286. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  287. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/tx.js +20 -0
  289. package/dest/services/reqresp/reqresp.d.ts +6 -1
  290. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  291. package/dest/services/reqresp/reqresp.js +471 -50
  292. package/dest/services/service.d.ts +55 -3
  293. package/dest/services/service.d.ts.map +1 -1
  294. package/dest/services/tx_collection/config.d.ts +22 -1
  295. package/dest/services/tx_collection/config.d.ts.map +1 -1
  296. package/dest/services/tx_collection/config.js +55 -1
  297. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  298. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  299. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  300. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  301. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  302. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  303. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  304. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  305. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  306. package/dest/services/tx_collection/index.d.ts +3 -1
  307. package/dest/services/tx_collection/index.d.ts.map +1 -1
  308. package/dest/services/tx_collection/index.js +2 -0
  309. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  310. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  311. package/dest/services/tx_collection/instrumentation.js +11 -13
  312. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  313. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  314. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  315. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  316. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  317. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  318. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
  319. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  320. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  321. package/dest/services/tx_collection/tx_collection.d.ts +29 -16
  322. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  323. package/dest/services/tx_collection/tx_collection.js +79 -7
  324. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  325. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  326. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  327. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  328. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  329. package/dest/services/tx_collection/tx_source.js +19 -2
  330. package/dest/services/tx_file_store/config.d.ts +16 -0
  331. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  332. package/dest/services/tx_file_store/config.js +22 -0
  333. package/dest/services/tx_file_store/index.d.ts +4 -0
  334. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  335. package/dest/services/tx_file_store/index.js +3 -0
  336. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  337. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  338. package/dest/services/tx_file_store/instrumentation.js +29 -0
  339. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  340. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  341. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  342. package/dest/services/tx_provider.d.ts +5 -5
  343. package/dest/services/tx_provider.d.ts.map +1 -1
  344. package/dest/services/tx_provider.js +5 -4
  345. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  346. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  347. package/dest/services/tx_provider_instrumentation.js +7 -20
  348. package/dest/test-helpers/index.d.ts +3 -1
  349. package/dest/test-helpers/index.d.ts.map +1 -1
  350. package/dest/test-helpers/index.js +2 -0
  351. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  352. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  353. package/dest/test-helpers/mock-pubsub.d.ts +29 -2
  354. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  355. package/dest/test-helpers/mock-pubsub.js +103 -2
  356. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  357. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  358. package/dest/test-helpers/reqresp-nodes.js +2 -1
  359. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  360. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  361. package/dest/test-helpers/test_tx_provider.js +41 -0
  362. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  363. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  364. package/dest/test-helpers/testbench-utils.js +366 -0
  365. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  366. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  367. package/dest/testbench/p2p_client_testbench_worker.js +221 -127
  368. package/dest/testbench/worker_client_manager.d.ts +51 -6
  369. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  370. package/dest/testbench/worker_client_manager.js +226 -39
  371. package/dest/util.d.ts +2 -2
  372. package/dest/util.d.ts.map +1 -1
  373. package/package.json +16 -16
  374. package/src/bootstrap/bootstrap.ts +7 -4
  375. package/src/client/factory.ts +96 -24
  376. package/src/client/interface.ts +76 -25
  377. package/src/client/p2p_client.ts +269 -290
  378. package/src/client/test/tx_proposal_collector/README.md +227 -0
  379. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +346 -0
  380. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  381. package/src/config.ts +49 -13
  382. package/src/errors/tx-pool.error.ts +12 -0
  383. package/src/index.ts +1 -0
  384. package/src/mem_pools/attestation_pool/attestation_pool.ts +510 -78
  385. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +612 -320
  386. package/src/mem_pools/attestation_pool/index.ts +9 -2
  387. package/src/mem_pools/attestation_pool/mocks.ts +20 -13
  388. package/src/mem_pools/index.ts +4 -1
  389. package/src/mem_pools/instrumentation.ts +10 -18
  390. package/src/mem_pools/interface.ts +4 -4
  391. package/src/mem_pools/tx_pool/README.md +29 -14
  392. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  393. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  394. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  395. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  396. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  397. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  398. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  399. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  400. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  401. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  402. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  403. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  404. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  405. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
  406. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  407. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  408. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  409. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  410. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  411. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  412. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  413. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  414. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  415. package/src/mem_pools/tx_pool_v2/interfaces.ts +242 -0
  416. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
  417. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  418. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  419. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  420. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1069 -0
  421. package/src/msg_validators/attestation_validator/attestation_validator.ts +36 -21
  422. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
  423. package/src/msg_validators/clock_tolerance.ts +51 -0
  424. package/src/msg_validators/index.ts +1 -1
  425. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  426. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  427. package/src/msg_validators/proposal_validator/index.ts +3 -0
  428. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  429. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  430. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  431. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  432. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  433. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  434. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  435. package/src/msg_validators/tx_validator/factory.ts +64 -23
  436. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  437. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  438. package/src/msg_validators/tx_validator/index.ts +1 -0
  439. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  440. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  441. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  442. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
  443. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  444. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  445. package/src/services/data_store.ts +10 -7
  446. package/src/services/discv5/discV5_service.ts +1 -1
  447. package/src/services/dummy_service.ts +68 -1
  448. package/src/services/encoding.ts +8 -6
  449. package/src/services/gossipsub/README.md +641 -0
  450. package/src/services/gossipsub/index.ts +2 -0
  451. package/src/services/gossipsub/scoring.ts +29 -5
  452. package/src/services/gossipsub/topic_score_params.ts +487 -0
  453. package/src/services/index.ts +1 -0
  454. package/src/services/libp2p/instrumentation.ts +32 -73
  455. package/src/services/libp2p/libp2p_service.ts +651 -301
  456. package/src/services/peer-manager/metrics.ts +22 -26
  457. package/src/services/peer-manager/peer_manager.ts +1 -2
  458. package/src/services/peer-manager/peer_scoring.ts +28 -4
  459. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  460. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  461. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  462. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  463. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  464. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  465. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  466. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  467. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  468. package/src/services/reqresp/constants.ts +14 -0
  469. package/src/services/reqresp/interface.ts +29 -1
  470. package/src/services/reqresp/metrics.ts +36 -27
  471. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  472. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  473. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  474. package/src/services/reqresp/protocols/status.ts +7 -4
  475. package/src/services/reqresp/protocols/tx.ts +22 -0
  476. package/src/services/reqresp/reqresp.ts +79 -22
  477. package/src/services/service.ts +72 -4
  478. package/src/services/tx_collection/config.ts +83 -1
  479. package/src/services/tx_collection/fast_tx_collection.ts +93 -47
  480. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  481. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  482. package/src/services/tx_collection/index.ts +6 -0
  483. package/src/services/tx_collection/instrumentation.ts +11 -13
  484. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  485. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  486. package/src/services/tx_collection/slow_tx_collection.ts +68 -35
  487. package/src/services/tx_collection/tx_collection.ts +121 -24
  488. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  489. package/src/services/tx_collection/tx_source.ts +22 -3
  490. package/src/services/tx_file_store/config.ts +37 -0
  491. package/src/services/tx_file_store/index.ts +3 -0
  492. package/src/services/tx_file_store/instrumentation.ts +36 -0
  493. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  494. package/src/services/tx_provider.ts +10 -9
  495. package/src/services/tx_provider_instrumentation.ts +13 -20
  496. package/src/test-helpers/index.ts +2 -0
  497. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  498. package/src/test-helpers/mock-pubsub.ts +143 -3
  499. package/src/test-helpers/reqresp-nodes.ts +2 -1
  500. package/src/test-helpers/test_tx_provider.ts +64 -0
  501. package/src/test-helpers/testbench-utils.ts +430 -0
  502. package/src/testbench/p2p_client_testbench_worker.ts +348 -123
  503. package/src/testbench/worker_client_manager.ts +304 -42
  504. package/src/util.ts +7 -1
  505. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  506. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  507. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  508. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  509. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  510. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  511. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  512. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  513. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  514. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  515. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  516. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  517. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  518. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  519. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  520. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  521. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  522. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
  523. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  524. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,3 +1,2 @@
1
- export * from './attestation_pool.js';
2
- export * from './memory_attestation_pool.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsOEJBQThCLENBQUMifQ==
1
+ export { AttestationPool, type AttestationPoolApi, type TryAddResult, createTestAttestationPool, MAX_CHECKPOINT_PROPOSALS_PER_SLOT, MAX_BLOCK_PROPOSALS_PER_POSITION, MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER, } from './attestation_pool.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssWUFBWSxFQUNqQix5QkFBeUIsRUFDekIsaUNBQWlDLEVBQ2pDLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSx1QkFBdUIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,oCAAoC,GACrC,MAAM,uBAAuB,CAAC"}
@@ -1,2 +1 @@
1
- export * from './attestation_pool.js';
2
- export * from './memory_attestation_pool.js';
1
+ export { AttestationPool, createTestAttestationPool, MAX_CHECKPOINT_PROPOSALS_PER_SLOT, MAX_BLOCK_PROPOSALS_PER_POSITION, MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER } from './attestation_pool.js';
@@ -1,6 +1,7 @@
1
1
  import type { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { BlockAttestation } from '@aztec/stdlib/p2p';
3
+ import { CheckpointAttestation } from '@aztec/stdlib/p2p';
4
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
4
5
  /** Generate Account
5
6
  *
6
7
  * Create a random signer
@@ -229,11 +230,13 @@ export declare const generateAccount: () => {
229
230
  source: string;
230
231
  type: "local";
231
232
  };
232
- /** Mock Attestation
233
+ /** Mock Checkpoint Attestation
233
234
  *
234
- * @param signer A viem signer to create a signature
235
+ * @param signer A Secp256k1Signer to create a signature
235
236
  * @param slot The slot number the attestation is for
236
- * @returns A Block Attestation
237
+ * @param archive The archive root (defaults to random)
238
+ * @param header The checkpoint header (defaults to random with given slot)
239
+ * @returns A Checkpoint Attestation
237
240
  */
238
- export declare const mockAttestation: (signer: Secp256k1Signer, slot?: number, archive?: Fr) => BlockAttestation;
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLGdCQUFnQixFQUlqQixNQUFNLG1CQUFtQixDQUFDO0FBSzNCOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBRzNCLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILGVBQU8sTUFBTSxlQUFlLDRFQWdCM0IsQ0FBQyJ9
241
+ export declare const mockCheckpointAttestation: (signer: Secp256k1Signer, slot?: number, archive?: Fr, header?: CheckpointHeader | undefined, feeAssetPriceModifier?: bigint) => CheckpointAttestation;
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUNMLHFCQUFxQixFQUl0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXhEOzs7O0dBSUc7QUFDSCxlQUFPLE1BQU0sZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBRzNCLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsZUFBTyxNQUFNLHlCQUF5Qix3SkFvQnJDLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,gBAAgB,EAIjB,MAAM,mBAAmB,CAAC;AAK3B;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,4EAgB3B,CAAC"}
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/mocks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,qBAAqB,EAItB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,wJAoBrC,CAAC"}
@@ -1,6 +1,7 @@
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { BlockAttestation, ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '@aztec/stdlib/p2p';
3
- import { makeL2BlockHeader } from '@aztec/stdlib/testing';
3
+ import { CheckpointAttestation, ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '@aztec/stdlib/p2p';
4
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
4
5
  import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
5
6
  /** Generate Account
6
7
  *
@@ -10,18 +11,21 @@ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
10
11
  const privateKey = generatePrivateKey();
11
12
  return privateKeyToAccount(privateKey);
12
13
  };
13
- /** Mock Attestation
14
+ /** Mock Checkpoint Attestation
14
15
  *
15
- * @param signer A viem signer to create a signature
16
+ * @param signer A Secp256k1Signer to create a signature
16
17
  * @param slot The slot number the attestation is for
17
- * @returns A Block Attestation
18
- */ export const mockAttestation = (signer, slot = 0, archive = Fr.random())=>{
19
- // Use arbitrary numbers for all other than slot
20
- const header = makeL2BlockHeader(1, 2, slot);
21
- const payload = new ConsensusPayload(header.toCheckpointHeader(), archive);
22
- const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
18
+ * @param archive The archive root (defaults to random)
19
+ * @param header The checkpoint header (defaults to random with given slot)
20
+ * @returns A Checkpoint Attestation
21
+ */ export const mockCheckpointAttestation = (signer, slot = 0, archive = Fr.random(), header, feeAssetPriceModifier = 0n)=>{
22
+ header = header ?? CheckpointHeader.random({
23
+ slotNumber: SlotNumber(slot)
24
+ });
25
+ const payload = new ConsensusPayload(header, archive, feeAssetPriceModifier);
26
+ const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointAttestation);
23
27
  const attestationSignature = signer.sign(attestationHash);
24
- const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
28
+ const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.checkpointProposal);
25
29
  const proposerSignature = signer.sign(proposalHash);
26
- return new BlockAttestation(payload, attestationSignature, proposerSignature);
30
+ return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
27
31
  };
@@ -1,4 +1,5 @@
1
- export { type AttestationPool } from './attestation_pool/attestation_pool.js';
1
+ export { AttestationPool, type AttestationPoolApi } from './attestation_pool/attestation_pool.js';
2
2
  export { type MemPools } from './interface.js';
3
3
  export { type TxPool } from './tx_pool/tx_pool.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZW1fcG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUMifQ==
4
+ export { type TxPoolV2, type TxPoolV2Config, type TxPoolV2Events, type AddTxsResult } from './tx_pool_v2/index.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZW1fcG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEcsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUssY0FBYyxFQUFFLEtBQUssWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mem_pools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mem_pools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- export { };
1
+ export { AttestationPool } from './attestation_pool/attestation_pool.js';
@@ -31,4 +31,4 @@ export declare class PoolInstrumentation<PoolObject extends Gossipable> {
31
31
  transactionsRemoved(hashes: Iterable<bigint> | Iterable<string>): void;
32
32
  private observeStats;
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBS0wsS0FBSyxpQkFBaUIsRUFLdEIsS0FBSyxlQUFlLEVBRXJCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsb0JBQVksUUFBUTtJQUNsQixPQUFPLFdBQVc7SUFDbEIsZ0JBQWdCLG9CQUFvQjtDQUNyQztBQWtDRCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxPQUFPLENBQUM7SUFDNUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gscUJBQWEsbUJBQW1CLENBQUMsVUFBVSxTQUFTLFVBQVU7SUFtQjFELE9BQU8sQ0FBQyxTQUFTO0lBbEJuQix1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLGdCQUFnQixDQUFrQjtJQUMxQyxPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBQ3hDLHFCQUFxQjtJQUNyQixPQUFPLENBQUMsVUFBVSxDQUFZO0lBQzlCLHdEQUF3RDtJQUN4RCxPQUFPLENBQUMsVUFBVSxDQUFZO0lBRTlCLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFFL0IsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQVE7SUFFckIsT0FBTyxDQUFDLGdCQUFnQixDQUFrRDtJQUUxRSxZQUNFLFNBQVMsRUFBRSxlQUFlLEVBQzFCLElBQUksRUFBRSxRQUFRLEVBQ04sU0FBUyxFQUFFLGlCQUFpQixFQUNwQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsRUFpQzVCO0lBRU0sVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLFFBRXZDO0lBRU0scUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFekM7SUFFTSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBSzFDO0lBRU0sbUJBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBWXJFO0lBRUQsT0FBTyxDQUFDLFlBQVksQ0FZbEI7Q0FDSCJ9
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBS0wsS0FBSyxpQkFBaUIsRUFLdEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsb0JBQVksUUFBUTtJQUNsQixPQUFPLFdBQVc7SUFDbEIsZ0JBQWdCLG9CQUFvQjtDQUNyQztBQWtDRCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxPQUFPLENBQUM7SUFDNUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gscUJBQWEsbUJBQW1CLENBQUMsVUFBVSxTQUFTLFVBQVU7SUFtQjFELE9BQU8sQ0FBQyxTQUFTO0lBbEJuQix1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLGdCQUFnQixDQUFrQjtJQUMxQyxPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBQ3hDLHFCQUFxQjtJQUNyQixPQUFPLENBQUMsVUFBVSxDQUFZO0lBQzlCLHdEQUF3RDtJQUN4RCxPQUFPLENBQUMsVUFBVSxDQUFZO0lBRTlCLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFFL0IsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQVE7SUFFckIsT0FBTyxDQUFDLGdCQUFnQixDQUFrRDtJQUUxRSxZQUNFLFNBQVMsRUFBRSxlQUFlLEVBQzFCLElBQUksRUFBRSxRQUFRLEVBQ04sU0FBUyxFQUFFLGlCQUFpQixFQUNwQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsRUF3QjVCO0lBRU0sVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLFFBRXZDO0lBRU0scUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFekM7SUFFTSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBSzFDO0lBRU0sbUJBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBWXJFO0lBRUQsT0FBTyxDQUFDLFlBQVksQ0FZbEI7Q0FDSCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,EAErB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,QAAQ;IAClB,OAAO,WAAW;IAClB,gBAAgB,oBAAoB;CACrC;AAkCD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,mBAAmB,CAAC,UAAU,SAAS,UAAU;IAmB1D,OAAO,CAAC,SAAS;IAlBnB,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IACxC,qBAAqB;IACrB,OAAO,CAAC,UAAU,CAAY;IAC9B,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,gBAAgB,CAAkD;IAE1E,YACE,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,QAAQ,EACN,SAAS,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,iBAAiB,EAiC5B;IAEM,UAAU,CAAC,UAAU,EAAE,UAAU,QAEvC;IAEM,qBAAqB,CAAC,KAAK,EAAE,MAAM,QAEzC;IAEM,iBAAiB,CAAC,YAAY,EAAE,EAAE,EAAE,QAK1C;IAEM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAYrE;IAED,OAAO,CAAC,YAAY,CAYlB;CACH"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/mem_pools/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAKL,KAAK,iBAAiB,EAKtB,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,QAAQ;IAClB,OAAO,WAAW;IAClB,gBAAgB,oBAAoB;CACrC;AAkCD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,mBAAmB,CAAC,UAAU,SAAS,UAAU;IAmB1D,OAAO,CAAC,SAAS;IAlBnB,uCAAuC;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IACxC,qBAAqB;IACrB,OAAO,CAAC,UAAU,CAAY;IAC9B,wDAAwD;IACxD,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,gBAAgB,CAAkD;IAE1E,YACE,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,QAAQ,EACN,SAAS,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,iBAAiB,EAwB5B;IAEM,UAAU,CAAC,UAAU,EAAE,UAAU,QAEvC;IAEM,qBAAqB,CAAC,KAAK,EAAE,MAAM,QAEzC;IAEM,iBAAiB,CAAC,YAAY,EAAE,EAAE,EAAE,QAK1C;IAEM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAYrE;IAED,OAAO,CAAC,YAAY,CAYlB;CACH"}
@@ -1,4 +1,4 @@
1
- import { Attributes, LmdbMetrics, Metrics } from '@aztec/telemetry-client';
1
+ import { Attributes, LmdbMetrics, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
2
2
  export var PoolName = /*#__PURE__*/ function(PoolName) {
3
3
  PoolName["TX_POOL"] = "TxPool";
4
4
  PoolName["ATTESTATION_POOL"] = "AttestationPool";
@@ -59,22 +59,13 @@ export var PoolName = /*#__PURE__*/ function(PoolName) {
59
59
  [Attributes.POOL_NAME]: name
60
60
  };
61
61
  const metricsLabels = getMetricsLabels(name);
62
- this.objectsInMempool = this.meter.createObservableGauge(metricsLabels.objectInMempool, {
63
- description: 'The current number of transactions in the mempool'
64
- });
65
- this.objectSize = this.meter.createHistogram(metricsLabels.objectSize, {
66
- unit: 'By',
67
- description: 'The size of transactions in the mempool'
68
- });
62
+ this.objectsInMempool = this.meter.createObservableGauge(metricsLabels.objectInMempool);
63
+ this.objectSize = this.meter.createHistogram(metricsLabels.objectSize);
69
64
  this.dbMetrics = new LmdbMetrics(this.meter, {
70
65
  [Attributes.DB_DATA_TYPE]: 'tx-pool'
71
66
  }, dbStats);
72
- this.addObjectCounter = this.meter.createUpDownCounter(metricsLabels.itemsAdded, {
73
- description: 'The number of transactions added to the mempool'
74
- });
75
- this.minedDelay = this.meter.createHistogram(metricsLabels.itemMinedDelay, {
76
- description: 'Delay between transaction added and evicted from the mempool'
77
- });
67
+ this.addObjectCounter = createUpDownCounterWithDefault(this.meter, metricsLabels.itemsAdded);
68
+ this.minedDelay = this.meter.createHistogram(metricsLabels.itemMinedDelay);
78
69
  this.meter.addBatchObservableCallback(this.observeStats, [
79
70
  this.objectsInMempool
80
71
  ]);
@@ -1,10 +1,10 @@
1
- import type { AttestationPool } from './attestation_pool/attestation_pool.js';
2
- import type { TxPool } from './tx_pool/tx_pool.js';
1
+ import type { AttestationPoolApi } from './attestation_pool/attestation_pool.js';
2
+ import type { TxPoolV2 } from './tx_pool_v2/interfaces.js';
3
3
  /**
4
4
  * A interface the combines all mempools
5
5
  */
6
6
  export type MemPools = {
7
- txPool: TxPool;
8
- attestationPool: AttestationPool;
7
+ txPool: TxPoolV2;
8
+ attestationPool: AttestationPoolApi;
9
9
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sTUFBTSxRQUFRLEdBQUc7SUFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLGVBQWUsRUFBRSxlQUFlLENBQUM7Q0FDbEMsQ0FBQyJ9
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVtX3Bvb2xzL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNEOztHQUVHO0FBQ0gsTUFBTSxNQUFNLFFBQVEsR0FBRztJQUNyQixNQUFNLEVBQUUsUUFBUSxDQUFDO0lBQ2pCLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQztDQUNyQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/mem_pools/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/mem_pools/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,QAAQ,CAAC;IACjB,eAAe,EAAE,kBAAkB,CAAC;CACrC,CAAC"}
@@ -3,12 +3,12 @@ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { type Logger } from '@aztec/foundation/log';
4
4
  import type { TypedEventEmitter } from '@aztec/foundation/types';
5
5
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
6
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
- import type { MerkleTreeReadOperations, ReadonlyWorldStateAccess } from '@aztec/stdlib/interfaces/server';
6
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
7
+ import type { MerkleTreeReadOperations, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
8
8
  import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
9
9
  import { type TelemetryClient } from '@aztec/telemetry-client';
10
10
  import { ArchiveCache } from '../../msg_validators/tx_validator/archive_cache.js';
11
- import type { PendingTxInfo, TxBlockReference, TxPoolOperations } from './eviction/eviction_strategy.js';
11
+ import { FeePayerTxInfo, type PendingTxInfo, type TxBlockReference, type TxPoolOperations } from './eviction/eviction_strategy.js';
12
12
  import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
13
13
  declare const AztecKVTxPool_base: new () => TypedEventEmitter<TxPoolEvents>;
14
14
  /**
@@ -24,7 +24,7 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
24
24
  * @param archivedTxLimit - The number of txs to archive.
25
25
  * @param log - A logger.
26
26
  */
27
- constructor(store: AztecAsyncKVStore, archive: AztecAsyncKVStore, worldState: ReadonlyWorldStateAccess, telemetry?: TelemetryClient, config?: TxPoolOptions, log?: Logger);
27
+ constructor(store: AztecAsyncKVStore, archive: AztecAsyncKVStore, worldState: WorldStateSynchronizer, telemetry?: TelemetryClient, config?: TxPoolOptions, log?: Logger);
28
28
  private countTxs;
29
29
  isEmpty(): Promise<boolean>;
30
30
  /**
@@ -54,6 +54,8 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
54
54
  getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined>;
55
55
  /**
56
56
  * Adds a list of transactions to the pool. Duplicates are ignored.
57
+ * Handles nullifier deduplication: if an incoming tx has a nullifier conflict with
58
+ * existing pending txs, it will either replace them (if higher fee) or be rejected.
57
59
  * @param txs - An array of txs to be added to the pool.
58
60
  * @returns count of added transactions
59
61
  */
@@ -70,7 +72,7 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
70
72
  permanently?: boolean;
71
73
  }): Promise<void>;
72
74
  private deleteMinedTx;
73
- private deletePendingTx;
75
+ private deletePendingTxInDbTx;
74
76
  /**
75
77
  * Gets all the transactions stored in the pool.
76
78
  * @returns Array of tx objects in the order they were added to the pool.
@@ -84,7 +86,8 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
84
86
  getPendingTxInfos(): Promise<PendingTxInfo[]>;
85
87
  private getPendingTxInfo;
86
88
  getPendingTxsReferencingBlocks(blockHashes: Fr[]): Promise<TxBlockReference[]>;
87
- getPendingTxsWithFeePayer(feePayers: AztecAddress[]): Promise<PendingTxInfo[]>;
89
+ getPendingFeePayers(): Promise<AztecAddress[]>;
90
+ getFeePayerTxInfos(feePayer: AztecAddress): AsyncIterable<FeePayerTxInfo>;
88
91
  getMinedTxHashes(): Promise<[TxHash, BlockNumber][]>;
89
92
  getPendingTxCount(): Promise<number>;
90
93
  getMinedTxCount(): Promise<number>;
@@ -104,17 +107,19 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool,
104
107
  * @returns An ArchiveCache instance
105
108
  */
106
109
  protected createArchiveCache(db: MerkleTreeReadOperations): ArchiveCache;
107
- private getPendingTxByHash;
108
110
  private archiveTxs;
109
111
  private addPendingTxIndicesInDbTx;
110
- private addPendingTxIndices;
111
112
  private removePendingTxIndicesInDbTx;
112
- private removePendingTxIndices;
113
113
  /**
114
114
  * Returns up to `limit` lowest-priority evictable pending tx hashes without hydrating transactions.
115
115
  * Iterates the priority index in ascending order and skips non-evictable txs.
116
116
  */
117
117
  getLowestPriorityEvictable(limit: number): Promise<TxHash[]>;
118
+ /**
119
+ * Creates a PreAddPoolAccess object for use by pre-add eviction rules.
120
+ * Provides read-only access to pool state during addTxs transaction.
121
+ */
122
+ private getPreAddPoolAccess;
118
123
  }
119
124
  export {};
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfa3ZfdHhfcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sL2F6dGVjX2t2X3R4X3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBcUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFHLE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUtuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHbEYsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNekcsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFOztHQUVHO0FBQ0gscUJBQWEsYUFDWCxTQUFRLGtCQUNSLFlBQVcsTUFBTSxFQUFFLGdCQUFnQjs7SUErQ25DOzs7Ozs7O09BT0c7SUFDSCxZQUNFLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIs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
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfa3ZfdHhfcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy90eF9wb29sL2F6dGVjX2t2X3R4X3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBcUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUd4RyxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFLbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR2xGLE9BQU8sRUFDTCxjQUFjLEVBQ2QsS0FBSyxhQUFhLEVBRWxCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssZ0JBQWdCLEVBQ3RCLE1BQU0saUNBQWlDLENBQUM7QUFPekMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFOztHQUVHO0FBQ0gscUJBQWEsYUFDWCxTQUFRLGtCQUNSLFlBQVcsTUFBTSxFQUFFLGdCQUFnQjs7SUFrRG5DOzs7Ozs7O09BT0c7SUFDSCxZQUNFLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUMxQixVQUFVLEVBQUUsc0JBQXNCLEVBQ2xDLFNBQVMsR0FBRSxlQUFzQyxFQUNqRCxNQUFNLEdBQUUsYUFBa0IsRUFDMUIsR0FBRyxTQUE4QixFQXdDbEM7SUFFRCxPQUFPLENBQUMsUUFBUSxDQVNkO0lBRVcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FLdkM7SUFFRDs7Ozs7O09BTUc7SUFDVSxXQUFXLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQStDcEY7SUFFWSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBOEIzRjtJQUVZLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUduRDtJQUVEOzs7O09BSUc7SUFDVSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUdoRTtJQUVLLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FHbEU7SUFFSyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUVuRDtJQUVLLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHNUM7SUFFRDs7OztPQUlHO0lBQ1UsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUd4RTtJQUVEOzs7Ozs7T0FNRztJQUNVLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxHQUFFO1FBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBMEU5RTtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWdDcEY7WUFFYSxhQUFhO1lBZWIscUJBQXFCO0lBUW5DOzs7T0FHRztJQUNVLFNBQVMsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FHdEM7SUFFRDs7O09BR0c7SUFDVSxjQUFjLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBRy9DO0lBRVksaUJBQWlCLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBSXpEO1lBRWEsZ0JBQWdCO0lBcUJqQiw4QkFBOEIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FjMUY7SUFFWSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FPMUQ7SUFFYSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FNdEY7SUFFWSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUdoRTtJQUVZLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFaEQ7SUFFWSxlQUFlLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUU5QztJQUVZLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FpQjdGO0lBRU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxhQUFhLEdBQUcsSUFBSSxDQVM1QztJQUVNLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzlEO0lBRU0sb0JBQW9CLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU8zQztJQUVEOzs7O09BSUc7SUFDVSxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FrQzdFO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsd0JBQXdCLEdBQUcsWUFBWSxDQUV2RTtZQVFhLFVBQVU7WUFnRFYseUJBQXlCO1lBYXpCLDRCQUE0QjtJQWtCMUM7OztPQUdHO0lBQ1UsMEJBQTBCLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FrQnhFO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLG1CQUFtQjtDQVU1QiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { insertIntoSortedArray } from '@aztec/foundation/array';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { toArray } from '@aztec/foundation/iterable';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
6
  import { ChonkProof } from '@aztec/stdlib/proofs';
6
7
  import { Tx, TxHash } from '@aztec/stdlib/tx';
7
8
  import { getTelemetryClient } from '@aztec/telemetry-client';
@@ -10,10 +11,12 @@ import EventEmitter from 'node:events';
10
11
  import { ArchiveCache } from '../../msg_validators/tx_validator/archive_cache.js';
11
12
  import { PoolInstrumentation, PoolName } from '../instrumentation.js';
12
13
  import { EvictionManager } from './eviction/eviction_manager.js';
13
- import { InsufficientFeePayerBalanceRule } from './eviction/insufficient_fee_payer_balance_rule.js';
14
+ import { FeePayerTxInfo } from './eviction/eviction_strategy.js';
15
+ import { FeePayerBalanceEvictionRule } from './eviction/fee_payer_balance_eviction_rule.js';
14
16
  import { InvalidTxsAfterMiningRule } from './eviction/invalid_txs_after_mining_rule.js';
15
17
  import { InvalidTxsAfterReorgRule } from './eviction/invalid_txs_after_reorg_rule.js';
16
18
  import { LowPriorityEvictionRule } from './eviction/low_priority_eviction_rule.js';
19
+ import { NullifierConflictPreAddRule } from './eviction/nullifier_conflict_pre_add_rule.js';
17
20
  import { getPendingTxPriority } from './priority.js';
18
21
  /**
19
22
  * KV implementation of the Transaction Pool.
@@ -26,7 +29,8 @@ import { getPendingTxPriority } from './priority.js';
26
29
  /** Map from tx hash to the block number it was originally mined in (for soft-deleted txs). */ #deletedMinedTxHashes;
27
30
  /** MultiMap from block number to deleted mined tx hashes for efficient cleanup. */ #blockToDeletedMinedTxHash;
28
31
  #historicalHeaderToTxHash;
29
- #feePayerToTxHash;
32
+ #feePayerToBalanceEntry;
33
+ /** Index from nullifier to pending tx hash */ #pendingNullifierToTxHash;
30
34
  /** In-memory set of txs that should not be evicted from the pool. */ #nonEvictableTxs;
31
35
  /** KV store for archived txs. */ #archive;
32
36
  /** Archived txs map for future lookup. */ #archivedTxs;
@@ -48,11 +52,12 @@ import { getPendingTxPriority } from './priority.js';
48
52
  this.#evictionManager = new EvictionManager(this);
49
53
  this.#evictionManager.registerRule(new InvalidTxsAfterMiningRule());
50
54
  this.#evictionManager.registerRule(new InvalidTxsAfterReorgRule(worldState));
51
- this.#evictionManager.registerRule(new InsufficientFeePayerBalanceRule(worldState));
55
+ this.#evictionManager.registerRule(new FeePayerBalanceEvictionRule(worldState));
52
56
  this.#evictionManager.registerRule(new LowPriorityEvictionRule({
53
57
  //NOTE: 0 effectively disables low priority eviction
54
58
  maxPoolSize: config.maxPendingTxCount ?? 0
55
59
  }));
60
+ this.#evictionManager.registerPreAddRule(new NullifierConflictPreAddRule());
56
61
  this.updateConfig(config);
57
62
  this.#txs = store.openMap('txs');
58
63
  this.#minedTxHashToBlock = store.openMap('txHashToBlockMined');
@@ -61,7 +66,8 @@ import { getPendingTxPriority } from './priority.js';
61
66
  this.#blockToDeletedMinedTxHash = store.openMultiMap('blockToDeletedMinedTxHash');
62
67
  this.#pendingTxHashToHistoricalBlockHeaderHash = store.openMap('txHistoricalBlock');
63
68
  this.#historicalHeaderToTxHash = store.openMultiMap('historicalHeaderToPendingTxHash');
64
- this.#feePayerToTxHash = store.openMultiMap('feePayerToPendingTxHash');
69
+ this.#feePayerToBalanceEntry = store.openMultiMap('feePayerToBalanceEntry');
70
+ this.#pendingNullifierToTxHash = store.openMap('pendingNullifierToTxHash');
65
71
  this.#nonEvictableTxs = new Set();
66
72
  this.#archivedTxs = archive.openMap('archivedTxs');
67
73
  this.#archivedTxIndices = archive.openMap('archivedTxIndices');
@@ -104,7 +110,7 @@ import { getPendingTxPriority } from './priority.js';
104
110
  for (const hash of txHashes){
105
111
  const key = hash.toString();
106
112
  await this.#minedTxHashToBlock.set(key, blockHeader.globalVariables.blockNumber);
107
- const tx = await this.getPendingTxByHash(hash);
113
+ const tx = await this.getTxByHash(hash);
108
114
  if (tx) {
109
115
  const nullifiers = tx.data.getNonEmptyNullifiers();
110
116
  nullifiers.forEach((nullifier)=>insertIntoSortedArray(uniqueMinedNullifiers, nullifier, Fr.cmp, false));
@@ -139,8 +145,15 @@ import { getPendingTxPriority } from './priority.js';
139
145
  for (const hash of txHashes){
140
146
  const key = hash.toString();
141
147
  await this.#minedTxHashToBlock.delete(key);
148
+ // Clear soft-delete metadata if this tx was previously soft-deleted,
149
+ // so cleanupDeletedMinedTxs won't later hard-delete it while it's pending
150
+ const deletedBlock = await this.#deletedMinedTxHashes.getAsync(key);
151
+ if (deletedBlock !== undefined) {
152
+ await this.#deletedMinedTxHashes.delete(key);
153
+ await this.#blockToDeletedMinedTxHash.deleteValue(deletedBlock, key);
154
+ }
142
155
  // Rehydrate the tx in the in-memory pending txs mapping
143
- const tx = await this.getPendingTxByHash(hash);
156
+ const tx = await this.getTxByHash(hash);
144
157
  if (tx) {
145
158
  await this.addPendingTxIndicesInDbTx(tx, key);
146
159
  }
@@ -190,6 +203,8 @@ import { getPendingTxPriority } from './priority.js';
190
203
  }
191
204
  /**
192
205
  * Adds a list of transactions to the pool. Duplicates are ignored.
206
+ * Handles nullifier deduplication: if an incoming tx has a nullifier conflict with
207
+ * existing pending txs, it will either replace them (if higher fee) or be rejected.
193
208
  * @param txs - An array of txs to be added to the pool.
194
209
  * @returns count of added transactions
195
210
  */ async addTxs(txs, opts = {}) {
@@ -197,38 +212,59 @@ import { getPendingTxPriority } from './priority.js';
197
212
  return Promise.resolve(0);
198
213
  }
199
214
  const addedTxs = [];
215
+ const uniqueFeePayers = [];
216
+ const replacedTxHashes = [];
200
217
  const hashesAndStats = txs.map((tx)=>({
201
218
  txHash: tx.getTxHash(),
202
219
  txStats: tx.getStats()
203
220
  }));
204
221
  try {
205
222
  await this.#store.transactionAsync(async ()=>{
206
- await Promise.all(txs.map(async (tx, i)=>{
223
+ for(let i = 0; i < txs.length; i++){
224
+ const tx = txs[i];
207
225
  const { txHash, txStats } = hashesAndStats[i];
208
226
  const key = txHash.toString();
209
227
  if (await this.#txs.hasAsync(key)) {
210
- this.#log.debug(`Tx ${txHash.toString()} already exists in the pool`);
211
- return;
228
+ this.#log.debug(`Tx ${key} already exists in the pool`);
229
+ continue;
212
230
  }
213
- this.#log.verbose(`Adding tx ${txHash.toString()} to pool`, {
231
+ const poolAccess = this.getPreAddPoolAccess();
232
+ const { shouldReject, txHashesToEvict } = await this.#evictionManager.runPreAddRules(tx, poolAccess);
233
+ if (shouldReject) {
234
+ continue;
235
+ }
236
+ for (const txHashToEvict of txHashesToEvict){
237
+ const txToDelete = await this.getTxByHash(txHashToEvict);
238
+ if (txToDelete) {
239
+ const evictedKey = txHashToEvict.toString();
240
+ await this.deletePendingTxInDbTx(txToDelete, evictedKey);
241
+ replacedTxHashes.push(txHashToEvict);
242
+ this.#log.verbose(`Evicted tx ${evictedKey} due to higher-fee tx ${key}`);
243
+ }
244
+ }
245
+ this.#log.verbose(`Adding tx ${key} to pool`, {
214
246
  eventName: 'tx-added-to-pool',
215
247
  ...txStats
216
248
  });
217
249
  await this.#txs.set(key, tx.toBuffer());
218
250
  addedTxs.push(tx);
251
+ insertIntoSortedArray(uniqueFeePayers, tx.data.feePayer, (a, b)=>a.toField().cmp(b.toField()), false);
219
252
  await this.#pendingTxHashToHistoricalBlockHeaderHash.set(key, (await tx.data.constants.anchorBlockHeader.hash()).toString());
220
253
  if (!await this.#minedTxHashToBlock.hasAsync(key)) {
221
254
  await this.addPendingTxIndicesInDbTx(tx, key);
222
255
  this.#metrics.recordSize(tx);
223
256
  }
224
- }));
257
+ }
225
258
  });
226
- await this.#evictionManager.evictAfterNewTxs(addedTxs.map(({ txHash })=>txHash));
259
+ await this.#evictionManager.evictAfterNewTxs(addedTxs.map(({ txHash })=>txHash), uniqueFeePayers);
227
260
  } catch (err) {
228
261
  this.#log.warn('Unexpected error when adding txs', {
229
262
  err
230
263
  });
231
264
  }
265
+ if (replacedTxHashes.length > 0) {
266
+ this.#metrics.transactionsRemoved(replacedTxHashes.map((hash)=>hash.toBigInt()));
267
+ }
232
268
  if (addedTxs.length > 0) {
233
269
  this.#metrics.transactionsAdded(addedTxs);
234
270
  this.emit('txs-added', {
@@ -259,7 +295,7 @@ import { getPendingTxPriority } from './priority.js';
259
295
  const minedBlockNumber = await this.#minedTxHashToBlock.getAsync(key);
260
296
  const txIsPending = minedBlockNumber === undefined;
261
297
  if (txIsPending) {
262
- await this.deletePendingTx(tx, key);
298
+ await this.deletePendingTxInDbTx(tx, key);
263
299
  } else {
264
300
  await this.deleteMinedTx(key, minedBlockNumber, opts?.permanently ?? false);
265
301
  const shouldArchiveTx = this.#archivedTxLimit && !opts?.permanently;
@@ -287,10 +323,11 @@ import { getPendingTxPriority } from './priority.js';
287
323
  await this.#deletedMinedTxHashes.set(txHash, minedBlockNumber);
288
324
  await this.#blockToDeletedMinedTxHash.set(minedBlockNumber, txHash);
289
325
  }
290
- async deletePendingTx(tx, txHash) {
326
+ // Assumes being called within a DB transaction
327
+ async deletePendingTxInDbTx(tx, txHash) {
291
328
  // We always permanently delete pending transactions
292
329
  this.#log.trace(`Deleting pending tx ${txHash} from pool`);
293
- await this.removePendingTxIndices(tx, txHash);
330
+ await this.removePendingTxIndicesInDbTx(tx, txHash);
294
331
  await this.#txs.delete(txHash);
295
332
  await this.#pendingTxHashToHistoricalBlockHeaderHash.delete(txHash);
296
333
  }
@@ -317,7 +354,7 @@ import { getPendingTxPriority } from './priority.js';
317
354
  let historicalBlockHash = await this.#pendingTxHashToHistoricalBlockHeaderHash.getAsync(txHash.toString());
318
355
  // Not all tx might have this index created.
319
356
  if (!historicalBlockHash) {
320
- const tx = await this.getPendingTxByHash(txHash);
357
+ const tx = await this.getTxByHash(txHash);
321
358
  if (!tx) {
322
359
  this.#log.warn(`PendingTxInfo:tx ${txHash} not found`);
323
360
  return undefined;
@@ -343,14 +380,20 @@ import { getPendingTxPriority } from './priority.js';
343
380
  }
344
381
  return result;
345
382
  }
346
- async getPendingTxsWithFeePayer(feePayers) {
347
- const result = [];
348
- for (const feePayer of feePayers){
349
- const chunk = await toArray(this.#feePayerToTxHash.getValuesAsync(feePayer.toString()));
350
- const infos = await Promise.all(chunk.map((txHash)=>this.getPendingTxInfo(TxHash.fromString(txHash))));
351
- result.push(...infos.filter((info)=>info !== undefined));
383
+ async getPendingFeePayers() {
384
+ const feePayers = [];
385
+ for await (const feePayer of this.#feePayerToBalanceEntry.keysAsync()){
386
+ const address = AztecAddress.fromString(feePayer);
387
+ insertIntoSortedArray(feePayers, address, (a, b)=>a.toField().cmp(b.toField()), false);
388
+ }
389
+ return feePayers;
390
+ }
391
+ async *getFeePayerTxInfos(feePayer) {
392
+ for await (const value of this.#feePayerToBalanceEntry.getValuesAsync(feePayer.toString())){
393
+ const info = FeePayerTxInfo.decode(value);
394
+ info.isEvictable = !this.#nonEvictableTxs.has(info.txHash.toString());
395
+ yield info;
352
396
  }
353
- return result;
354
397
  }
355
398
  async getMinedTxHashes() {
356
399
  const vals = await toArray(this.#minedTxHashToBlock.entriesAsync());
@@ -447,21 +490,6 @@ import { getPendingTxPriority } from './priority.js';
447
490
  return new ArchiveCache(db);
448
491
  }
449
492
  /**
450
- * Checks if a cached transaction exists in the in-memory pending tx pool and returns it.
451
- * Otherwise, it checks the tx pool, updates the pending tx pool, and returns the tx.
452
- * @param txHash - The generated tx hash.
453
- * @returns The transaction, if found, 'undefined' otherwise.
454
- */ async getPendingTxByHash(txHash) {
455
- if (typeof txHash === 'string') {
456
- txHash = TxHash.fromString(txHash);
457
- }
458
- const tx = await this.getTxByHash(txHash);
459
- if (tx) {
460
- return tx;
461
- }
462
- return undefined;
463
- }
464
- /**
465
493
  * Archives a list of txs for future reference. The number of archived txs is limited by the specified archivedTxLimit.
466
494
  * Note: Pending txs should not be archived, only finalized txs
467
495
  * @param txs - The list of transactions to archive.
@@ -515,23 +543,23 @@ import { getPendingTxPriority } from './priority.js';
515
543
  async addPendingTxIndicesInDbTx(tx, txHash) {
516
544
  await this.#pendingTxPriorityToHash.set(getPendingTxPriority(tx), txHash);
517
545
  await this.#historicalHeaderToTxHash.set((await tx.data.constants.anchorBlockHeader.hash()).toString(), txHash);
518
- await this.#feePayerToTxHash.set(tx.data.feePayer.toString(), txHash);
519
- }
520
- async addPendingTxIndices(tx, txHash) {
521
- return await this.#store.transactionAsync(async ()=>{
522
- await this.addPendingTxIndicesInDbTx(tx, txHash);
523
- });
546
+ await this.#feePayerToBalanceEntry.set(tx.data.feePayer.toString(), await FeePayerTxInfo.encode(tx, txHash));
547
+ // Add nullifier entries for conflict detection
548
+ const nullifiers = tx.data.getNonEmptyNullifiers();
549
+ for (const nullifier of nullifiers){
550
+ await this.#pendingNullifierToTxHash.set(nullifier.toString(), txHash);
551
+ }
524
552
  }
525
553
  // Assumes being called within a DB transaction
526
554
  async removePendingTxIndicesInDbTx(tx, txHash) {
527
555
  await this.#pendingTxPriorityToHash.deleteValue(getPendingTxPriority(tx), txHash);
528
556
  await this.#historicalHeaderToTxHash.deleteValue((await tx.data.constants.anchorBlockHeader.hash()).toString(), txHash);
529
- await this.#feePayerToTxHash.deleteValue(tx.data.feePayer.toString(), txHash);
530
- }
531
- async removePendingTxIndices(tx, txHash) {
532
- return await this.#store.transactionAsync(async ()=>{
533
- await this.removePendingTxIndicesInDbTx(tx, txHash);
534
- });
557
+ await this.#feePayerToBalanceEntry.deleteValue(tx.data.feePayer.toString(), await FeePayerTxInfo.encode(tx, txHash));
558
+ // Remove nullifier entries
559
+ const nullifiers = tx.data.getNonEmptyNullifiers();
560
+ for (const nullifier of nullifiers){
561
+ await this.#pendingNullifierToTxHash.delete(nullifier.toString());
562
+ }
535
563
  }
536
564
  /**
537
565
  * Returns up to `limit` lowest-priority evictable pending tx hashes without hydrating transactions.
@@ -552,4 +580,17 @@ import { getPendingTxPriority } from './priority.js';
552
580
  }
553
581
  return txsToEvict;
554
582
  }
583
+ /**
584
+ * Creates a PreAddPoolAccess object for use by pre-add eviction rules.
585
+ * Provides read-only access to pool state during addTxs transaction.
586
+ */ getPreAddPoolAccess() {
587
+ return {
588
+ getTxHashByNullifier: async (nullifier)=>{
589
+ const hashStr = await this.#pendingNullifierToTxHash.getAsync(nullifier.toString());
590
+ return hashStr ? TxHash.fromString(hashStr) : undefined;
591
+ },
592
+ getPendingTxByHash: this.getTxByHash.bind(this),
593
+ getTxPriority: getPendingTxPriority
594
+ };
595
+ }
555
596
  }