@aztec/p2p 0.0.1-commit.e2b2873ed → 0.0.1-commit.e304674f1

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 (407) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +7 -7
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +37 -30
  5. package/dest/client/interface.d.ts +22 -20
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +11 -19
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +83 -102
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -10
  11. package/dest/config.d.ts +43 -15
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +91 -37
  14. package/dest/errors/p2p-service.error.d.ts +9 -0
  15. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  16. package/dest/errors/p2p-service.error.js +10 -0
  17. package/dest/errors/tx-pool.error.d.ts +8 -0
  18. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  19. package/dest/errors/tx-pool.error.js +9 -0
  20. package/dest/index.d.ts +1 -2
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +0 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +7 -5
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.js +16 -6
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
  27. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  30. package/dest/mem_pools/index.d.ts +1 -2
  31. package/dest/mem_pools/index.d.ts.map +1 -1
  32. package/dest/mem_pools/instrumentation.d.ts +4 -2
  33. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  34. package/dest/mem_pools/instrumentation.js +16 -14
  35. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +30 -13
  36. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
  38. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  39. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  41. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  42. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +7 -3
  44. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  47. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  48. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  51. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  54. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  55. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  56. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  58. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  59. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  61. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  62. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  64. package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
  65. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  66. package/dest/mem_pools/tx_pool_v2/index.js +1 -1
  67. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  68. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  70. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +28 -10
  71. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  72. package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
  73. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -15
  74. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  75. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +112 -19
  76. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  77. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -5
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +17 -6
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +319 -147
  85. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
  86. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  87. package/dest/msg_validators/attestation_validator/attestation_validator.js +5 -4
  88. package/dest/msg_validators/clock_tolerance.d.ts +1 -1
  89. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  90. package/dest/msg_validators/clock_tolerance.js +4 -3
  91. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  92. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  93. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  94. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  95. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  97. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  98. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  99. package/dest/msg_validators/proposal_validator/proposal_validator.js +53 -41
  100. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
  101. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  103. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  104. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  105. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  106. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  107. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  108. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  109. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  110. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  111. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  112. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  113. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  114. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  115. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  116. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  117. package/dest/msg_validators/tx_validator/factory.js +247 -60
  118. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  119. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  120. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  121. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  122. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/gas_validator.js +112 -43
  124. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  125. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/index.js +2 -0
  127. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  128. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  130. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  131. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  132. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  133. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  134. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  135. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  136. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
  137. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  138. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  139. package/dest/services/dummy_service.d.ts +7 -5
  140. package/dest/services/dummy_service.d.ts.map +1 -1
  141. package/dest/services/dummy_service.js +9 -5
  142. package/dest/services/encoding.d.ts +6 -2
  143. package/dest/services/encoding.d.ts.map +1 -1
  144. package/dest/services/encoding.js +16 -9
  145. package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
  146. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  147. package/dest/services/gossipsub/topic_score_params.js +32 -10
  148. package/dest/services/libp2p/libp2p_service.d.ts +29 -36
  149. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  150. package/dest/services/libp2p/libp2p_service.js +213 -197
  151. package/dest/services/peer-manager/metrics.d.ts +3 -1
  152. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  153. package/dest/services/peer-manager/metrics.js +6 -0
  154. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  155. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  156. package/dest/services/peer-manager/peer_manager.js +24 -9
  157. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  158. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  159. package/dest/services/peer-manager/peer_scoring.js +32 -10
  160. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +12 -8
  161. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  162. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +83 -106
  163. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  164. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  165. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  166. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  167. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  168. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  169. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  170. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  171. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  172. package/dest/services/reqresp/interface.d.ts +1 -9
  173. package/dest/services/reqresp/interface.d.ts.map +1 -1
  174. package/dest/services/reqresp/interface.js +0 -11
  175. package/dest/services/reqresp/metrics.d.ts +1 -1
  176. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  177. package/dest/services/reqresp/metrics.js +0 -1
  178. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  179. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  180. package/dest/services/reqresp/protocols/index.js +0 -1
  181. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  182. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  183. package/dest/services/reqresp/protocols/tx.js +1 -3
  184. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  185. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  186. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  187. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  188. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  189. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  190. package/dest/services/reqresp/reqresp.d.ts +1 -1
  191. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  192. package/dest/services/reqresp/reqresp.js +20 -11
  193. package/dest/services/service.d.ts +9 -4
  194. package/dest/services/service.d.ts.map +1 -1
  195. package/dest/services/tx_collection/config.d.ts +13 -1
  196. package/dest/services/tx_collection/config.d.ts.map +1 -1
  197. package/dest/services/tx_collection/config.js +30 -0
  198. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  199. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  200. package/dest/services/tx_collection/fast_tx_collection.js +65 -75
  201. package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
  202. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  203. package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
  204. package/dest/services/tx_collection/file_store_tx_source.d.ts +17 -6
  205. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  206. package/dest/services/tx_collection/file_store_tx_source.js +53 -10
  207. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  208. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  209. package/dest/services/tx_collection/instrumentation.js +2 -1
  210. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -7
  211. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  212. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  213. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  214. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  215. package/dest/services/tx_collection/request_tracker.js +84 -0
  216. package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
  217. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  218. package/dest/services/tx_collection/slow_tx_collection.js +17 -12
  219. package/dest/services/tx_collection/tx_collection.d.ts +9 -9
  220. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  221. package/dest/services/tx_collection/tx_collection.js +26 -10
  222. package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
  223. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  224. package/dest/services/tx_collection/tx_collection_sink.js +13 -22
  225. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  226. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  227. package/dest/services/tx_collection/tx_source.js +26 -7
  228. package/dest/services/tx_file_store/tx_file_store.d.ts +3 -2
  229. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  230. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  231. package/dest/services/tx_provider.d.ts +3 -3
  232. package/dest/services/tx_provider.d.ts.map +1 -1
  233. package/dest/services/tx_provider.js +4 -4
  234. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  235. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  236. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  237. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  238. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  239. package/dest/test-helpers/mock-pubsub.js +8 -2
  240. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  241. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  242. package/dest/test-helpers/reqresp-nodes.js +2 -4
  243. package/dest/test-helpers/testbench-utils.d.ts +8 -3
  244. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  245. package/dest/test-helpers/testbench-utils.js +30 -4
  246. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  247. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  248. package/dest/testbench/p2p_client_testbench_worker.js +78 -26
  249. package/dest/testbench/worker_client_manager.d.ts +10 -1
  250. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  251. package/dest/testbench/worker_client_manager.js +55 -3
  252. package/dest/util.d.ts +3 -3
  253. package/dest/util.d.ts.map +1 -1
  254. package/package.json +14 -14
  255. package/src/client/factory.ts +68 -48
  256. package/src/client/interface.ts +26 -21
  257. package/src/client/p2p_client.ts +91 -132
  258. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +33 -14
  259. package/src/config.ts +133 -43
  260. package/src/errors/p2p-service.error.ts +11 -0
  261. package/src/errors/tx-pool.error.ts +12 -0
  262. package/src/index.ts +0 -1
  263. package/src/mem_pools/attestation_pool/attestation_pool.ts +20 -9
  264. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  265. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  266. package/src/mem_pools/index.ts +0 -3
  267. package/src/mem_pools/instrumentation.ts +17 -13
  268. package/src/mem_pools/tx_pool_v2/README.md +52 -28
  269. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
  270. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  271. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +7 -3
  272. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  273. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  274. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  275. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  276. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  277. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  278. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  279. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  280. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  281. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  282. package/src/mem_pools/tx_pool_v2/interfaces.ts +30 -10
  283. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +163 -27
  284. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
  285. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +34 -8
  286. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +353 -143
  287. package/src/msg_validators/attestation_validator/README.md +49 -0
  288. package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
  289. package/src/msg_validators/clock_tolerance.ts +4 -3
  290. package/src/msg_validators/proposal_validator/README.md +123 -0
  291. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  292. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  293. package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -45
  294. package/src/msg_validators/tx_validator/README.md +119 -0
  295. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
  296. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  297. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  298. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  299. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  300. package/src/msg_validators/tx_validator/factory.ts +394 -78
  301. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  302. package/src/msg_validators/tx_validator/gas_validator.ts +145 -33
  303. package/src/msg_validators/tx_validator/index.ts +2 -0
  304. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  305. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  306. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  307. package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
  308. package/src/services/dummy_service.ts +12 -7
  309. package/src/services/encoding.ts +16 -8
  310. package/src/services/gossipsub/README.md +29 -14
  311. package/src/services/gossipsub/topic_score_params.ts +49 -13
  312. package/src/services/libp2p/libp2p_service.ts +228 -223
  313. package/src/services/peer-manager/metrics.ts +7 -0
  314. package/src/services/peer-manager/peer_manager.ts +28 -9
  315. package/src/services/peer-manager/peer_scoring.ts +27 -5
  316. package/src/services/reqresp/README.md +229 -0
  317. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  318. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +79 -112
  319. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  320. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  321. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  322. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  323. package/src/services/reqresp/interface.ts +0 -11
  324. package/src/services/reqresp/metrics.ts +0 -1
  325. package/src/services/reqresp/protocols/index.ts +0 -1
  326. package/src/services/reqresp/protocols/tx.ts +1 -3
  327. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  328. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  329. package/src/services/reqresp/reqresp.ts +23 -13
  330. package/src/services/service.ts +17 -3
  331. package/src/services/tx_collection/config.ts +42 -0
  332. package/src/services/tx_collection/fast_tx_collection.ts +71 -76
  333. package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
  334. package/src/services/tx_collection/file_store_tx_source.ts +69 -10
  335. package/src/services/tx_collection/instrumentation.ts +7 -1
  336. package/src/services/tx_collection/proposal_tx_collector.ts +9 -13
  337. package/src/services/tx_collection/request_tracker.ts +127 -0
  338. package/src/services/tx_collection/slow_tx_collection.ts +17 -13
  339. package/src/services/tx_collection/tx_collection.ts +46 -17
  340. package/src/services/tx_collection/tx_collection_sink.ts +15 -29
  341. package/src/services/tx_collection/tx_source.ts +28 -8
  342. package/src/services/tx_file_store/tx_file_store.ts +6 -4
  343. package/src/services/tx_provider.ts +2 -2
  344. package/src/test-helpers/make-test-p2p-clients.ts +1 -3
  345. package/src/test-helpers/mock-pubsub.ts +13 -6
  346. package/src/test-helpers/reqresp-nodes.ts +3 -8
  347. package/src/test-helpers/testbench-utils.ts +41 -6
  348. package/src/testbench/p2p_client_testbench_worker.ts +89 -29
  349. package/src/testbench/worker_client_manager.ts +68 -6
  350. package/src/util.ts +8 -2
  351. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  352. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  353. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  354. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  355. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  356. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  357. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  358. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  359. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  360. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  361. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  362. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  363. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  364. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  365. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  366. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  367. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  368. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  369. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  370. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  371. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  372. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  373. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  374. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  375. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  376. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  377. package/dest/mem_pools/tx_pool/index.js +0 -2
  378. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  379. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  380. package/dest/mem_pools/tx_pool/priority.js +0 -15
  381. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  382. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  383. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  384. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  385. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  386. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  387. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  388. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  389. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  390. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  391. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  392. package/dest/services/reqresp/protocols/block.js +0 -32
  393. package/src/mem_pools/tx_pool/README.md +0 -270
  394. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  395. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  396. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  397. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  398. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  399. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  400. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  401. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  402. package/src/mem_pools/tx_pool/index.ts +0 -2
  403. package/src/mem_pools/tx_pool/priority.ts +0 -20
  404. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  405. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  406. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  407. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -1,3 +1,4 @@
