@aztec/p2p 0.0.1-commit.7d4e6cd → 0.0.1-commit.87a0206

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 (421) 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 +3 -3
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +11 -8
  7. package/dest/client/interface.d.ts +9 -2
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +7 -4
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +25 -8
  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 +14 -2
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +7 -3
  21. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +94 -87
  22. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool.js +411 -3
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +371 -94
  27. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  28. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/index.js +1 -2
  30. package/dest/mem_pools/attestation_pool/mocks.d.ts +4 -2
  31. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/mocks.js +8 -5
  33. package/dest/mem_pools/index.d.ts +2 -2
  34. package/dest/mem_pools/index.d.ts.map +1 -1
  35. package/dest/mem_pools/index.js +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts +1 -1
  37. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  38. package/dest/mem_pools/instrumentation.js +2 -2
  39. package/dest/mem_pools/interface.d.ts +3 -3
  40. package/dest/mem_pools/interface.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
  42. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  44. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  45. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  47. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  48. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  50. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  51. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  53. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  54. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  56. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  58. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  59. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  61. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  63. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  64. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  66. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  67. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -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 +119 -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 +90 -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 +89 -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 +131 -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 +17 -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 +63 -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 +91 -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 +70 -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 +63 -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 +5 -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 +4 -0
  102. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +197 -0
  103. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +71 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +95 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +99 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +332 -0
  114. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  115. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  116. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +156 -0
  117. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +748 -0
  120. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
  121. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  122. package/dest/msg_validators/attestation_validator/attestation_validator.js +41 -10
  123. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
  124. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
  126. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  127. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  128. package/dest/msg_validators/clock_tolerance.js +37 -0
  129. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
  130. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/proposal_validator/proposal_validator.js +55 -31
  132. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
  133. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  134. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +93 -64
  135. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  136. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  138. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  139. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  140. package/dest/msg_validators/tx_validator/block_header_validator.js +3 -2
  141. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  142. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  144. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  145. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  146. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  147. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  148. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  149. package/dest/msg_validators/tx_validator/factory.js +21 -11
  150. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  151. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  152. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  153. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  154. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  155. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  156. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  157. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  158. package/dest/msg_validators/tx_validator/index.js +1 -0
  159. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  160. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  161. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  162. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  163. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  165. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  166. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  167. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  168. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  169. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  171. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  172. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  174. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  175. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  177. package/dest/services/data_store.d.ts +1 -1
  178. package/dest/services/data_store.d.ts.map +1 -1
  179. package/dest/services/data_store.js +10 -6
  180. package/dest/services/discv5/discV5_service.js +1 -1
  181. package/dest/services/dummy_service.d.ts +18 -2
  182. package/dest/services/dummy_service.d.ts.map +1 -1
  183. package/dest/services/dummy_service.js +42 -0
  184. package/dest/services/encoding.d.ts +1 -1
  185. package/dest/services/encoding.d.ts.map +1 -1
  186. package/dest/services/encoding.js +2 -3
  187. package/dest/services/index.d.ts +2 -1
  188. package/dest/services/index.d.ts.map +1 -1
  189. package/dest/services/index.js +1 -0
  190. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  191. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  192. package/dest/services/libp2p/instrumentation.js +19 -8
  193. package/dest/services/libp2p/libp2p_service.d.ts +81 -34
  194. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  195. package/dest/services/libp2p/libp2p_service.js +338 -258
  196. package/dest/services/peer-manager/metrics.d.ts +2 -2
  197. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  198. package/dest/services/peer-manager/metrics.js +20 -5
  199. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  200. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  201. package/dest/services/peer-manager/peer_scoring.js +8 -2
  202. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  203. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  204. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  205. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  206. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  207. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  208. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  209. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  210. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  211. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  212. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  213. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  214. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  215. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  216. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  217. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  218. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  219. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  220. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  221. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  222. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  223. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  224. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  225. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  226. package/dest/services/reqresp/constants.d.ts +12 -0
  227. package/dest/services/reqresp/constants.d.ts.map +1 -0
  228. package/dest/services/reqresp/constants.js +7 -0
  229. package/dest/services/reqresp/interface.d.ts +3 -1
  230. package/dest/services/reqresp/interface.d.ts.map +1 -1
  231. package/dest/services/reqresp/metrics.d.ts +6 -5
  232. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  233. package/dest/services/reqresp/metrics.js +17 -5
  234. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  235. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  236. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  237. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +6 -4
  238. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  239. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  240. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +23 -6
  241. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  242. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +44 -13
  243. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  244. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  245. package/dest/services/reqresp/protocols/status.js +2 -1
  246. package/dest/services/reqresp/reqresp.d.ts +6 -1
  247. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  248. package/dest/services/reqresp/reqresp.js +58 -22
  249. package/dest/services/service.d.ts +21 -1
  250. package/dest/services/service.d.ts.map +1 -1
  251. package/dest/services/tx_collection/config.d.ts +4 -1
  252. package/dest/services/tx_collection/config.d.ts.map +1 -1
  253. package/dest/services/tx_collection/config.js +9 -1
  254. package/dest/services/tx_collection/fast_tx_collection.d.ts +5 -4
  255. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  256. package/dest/services/tx_collection/fast_tx_collection.js +17 -10
  257. package/dest/services/tx_collection/index.d.ts +2 -1
  258. package/dest/services/tx_collection/index.d.ts.map +1 -1
  259. package/dest/services/tx_collection/index.js +1 -0
  260. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  261. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  262. package/dest/services/tx_collection/instrumentation.js +9 -2
  263. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  264. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  265. package/dest/services/tx_collection/proposal_tx_collector.js +49 -0
  266. package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -3
  267. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  268. package/dest/services/tx_collection/tx_collection.d.ts +8 -8
  269. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  270. package/dest/services/tx_collection/tx_collection.js +5 -5
  271. package/dest/services/tx_file_store/config.d.ts +18 -0
  272. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  273. package/dest/services/tx_file_store/config.js +26 -0
  274. package/dest/services/tx_file_store/index.d.ts +4 -0
  275. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  276. package/dest/services/tx_file_store/index.js +3 -0
  277. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  278. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  279. package/dest/services/tx_file_store/instrumentation.js +29 -0
  280. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  281. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  282. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  283. package/dest/services/tx_provider.d.ts +3 -3
  284. package/dest/services/tx_provider.d.ts.map +1 -1
  285. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  286. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  287. package/dest/services/tx_provider_instrumentation.js +5 -5
  288. package/dest/test-helpers/index.d.ts +3 -1
  289. package/dest/test-helpers/index.d.ts.map +1 -1
  290. package/dest/test-helpers/index.js +2 -0
  291. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  292. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  293. package/dest/test-helpers/test_tx_provider.js +41 -0
  294. package/dest/test-helpers/testbench-utils.d.ts +152 -0
  295. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  296. package/dest/test-helpers/testbench-utils.js +299 -0
  297. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  298. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  299. package/dest/testbench/p2p_client_testbench_worker.js +212 -132
  300. package/dest/testbench/worker_client_manager.d.ts +51 -6
  301. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  302. package/dest/testbench/worker_client_manager.js +226 -44
  303. package/package.json +16 -16
  304. package/src/bootstrap/bootstrap.ts +7 -4
  305. package/src/client/factory.ts +13 -14
  306. package/src/client/interface.ts +13 -1
  307. package/src/client/p2p_client.ts +38 -14
  308. package/src/client/test/tx_proposal_collector/README.md +227 -0
  309. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  310. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  311. package/src/config.ts +15 -3
  312. package/src/mem_pools/attestation_pool/attestation_pool.ts +444 -90
  313. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +454 -110
  314. package/src/mem_pools/attestation_pool/index.ts +9 -2
  315. package/src/mem_pools/attestation_pool/mocks.ts +6 -4
  316. package/src/mem_pools/index.ts +1 -1
  317. package/src/mem_pools/instrumentation.ts +2 -1
  318. package/src/mem_pools/interface.ts +2 -2
  319. package/src/mem_pools/tx_pool/README.md +28 -13
  320. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  321. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  322. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  323. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  324. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  325. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  326. package/src/mem_pools/tx_pool_v2/README.md +209 -0
  327. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  328. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  329. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  330. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  331. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  332. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  333. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  334. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  335. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  336. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  337. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  338. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  339. package/src/mem_pools/tx_pool_v2/index.ts +11 -0
  340. package/src/mem_pools/tx_pool_v2/interfaces.ts +227 -0
  341. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +161 -0
  342. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  343. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +417 -0
  344. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +212 -0
  345. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +882 -0
  346. package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
  347. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -10
  348. package/src/msg_validators/clock_tolerance.ts +51 -0
  349. package/src/msg_validators/proposal_validator/proposal_validator.ts +31 -31
  350. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +91 -67
  351. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  352. package/src/msg_validators/tx_validator/block_header_validator.ts +6 -5
  353. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  354. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  355. package/src/msg_validators/tx_validator/factory.ts +64 -23
  356. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  357. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  358. package/src/msg_validators/tx_validator/index.ts +1 -0
  359. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  360. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  361. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  362. package/src/msg_validators/tx_validator/timestamp_validator.ts +6 -3
  363. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  364. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  365. package/src/services/data_store.ts +10 -7
  366. package/src/services/discv5/discV5_service.ts +1 -1
  367. package/src/services/dummy_service.ts +51 -0
  368. package/src/services/encoding.ts +2 -3
  369. package/src/services/index.ts +1 -0
  370. package/src/services/libp2p/instrumentation.ts +20 -7
  371. package/src/services/libp2p/libp2p_service.ts +369 -269
  372. package/src/services/peer-manager/metrics.ts +21 -4
  373. package/src/services/peer-manager/peer_scoring.ts +4 -1
  374. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  375. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  376. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  377. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  378. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  379. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  380. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  381. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  382. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  383. package/src/services/reqresp/constants.ts +14 -0
  384. package/src/services/reqresp/interface.ts +3 -0
  385. package/src/services/reqresp/metrics.ts +34 -9
  386. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  387. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -11
  388. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +57 -9
  389. package/src/services/reqresp/protocols/status.ts +5 -3
  390. package/src/services/reqresp/reqresp.ts +66 -19
  391. package/src/services/service.ts +24 -0
  392. package/src/services/tx_collection/config.ts +15 -1
  393. package/src/services/tx_collection/fast_tx_collection.ts +30 -17
  394. package/src/services/tx_collection/index.ts +5 -0
  395. package/src/services/tx_collection/instrumentation.ts +11 -2
  396. package/src/services/tx_collection/proposal_tx_collector.ts +112 -0
  397. package/src/services/tx_collection/slow_tx_collection.ts +2 -2
  398. package/src/services/tx_collection/tx_collection.ts +8 -8
  399. package/src/services/tx_file_store/config.ts +43 -0
  400. package/src/services/tx_file_store/index.ts +3 -0
  401. package/src/services/tx_file_store/instrumentation.ts +36 -0
  402. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  403. package/src/services/tx_provider.ts +2 -2
  404. package/src/services/tx_provider_instrumentation.ts +11 -5
  405. package/src/test-helpers/index.ts +2 -0
  406. package/src/test-helpers/test_tx_provider.ts +64 -0
  407. package/src/test-helpers/testbench-utils.ts +353 -0
  408. package/src/testbench/p2p_client_testbench_worker.ts +321 -126
  409. package/src/testbench/worker_client_manager.ts +304 -47
  410. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  411. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  412. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  413. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  414. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  415. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  416. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  417. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  418. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  419. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  420. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  421. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
@@ -2,7 +2,7 @@ import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
3
  import { type PromiseWithResolvers } from '@aztec/foundation/promise';
4
4
  import { DateProvider } from '@aztec/foundation/timer';
5
- import type { L2BlockInfo, L2BlockNew } from '@aztec/stdlib/block';
5
+ import type { L2Block, L2BlockInfo } from '@aztec/stdlib/block';
6
6
  import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
7
7
  import type { BlockProposal } from '@aztec/stdlib/p2p';
8
8
  import { Tx, TxHash } from '@aztec/stdlib/tx';
@@ -10,7 +10,7 @@ import { type TelemetryClient } from '@aztec/telemetry-client';
10
10
  import type { PeerId } from '@libp2p/interface';
11
11
  import type { TxPool } from '../../mem_pools/index.js';
12
12
  import type { TxPoolEvents } from '../../mem_pools/tx_pool/tx_pool.js';
13
- import type { ReqRespInterface } from '../reqresp/interface.js';
13
+ import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
14
14
  import type { TxCollectionConfig } from './config.js';
15
15
  import { FastTxCollection } from './fast_tx_collection.js';
16
16
  import { SlowTxCollection } from './slow_tx_collection.js';
@@ -23,7 +23,7 @@ export type MissingTxInfo = {
23
23
  };