1
+ import { TxHash } from '@aztec/stdlib/tx';
1
2
  import { BatchTxRequester } from '../reqresp/batch-tx-requester/batch_tx_requester.js';
2
3
  import { ReqRespSubProtocol, chunkTxHashesRequest } from '../reqresp/index.js';
3
4
  /**
@@ -16,9 +17,9 @@ import { ReqRespSubProtocol, chunkTxHashesRequest } from '../reqresp/index.js';
16
17
  this.txValidator = txValidator;
17
18
  this.batchTxRequesterConfig = batchTxRequesterConfig;
18
19
  }
19
- async collectTxs(txHashes, blockTxsSource, pinnedPeer, timeoutMs) {
20
+ async collectTxs(requestTracker, blockTxsSource, pinnedPeer) {
20
21
  const { batchTxRequesterSmartParallelWorkerCount: smartParallelWorkerCount, batchTxRequesterDumbParallelWorkerCount: dumbParallelWorkerCount, batchTxRequesterTxBatchSize: txBatchSize, batchTxRequesterBadPeerThreshold: badPeerThreshold } = this.batchTxRequesterConfig ?? {};
21
- const batchRequester = new BatchTxRequester(txHashes, blockTxsSource, pinnedPeer, timeoutMs, this.p2pService, this.log, this.dateProvider, {
22
+ const batchRequester = new BatchTxRequester(requestTracker, blockTxsSource, pinnedPeer, this.p2pService, this.log, this.dateProvider, {
22
23
  smartParallelWorkerCount,
23
24
  dumbParallelWorkerCount,
24
25
  txBatchSize,
@@ -42,8 +43,8 @@ const DEFAULT_MAX_RETRY_ATTEMPTS = 3;
42
43
  this.maxPeers = maxPeers;
43
44
  this.maxRetryAttempts = maxRetryAttempts;
44
45
  }
45
- async collectTxs(txHashes, _blockTxsSource, pinnedPeer, timeoutMs) {
46
- const txs = await this.p2pService.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(txHashes), pinnedPeer, timeoutMs, this.maxPeers, this.maxRetryAttempts);
46
+ async collectTxs(requestTracker, _blockTxsSource, pinnedPeer) {
47
+ const txs = await this.p2pService.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(Array.from(requestTracker.missingTxHashes).map(TxHash.fromString)), pinnedPeer, requestTracker.timeoutMs, this.maxPeers, this.maxRetryAttempts);
47
48
  return txs.flat();
48
49
  }
49
50
  }
@@ -0,0 +1,53 @@
1
+ import type { DateProvider } from '@aztec/foundation/timer';
2
+ import { TxHash } from '@aztec/stdlib/tx';
3
+ import type { Tx } from '@aztec/stdlib/tx';
4
+ /**
5
+ * Tracks which transactions are still missing and need to be fetched.
6
+ * Manages the request deadline and serves as the sole source of cancellation signal.
7
+ * The request is cancelled when all txs are fetched or the deadline expires.
8
+ */
9
+ export interface IRequestTracker {
10
+ /** Returns the set of transaction hashes that are still missing. */
11
+ get missingTxHashes(): Set<string>;
12
+ /** Size of this.missingTxHashes */
13
+ get numberOfMissingTxs(): number;
14
+ /** Are all requested txs fetched */
15
+ allFetched(): boolean;
16
+ /** Checks that transaction is still missing */
17
+ isMissing(txHash: string): boolean;
18
+ /** Marks a transaction as fetched. Returns true if it was previously missing. */
19
+ markFetched(tx: Tx): boolean;
20
+ /** Get list of collected txs */
21
+ get collectedTxs(): Tx[];
22
+ /** The deadline for this request. */
23
+ get deadline(): Date;
24
+ /** Remaining time in milliseconds until deadline. Returns 0 if already past. */
25
+ get timeoutMs(): number;
26
+ /** Checks whether the request is cancelled (deadline expired or all fetched). May trigger cancellation if deadline has passed. */
27
+ checkCancelled(): boolean;
28
+ /** Resolves when deadline expires or all txs are fetched. */
29
+ get cancellationToken(): Promise<void>;
30
+ /** Externally cancel the request. */
31
+ cancel(): void;
32
+ }
33
+ export declare class RequestTracker implements IRequestTracker {
34
+ readonly missingTxHashes: Set<string>;
35
+ readonly deadline: Date;
36
+ private readonly dateProvider?;
37
+ readonly collectedTxs: Tx[];
38
+ private done;
39
+ private readonly cancellationTokenPromise;
40
+ private readonly deadlineTimer;
41
+ private constructor();
42
+ static create(hashes: TxHash[] | string[], deadline: Date, dateProvider?: DateProvider): RequestTracker;
43
+ markFetched(tx: Tx): boolean;
44
+ get numberOfMissingTxs(): number;
45
+ allFetched(): boolean;
46
+ isMissing(txHash: string): boolean;
47
+ get timeoutMs(): number;
48
+ checkCancelled(): boolean;
49
+ get cancellationToken(): Promise<void>;
50
+ cancel(): void;
51
+ private finish;
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdF90cmFja2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9yZXF1ZXN0X3RyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNDOzs7O0dBSUc7QUFDSCxNQUFNLFdBQVcsZUFBZTtJQUM5QixvRUFBb0U7SUFDcEUsSUFBSSxlQUFlLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLG1DQUFtQztJQUNuQyxJQUFJLGtCQUFrQixJQUFJLE1BQU0sQ0FBQztJQUNqQyxvQ0FBb0M7SUFDcEMsVUFBVSxJQUFJLE9BQU8sQ0FBQztJQUN0QiwrQ0FBK0M7SUFDL0MsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQ25DLGlGQUFpRjtJQUNqRixXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDN0IsZ0NBQWdDO0lBQ2hDLElBQUksWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3pCLHFDQUFxQztJQUNyQyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUM7SUFDckIsZ0ZBQWdGO0lBQ2hGLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQztJQUN4QixrSUFBa0k7SUFDbEksY0FBYyxJQUFJLE9BQU8sQ0FBQztJQUMxQiw2REFBNkQ7SUFDN0QsSUFBSSxpQkFBaUIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMscUNBQXFDO0lBQ3JDLE1BQU0sSUFBSSxJQUFJLENBQUM7Q0FDaEI7QUFFRCxxQkFBYSxjQUFlLFlBQVcsZUFBZTthQU9sQyxlQUFlLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQzthQUM1QixRQUFRLEVBQUUsSUFBSTtJQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztJQVJoQyxTQUFnQixZQUFZLEVBQUUsRUFBRSxFQUFFLENBQU07SUFDeEMsT0FBTyxDQUFDLElBQUksQ0FBUztJQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUE2QjtJQUN0RSxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBNEM7SUFFMUUsT0FBTyxlQW1CTjtJQUVELE9BQWMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxFQUFFLFlBQVksa0JBRTVGO0lBRUQsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQVMzQjtJQUVELElBQUksa0JBQWtCLElBQUksTUFBTSxDQUUvQjtJQUVELFVBQVUsSUFBSSxPQUFPLENBRXBCO0lBRUQsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUVqQztJQUVELElBQUksU0FBUyxJQUFJLE1BQU0sQ0FHdEI7SUFFRCxjQUFjLElBQUksT0FBTyxDQVl4QjtJQUVELElBQUksaUJBQWlCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVyQztJQUVELE1BQU0sSUFBSSxJQUFJLENBRWI7SUFFRCxPQUFPLENBQUMsTUFBTTtDQVVmIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request_tracker.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/request_tracker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,IAAI,eAAe,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,mCAAmC;IACnC,IAAI,kBAAkB,IAAI,MAAM,CAAC;IACjC,oCAAoC;IACpC,UAAU,IAAI,OAAO,CAAC;IACtB,+CAA+C;IAC/C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,iFAAiF;IACjF,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAC7B,gCAAgC;IAChC,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;IACzB,qCAAqC;IACrC,IAAI,QAAQ,IAAI,IAAI,CAAC;IACrB,gFAAgF;IAChF,IAAI,SAAS,IAAI,MAAM,CAAC;IACxB,kIAAkI;IAClI,cAAc,IAAI,OAAO,CAAC;IAC1B,6DAA6D;IAC7D,IAAI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,qCAAqC;IACrC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,cAAe,YAAW,eAAe;aAOlC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC;aAC5B,QAAQ,EAAE,IAAI;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IARhC,SAAgB,YAAY,EAAE,EAAE,EAAE,CAAM;IACxC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA6B;IACtE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4C;IAE1E,OAAO,eAmBN;IAED,OAAc,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,YAAY,kBAE5F;IAED,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAS3B;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,UAAU,IAAI,OAAO,CAEpB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjC;IAED,IAAI,SAAS,IAAI,MAAM,CAGtB;IAED,cAAc,IAAI,OAAO,CAYxB;IAED,IAAI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;IAED,MAAM,IAAI,IAAI,CAEb;IAED,OAAO,CAAC,MAAM;CAUf"}
@@ -0,0 +1,84 @@
1
+ import { promiseWithResolvers } from '@aztec/foundation/promise';
2
+ export class RequestTracker {
3
+ missingTxHashes;
4
+ deadline;
5
+ dateProvider;
6
+ collectedTxs;
7
+ done;
8
+ cancellationTokenPromise;
9
+ deadlineTimer;
10
+ constructor(missingTxHashes, deadline, dateProvider){
11
+ this.missingTxHashes = missingTxHashes;
12
+ this.deadline = deadline;
13
+ this.dateProvider = dateProvider;
14
+ this.collectedTxs = [];
15
+ this.done = false;
16
+ this.cancellationTokenPromise = promiseWithResolvers();
17
+ if (missingTxHashes.size === 0) {
18
+ this.finish();
19
+ return;
20
+ }
21
+ const now = this.dateProvider?.now() ?? Date.now();
22
+ const remaining = deadline.getTime() - now;
23
+ if (remaining <= 0) {
24
+ this.finish();
25
+ } else {
26
+ this.deadlineTimer = setTimeout(()=>this.finish(), remaining);
27
+ }
28
+ }
29
+ static create(hashes, deadline, dateProvider) {
30
+ return new RequestTracker(new Set(hashes.map((hash)=>hash.toString())), deadline, dateProvider);
31
+ }
32
+ markFetched(tx) {
33
+ if (this.missingTxHashes.delete(tx.txHash.toString())) {
34
+ this.collectedTxs.push(tx);
35
+ if (this.allFetched()) {
36
+ this.finish();
37
+ }
38
+ return true;
39
+ }
40
+ return false;
41
+ }
42
+ get numberOfMissingTxs() {
43
+ return this.missingTxHashes.size;
44
+ }
45
+ allFetched() {
46
+ return this.numberOfMissingTxs === 0;
47
+ }
48
+ isMissing(txHash) {
49
+ return this.missingTxHashes.has(txHash.toString());
50
+ }
51
+ get timeoutMs() {
52
+ const now = this.dateProvider?.now() ?? Date.now();
53
+ return Math.max(0, this.deadline.getTime() - now);
54
+ }
55
+ checkCancelled() {
56
+ if (this.done) {
57
+ return true;
58
+ }
59
+ // Synchronous fallback: check deadline even if setTimeout hasn't fired yet.
60
+ // This prevents macrotask starvation in tight async loops from blocking cancellation.
61
+ const now = this.dateProvider?.now() ?? Date.now();
62
+ if (now >= this.deadline.getTime()) {
63
+ this.finish();
64
+ return true;
65
+ }
66
+ return false;
67
+ }
68
+ get cancellationToken() {
69
+ return this.cancellationTokenPromise.promise;
70
+ }
71
+ cancel() {
72
+ this.finish();
73
+ }
74
+ finish() {
75
+ if (this.done) {
76
+ return;
77
+ }
78
+ this.done = true;
79
+ if (this.deadlineTimer) {
80
+ clearTimeout(this.deadlineTimer);
81
+ }
82
+ this.cancellationTokenPromise.resolve();
83
+ }
84
+ }
@@ -1,10 +1,10 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
3
  import { DateProvider } from '@aztec/foundation/timer';
4
4
  import type { L2Block } from '@aztec/stdlib/block';
5
5
  import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
6
6
  import { type Tx, TxHash } from '@aztec/stdlib/tx';
7
- import { type ReqRespInterface } from '../reqresp/interface.js';
7
+ import { type ReqRespInterface } from '../reqresp/index.js';
8
8
  import type { TxCollectionConfig } from './config.js';
9
9
  import type { FastTxCollection } from './fast_tx_collection.js';
10
10
  import type { TxCollectionSink } from './tx_collection_sink.js';
@@ -52,4 +52,6 @@ export declare class SlowTxCollection {
52
52
  /** Computes the proof submission deadline for a given slot, a tx mined in this slot is no longer interesting after this deadline */
53
53
  private getDeadlineForSlot;
54
54
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvd190eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9zbG93X3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBMkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MscUJBQWEsZ0JBQWdCO0lBV3pCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLEdBQUc7SUFqQmIsbUVBQW1FO0lBQ25FLE9BQU8sQ0FBQyxVQUFVLENBQXlDO0lBRTNELCtEQUErRDtJQUMvRCxPQUFPLENBQUMsd0JBQXdCLENBQW1CO0lBRW5ELHFFQUFxRTtJQUNyRSxPQUFPLENBQUMseUJBQXlCLENBQWlCO0lBRWxELFlBQ1UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ2pCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixDQUFDLEVBQ25FLFNBQVMsRUFBRSxpQkFBaUIsRUFDNUIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixZQUFZLEdBQUUsWUFBaUMsRUFDL0MsR0FBRyxHQUFFLE1BQWtELEVBZ0JoRTtJQUVNLGtCQUFrQixhQUV4QjtJQUVNLEtBQUssU0FHWDtJQUVZLElBQUksa0JBS2hCO0lBRVksT0FBTyxrQkFLbkI7SUFFRCxtRkFBbUY7SUFDNUUsZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQXFCeEQ7WUFHYSx5QkFBeUI7WUF5Q3pCLDJCQUEyQjtJQTJDekMsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyw4QkFBOEI7SUFxQnRDLDhHQUE4RztJQUN2RyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNakU7SUFFRDs7O09BR0c7SUFDSSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNbEU7SUFFRCxpREFBaUQ7SUFDakQsT0FBTyxDQUFDLFlBQVk7SUFjcEIsb0lBQW9JO0lBQ3BJLE9BQU8sQ0FBQyxrQkFBa0I7Q0FNM0IifQ==
55
+ /** Computes the proof submission deadline for a given slot. A tx mined in this slot is no longer interesting after this deadline. */
56
+ export declare function getProofDeadlineForSlot(slotNumber: SlotNumber, constants: L1RollupConstants): Date;
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvd190eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9zbG93X3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBNEMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MscUJBQWEsZ0JBQWdCO0lBV3pCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLEdBQUc7SUFqQmIsbUVBQW1FO0lBQ25FLE9BQU8sQ0FBQyxVQUFVLENBQXlDO0lBRTNELCtEQUErRDtJQUMvRCxPQUFPLENBQUMsd0JBQXdCLENBQW1CO0lBRW5ELHFFQUFxRTtJQUNyRSxPQUFPLENBQUMseUJBQXlCLENBQWlCO0lBRWxELFlBQ1UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ2pCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixDQUFDLEVBQ25FLFNBQVMsRUFBRSxpQkFBaUIsRUFDNUIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixZQUFZLEdBQUUsWUFBaUMsRUFDL0MsR0FBRyxHQUFFLE1BQWtELEVBZ0JoRTtJQUVNLGtCQUFrQixhQUV4QjtJQUVNLEtBQUssU0FHWDtJQUVZLElBQUksa0JBS2hCO0lBRVksT0FBTyxrQkFLbkI7SUFFRCxtRkFBbUY7SUFDNUUsZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQXFCeEQ7WUFHYSx5QkFBeUI7WUF5Q3pCLDJCQUEyQjtJQTJDekMsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyw4QkFBOEI7SUFxQnRDLDhHQUE4RztJQUN2RyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNakU7SUFFRDs7O09BR0c7SUFDSSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNbEU7SUFFRCxpREFBaUQ7SUFDakQsT0FBTyxDQUFDLFlBQVk7SUFjcEIsb0lBQW9JO0lBQ3BJLE9BQU8sQ0FBQyxrQkFBa0I7Q0FHM0I7QUFFRCxxSUFBcUk7QUFDckksd0JBQWdCLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixHQUFHLElBQUksQ0FLbEcifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"slow_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/slow_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAA6C,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,yBAAyB,CAAC;AAEpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IAjBb,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAyC;IAE3D,+DAA+D;IAC/D,OAAO,CAAC,wBAAwB,CAAmB;IAEnD,qEAAqE;IACrE,OAAO,CAAC,yBAAyB,CAAiB;IAElD,YACU,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACnD,KAAK,EAAE,QAAQ,EAAE,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,EACnE,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAkD,EAgBhE;IAEM,kBAAkB,aAExB;IAEM,KAAK,SAGX;IAEY,IAAI,kBAKhB;IAEY,OAAO,kBAKnB;IAED,mFAAmF;IAC5E,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAqBxD;YAGa,yBAAyB;YAyCzB,2BAA2B;IA2CzC,+HAA+H;IAC/H,OAAO,CAAC,8BAA8B;IAqBtC,8GAA8G;IACvG,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAI/B;IAED;;;OAGG;IACI,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMjE;IAED;;;OAGG;IACI,4BAA4B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMlE;IAED,iDAAiD;IACjD,OAAO,CAAC,YAAY;IAcpB,oIAAoI;IACpI,OAAO,CAAC,kBAAkB;CAM3B"}
1
+ {"version":3,"file":"slow_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/slow_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAA6C,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,KAAK,gBAAgB,EAA4C,MAAM,qBAAqB,CAAC;AACtG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IAjBb,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAyC;IAE3D,+DAA+D;IAC/D,OAAO,CAAC,wBAAwB,CAAmB;IAEnD,qEAAqE;IACrE,OAAO,CAAC,yBAAyB,CAAiB;IAElD,YACU,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACnD,KAAK,EAAE,QAAQ,EAAE,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,EACnE,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAkD,EAgBhE;IAEM,kBAAkB,aAExB;IAEM,KAAK,SAGX;IAEY,IAAI,kBAKhB;IAEY,OAAO,kBAKnB;IAED,mFAAmF;IAC5E,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAqBxD;YAGa,yBAAyB;YAyCzB,2BAA2B;IA2CzC,+HAA+H;IAC/H,OAAO,CAAC,8BAA8B;IAqBtC,8GAA8G;IACvG,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAI/B;IAED;;;OAGG;IACI,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMjE;IAED;;;OAGG;IACI,4BAA4B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMlE;IAED,iDAAiD;IACjD,OAAO,CAAC,YAAY;IAcpB,oIAAoI;IACpI,OAAO,CAAC,kBAAkB;CAG3B;AAED,qIAAqI;AACrI,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAKlG"}
@@ -6,8 +6,7 @@ import { RunningPromise } from '@aztec/foundation/promise';
6
6
  import { DateProvider } from '@aztec/foundation/timer';
7
7
  import { getEpochAtSlot, getTimestampRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
8
8
  import { TxHash } from '@aztec/stdlib/tx';
9
- import { ReqRespSubProtocol } from '../reqresp/interface.js';
10
- import { chunkTxHashesRequest } from '../reqresp/protocols/tx.js';
9
+ import { ReqRespSubProtocol, chunkTxHashesRequest } from '../reqresp/index.js';
11
10
  export class SlowTxCollection {
12
11
  reqResp;
13
12
  nodes;
@@ -90,7 +89,7 @@ export class SlowTxCollection {
90
89
  const block = entries[0][1].block;
91
90
  const txHashes = entries.map(([txHash])=>TxHash.fromString(txHash));
92
91
  for (const batch of chunk(txHashes, this.config.txCollectionNodeRpcMaxBatchSize)){
93
- await this.txCollectionSink.collect((hashes)=>node.getTxsByHash(hashes), batch, {
92
+ await this.txCollectionSink.collect(()=>node.getTxsByHash(batch), batch.map((h)=>h.toString()), {
94
93
  description: `node ${node.getInfo()}`,
95
94
  node: node.getInfo(),
96
95
  method: 'slow-node-rpc'
@@ -130,10 +129,13 @@ export class SlowTxCollection {
130
129
  const block = entries[0][1].block;
131
130
  const txHashes = entries.map(([txHash])=>TxHash.fromString(txHash));
132
131
  const maxPeers = boundInclusive(Math.ceil(txHashes.length / 3), 4, 16);
133
- await this.txCollectionSink.collect(async (hashes)=>{
134
- const txs = await this.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(hashes), pinnedPeer, timeoutMs, maxPeers, maxRetryAttempts);
135
- return txs.flat();
136
- }, txHashes, {
132
+ await this.txCollectionSink.collect(async ()=>{
133
+ const txs = await this.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(txHashes), pinnedPeer, timeoutMs, maxPeers, maxRetryAttempts);
134
+ return {
135
+ validTxs: txs.flat(),
136
+ invalidTxHashes: []
137
+ };
138
+ }, txHashes.map((h)=>h.toString()), {
137
139
  description: 'slow reqresp',
138
140
  timeoutMs,
139
141
  method: 'slow-req-resp'
@@ -153,7 +155,7 @@ export class SlowTxCollection {
153
155
  // is fast-collecting missing txs for proving an epoch, and still has the tx in the slow collection loops
154
156
  // from mined unproven blocks it has seen in the past.
155
157
  const fastRequests = this.fastCollection.getFastCollectionRequests();
156
- const fastCollectionTxs = new Set(...Array.from(fastRequests.values()).flatMap((r)=>r.missingTxHashes));
158
+ const fastCollectionTxs = new Set(fastRequests.values().flatMap((r)=>Array.from(r.requestTracker.missingTxHashes)));
157
159
  // Return all missing txs that are not in fastCollectionTxs and are ready for reqresp if requested
158
160
  return Array.from(this.missingTxs.entries()).filter(([txHash, _])=>!fastCollectionTxs.has(txHash)).filter(([_, value])=>!opts.onlyReqRespReady || value.readyForReqResp);
159
161
  }
@@ -198,9 +200,12 @@ export class SlowTxCollection {
198
200
  ];
199
201
  }
200
202
  /** Computes the proof submission deadline for a given slot, a tx mined in this slot is no longer interesting after this deadline */ getDeadlineForSlot(slotNumber) {
201
- const epoch = getEpochAtSlot(slotNumber, this.constants);
202
- const submissionEndEpoch = EpochNumber(epoch + this.constants.proofSubmissionEpochs);
203
- const submissionEndTimestamp = getTimestampRangeForEpoch(submissionEndEpoch, this.constants)[1];
204
- return new Date(Number(submissionEndTimestamp) * 1000);
203
+ return getProofDeadlineForSlot(slotNumber, this.constants);
205
204
  }
206
205
  }
206
+ /** Computes the proof submission deadline for a given slot. A tx mined in this slot is no longer interesting after this deadline. */ export function getProofDeadlineForSlot(slotNumber, constants) {
207
+ const epoch = getEpochAtSlot(slotNumber, constants);
208
+ const submissionEndEpoch = EpochNumber(epoch + constants.proofSubmissionEpochs);
209
+ const submissionEndTimestamp = getTimestampRangeForEpoch(submissionEndEpoch, constants)[1];
210
+ return new Date(Number(submissionEndTimestamp) * 1000);
211
+ }
@@ -1,11 +1,11 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
- import { type PromiseWithResolvers } from '@aztec/foundation/promise';
4
3
  import { DateProvider } from '@aztec/foundation/timer';
5
4
  import type { L2Block, L2BlockInfo } from '@aztec/stdlib/block';
6
5
  import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
7
6
  import type { BlockProposal } from '@aztec/stdlib/p2p';
8
- import { Tx, TxHash } from '@aztec/stdlib/tx';
7
+ import type { Tx } from '@aztec/stdlib/tx';
8
+ import { TxHash } from '@aztec/stdlib/tx';
9
9
  import { type TelemetryClient } from '@aztec/telemetry-client';
10
10
  import type { PeerId } from '@libp2p/interface';
11
11
  import type { TxPoolV2, TxPoolV2Events } from '../../mem_pools/tx_pool_v2/interfaces.js';
@@ -14,6 +14,7 @@ import type { TxCollectionConfig } from './config.js';
14
14
  import { FastTxCollection } from './fast_tx_collection.js';
15
15
  import { FileStoreTxCollection } from './file_store_tx_collection.js';
16
16
  import type { FileStoreTxSource } from './file_store_tx_source.js';
17
+ import type { IRequestTracker } from './request_tracker.js';
17
18
  import { SlowTxCollection } from './slow_tx_collection.js';
18
19
  import type { TxSource } from './tx_source.js';
19
20
  export type CollectionMethod = 'fast-req-resp' | 'fast-node-rpc' | 'slow-req-resp' | 'slow-node-rpc' | 'file-store';
@@ -32,11 +33,8 @@ export type FastCollectionRequestInput = {
32
33
  blockNumber: BlockNumber;
33
34
  };
34
35
  export type FastCollectionRequest = FastCollectionRequestInput & {
35
- missingTxHashes: Set<string>;
36
- deadline: Date;
36
+ requestTracker: IRequestTracker;
37
37
  blockInfo: L2BlockInfo;
38
- promise: PromiseWithResolvers<void>;
39
- foundTxs: Map<string, Tx>;
40
38
  };
41
39
  /**
42
40
  * Coordinates tx collection from remote RPC nodes and reqresp.
@@ -61,8 +59,10 @@ export declare class TxCollection {
61
59
  protected readonly slowCollection: SlowTxCollection;
62
60
  /** Fast collection methods */
63
61
  protected readonly fastCollection: FastTxCollection;
64
- /** File store collection */
65
- protected readonly fileStoreCollection: FileStoreTxCollection;
62
+ /** File store collection for slow (mined block) path */
63
+ protected readonly fileStoreSlowCollection: FileStoreTxCollection;
64
+ /** File store collection for fast (proposal/proving) path */
65
+ protected readonly fileStoreFastCollection: FileStoreTxCollection;
66
66
  /** Loop for periodically reconciling found transactions from the tx pool in case we missed some */
67
67
  private readonly reconcileFoundTxsLoop;
68
68
  /** Handles txs found by the slow and fast collection loops */
@@ -117,4 +117,4 @@ export declare class TxCollection {
117
117
  stopCollectingForBlocksAfter(blockNumber: BlockNumber): void;
118
118
  private reconcileFoundTxsWithPool;
119
119
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3R4X2NvbGxlY3Rpb24vdHhfY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEtBQUss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
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3R4X2NvbGxlY3Rpb24vdHhfY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hHLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixF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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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAA2B,MAAM,yBAAyB,CAAC;AAEpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,YAAY,CAAC;AAEpH,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnH,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG;IAC/D,cAAc,EAAE,eAAe,CAAC;IAChC,SAAS,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,YAAY;IAgCrB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAvCtB,uCAAuC;IACvC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAEpD,8BAA8B;IAC9B,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAEpD,wDAAwD;IACxD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;IAElE,6DAA6D;IAC7D,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;IAElE,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAiB;IAEvD,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEpD,uDAAuD;IACvD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAErE,kEAAkE;IAClE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAE/D,4CAA4C;IAC5C,OAAO,CAAC,OAAO,CAAS;IAExB,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAE9C,YACmB,UAAU,EAAE,6BAA6B,EACzC,KAAK,EAAE,QAAQ,EAAE,EACjB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,kBAAkB,EAC3C,gBAAgB,GAAE,iBAAiB,EAAO,EACzB,YAAY,GAAE,YAAiC,EAChE,eAAe,GAAE,eAAsC,EACtC,GAAG,GAAE,MAAkD,EAkEzE;IAED,mCAAmC;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAS5B;IAED,0BAA0B;IACb,IAAI,kBAYhB;IAED,iEAAiE;IACpD,OAAO,kBAEnB;IAED,mCAAmC;IAC5B,YAAY,IAAI,iBAAiB,CAEvC;IAED,mFAAmF;IAC5E,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAoBxD;IAED,+EAA+E;IACxE,sBAAsB,CAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAC7B,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,iBAG9C;IAED,4EAA4E;IACrE,mBAAmB,CACxB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAC7B,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,iBAG9C;IAED,kFAAkF;IAC3E,cAAc,CACnB,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAC7B,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,iBAiB9C;IAED,2EAA2E;IAC3E,OAAO,CAAC,qBAAqB;IAQ7B,0DAA0D;IAC1D,OAAO,CAAC,QAAQ;IAOhB;;;OAGG;IACI,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAKjE;IAED;;;OAGG;IACI,4BAA4B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAKlE;YAGa,yBAAyB;CAUxC"}
@@ -7,7 +7,7 @@ import { TxHash } from '@aztec/stdlib/tx';
7
7
  import { getTelemetryClient } from '@aztec/telemetry-client';
8
8
  import { FastTxCollection } from './fast_tx_collection.js';
9
9
  import { FileStoreTxCollection } from './file_store_tx_collection.js';
10
- import { SlowTxCollection } from './slow_tx_collection.js';
10
+ import { SlowTxCollection, getProofDeadlineForSlot } from './slow_tx_collection.js';
11
11
  import { TxCollectionSink } from './tx_collection_sink.js';
12
12
  /**
13
13
  * Coordinates tx collection from remote RPC nodes and reqresp.
@@ -29,7 +29,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
29
29
  log;
30
30
  /** Slow collection background loops */ slowCollection;
31
31
  /** Fast collection methods */ fastCollection;
32
- /** File store collection */ fileStoreCollection;
32
+ /** File store collection for slow (mined block) path */ fileStoreSlowCollection;
33
+ /** File store collection for fast (proposal/proving) path */ fileStoreFastCollection;
33
34
  /** Loop for periodically reconciling found transactions from the tx pool in case we missed some */ reconcileFoundTxsLoop;
34
35
  /** Handles txs found by the slow and fast collection loops */ txCollectionSink;
35
36
  /** Handler for the txs-added event from the tx pool */ handleTxsAddedToPool;
@@ -49,7 +50,16 @@ import { TxCollectionSink } from './tx_collection_sink.js';
49
50
  this.fastCollection = new FastTxCollection(this.p2pService, this.nodes, this.txCollectionSink, this.config, this.dateProvider, this.log);
50
51
  this.slowCollection = new SlowTxCollection(this.p2pService.reqResp, this.nodes, this.txCollectionSink, this.fastCollection, constants, this.config, this.dateProvider, this.log);
51
52
  this.hasFileStoreSources = fileStoreSources.length > 0;
52
- this.fileStoreCollection = new FileStoreTxCollection(fileStoreSources, this.txCollectionSink, this.log);
53
+ this.fileStoreSlowCollection = new FileStoreTxCollection(fileStoreSources, this.txCollectionSink, {
54
+ workerCount: config.txCollectionFileStoreSlowWorkerCount,
55
+ backoffBaseMs: config.txCollectionFileStoreSlowBackoffBaseMs,
56
+ backoffMaxMs: config.txCollectionFileStoreSlowBackoffMaxMs
57
+ }, this.dateProvider, this.log);
58
+ this.fileStoreFastCollection = new FileStoreTxCollection(fileStoreSources, this.txCollectionSink, {
59
+ workerCount: config.txCollectionFileStoreFastWorkerCount,
60
+ backoffBaseMs: config.txCollectionFileStoreFastBackoffBaseMs,
61
+ backoffMaxMs: config.txCollectionFileStoreFastBackoffMaxMs
62
+ }, this.dateProvider, this.log);
53
63
  this.reconcileFoundTxsLoop = new RunningPromise(()=>this.reconcileFoundTxsWithPool(), this.log, this.config.txCollectionReconcileIntervalMs);
54
64
  this.handleTxsFound = (args)=>{
55
65
  this.foundTxs(args.txs);
@@ -66,7 +76,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
66
76
  /** Starts all collection loops. */ start() {
67
77
  this.started = true;
68
78
  this.slowCollection.start();
69
- this.fileStoreCollection.start();
79
+ this.fileStoreSlowCollection.start();
80
+ this.fileStoreFastCollection.start();
70
81
  this.reconcileFoundTxsLoop.start();
71
82
  // TODO(palla/txs): Collect mined unproven tx hashes for txs we dont have in the pool and populate missingTxs on startup
72
83
  return Promise.resolve();
@@ -76,7 +87,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
76
87
  await Promise.all([
77
88
  this.slowCollection.stop(),
78
89
  this.fastCollection.stop(),
79
- this.fileStoreCollection.stop(),
90
+ this.fileStoreSlowCollection.stop(),
91
+ this.fileStoreFastCollection.stop(),
80
92
  this.reconcileFoundTxsLoop.stop()
81
93
  ]);
82
94
  this.txPool.removeListener('txs-added', this.handleTxsAddedToPool);
@@ -99,13 +111,14 @@ import { TxCollectionSink } from './tx_collection_sink.js';
99
111
  type: 'mined',
100
112
  block
101
113
  };
114
+ const deadline = getProofDeadlineForSlot(block.header.getSlot(), this.constants);
102
115
  sleep(this.config.txCollectionFileStoreSlowDelayMs).then(()=>{
103
116
  if (this.started) {
104
117
  // Only queue txs that are still missing after the delay
105
118
  const stillMissing = new Set(this.slowCollection.getMissingTxHashes().map((h)=>h.toString()));
106
119
  const remaining = txHashes.filter((h)=>stillMissing.has(h.toString()));
107
120
  if (remaining.length > 0) {
108
- this.fileStoreCollection.startCollecting(remaining, context);
121
+ this.fileStoreSlowCollection.startCollecting(remaining, context, deadline);
109
122
  }
110
123
  }
111
124
  }).catch((err)=>this.log.error('Error in file store slow delay', err));
@@ -131,7 +144,7 @@ import { TxCollectionSink } from './tx_collection_sink.js';
131
144
  const context = this.getAddContextForInput(input);
132
145
  sleep(this.config.txCollectionFileStoreFastDelayMs).then(()=>{
133
146
  if (this.started) {
134
- this.fileStoreCollection.startCollecting(hashes, context);
147
+ this.fileStoreFastCollection.startCollecting(hashes, context, opts.deadline);
135
148
  }
136
149
  }).catch((err)=>this.log.error('Error in file store fast delay', err));
137
150
  }
@@ -153,7 +166,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
153
166
  /** Mark the given txs as found. Stops collecting them. */ foundTxs(txs) {
154
167
  this.slowCollection.foundTxs(txs);
155
168
  this.fastCollection.foundTxs(txs);
156
- this.fileStoreCollection.foundTxs(txs);
169
+ this.fileStoreSlowCollection.foundTxs(txs);
170
+ this.fileStoreFastCollection.foundTxs(txs);
157
171
  }
158
172
  /**
159
173
  * Stop collecting all txs for blocks less than or requal to the block number specified.
@@ -161,7 +175,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
161
175
  */ stopCollectingForBlocksUpTo(blockNumber) {
162
176
  this.slowCollection.stopCollectingForBlocksUpTo(blockNumber);
163
177
  this.fastCollection.stopCollectingForBlocksUpTo(blockNumber);
164
- this.fileStoreCollection.clearPending();
178
+ this.fileStoreSlowCollection.clearPending();
179
+ this.fileStoreFastCollection.clearPending();
165
180
  }
166
181
  /**
167
182
  * Stop collecting all txs for blocks greater than the block number specified.
@@ -169,7 +184,8 @@ import { TxCollectionSink } from './tx_collection_sink.js';
169
184
  */ stopCollectingForBlocksAfter(blockNumber) {
170
185
  this.slowCollection.stopCollectingForBlocksAfter(blockNumber);
171
186
  this.fastCollection.stopCollectingForBlocksAfter(blockNumber);
172
- this.fileStoreCollection.clearPending();
187
+ this.fileStoreSlowCollection.clearPending();
188
+ this.fileStoreFastCollection.clearPending();
173
189
  }
174
190
  /** Every now and then, check if the pool has received one of the txs we are looking for, just to catch any race conditions */ async reconcileFoundTxsWithPool() {
175
191
  const missingTxHashes = this.slowCollection.getMissingTxHashes();
@@ -1,10 +1,11 @@
1
1
  import type { Logger } from '@aztec/foundation/log';
2
2
  import type { TypedEventEmitter } from '@aztec/foundation/types';
3
3
  import type { L2Block } from '@aztec/stdlib/block';
4
- import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
4
+ import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
5
5
  import type { TelemetryClient } from '@aztec/telemetry-client';
6
- import type { TxPoolV2, TxPoolV2Events } from '../../mem_pools/tx_pool_v2/interfaces.js';
6
+ import type { TxPoolV2, TxPoolV2Events } from '../../mem_pools/index.js';
7
7
  import type { CollectionMethod } from './tx_collection.js';
8
+ import type { TxSourceCollectionResult } from './tx_source.js';
8
9
  /** Context determining how collected txs should be added to the pool. */
9
10
  export type TxAddContext = {
10
11
  type: 'proposal';
@@ -23,12 +24,12 @@ export declare class TxCollectionSink extends TxCollectionSink_base {
23
24
  private readonly log;
24
25
  private readonly instrumentation;
25
26
  constructor(txPool: TxPoolV2, telemetryClient: TelemetryClient, log: Logger);
26
- collect(collectValidTxsFn: (txHashes: TxHash[]) => Promise<(Tx | undefined)[]>, requested: TxHash[], info: Record<string, any> & {
27
+ collect(collectValidTxsFn: () => Promise<TxSourceCollectionResult>, requested: string[], info: Record<string, any> & {
27
28
  description: string;
28
29
  method: CollectionMethod;
29
30
  }, context: TxAddContext): Promise<{
30
31
  txs: Tx[];
31
- requested: TxHash[];
32
+ requested: string[];
32
33
  duration: number;
33
34
  } | {
34
35
  txs: Tx[];
@@ -36,4 +37,4 @@ export declare class TxCollectionSink extends TxCollectionSink_base {
36
37
  private foundTxs;
37
38
  }
38
39
  export {};
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbl9zaW5rLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi90eF9jb2xsZWN0aW9uX3NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSS9ELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV6RixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTNELHlFQUF5RTtBQUN6RSxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUFDLFdBQVcsRUFBRSxXQUFXLENBQUE7Q0FBRSxHQUFHO0lBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUFDLEtBQUssRUFBRSxPQUFPLENBQUE7Q0FBRSxDQUFDOztBQUU5Rzs7O0dBR0c7QUFDSCxxQkFBYSxnQkFBaUIsU0FBUSxxQkFBNkQ7SUFJL0YsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBRXZCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRztJQUx0QixPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBOEI7SUFFOUQsWUFDbUIsTUFBTSxFQUFFLFFBQVEsRUFDakMsZUFBZSxFQUFFLGVBQWUsRUFDZixHQUFHLEVBQUUsTUFBTSxFQUk3QjtJQUVZLE9BQU8sQ0FDbEIsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDdEUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUNuQixJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRztRQUFFLFdBQVcsRUFBRSxNQUFNLENBQUM7UUFBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUE7S0FBRSxFQUM3RSxPQUFPLEVBQUUsWUFBWTs7Ozs7O09BdUV0QjtZQUVhLFFBQVE7Q0E2QnZCIn0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbl9zaW5rLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi90eF9jb2xsZWN0aW9uX3NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJL0QsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCx5RUFBeUU7QUFDekUsTUFBTSxNQUFNLFlBQVksR0FBRztJQUFFLElBQUksRUFBRSxVQUFVLENBQUM7SUFBQyxXQUFXLEVBQUUsV0FBVyxDQUFBO0NBQUUsR0FBRztJQUFFLElBQUksRUFBRSxPQUFPLENBQUM7SUFBQyxLQUFLLEVBQUUsT0FBTyxDQUFBO0NBQUUsQ0FBQzs7QUFFOUc7OztHQUdHO0FBQ0gscUJBQWEsZ0JBQWlCLFNBQVEscUJBQTZEO0lBSS9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUV2QixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUc7SUFMdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQThCO0lBRTlELFlBQ21CLE1BQU0sRUFBRSxRQUFRLEVBQ2pDLGVBQWUsRUFBRSxlQUFlLEVBQ2YsR0FBRyxFQUFFLE1BQU0sRUFJN0I7SUFFWSxPQUFPLENBQ2xCLGlCQUFpQixFQUFFLE1BQU0sT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQzFELFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFDbkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFBO0tBQUUsRUFDN0UsT0FBTyxFQUFFLFlBQVk7Ozs7OztPQXdEdEI7WUFFYSxRQUFRO0NBNkJ2QiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"tx_collection_sink.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection_sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;;AAE9G;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAA6D;IAI/F,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAE9D,YACmB,MAAM,EAAE,QAAQ,EACjC,eAAe,EAAE,eAAe,EACf,GAAG,EAAE,MAAM,EAI7B;IAEY,OAAO,CAClB,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,EACtE,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,EAC7E,OAAO,EAAE,YAAY;;;;;;OAuEtB;YAEa,QAAQ;CA6BvB"}
1
+ {"version":3,"file":"tx_collection_sink.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection_sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;;AAE9G;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAA6D;IAI/F,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAE9D,YACmB,MAAM,EAAE,QAAQ,EACjC,eAAe,EAAE,eAAe,EACf,GAAG,EAAE,MAAM,EAI7B;IAEY,OAAO,CAClB,iBAAiB,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,EAC1D,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,EAC7E,OAAO,EAAE,YAAY;;;;;;OAwDtB;YAEa,QAAQ;CA6BvB"}
@@ -15,43 +15,34 @@ import { TxCollectionInstrumentation } from './instrumentation.js';
15
15
  async collect(collectValidTxsFn, requested, info, context) {
16
16
  this.log.trace(`Requesting ${requested.length} txs via ${info.description}`, {
17
17
  ...info,
18
- requestedTxs: requested.map((t)=>t.toString())
18
+ requestedTxs: requested
19
19
  });
20
20
  // Execute collection function and measure the time taken, catching any errors.
21
- const [duration, txs] = await elapsed(async ()=>{
21
+ const [duration, { validTxs, invalidTxHashes }] = await elapsed(async ()=>{
22
22
  try {
23
- const response = await collectValidTxsFn(requested);
24
- return response.filter((tx)=>tx !== undefined);
23
+ return await collectValidTxsFn();
25
24
  } catch (err) {
26
25
  this.log.error(`Error collecting txs via ${info.description}`, err, {
27
26
  ...info,
28
- requestedTxs: requested.map((hash)=>hash.toString())
27
+ requestedTxs: requested
29
28
  });
30
- return [];
29
+ return {
30
+ validTxs: [],
31
+ invalidTxHashes: []
32
+ };
31
33
  }
32
34
  });
33
- if (txs.length === 0) {
35
+ if (validTxs.length === 0 && invalidTxHashes.length === 0) {
34
36
  this.log.trace(`No txs found via ${info.description}`, {
35
37
  ...info,
36
- requestedTxs: requested.map((t)=>t.toString())
38
+ requestedTxs: requested
37
39
  });
38
40
  return {
39
- txs,
41
+ txs: validTxs,
40
42
  requested,
41
43
  duration
42
44
  };
43
45
  }
44
- // Validate tx hashes for all collected txs from external sources
45
- const validTxs = [];
46
- const invalidTxHashes = [];
47
- await Promise.all(txs.map(async (tx)=>{
48
- const isValid = await tx.validateTxHash();
49
- if (isValid) {
50
- validTxs.push(tx);
51
- } else {
52
- invalidTxHashes.push(tx.getTxHash().toString());
53
- }
54
- }));
55
46
  if (invalidTxHashes.length > 0) {
56
47
  this.log.warn(`Rejecting ${invalidTxHashes.length} txs with invalid hashes from ${info.description}`, {
57
48
  ...info,
@@ -61,7 +52,7 @@ import { TxCollectionInstrumentation } from './instrumentation.js';
61
52
  if (validTxs.length === 0) {
62
53
  this.log.trace(`No valid txs found via ${info.description} after validation`, {
63
54
  ...info,
64
- requestedTxs: requested.map((t)=>t.toString()),
55
+ requestedTxs: requested,
65
56
  invalidTxHashes
66
57
  });
67
58
  return {
@@ -74,7 +65,7 @@ import { TxCollectionInstrumentation } from './instrumentation.js';
74
65
  ...info,
75
66
  duration,
76
67
  txs: validTxs.map((t)=>t.getTxHash().toString()),
77
- requestedTxs: requested.map((t)=>t.toString()),
68
+ requestedTxs: requested,
78
69
  rejectedCount: invalidTxHashes.length
79
70
  });
80
71
  return await this.foundTxs(validTxs, {