24
24
  export type FastCollectionRequestInput = {
25
25
  type: 'block';
26
- block: L2BlockNew;
26
+ block: L2Block;
27
27
  } | {
28
28
  type: 'proposal';
29
29
  blockProposal: BlockProposal;
@@ -48,7 +48,7 @@ export type FastCollectionRequest = FastCollectionRequestInput & {
48
48
  * collect the same tx multiple times.
49
49
  */
50
50
  export declare class TxCollection {
51
- private readonly reqResp;
51
+ private readonly p2pService;
52
52
  private readonly nodes;
53
53
  private readonly constants;
54
54
  private readonly txPool;
@@ -67,7 +67,7 @@ export declare class TxCollection {
67
67
  protected readonly handleTxsAddedToPool: TxPoolEvents['txs-added'];
68
68
  /** Handler for the txs-added event from the tx collection sink */
69
69
  protected readonly handleTxsFound: TxPoolEvents['txs-added'];
70
- constructor(reqResp: Pick<ReqRespInterface, 'sendBatchRequest'>, nodes: TxSource[], constants: L1RollupConstants, txPool: TxPool, config: TxCollectionConfig, dateProvider?: DateProvider, telemetryClient?: TelemetryClient, log?: Logger);
70
+ constructor(p2pService: BatchTxRequesterLibP2PService, nodes: TxSource[], constants: L1RollupConstants, txPool: TxPool, config: TxCollectionConfig, dateProvider?: DateProvider, telemetryClient?: TelemetryClient, log?: Logger);
71
71
  /** Starts all collection loops. */
72
72
  start(): Promise<void>;
73
73
  /** Stops all activity. */
@@ -77,14 +77,14 @@ export declare class TxCollection {
77
77
  /** Returns L1 rollup constants. */
78
78
  getConstants(): L1RollupConstants;
79
79
  /** Starts collecting the given tx hashes for the given L2Block in the slow loop */
80
- startCollecting(block: L2BlockNew, txHashes: TxHash[]): void;
80
+ startCollecting(block: L2Block, txHashes: TxHash[]): void;
81
81
  /** Collects the set of txs for the given block proposal as fast as possible */
82
82
  collectFastForProposal(blockProposal: BlockProposal, blockNumber: BlockNumber, txHashes: TxHash[] | string[], opts: {
83
83
  deadline: Date;
84
84
  pinnedPeer?: PeerId;
85
85
  }): Promise<Tx[]>;
86
86
  /** Collects the set of txs for the given mined block as fast as possible */
87
- collectFastForBlock(block: L2BlockNew, txHashes: TxHash[] | string[], opts: {
87
+ collectFastForBlock(block: L2Block, txHashes: TxHash[] | string[], opts: {
88
88
  deadline: Date;
89
89
  pinnedPeer?: PeerId;
90
90
  }): Promise<Tx[]>;
@@ -107,4 +107,4 @@ export declare class TxCollection {
107
107
  stopCollectingForBlocksAfter(blockNumber: BlockNumber): void;
108
108
  private reconcileFoundTxsWithPool;
109
109
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3R4X2NvbGxlY3Rpb24vdHhfY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0Is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
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3R4X2NvbGxlY3Rpb24vdHhfY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hHLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0Is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
@@ -1 +1 @@
1
- {"version":3,"file":"tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ import { TxCollectionSink } from './tx_collection_sink.js';
17
17
  * via events and notifies the slow and fast collection loops to stop collecting that tx, so that we don't
18
18
  * collect the same tx multiple times.
19
19
  */ export class TxCollection {
20
- reqResp;
20
+ p2pService;
21
21
  nodes;
22
22
  constants;
23
23
  txPool;
@@ -30,8 +30,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
30
30
  /** Handles txs found by the slow and fast collection loops */ txCollectionSink;
31
31
  /** Handler for the txs-added event from the tx pool */ handleTxsAddedToPool;
32
32
  /** Handler for the txs-added event from the tx collection sink */ handleTxsFound;
33
- constructor(reqResp, nodes, constants, txPool, config, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), log = createLogger('p2p:tx_collection_service')){
34
- this.reqResp = reqResp;
33
+ constructor(p2pService, nodes, constants, txPool, config, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), log = createLogger('p2p:tx_collection_service')){
34
+ this.p2pService = p2pService;
35
35
  this.nodes = nodes;
36
36
  this.constants = constants;
37
37
  this.txPool = txPool;
@@ -39,8 +39,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
39
39
  this.dateProvider = dateProvider;
40
40
  this.log = log;
41
41
  this.txCollectionSink = new TxCollectionSink(this.txPool, telemetryClient, this.log);
42
- this.fastCollection = new FastTxCollection(this.reqResp, this.nodes, this.txCollectionSink, this.config, this.dateProvider, this.log);
43
- this.slowCollection = new SlowTxCollection(this.reqResp, this.nodes, this.txCollectionSink, this.fastCollection, constants, this.config, this.dateProvider, this.log);
42
+ this.fastCollection = new FastTxCollection(this.p2pService, this.nodes, this.txCollectionSink, this.config, this.dateProvider, this.log);
43
+ this.slowCollection = new SlowTxCollection(this.p2pService.reqResp, this.nodes, this.txCollectionSink, this.fastCollection, constants, this.config, this.dateProvider, this.log);
44
44
  this.reconcileFoundTxsLoop = new RunningPromise(()=>this.reconcileFoundTxsWithPool(), this.log, this.config.txCollectionReconcileIntervalMs);
45
45
  this.handleTxsFound = (args)=>{
46
46
  this.foundTxs(args.txs);
@@ -0,0 +1,18 @@
1
+ import { type ConfigMappingsType } from '@aztec/foundation/config';
2
+ /**
3
+ * Configuration for the TxFileStore service.
4
+ */
5
+ export type TxFileStoreConfig = {
6
+ /** URL for uploading txs to file storage (s3://, gs://, file://) */
7
+ txFileStoreUrl?: string;
8
+ /** URL for downloading txs from file storage */
9
+ txFileStoreDownloadUrl?: string;
10
+ /** Max concurrent uploads */
11
+ txFileStoreUploadConcurrency: number;
12
+ /** Max queue size to prevent unbounded memory growth */
13
+ txFileStoreMaxQueueSize: number;
14
+ /** Enable tx file store upload */
15
+ txFileStoreEnabled: boolean;
16
+ };
17
+ export declare const txFileStoreConfigMappings: ConfigMappingsType<TxFileStoreConfig>;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfZmlsZV9zdG9yZS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQTJDLE1BQU0sMEJBQTBCLENBQUM7QUFFNUc7O0dBRUc7QUFDSCxNQUFNLE1BQU0saUJBQWlCLEdBQUc7SUFDOUIsb0VBQW9FO0lBQ3BFLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN4QixnREFBZ0Q7SUFDaEQsc0JBQXNCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEMsNkJBQTZCO0lBQzdCLDRCQUE0QixFQUFFLE1BQU0sQ0FBQztJQUNyQyx3REFBd0Q7SUFDeEQsdUJBQXVCLEVBQUUsTUFBTSxDQUFDO0lBQ2hDLGtDQUFrQztJQUNsQyxrQkFBa0IsRUFBRSxPQUFPLENBQUM7Q0FDN0IsQ0FBQztBQUVGLGVBQU8sTUFBTSx5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0F3QjNFLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/services/tx_file_store/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA2C,MAAM,0BAA0B,CAAC;AAE5G;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6BAA6B;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IACrC,wDAAwD;IACxD,uBAAuB,EAAE,MAAM,CAAC;IAChC,kCAAkC;IAClC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAwB3E,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { booleanConfigHelper, numberConfigHelper } from '@aztec/foundation/config';
2
+ export const txFileStoreConfigMappings = {
3
+ txFileStoreUrl: {
4
+ env: 'TX_FILE_STORE_URL',
5
+ description: 'URL for uploading txs to file storage (s3://, gs://, file://)'
6
+ },
7
+ txFileStoreDownloadUrl: {
8
+ env: 'TX_FILE_STORE_DOWNLOAD_URL',
9
+ description: 'URL for downloading txs from file storage'
10
+ },
11
+ txFileStoreUploadConcurrency: {
12
+ env: 'TX_FILE_STORE_UPLOAD_CONCURRENCY',
13
+ description: 'Maximum number of concurrent tx uploads',
14
+ ...numberConfigHelper(10)
15
+ },
16
+ txFileStoreMaxQueueSize: {
17
+ env: 'TX_FILE_STORE_MAX_QUEUE_SIZE',
18
+ description: 'Maximum queue size for pending uploads (oldest dropped when exceeded)',
19
+ ...numberConfigHelper(1000)
20
+ },
21
+ txFileStoreEnabled: {
22
+ env: 'TX_FILE_STORE_ENABLED',
23
+ description: 'Enable uploading transactions to file storage',
24
+ ...booleanConfigHelper(false)
25
+ }
26
+ };
@@ -0,0 +1,4 @@
1
+ export { TxFileStore } from './tx_file_store.js';
2
+ export { TxFileStoreInstrumentation } from './instrumentation.js';
3
+ export { type TxFileStoreConfig, txFileStoreConfigMappings } from './config.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9maWxlX3N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/tx_file_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,KAAK,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { TxFileStore } from './tx_file_store.js';
2
+ export { TxFileStoreInstrumentation } from './instrumentation.js';
3
+ export { txFileStoreConfigMappings } from './config.js';
@@ -0,0 +1,15 @@
1
+ import { type TelemetryClient } from '@aztec/telemetry-client';
2
+ /** Instrumentation for the TxFileStore service. */
3
+ export declare class TxFileStoreInstrumentation {
4
+ private uploadsSuccess;
5
+ private uploadsFailed;
6
+ private uploadsSkipped;
7
+ private uploadDuration;
8
+ private queueSize;
9
+ constructor(client: TelemetryClient, name: string);
10
+ recordUploadSuccess(durationMs: number): void;
11
+ recordUploadFailed(): void;
12
+ recordUploadSkipped(): void;
13
+ recordQueueSize(size: number): void;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfZmlsZV9zdG9yZS9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUV4SCxtREFBbUQ7QUFDbkQscUJBQWEsMEJBQTBCO0lBQ3JDLE9BQU8sQ0FBQyxjQUFjLENBQWdCO0lBQ3RDLE9BQU8sQ0FBQyxhQUFhLENBQWdCO0lBQ3JDLE9BQU8sQ0FBQyxjQUFjLENBQWdCO0lBQ3RDLE9BQU8sQ0FBQyxjQUFjLENBQVk7SUFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBUTtJQUV6QixZQUFZLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFPaEQ7SUFFRCxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUdyQztJQUVELGtCQUFrQixTQUVqQjtJQUVELG1CQUFtQixTQUVsQjtJQUVELGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxRQUUzQjtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/services/tx_file_store/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAExH,mDAAmD;AACnD,qBAAa,0BAA0B;IACrC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,SAAS,CAAQ;IAEzB,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAOhD;IAED,mBAAmB,CAAC,UAAU,EAAE,MAAM,QAGrC;IAED,kBAAkB,SAEjB;IAED,mBAAmB,SAElB;IAED,eAAe,CAAC,IAAI,EAAE,MAAM,QAE3B;CACF"}
@@ -0,0 +1,29 @@
1
+ import { Metrics } from '@aztec/telemetry-client';
2
+ /** Instrumentation for the TxFileStore service. */ export class TxFileStoreInstrumentation {
3
+ uploadsSuccess;
4
+ uploadsFailed;
5
+ uploadsSkipped;
6
+ uploadDuration;
7
+ queueSize;
8
+ constructor(client, name){
9
+ const meter = client.getMeter(name);
10
+ this.uploadsSuccess = meter.createUpDownCounter(Metrics.TX_FILE_STORE_UPLOADS_SUCCESS);
11
+ this.uploadsFailed = meter.createUpDownCounter(Metrics.TX_FILE_STORE_UPLOADS_FAILED);
12
+ this.uploadsSkipped = meter.createUpDownCounter(Metrics.TX_FILE_STORE_UPLOADS_SKIPPED);
13
+ this.uploadDuration = meter.createHistogram(Metrics.TX_FILE_STORE_UPLOAD_DURATION);
14
+ this.queueSize = meter.createGauge(Metrics.TX_FILE_STORE_QUEUE_SIZE);
15
+ }
16
+ recordUploadSuccess(durationMs) {
17
+ this.uploadsSuccess.add(1);
18
+ this.uploadDuration.record(durationMs);
19
+ }
20
+ recordUploadFailed() {
21
+ this.uploadsFailed.add(1);
22
+ }
23
+ recordUploadSkipped() {
24
+ this.uploadsSkipped.add(1);
25
+ }
26
+ recordQueueSize(size) {
27
+ this.queueSize.record(size);
28
+ }
29
+ }
@@ -0,0 +1,47 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { type FileStore } from '@aztec/stdlib/file-store';
3
+ import { type TelemetryClient } from '@aztec/telemetry-client';
4
+ import type { TxPool } from '../../mem_pools/tx_pool/index.js';
5
+ import type { TxFileStoreConfig } from './config.js';
6
+ /**
7
+ * Uploads validated transactions to a file store as a fallback retrieval mechanism.
8
+ * Listens to TxPool txs-added events and uploads txs asynchronously with bounded concurrency.
9
+ */
10
+ export declare class TxFileStore {
11
+ private readonly fileStore;
12
+ private readonly txPool;
13
+ private readonly config;
14
+ private readonly instrumentation;
15
+ private readonly log;
16
+ private uploadQueue;
17
+ private activeUploads;
18
+ private readonly queueProcessor;
19
+ private readonly handleTxsAdded;
20
+ /** Recently uploaded tx hashes for deduplication. */
21
+ private recentUploads;
22
+ private recentUploadsOrder;
23
+ private readonly maxRecentUploads;
24
+ private constructor();
25
+ /**
26
+ * Creates and initializes the file store.
27
+ * @param txPool - The transaction pool to listen to.
28
+ * @param config - The file store configuration.
29
+ * @param log - Optional logger.
30
+ * @param telemetry - Optional telemetry client.
31
+ * @param fileStoreOverride - Optional FileStore for testing (bypasses createFileStore).
32
+ * @returns The file store instance, or undefined if not configured/enabled.
33
+ */
34
+ static create(txPool: TxPool, config: TxFileStoreConfig, log?: Logger, telemetry?: TelemetryClient, fileStoreOverride?: FileStore): Promise<TxFileStore | undefined>;
35
+ /** Starts listening to TxPool events and uploading txs. */
36
+ start(): void;
37
+ /** Stops listening and waits for pending uploads to complete. */
38
+ stop(): Promise<void>;
39
+ private enqueueTxs;
40
+ private processQueueBatch;
41
+ private uploadTx;
42
+ /** Waits for all queued and in-flight uploads to complete. For testing. */
43
+ flush(): Promise<void>;
44
+ /** Returns the number of pending uploads (queued + in-flight). */
45
+ getPendingUploadCount(): number;
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfZmlsZV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3R4X2ZpbGVfc3RvcmUvdHhfZmlsZV9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFJbEUsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQWdCLE1BQU0sa0NBQWtDLENBQUM7QUFDN0UsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHckQ7OztHQUdHO0FBQ0gscUJBQWEsV0FBVztJQVlwQixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7SUFDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWU7SUFDaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBZnRCLE9BQU8sQ0FBQyxXQUFXLENBQVk7SUFDL0IsT0FBTyxDQUFDLGFBQWEsQ0FBSztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBaUI7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQTRCO0lBRTNELHFEQUFxRDtJQUNyRCxPQUFPLENBQUMsYUFBYSxDQUEwQjtJQUMvQyxPQUFPLENBQUMsa0JBQWtCLENBQWdCO0lBQzFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQVE7SUFFekMsT0FBTyxlQVdOO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLEVBQUUsaUJBQWlCLEVBQ3pCLEdBQUcsR0FBRSxNQUEwQyxFQUMvQyxTQUFTLEdBQUUsZUFBc0MsRUFDakQsaUJBQWlCLENBQUMsRUFBRSxTQUFTLEdBQzVCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBb0JsQztJQUVELDJEQUEyRDtJQUNwRCxLQUFLLElBQUksSUFBSSxDQU9uQjtJQUVELGlFQUFpRTtJQUNwRCxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUlqQztJQUVELE9BQU8sQ0FBQyxVQUFVO1lBZ0JKLGlCQUFpQjtZQVlqQixRQUFRO0lBdUN0QiwyRUFBMkU7SUFDOUQsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJbEM7SUFFRCxrRUFBa0U7SUFDM0QscUJBQXFCLElBQUksTUFBTSxDQUVyQztDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx_file_store.d.ts","sourceRoot":"","sources":["../../../src/services/tx_file_store/tx_file_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,kCAAkC,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD;;;GAGG;AACH,qBAAa,WAAW;IAYpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAftB,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAE3D,qDAAqD;IACrD,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IAEzC,OAAO,eAWN;IAED;;;;;;;;OAQG;IACH,OAAa,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,iBAAiB,EACzB,GAAG,GAAE,MAA0C,EAC/C,SAAS,GAAE,eAAsC,EACjD,iBAAiB,CAAC,EAAE,SAAS,GAC5B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAoBlC;IAED,2DAA2D;IACpD,KAAK,IAAI,IAAI,CAOnB;IAED,iEAAiE;IACpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAIjC;IAED,OAAO,CAAC,UAAU;YAgBJ,iBAAiB;YAYjB,QAAQ;IAuCtB,2EAA2E;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAIlC;IAED,kEAAkE;IAC3D,qBAAqB,IAAI,MAAM,CAErC;CACF"}
@@ -0,0 +1,149 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { RunningPromise } from '@aztec/foundation/promise';
3
+ import { makeBackoff, retry } from '@aztec/foundation/retry';
4
+ import { Timer } from '@aztec/foundation/timer';
5
+ import { createFileStore } from '@aztec/stdlib/file-store';
6
+ import { getTelemetryClient } from '@aztec/telemetry-client';
7
+ import { TxFileStoreInstrumentation } from './instrumentation.js';
8
+ /**
9
+ * Uploads validated transactions to a file store as a fallback retrieval mechanism.
10
+ * Listens to TxPool txs-added events and uploads txs asynchronously with bounded concurrency.
11
+ */ export class TxFileStore {
12
+ fileStore;
13
+ txPool;
14
+ config;
15
+ instrumentation;
16
+ log;
17
+ uploadQueue;
18
+ activeUploads;
19
+ queueProcessor;
20
+ handleTxsAdded;
21
+ /** Recently uploaded tx hashes for deduplication. */ recentUploads;
22
+ recentUploadsOrder;
23
+ maxRecentUploads;
24
+ constructor(fileStore, txPool, config, instrumentation, log){
25
+ this.fileStore = fileStore;
26
+ this.txPool = txPool;
27
+ this.config = config;
28
+ this.instrumentation = instrumentation;
29
+ this.log = log;
30
+ this.uploadQueue = [];
31
+ this.activeUploads = 0;
32
+ this.recentUploads = new Set();
33
+ this.recentUploadsOrder = [];
34
+ this.maxRecentUploads = 1000;
35
+ this.handleTxsAdded = (args)=>{
36
+ this.enqueueTxs(args.txs);
37
+ };
38
+ this.queueProcessor = new RunningPromise(()=>this.processQueueBatch(), this.log, 100);
39
+ }
40
+ /**
41
+ * Creates and initializes the file store.
42
+ * @param txPool - The transaction pool to listen to.
43
+ * @param config - The file store configuration.
44
+ * @param log - Optional logger.
45
+ * @param telemetry - Optional telemetry client.
46
+ * @param fileStoreOverride - Optional FileStore for testing (bypasses createFileStore).
47
+ * @returns The file store instance, or undefined if not configured/enabled.
48
+ */ static async create(txPool, config, log = createLogger('p2p:tx_file_store'), telemetry = getTelemetryClient(), fileStoreOverride) {
49
+ if (!config.txFileStoreEnabled) {
50
+ log.debug('Tx file store is disabled');
51
+ return undefined;
52
+ }
53
+ if (!config.txFileStoreUrl) {
54
+ log.warn('Tx file store is enabled but URL is not configured');
55
+ return undefined;
56
+ }
57
+ const fileStore = fileStoreOverride ?? await createFileStore(config.txFileStoreUrl, log);
58
+ if (!fileStore) {
59
+ log.warn('Failed to create file store for tx file store');
60
+ return undefined;
61
+ }
62
+ const instrumentation = new TxFileStoreInstrumentation(telemetry, 'TxFileStore');
63
+ log.info('Created tx file store', {
64
+ url: config.txFileStoreUrl
65
+ });
66
+ return new TxFileStore(fileStore, txPool, config, instrumentation, log);
67
+ }
68
+ /** Starts listening to TxPool events and uploading txs. */ start() {
69
+ this.queueProcessor.start();
70
+ this.txPool.on('txs-added', this.handleTxsAdded);
71
+ this.log.info('Started tx file store', {
72
+ concurrency: this.config.txFileStoreUploadConcurrency,
73
+ maxQueueSize: this.config.txFileStoreMaxQueueSize
74
+ });
75
+ }
76
+ /** Stops listening and waits for pending uploads to complete. */ async stop() {
77
+ this.txPool.removeListener('txs-added', this.handleTxsAdded);
78
+ await this.queueProcessor.stop();
79
+ this.log.info('Stopped tx file store');
80
+ }
81
+ enqueueTxs(txs) {
82
+ this.uploadQueue.push(...txs);
83
+ // Enforce max queue size by dropping oldest entries
84
+ const overflow = this.uploadQueue.length - this.config.txFileStoreMaxQueueSize;
85
+ if (overflow > 0) {
86
+ this.log.warn(`Upload queue overflow, dropping ${overflow} oldest txs`);
87
+ this.uploadQueue.splice(0, overflow);
88
+ }
89
+ this.instrumentation.recordQueueSize(this.uploadQueue.length);
90
+ // Immediately start uploading txs
91
+ void this.queueProcessor.trigger();
92
+ }
93
+ async processQueueBatch() {
94
+ const batch = this.uploadQueue.splice(0, this.config.txFileStoreUploadConcurrency);
95
+ this.instrumentation.recordQueueSize(this.uploadQueue.length);
96
+ this.activeUploads += batch.length;
97
+ try {
98
+ await Promise.all(batch.map((tx)=>this.uploadTx(tx)));
99
+ } finally{
100
+ this.activeUploads -= batch.length;
101
+ }
102
+ }
103
+ async uploadTx(tx) {
104
+ const txHash = tx.getTxHash().toString();
105
+ const path = `txs/${txHash}.bin`;
106
+ const timer = new Timer();
107
+ if (this.recentUploads.has(txHash)) {
108
+ return;
109
+ }
110
+ try {
111
+ this.recentUploads.add(txHash);
112
+ this.recentUploadsOrder.push(txHash);
113
+ if (this.recentUploadsOrder.length > this.maxRecentUploads) {
114
+ // delete old entries in recentUploads
115
+ for (const txHashToRemove of this.recentUploadsOrder.splice(0, this.recentUploadsOrder.length - this.maxRecentUploads)){
116
+ this.recentUploads.delete(txHashToRemove);
117
+ }
118
+ }
119
+ await retry(()=>this.fileStore.save(path, tx.toBuffer(), {
120
+ compress: false
121
+ }), `Uploading tx ${txHash}`, makeBackoff([
122
+ 0.1,
123
+ 0.5,
124
+ 2
125
+ ]), this.log, true);
126
+ const durationMs = Math.trunc(timer.ms());
127
+ this.log.debug(`Uploaded tx to file store`, {
128
+ txHash,
129
+ path,
130
+ durationMs
131
+ });
132
+ this.instrumentation.recordUploadSuccess(durationMs);
133
+ } catch (err) {
134
+ this.log.warn(`Failed to upload tx to file store after retries`, {
135
+ txHash,
136
+ error: err
137
+ });
138
+ this.instrumentation.recordUploadFailed();
139
+ }
140
+ }
141
+ /** Waits for all queued and in-flight uploads to complete. For testing. */ async flush() {
142
+ while(this.uploadQueue.length > 0 || this.activeUploads > 0){
143
+ await this.queueProcessor.trigger();
144
+ }
145
+ }
146
+ /** Returns the number of pending uploads (queued + in-flight). */ getPendingUploadCount() {
147
+ return this.uploadQueue.length + this.activeUploads;
148
+ }
149
+ }
@@ -1,6 +1,6 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
- import type { L2BlockNew } from '@aztec/stdlib/block';
3
+ import type { L2Block } from '@aztec/stdlib/block';
4
4
  import type { ITxProvider } from '@aztec/stdlib/interfaces/server';
5
5
  import type { BlockProposal } from '@aztec/stdlib/p2p';
6
6
  import { Tx, TxHash } from '@aztec/stdlib/tx';
@@ -35,7 +35,7 @@ export declare class TxProvider implements ITxProvider {
35
35
  missingTxs: TxHash[];
36
36
  }>;
37
37
  /** Gathers txs from the tx pool, remote rpc nodes, and reqresp. */
38
- getTxsForBlock(block: L2BlockNew, opts: {
38
+ getTxsForBlock(block: L2Block, opts: {
39
39
  deadline: Date;
40
40
  }): Promise<{
41
41
  txs: Tx[];
@@ -48,4 +48,4 @@ export declare class TxProvider implements ITxProvider {
48
48
  private extractFromProposal;
49
49
  private processProposalTxs;
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvdmlkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy90eF9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFlLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUE4QixZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RTs7O0dBR0c7QUFDSCxxQkFBYSxVQUFXLFlBQVcsV0FBVztJQUkxQyxPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxHQUFHO0lBTmIsU0FBUyxDQUFDLGVBQWUsRUFBRSx5QkFBeUIsQ0FBQztJQUVyRCxZQUNVLFlBQVksRUFBRSxZQUFZLEVBQzFCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQ3hDLEdBQUcsR0FBRSxNQUF5QyxFQUN0RCxNQUFNLEdBQUUsZUFBc0MsRUFHL0M7SUFFRCxzREFBc0Q7SUFDekMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBa0I3RjtJQUVELGtGQUFrRjtJQUMzRSxzQkFBc0IsQ0FDM0IsYUFBYSxFQUFFLGFBQWEsRUFDNUIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsSUFBSSxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FDdkQsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQU85QztJQUVELG1FQUFtRTtJQUM1RCxjQUFjLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBTy9HO1lBRWEsMkJBQTJCO0lBZ0N6QyxPQUFPLENBQUMsUUFBUTtZQUtGLG9CQUFvQjtZQXlGcEIsY0FBYztJQVk1QixPQUFPLENBQUMsbUJBQW1CO1lBT2Isa0JBQWtCO0NBT2pDIn0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvdmlkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy90eF9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBZSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUE4QixZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RTs7O0dBR0c7QUFDSCxxQkFBYSxVQUFXLFlBQVcsV0FBVztJQUkxQyxPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxHQUFHO0lBTmIsU0FBUyxDQUFDLGVBQWUsRUFBRSx5QkFBeUIsQ0FBQztJQUVyRCxZQUNVLFlBQVksRUFBRSxZQUFZLEVBQzFCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQ3hDLEdBQUcsR0FBRSxNQUF5QyxFQUN0RCxNQUFNLEdBQUUsZUFBc0MsRUFHL0M7SUFFRCxzREFBc0Q7SUFDekMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBa0I3RjtJQUVELGtGQUFrRjtJQUMzRSxzQkFBc0IsQ0FDM0IsYUFBYSxFQUFFLGFBQWEsRUFDNUIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsSUFBSSxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FDdkQsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQU85QztJQUVELG1FQUFtRTtJQUM1RCxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBTzVHO1lBRWEsMkJBQTJCO0lBZ0N6QyxPQUFPLENBQUMsUUFBUTtZQUtGLG9CQUFvQjtZQXlGcEIsY0FBYztJQVk1QixPQUFPLENBQUMsbUJBQW1CO1lBT2Isa0JBQWtCO0NBT2pDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"tx_provider.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAA8B,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAI1C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IANb,SAAS,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAErD,YACU,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EACxC,GAAG,GAAE,MAAyC,EACtD,MAAM,GAAE,eAAsC,EAG/C;IAED,sDAAsD;IACzC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAkB7F;IAED,kFAAkF;IAC3E,sBAAsB,CAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,GACvD,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO9C;IAED,mEAAmE;IAC5D,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO/G;YAEa,2BAA2B;IAgCzC,OAAO,CAAC,QAAQ;YAKF,oBAAoB;YAyFpB,cAAc;IAY5B,OAAO,CAAC,mBAAmB;YAOb,kBAAkB;CAOjC"}
1
+ {"version":3,"file":"tx_provider.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAA8B,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAI1C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IANb,SAAS,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAErD,YACU,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EACxC,GAAG,GAAE,MAAyC,EACtD,MAAM,GAAE,eAAsC,EAG/C;IAED,sDAAsD;IACzC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAkB7F;IAED,kFAAkF;IAC3E,sBAAsB,CAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,GACvD,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO9C;IAED,mEAAmE;IAC5D,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO5G;YAEa,2BAA2B;IAgCzC,OAAO,CAAC,QAAQ;YAKF,oBAAoB;YAyFpB,cAAc;IAY5B,OAAO,CAAC,mBAAmB;YAOb,kBAAkB;CAOjC"}
@@ -13,4 +13,4 @@ export declare class TxProviderInstrumentation {
13
13
  recordTxsRequestDelay(delay: number): void;
14
14
  incMissingTxs(count: number): void;
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvdmlkZXJfaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdHhfcHJvdmlkZXJfaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFFNUcscUJBQWEseUJBQXlCO0lBQ3BDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBZ0I7SUFDM0MsT0FBTyxDQUFDLGtCQUFrQixDQUFnQjtJQUMxQyxPQUFPLENBQUMsY0FBYyxDQUFnQjtJQUN0QyxPQUFPLENBQUMsZUFBZSxDQUFnQjtJQUV2QyxPQUFPLENBQUMsNkJBQTZCLENBQVk7SUFDakQsT0FBTyxDQUFDLGVBQWUsQ0FBWTtJQUVuQyxZQUFZLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFjaEQ7SUFFRCxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxRQUVoQztJQUVELGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLFFBRTlCO0lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFHekM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxRQUVsQztJQUVELGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxRQUUxQjtDQUNGIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvdmlkZXJfaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdHhfcHJvdmlkZXJfaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxxQkFBYSx5QkFBeUI7SUFDcEMsT0FBTyxDQUFDLG1CQUFtQixDQUFnQjtJQUMzQyxPQUFPLENBQUMsa0JBQWtCLENBQWdCO0lBQzFDLE9BQU8sQ0FBQyxjQUFjLENBQWdCO0lBQ3RDLE9BQU8sQ0FBQyxlQUFlLENBQWdCO0lBRXZDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBWTtJQUNqRCxPQUFPLENBQUMsZUFBZSxDQUFZO0lBRW5DLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQWNoRDtJQUVELG1CQUFtQixDQUFDLEtBQUssRUFBRSxNQUFNLFFBRWhDO0lBRUQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFOUI7SUFFRCxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUd6QztJQUVELHFCQUFxQixDQUFDLEtBQUssRUFBRSxNQUFNLFFBRWxDO0lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLFFBRTFCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"tx_provider_instrumentation.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAE5G,qBAAa,yBAAyB;IACpC,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO,CAAC,6BAA6B,CAAY;IACjD,OAAO,CAAC,eAAe,CAAY;IAEnC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAchD;IAED,mBAAmB,CAAC,KAAK,EAAE,MAAM,QAEhC;IAED,iBAAiB,CAAC,KAAK,EAAE,MAAM,QAE9B;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAGzC;IAED,qBAAqB,CAAC,KAAK,EAAE,MAAM,QAElC;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,QAE1B;CACF"}
1
+ {"version":3,"file":"tx_provider_instrumentation.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,yBAAyB;IACpC,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO,CAAC,6BAA6B,CAAY;IACjD,OAAO,CAAC,eAAe,CAAY;IAEnC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAchD;IAED,mBAAmB,CAAC,KAAK,EAAE,MAAM,QAEhC;IAED,iBAAiB,CAAC,KAAK,EAAE,MAAM,QAE9B;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAGzC;IAED,qBAAqB,CAAC,KAAK,EAAE,MAAM,QAElC;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,QAE1B;CACF"}
@@ -1,4 +1,4 @@
1
- import { Metrics } from '@aztec/telemetry-client';
1
+ import { Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
2
2
  export class TxProviderInstrumentation {
3
3
  txFromProposalCount;
4
4
  txFromMempoolCount;
@@ -8,10 +8,10 @@ export class TxProviderInstrumentation {
8
8
  txsRequestDelay;
9
9
  constructor(client, name){
10
10
  const meter = client.getMeter(name);
11
- this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT);
12
- this.txFromMempoolCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT);
13
- this.txFromP2PCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT);
14
- this.missingTxsCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_MISSING_TXS_COUNT);
11
+ this.txFromProposalCount = createUpDownCounterWithDefault(meter, Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT);
12
+ this.txFromMempoolCount = createUpDownCounterWithDefault(meter, Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT);
13
+ this.txFromP2PCount = createUpDownCounterWithDefault(meter, Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT);
14
+ this.missingTxsCount = createUpDownCounterWithDefault(meter, Metrics.TX_PROVIDER_MISSING_TXS_COUNT);
15
15
  this.fractionOfTxsRequestedFromP2P = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUESTED_FRACTION);
16
16
  this.txsRequestDelay = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUEST_DELAY);
17
17
  }
@@ -4,4 +4,6 @@ export * from './make-enrs.js';
4
4
  export * from './make-test-p2p-clients.js';
5
5
  export * from './reqresp-nodes.js';
6
6
  export * from './mock-pubsub.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LWhlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUMifQ==
7
+ export * from './test_tx_provider.js';
8
+ export * from './testbench-utils.js';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LWhlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
@@ -4,3 +4,5 @@ export * from './make-enrs.js';
4
4
  export * from './make-test-p2p-clients.js';
5
5
  export * from './reqresp-nodes.js';
6
6
  export * from './mock-pubsub.js';
7
+ export * from './test_tx_provider.js';
8
+ export * from './testbench-utils.js';
@@ -0,0 +1,40 @@
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { L2Block } from '@aztec/stdlib/block';
3
+ import type { ITxProvider } from '@aztec/stdlib/interfaces/server';
4
+ import type { BlockProposal } from '@aztec/stdlib/p2p';
5
+ import { type Tx, TxHash } from '@aztec/stdlib/tx';
6
+ import type { PeerId } from '@libp2p/interface';
7
+ /**
8
+ * Test transaction provider that can be seeded with transactions.
9
+ * Returns seeded txs when requested by hash, useful for testing block
10
+ * proposal handling without requiring a full P2P network.
11
+ */
12
+ export declare class TestTxProvider implements ITxProvider {
13
+ private txs;
14
+ /** Seed transactions that will be returned when requested. */
15
+ seed(txs: Tx[]): void;
16
+ /** Clear all seeded transactions. */
17
+ clear(): void;
18
+ /** Returns txs from the seeded collection given their hashes. */
19
+ getAvailableTxs(txHashes: TxHash[]): Promise<{
20
+ txs: Tx[];
21
+ missingTxs: TxHash[];
22
+ }>;
23
+ /** Get txs for a block proposal, returning any seeded txs that match the requested hashes. */
24
+ getTxsForBlockProposal(blockProposal: BlockProposal, _blockNumber: BlockNumber, _opts: {
25
+ pinnedPeer: PeerId | undefined;
26
+ deadline: Date;
27
+ }): Promise<{
28
+ txs: Tx[];
29
+ missingTxs: TxHash[];
30
+ }>;
31
+ /** Get txs for a block, returning any seeded txs that match the tx effects in the block. */
32
+ getTxsForBlock(block: L2Block, _opts: {
33
+ deadline: Date;
34
+ }): Promise<{
35
+ txs: Tx[];
36
+ missingTxs: TxHash[];
37
+ }>;
38
+ private getTxsByHashes;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF90eF9wcm92aWRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy90ZXN0X3R4X3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRDs7OztHQUlHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLFdBQVc7SUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBOEI7SUFFekMsOERBQThEO0lBQzlELElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBSWI7SUFFRCxxQ0FBcUM7SUFDckMsS0FBSyxTQUVKO0lBRUQsaUVBQWlFO0lBQ2pFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQUVoRjtJQUVELDhGQUE4RjtJQUM5RixzQkFBc0IsQ0FDcEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsWUFBWSxFQUFFLFdBQVcsRUFDekIsS0FBSyxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FDeEQsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQUU5QztJQUVELDRGQUE0RjtJQUM1RixjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBR3RHO0lBRUQsT0FBTyxDQUFDLGNBQWM7Q0FldkIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_tx_provider.d.ts","sourceRoot":"","sources":["../../src/test-helpers/test_tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,GAAG,CAA8B;IAEzC,8DAA8D;IAC9D,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,QAIb;IAED,qCAAqC;IACrC,KAAK,SAEJ;IAED,iEAAiE;IACjE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAEhF;IAED,8FAA8F;IAC9F,sBAAsB,CACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,WAAW,EACzB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,GACxD,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAE9C;IAED,4FAA4F;IAC5F,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAGtG;IAED,OAAO,CAAC,cAAc;CAevB"}