@aztec/p2p 0.0.1-commit.7d4e6cd → 0.0.1-commit.858058eac

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 (475) 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 +5 -5
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +47 -13
  7. package/dest/client/interface.d.ts +33 -15
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +35 -36
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +116 -140
  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 +24 -3
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +18 -4
  21. package/dest/index.d.ts +2 -1
  22. package/dest/index.d.ts.map +1 -1
  23. package/dest/index.js +1 -0
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +102 -88
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.js +436 -3
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +373 -96
  30. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  31. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/index.js +1 -2
  33. package/dest/mem_pools/attestation_pool/mocks.d.ts +4 -2
  34. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/mocks.js +8 -5
  36. package/dest/mem_pools/index.d.ts +3 -2
  37. package/dest/mem_pools/index.d.ts.map +1 -1
  38. package/dest/mem_pools/index.js +1 -1
  39. package/dest/mem_pools/instrumentation.d.ts +1 -1
  40. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  41. package/dest/mem_pools/instrumentation.js +2 -2
  42. package/dest/mem_pools/interface.d.ts +5 -5
  43. package/dest/mem_pools/interface.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
  45. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  47. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  48. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  50. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  51. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  53. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  54. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  56. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  57. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  61. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  62. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  64. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  66. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  67. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  69. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  70. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  72. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +87 -0
  73. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +180 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  105. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  106. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  108. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +197 -0
  109. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +93 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +127 -0
  114. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  115. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  116. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  117. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +99 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +332 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  121. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  122. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +156 -0
  123. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  124. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  125. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +751 -0
  126. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
  127. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/attestation_validator/attestation_validator.js +41 -10
  129. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
  130. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
  132. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  133. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  134. package/dest/msg_validators/clock_tolerance.js +37 -0
  135. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
  136. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  137. package/dest/msg_validators/proposal_validator/proposal_validator.js +55 -31
  138. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
  139. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  140. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +93 -64
  141. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  142. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  144. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  145. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  146. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  147. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  148. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  149. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  150. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  151. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  152. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  153. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  154. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  155. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  156. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/factory.js +21 -11
  158. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  159. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  160. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  161. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  162. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  163. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  164. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  165. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  166. package/dest/msg_validators/tx_validator/index.js +1 -0
  167. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  168. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  170. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  171. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  172. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  173. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  174. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  175. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  176. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  177. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  178. package/dest/msg_validators/tx_validator/timestamp_validator.js +4 -4
  179. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  180. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  181. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  182. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  183. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  184. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  185. package/dest/services/data_store.d.ts +1 -1
  186. package/dest/services/data_store.d.ts.map +1 -1
  187. package/dest/services/data_store.js +10 -6
  188. package/dest/services/discv5/discV5_service.js +1 -1
  189. package/dest/services/dummy_service.d.ts +22 -2
  190. package/dest/services/dummy_service.d.ts.map +1 -1
  191. package/dest/services/dummy_service.js +45 -0
  192. package/dest/services/encoding.d.ts +2 -2
  193. package/dest/services/encoding.d.ts.map +1 -1
  194. package/dest/services/encoding.js +4 -5
  195. package/dest/services/gossipsub/index.d.ts +3 -0
  196. package/dest/services/gossipsub/index.d.ts.map +1 -0
  197. package/dest/services/gossipsub/index.js +2 -0
  198. package/dest/services/gossipsub/scoring.d.ts +21 -3
  199. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  200. package/dest/services/gossipsub/scoring.js +24 -7
  201. package/dest/services/gossipsub/topic_score_params.d.ts +161 -0
  202. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  203. package/dest/services/gossipsub/topic_score_params.js +324 -0
  204. package/dest/services/index.d.ts +2 -1
  205. package/dest/services/index.d.ts.map +1 -1
  206. package/dest/services/index.js +1 -0
  207. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  208. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  209. package/dest/services/libp2p/instrumentation.js +19 -8
  210. package/dest/services/libp2p/libp2p_service.d.ts +91 -36
  211. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  212. package/dest/services/libp2p/libp2p_service.js +407 -303
  213. package/dest/services/peer-manager/metrics.d.ts +2 -2
  214. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  215. package/dest/services/peer-manager/metrics.js +20 -5
  216. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  217. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  218. package/dest/services/peer-manager/peer_scoring.js +33 -4
  219. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  220. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  221. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  222. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  223. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  224. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  225. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  226. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  227. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  228. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  229. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  230. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  231. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  232. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  233. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  234. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  235. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  236. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  237. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  238. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  239. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  240. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  241. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  242. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  243. package/dest/services/reqresp/constants.d.ts +12 -0
  244. package/dest/services/reqresp/constants.d.ts.map +1 -0
  245. package/dest/services/reqresp/constants.js +7 -0
  246. package/dest/services/reqresp/interface.d.ts +12 -1
  247. package/dest/services/reqresp/interface.d.ts.map +1 -1
  248. package/dest/services/reqresp/interface.js +15 -1
  249. package/dest/services/reqresp/metrics.d.ts +6 -5
  250. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  251. package/dest/services/reqresp/metrics.js +17 -5
  252. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  253. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  254. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  255. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  256. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  257. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  258. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  259. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  260. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  261. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  262. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  263. package/dest/services/reqresp/protocols/status.js +2 -1
  264. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  265. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  266. package/dest/services/reqresp/protocols/tx.js +20 -0
  267. package/dest/services/reqresp/reqresp.d.ts +6 -1
  268. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  269. package/dest/services/reqresp/reqresp.js +69 -26
  270. package/dest/services/service.d.ts +38 -1
  271. package/dest/services/service.d.ts.map +1 -1
  272. package/dest/services/tx_collection/config.d.ts +10 -1
  273. package/dest/services/tx_collection/config.d.ts.map +1 -1
  274. package/dest/services/tx_collection/config.js +25 -1
  275. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  276. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  277. package/dest/services/tx_collection/fast_tx_collection.js +34 -13
  278. package/dest/services/tx_collection/file_store_tx_collection.d.ts +44 -0
  279. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  280. package/dest/services/tx_collection/file_store_tx_collection.js +118 -0
  281. package/dest/services/tx_collection/file_store_tx_source.d.ts +27 -0
  282. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  283. package/dest/services/tx_collection/file_store_tx_source.js +57 -0
  284. package/dest/services/tx_collection/index.d.ts +3 -1
  285. package/dest/services/tx_collection/index.d.ts.map +1 -1
  286. package/dest/services/tx_collection/index.js +2 -0
  287. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  288. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  289. package/dest/services/tx_collection/instrumentation.js +9 -2
  290. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  291. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  292. package/dest/services/tx_collection/proposal_tx_collector.js +49 -0
  293. package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
  294. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  295. package/dest/services/tx_collection/slow_tx_collection.js +48 -19
  296. package/dest/services/tx_collection/tx_collection.d.ts +23 -13
  297. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  298. package/dest/services/tx_collection/tx_collection.js +62 -6
  299. package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
  300. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  301. package/dest/services/tx_collection/tx_collection_sink.js +13 -7
  302. package/dest/services/tx_file_store/config.d.ts +16 -0
  303. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  304. package/dest/services/tx_file_store/config.js +22 -0
  305. package/dest/services/tx_file_store/index.d.ts +4 -0
  306. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  307. package/dest/services/tx_file_store/index.js +3 -0
  308. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  309. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  310. package/dest/services/tx_file_store/instrumentation.js +29 -0
  311. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  312. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  313. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  314. package/dest/services/tx_provider.d.ts +5 -5
  315. package/dest/services/tx_provider.d.ts.map +1 -1
  316. package/dest/services/tx_provider.js +5 -4
  317. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  318. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  319. package/dest/services/tx_provider_instrumentation.js +5 -5
  320. package/dest/test-helpers/index.d.ts +3 -1
  321. package/dest/test-helpers/index.d.ts.map +1 -1
  322. package/dest/test-helpers/index.js +2 -0
  323. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  324. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  325. package/dest/test-helpers/mock-pubsub.d.ts +27 -1
  326. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  327. package/dest/test-helpers/mock-pubsub.js +97 -2
  328. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  329. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  330. package/dest/test-helpers/reqresp-nodes.js +2 -1
  331. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  332. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  333. package/dest/test-helpers/test_tx_provider.js +41 -0
  334. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  335. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  336. package/dest/test-helpers/testbench-utils.js +360 -0
  337. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  338. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  339. package/dest/testbench/p2p_client_testbench_worker.js +213 -133
  340. package/dest/testbench/worker_client_manager.d.ts +51 -6
  341. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  342. package/dest/testbench/worker_client_manager.js +226 -44
  343. package/package.json +16 -16
  344. package/src/bootstrap/bootstrap.ts +7 -4
  345. package/src/client/factory.ts +78 -22
  346. package/src/client/interface.ts +39 -14
  347. package/src/client/p2p_client.ts +156 -167
  348. package/src/client/test/tx_proposal_collector/README.md +227 -0
  349. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  350. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  351. package/src/config.ts +40 -4
  352. package/src/index.ts +1 -0
  353. package/src/mem_pools/attestation_pool/attestation_pool.ts +488 -91
  354. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +460 -112
  355. package/src/mem_pools/attestation_pool/index.ts +9 -2
  356. package/src/mem_pools/attestation_pool/mocks.ts +6 -4
  357. package/src/mem_pools/index.ts +4 -1
  358. package/src/mem_pools/instrumentation.ts +2 -1
  359. package/src/mem_pools/interface.ts +4 -4
  360. package/src/mem_pools/tx_pool/README.md +28 -13
  361. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  362. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  363. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  364. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  365. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  366. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  367. package/src/mem_pools/tx_pool_v2/README.md +259 -0
  368. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  369. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  370. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +234 -0
  371. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  372. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  373. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  374. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  375. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  376. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  377. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  378. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  379. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  380. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  381. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  382. package/src/mem_pools/tx_pool_v2/interfaces.ts +227 -0
  383. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +207 -0
  384. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  385. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +417 -0
  386. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +212 -0
  387. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +895 -0
  388. package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
  389. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -10
  390. package/src/msg_validators/clock_tolerance.ts +51 -0
  391. package/src/msg_validators/proposal_validator/proposal_validator.ts +31 -31
  392. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +91 -67
  393. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  394. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  395. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  396. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  397. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  398. package/src/msg_validators/tx_validator/factory.ts +64 -23
  399. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  400. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  401. package/src/msg_validators/tx_validator/index.ts +1 -0
  402. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  403. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  404. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  405. package/src/msg_validators/tx_validator/timestamp_validator.ts +25 -17
  406. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  407. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  408. package/src/services/data_store.ts +10 -7
  409. package/src/services/discv5/discV5_service.ts +1 -1
  410. package/src/services/dummy_service.ts +57 -0
  411. package/src/services/encoding.ts +4 -5
  412. package/src/services/gossipsub/README.md +626 -0
  413. package/src/services/gossipsub/index.ts +2 -0
  414. package/src/services/gossipsub/scoring.ts +29 -5
  415. package/src/services/gossipsub/topic_score_params.ts +451 -0
  416. package/src/services/index.ts +1 -0
  417. package/src/services/libp2p/instrumentation.ts +20 -7
  418. package/src/services/libp2p/libp2p_service.ts +435 -314
  419. package/src/services/peer-manager/metrics.ts +21 -4
  420. package/src/services/peer-manager/peer_scoring.ts +29 -1
  421. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  422. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  423. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  424. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  425. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  426. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  427. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  428. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  429. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  430. package/src/services/reqresp/constants.ts +14 -0
  431. package/src/services/reqresp/interface.ts +29 -1
  432. package/src/services/reqresp/metrics.ts +34 -9
  433. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  434. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  435. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  436. package/src/services/reqresp/protocols/status.ts +5 -3
  437. package/src/services/reqresp/protocols/tx.ts +22 -0
  438. package/src/services/reqresp/reqresp.ts +79 -22
  439. package/src/services/service.ts +44 -0
  440. package/src/services/tx_collection/config.ts +41 -1
  441. package/src/services/tx_collection/fast_tx_collection.ts +44 -19
  442. package/src/services/tx_collection/file_store_tx_collection.ts +152 -0
  443. package/src/services/tx_collection/file_store_tx_source.ts +70 -0
  444. package/src/services/tx_collection/index.ts +6 -0
  445. package/src/services/tx_collection/instrumentation.ts +11 -2
  446. package/src/services/tx_collection/proposal_tx_collector.ts +112 -0
  447. package/src/services/tx_collection/slow_tx_collection.ts +57 -28
  448. package/src/services/tx_collection/tx_collection.ts +86 -20
  449. package/src/services/tx_collection/tx_collection_sink.ts +17 -7
  450. package/src/services/tx_file_store/config.ts +37 -0
  451. package/src/services/tx_file_store/index.ts +3 -0
  452. package/src/services/tx_file_store/instrumentation.ts +36 -0
  453. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  454. package/src/services/tx_provider.ts +10 -9
  455. package/src/services/tx_provider_instrumentation.ts +11 -5
  456. package/src/test-helpers/index.ts +2 -0
  457. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  458. package/src/test-helpers/mock-pubsub.ts +133 -3
  459. package/src/test-helpers/reqresp-nodes.ts +2 -1
  460. package/src/test-helpers/test_tx_provider.ts +64 -0
  461. package/src/test-helpers/testbench-utils.ts +422 -0
  462. package/src/testbench/p2p_client_testbench_worker.ts +322 -127
  463. package/src/testbench/worker_client_manager.ts +304 -47
  464. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  465. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  466. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  467. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  468. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  469. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  470. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  471. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  472. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  473. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  474. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  475. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
@@ -1,15 +1,12 @@
1
1
  import { times } from '@aztec/foundation/collection';
2
2
  import { AbortError, TimeoutError } from '@aztec/foundation/error';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
- import { boundInclusive } from '@aztec/foundation/number';
5
4
  import { promiseWithResolvers } from '@aztec/foundation/promise';
6
5
  import { sleep } from '@aztec/foundation/sleep';
7
6
  import { DateProvider, elapsed } from '@aztec/foundation/timer';
8
7
  import { TxHash } from '@aztec/stdlib/tx';
9
- import { ReqRespSubProtocol } from '../reqresp/interface.js';
10
- import { chunkTxHashesRequest } from '../reqresp/protocols/tx.js';
8
+ import { BatchTxRequesterCollector, SendBatchRequestCollector } from './proposal_tx_collector.js';
11
9
  export class FastTxCollection {
12
- reqResp;
13
10
  nodes;
14
11
  txCollectionSink;
15
12
  config;
@@ -17,14 +14,17 @@ export class FastTxCollection {
17
14
  log;
18
15
  // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
19
16
  requests;
20
- constructor(reqResp, nodes, txCollectionSink, config, dateProvider = new DateProvider(), log = createLogger('p2p:tx_collection_service')){
21
- this.reqResp = reqResp;
17
+ missingTxsCollector;
18
+ constructor(p2pService, nodes, txCollectionSink, config, dateProvider = new DateProvider(), log = createLogger('p2p:tx_collection_service'), missingTxsCollector){
22
19
  this.nodes = nodes;
23
20
  this.txCollectionSink = txCollectionSink;
24
21
  this.config = config;
25
22
  this.dateProvider = dateProvider;
26
23
  this.log = log;
27
24
  this.requests = new Set();
25
+ const batchTxRequesterConfig = this.config;
26
+ const missingTxsCollectorType = this.config.txCollectionMissingTxsCollectorType;
27
+ this.missingTxsCollector = missingTxsCollector ?? (missingTxsCollectorType === 'old' ? new SendBatchRequestCollector(p2pService) : new BatchTxRequesterCollector(p2pService, log, dateProvider, undefined, batchTxRequesterConfig));
28
28
  }
29
29
  async stop() {
30
30
  this.requests.forEach((request)=>request.promise.reject(new AbortError(`Stopped collection service`)));
@@ -51,7 +51,7 @@ export class FastTxCollection {
51
51
  // This promise is used to await for the collection to finish during the main collectFast method.
52
52
  // It gets resolved in `foundTxs` when all txs have been collected, or rejected if the request is aborted or hits the deadline.
53
53
  const promise = promiseWithResolvers();
54
- setTimeout(()=>promise.reject(new TimeoutError(`Timed out while collecting txs`)), timeout);
54
+ const timeoutTimer = setTimeout(()=>promise.reject(new TimeoutError(`Timed out while collecting txs`)), timeout);
55
55
  const request = {
56
56
  ...input,
57
57
  blockInfo,
@@ -63,6 +63,7 @@ export class FastTxCollection {
63
63
  const [duration] = await elapsed(()=>this.collectFast(request, {
64
64
  ...opts
65
65
  }));
66
+ clearTimeout(timeoutTimer);
66
67
  this.log.verbose(`Collected ${request.foundTxs.size} txs out of ${txHashes.length} for ${input.type} at slot ${blockInfo.slotNumber}`, {
67
68
  ...blockInfo,
68
69
  duration,
@@ -195,7 +196,7 @@ export class FastTxCollection {
195
196
  node: node.getInfo(),
196
197
  method: 'fast-node-rpc',
197
198
  ...request.blockInfo
198
- });
199
+ }, this.getAddContext(request));
199
200
  // Clear from the active requests the txs we just requested
200
201
  for (const requestedTx of batch){
201
202
  activeRequestsToThisNode.delete(requestedTx.txHash);
@@ -212,8 +213,6 @@ export class FastTxCollection {
212
213
  async collectFastViaReqResp(request, opts) {
213
214
  const timeoutMs = +request.deadline - this.dateProvider.now();
214
215
  const pinnedPeer = opts.pinnedPeer;
215
- const maxPeers = boundInclusive(Math.ceil(request.missingTxHashes.size / 2), 8, 32);
216
- const maxRetryAttempts = 5;
217
216
  const blockInfo = request.blockInfo;
218
217
  const slotNumber = blockInfo.slotNumber;
219
218
  if (timeoutMs < 100) {
@@ -230,14 +229,23 @@ export class FastTxCollection {
230
229
  });
231
230
  try {
232
231
  await this.txCollectionSink.collect(async (txHashes)=>{
233
- const txs = await this.reqResp.sendBatchRequest(ReqRespSubProtocol.TX, chunkTxHashesRequest(txHashes), pinnedPeer, timeoutMs, maxPeers, maxRetryAttempts);
234
- return txs.flat();
232
+ if (request.type === 'proposal') {
233
+ return await this.missingTxsCollector.collectTxs(txHashes, request.blockProposal, pinnedPeer, timeoutMs);
234
+ } else if (request.type === 'block') {
235
+ const blockTxsSource = {
236
+ txHashes: request.block.body.txEffects.map((e)=>e.txHash),
237
+ archive: request.block.archive.root
238
+ };
239
+ return await this.missingTxsCollector.collectTxs(txHashes, blockTxsSource, pinnedPeer, timeoutMs);
240
+ } else {
241
+ throw new Error(`Unknown request type: ${request.type}`);
242
+ }
235
243
  }, Array.from(request.missingTxHashes).map((txHash)=>TxHash.fromString(txHash)), {
236
244
  description: `reqresp for slot ${slotNumber}`,
237
245
  method: 'fast-req-resp',
238
246
  ...opts,
239
247
  ...request.blockInfo
240
- });
248
+ }, this.getAddContext(request));
241
249
  } catch (err) {
242
250
  this.log.error(`Error sending fast reqresp request for txs`, err, {
243
251
  txs: [
@@ -247,6 +255,19 @@ export class FastTxCollection {
247
255
  });
248
256
  }
249
257
  }
258
+ /** Returns the TxAddContext for the given request, used by the sink to add txs to the pool correctly. */ getAddContext(request) {
259
+ if (request.type === 'proposal') {
260
+ return {
261
+ type: 'proposal',
262
+ blockHeader: request.blockProposal.blockHeader
263
+ };
264
+ } else {
265
+ return {
266
+ type: 'mined',
267
+ block: request.block
268
+ };
269
+ }
270
+ }
250
271
  /**
251
272
  * Handle txs by marking them as found for the requests that are waiting for them, and resolves the request if all its txs have been found.
252
273
  * Called internally and from the main tx collection manager whenever the tx pool emits a tx-added event.
@@ -0,0 +1,44 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { Tx, TxHash } from '@aztec/stdlib/tx';
3
+ import type { FileStoreTxSource } from './file_store_tx_source.js';
4
+ import type { TxAddContext, TxCollectionSink } from './tx_collection_sink.js';
5
+ /**
6
+ * Collects txs from file stores as a fallback after P2P methods have been tried.
7
+ * Runs in parallel to slow/fast collection. The delay before starting file store
8
+ * collection is managed by the TxCollection orchestrator, not this class.
9
+ */
10
+ export declare class FileStoreTxCollection {
11
+ private readonly fileStoreSources;
12
+ private readonly txCollectionSink;
13
+ private readonly log;
14
+ /** Map from tx hash to add context for txs queued for download. */
15
+ private pendingTxs;
16
+ /**
17
+ * Tracks tx hashes found elsewhere, even before startCollecting is called.
18
+ * Needed because the orchestrator delays startCollecting via a real sleep, but foundTxs
19
+ * may arrive during that delay — before the hashes are added to pendingTxs.
20
+ */
21
+ private foundTxHashes;
22
+ /** Queue of tx hashes to be downloaded. */
23
+ private downloadQueue;
24
+ /** Worker promises for concurrent downloads. */
25
+ private workers;
26
+ /** Whether the collection has been started. */
27
+ private started;
28
+ constructor(fileStoreSources: FileStoreTxSource[], txCollectionSink: TxCollectionSink, log?: Logger);
29
+ /** Starts the file store collection workers. */
30
+ start(): void;
31
+ /** Stops all collection activity. */
32
+ stop(): Promise<void>;
33
+ /** Remove the given tx hashes from pending. */
34
+ stopCollecting(txHashes: TxHash[]): void;
35
+ /** Clears all pending state. Items already in the download queue will still be processed but won't be re-queued. */
36
+ clearPending(): void;
37
+ /** Queue the given tx hashes for file store collection. */
38
+ startCollecting(txHashes: TxHash[], context: TxAddContext): void;
39
+ /** Stop tracking txs that were found elsewhere. */
40
+ foundTxs(txs: Tx[]): void;
41
+ private processDownload;
42
+ private downloadTx;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV90eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9maWxlX3N0b3JlX3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUs5RTs7OztHQUlHO0FBQ0gscUJBQWEscUJBQXFCO0lBcUI5QixPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtJQUNqQyxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtJQUNqQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUc7SUF0QnRCLG1FQUFtRTtJQUNuRSxPQUFPLENBQUMsVUFBVSxDQUFtQztJQUVyRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLGFBQWEsQ0FBcUI7SUFFMUMsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxhQUFhLENBQWlDO0lBRXRELGdEQUFnRDtJQUNoRCxPQUFPLENBQUMsT0FBTyxDQUF1QjtJQUV0QywrQ0FBK0M7SUFDL0MsT0FBTyxDQUFDLE9BQU8sQ0FBUztJQUV4QixZQUNtQixnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxFQUNyQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsR0FBRyxHQUFFLE1BQXFELEVBQ3pFO0lBRUosZ0RBQWdEO0lBQ3pDLEtBQUssU0FrQlg7SUFFRCxxQ0FBcUM7SUFDeEIsSUFBSSxrQkFVaEI7SUFFRCwrQ0FBK0M7SUFDeEMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFLdkM7SUFFRCxvSEFBb0g7SUFDN0csWUFBWSxTQUdsQjtJQUVELDJEQUEyRDtJQUNwRCxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLFFBUS9EO0lBRUQsbURBQW1EO0lBQzVDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBTXhCO1lBR2EsZUFBZTtZQWNmLFVBQVU7Q0EyQnpCIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_store_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/file_store_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK9E;;;;GAIG;AACH,qBAAa,qBAAqB;IAqB9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAtBtB,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAmC;IAErD;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAqB;IAE1C,2CAA2C;IAC3C,OAAO,CAAC,aAAa,CAAiC;IAEtD,gDAAgD;IAChD,OAAO,CAAC,OAAO,CAAuB;IAEtC,+CAA+C;IAC/C,OAAO,CAAC,OAAO,CAAS;IAExB,YACmB,gBAAgB,EAAE,iBAAiB,EAAE,EACrC,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,GAAE,MAAqD,EACzE;IAEJ,gDAAgD;IACzC,KAAK,SAkBX;IAED,qCAAqC;IACxB,IAAI,kBAUhB;IAED,+CAA+C;IACxC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAKvC;IAED,oHAAoH;IAC7G,YAAY,SAGlB;IAED,2DAA2D;IACpD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,QAQ/D;IAED,mDAAmD;IAC5C,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,QAMxB;YAGa,eAAe;YAcf,UAAU;CA2BzB"}
@@ -0,0 +1,118 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { FifoMemoryQueue } from '@aztec/foundation/queue';
3
+ // Internal constants (not configurable by node operators)
4
+ const FILE_STORE_DOWNLOAD_CONCURRENCY = 5; // Max concurrent downloads
5
+ /**
6
+ * Collects txs from file stores as a fallback after P2P methods have been tried.
7
+ * Runs in parallel to slow/fast collection. The delay before starting file store
8
+ * collection is managed by the TxCollection orchestrator, not this class.
9
+ */ export class FileStoreTxCollection {
10
+ fileStoreSources;
11
+ txCollectionSink;
12
+ log;
13
+ /** Map from tx hash to add context for txs queued for download. */ pendingTxs;
14
+ /**
15
+ * Tracks tx hashes found elsewhere, even before startCollecting is called.
16
+ * Needed because the orchestrator delays startCollecting via a real sleep, but foundTxs
17
+ * may arrive during that delay — before the hashes are added to pendingTxs.
18
+ */ foundTxHashes;
19
+ /** Queue of tx hashes to be downloaded. */ downloadQueue;
20
+ /** Worker promises for concurrent downloads. */ workers;
21
+ /** Whether the collection has been started. */ started;
22
+ constructor(fileStoreSources, txCollectionSink, log = createLogger('p2p:file_store_tx_collection')){
23
+ this.fileStoreSources = fileStoreSources;
24
+ this.txCollectionSink = txCollectionSink;
25
+ this.log = log;
26
+ this.pendingTxs = new Map();
27
+ this.foundTxHashes = new Set();
28
+ this.downloadQueue = new FifoMemoryQueue();
29
+ this.workers = [];
30
+ this.started = false;
31
+ }
32
+ /** Starts the file store collection workers. */ start() {
33
+ if (this.fileStoreSources.length === 0) {
34
+ this.log.debug('No file store sources configured, skipping file store collection');
35
+ return;
36
+ }
37
+ this.started = true;
38
+ this.downloadQueue = new FifoMemoryQueue();
39
+ // Start concurrent download workers
40
+ for(let i = 0; i < FILE_STORE_DOWNLOAD_CONCURRENCY; i++){
41
+ this.workers.push(this.downloadQueue.process((txHash)=>this.processDownload(txHash)));
42
+ }
43
+ this.log.info(`Started file store tx collection with ${this.fileStoreSources.length} sources`, {
44
+ sources: this.fileStoreSources.map((s)=>s.getInfo()),
45
+ concurrency: FILE_STORE_DOWNLOAD_CONCURRENCY
46
+ });
47
+ }
48
+ /** Stops all collection activity. */ async stop() {
49
+ if (!this.started) {
50
+ return;
51
+ }
52
+ this.started = false;
53
+ this.downloadQueue.end();
54
+ await Promise.all(this.workers);
55
+ this.workers = [];
56
+ this.pendingTxs.clear();
57
+ this.foundTxHashes.clear();
58
+ }
59
+ /** Remove the given tx hashes from pending. */ stopCollecting(txHashes) {
60
+ for (const txHash of txHashes){
61
+ const hashStr = txHash.toString();
62
+ this.pendingTxs.delete(hashStr);
63
+ }
64
+ }
65
+ /** Clears all pending state. Items already in the download queue will still be processed but won't be re-queued. */ clearPending() {
66
+ this.pendingTxs.clear();
67
+ this.foundTxHashes.clear();
68
+ }
69
+ /** Queue the given tx hashes for file store collection. */ startCollecting(txHashes, context) {
70
+ for (const txHash of txHashes){
71
+ const hashStr = txHash.toString();
72
+ if (!this.pendingTxs.has(hashStr) && !this.foundTxHashes.has(hashStr)) {
73
+ this.pendingTxs.set(hashStr, context);
74
+ this.downloadQueue.put(txHash);
75
+ }
76
+ }
77
+ }
78
+ /** Stop tracking txs that were found elsewhere. */ foundTxs(txs) {
79
+ for (const tx of txs){
80
+ const hashStr = tx.getTxHash().toString();
81
+ this.pendingTxs.delete(hashStr);
82
+ this.foundTxHashes.add(hashStr);
83
+ }
84
+ }
85
+ /** Processes a single tx hash from the download queue. */ async processDownload(txHash) {
86
+ const hashStr = txHash.toString();
87
+ const context = this.pendingTxs.get(hashStr);
88
+ // Skip if already found by another method
89
+ if (!context) {
90
+ return;
91
+ }
92
+ await this.downloadTx(txHash, context);
93
+ this.pendingTxs.delete(hashStr);
94
+ }
95
+ /** Attempt to download a tx from file stores (round-robin). */ async downloadTx(txHash, context) {
96
+ const startIndex = Math.floor(Math.random() * this.fileStoreSources.length);
97
+ for(let i = startIndex; i < startIndex + this.fileStoreSources.length; i++){
98
+ const source = this.fileStoreSources[i % this.fileStoreSources.length];
99
+ try {
100
+ const result = await this.txCollectionSink.collect((hashes)=>source.getTxsByHash(hashes), [
101
+ txHash
102
+ ], {
103
+ description: `file-store ${source.getInfo()}`,
104
+ method: 'file-store',
105
+ fileStore: source.getInfo()
106
+ }, context);
107
+ if (result.txs.length > 0) {
108
+ return;
109
+ }
110
+ } catch (err) {
111
+ this.log.trace(`Failed to download tx ${txHash} from ${source.getInfo()}`, {
112
+ err
113
+ });
114
+ }
115
+ }
116
+ this.log.trace(`Tx ${txHash} not found in any file store`);
117
+ }
118
+ }
@@ -0,0 +1,27 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { Tx, type TxHash } from '@aztec/stdlib/tx';
3
+ import type { TxSource } from './tx_source.js';
4
+ /** TxSource implementation that downloads txs from a file store. */
5
+ export declare class FileStoreTxSource implements TxSource {
6
+ private readonly fileStore;
7
+ private readonly baseUrl;
8
+ private readonly log;
9
+ private constructor();
10
+ /**
11
+ * Creates a FileStoreTxSource from a URL.
12
+ * @param url - The file store URL (s3://, gs://, file://, http://, https://).
13
+ * @param log - Optional logger.
14
+ * @returns The FileStoreTxSource instance, or undefined if creation fails.
15
+ */
16
+ static create(url: string, log?: Logger): Promise<FileStoreTxSource | undefined>;
17
+ getInfo(): string;
18
+ getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
19
+ }
20
+ /**
21
+ * Creates FileStoreTxSource instances from URLs.
22
+ * @param urls - Array of file store URLs.
23
+ * @param log - Optional logger.
24
+ * @returns Array of successfully created FileStoreTxSource instances.
25
+ */
26
+ export declare function createFileStoreTxSources(urls: string[], log?: Logger): Promise<FileStoreTxSource[]>;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV90eF9zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9jb2xsZWN0aW9uL2ZpbGVfc3RvcmVfdHhfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0Msb0VBQW9FO0FBQ3BFLHFCQUFhLGlCQUFrQixZQUFXLFFBQVE7SUFFOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTztJQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUc7SUFIdEIsT0FBTyxlQUlIO0lBRUo7Ozs7O09BS0c7SUFDSCxPQUFvQixNQUFNLENBQ3hCLEdBQUcsRUFBRSxNQUFNLEVBQ1gsR0FBRyxHQUFFLE1BQWlELEdBQ3JELE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsQ0FZeEM7SUFFTSxPQUFPLElBQUksTUFBTSxDQUV2QjtJQUVNLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FhbkU7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLHdCQUF3QixDQUM1QyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQ2QsR0FBRyxHQUFFLE1BQWlELEdBQ3JELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBRzlCIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_store_tx_source.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/file_store_tx_source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,oEAAoE;AACpE,qBAAa,iBAAkB,YAAW,QAAQ;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHtB,OAAO,eAIH;IAEJ;;;;;OAKG;IACH,OAAoB,MAAM,CACxB,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAYxC;IAEM,OAAO,IAAI,MAAM,CAEvB;IAEM,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAanE;CACF;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAG9B"}
@@ -0,0 +1,57 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { createReadOnlyFileStore } from '@aztec/stdlib/file-store';
3
+ import { Tx } from '@aztec/stdlib/tx';
4
+ /** TxSource implementation that downloads txs from a file store. */ export class FileStoreTxSource {
5
+ fileStore;
6
+ baseUrl;
7
+ log;
8
+ constructor(fileStore, baseUrl, log){
9
+ this.fileStore = fileStore;
10
+ this.baseUrl = baseUrl;
11
+ this.log = log;
12
+ }
13
+ /**
14
+ * Creates a FileStoreTxSource from a URL.
15
+ * @param url - The file store URL (s3://, gs://, file://, http://, https://).
16
+ * @param log - Optional logger.
17
+ * @returns The FileStoreTxSource instance, or undefined if creation fails.
18
+ */ static async create(url, log = createLogger('p2p:file_store_tx_source')) {
19
+ try {
20
+ const fileStore = await createReadOnlyFileStore(url, log);
21
+ if (!fileStore) {
22
+ log.warn(`Failed to create file store for URL: ${url}`);
23
+ return undefined;
24
+ }
25
+ return new FileStoreTxSource(fileStore, url, log);
26
+ } catch (err) {
27
+ log.warn(`Error creating file store for URL: ${url}`, {
28
+ error: err
29
+ });
30
+ return undefined;
31
+ }
32
+ }
33
+ getInfo() {
34
+ return `file-store:${this.baseUrl}`;
35
+ }
36
+ getTxsByHash(txHashes) {
37
+ return Promise.all(txHashes.map(async (txHash)=>{
38
+ const path = `txs/${txHash.toString()}.bin`;
39
+ try {
40
+ const buffer = await this.fileStore.read(path);
41
+ return Tx.fromBuffer(buffer);
42
+ } catch {
43
+ // Tx not found or error reading - return undefined
44
+ return undefined;
45
+ }
46
+ }));
47
+ }
48
+ }
49
+ /**
50
+ * Creates FileStoreTxSource instances from URLs.
51
+ * @param urls - Array of file store URLs.
52
+ * @param log - Optional logger.
53
+ * @returns Array of successfully created FileStoreTxSource instances.
54
+ */ export async function createFileStoreTxSources(urls, log = createLogger('p2p:file_store_tx_source')) {
55
+ const sources = await Promise.all(urls.map((url)=>FileStoreTxSource.create(url, log)));
56
+ return sources.filter((s)=>s !== undefined);
57
+ }
@@ -1,3 +1,5 @@
1
1
  export { TxCollection, type FastCollectionRequestInput } from './tx_collection.js';
2
2
  export { type TxSource, createNodeRpcTxSources, NodeRpcTxSource } from './tx_source.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9jb2xsZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSywwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyJ9
3
+ export { type MissingTxsCollector, BatchTxRequesterCollector, SendBatchRequestCollector, } from './proposal_tx_collector.js';
4
+ export { FileStoreTxSource, createFileStoreTxSources } from './file_store_tx_source.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9jb2xsZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSywwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxtQkFBbUIsRUFDeEIseUJBQXlCLEVBQ3pCLHlCQUF5QixHQUMxQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,KAAK,QAAQ,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,KAAK,QAAQ,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EACL,KAAK,mBAAmB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,2 +1,4 @@
1
1
  export { TxCollection } from './tx_collection.js';
2
2
  export { createNodeRpcTxSources, NodeRpcTxSource } from './tx_source.js';
3
+ export { BatchTxRequesterCollector, SendBatchRequestCollector } from './proposal_tx_collector.js';
4
+ export { FileStoreTxSource, createFileStoreTxSources } from './file_store_tx_source.js';
@@ -7,4 +7,4 @@ export declare class TxCollectionInstrumentation {
7
7
  constructor(client: TelemetryClient, name: string);
8
8
  increaseTxsFor(what: CollectionMethod, count: number, duration: number): void;
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUV4SCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTNELHFCQUFhLDJCQUEyQjtJQUN0QyxPQUFPLENBQUMsWUFBWSxDQUFnQjtJQUNwQyxPQUFPLENBQUMsdUJBQXVCLENBQVk7SUFDM0MsT0FBTyxDQUFDLDRCQUE0QixDQUFZO0lBRWhELFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQVFoRDtJQUVELGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUtyRTtDQUNGIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0QscUJBQWEsMkJBQTJCO0lBQ3RDLE9BQU8sQ0FBQyxZQUFZLENBQWdCO0lBQ3BDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBWTtJQUMzQyxPQUFPLENBQUMsNEJBQTRCLENBQVk7SUFFaEQsWUFBWSxNQUFNLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBVWhEO0lBRUQsY0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBS3JFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAExH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qBAAa,2BAA2B;IACtC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,uBAAuB,CAAY;IAC3C,OAAO,CAAC,4BAA4B,CAAY;IAEhD,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAQhD;IAED,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAKrE;CACF"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qBAAa,2BAA2B;IACtC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,uBAAuB,CAAY;IAC3C,OAAO,CAAC,4BAA4B,CAAY;IAEhD,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAUhD;IAED,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAKrE;CACF"}
@@ -1,11 +1,18 @@
1
- import { Attributes, Metrics } from '@aztec/telemetry-client';
1
+ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
2
2
  export class TxCollectionInstrumentation {
3
3
  txsCollected;
4
4
  collectionDurationPerTx;
5
5
  collectionDurationPerRequest;
6
6
  constructor(client, name){
7
7
  const meter = client.getMeter(name);
8
- this.txsCollected = meter.createUpDownCounter(Metrics.TX_COLLECTOR_COUNT);
8
+ this.txsCollected = createUpDownCounterWithDefault(meter, Metrics.TX_COLLECTOR_COUNT, {
9
+ [Attributes.TX_COLLECTION_METHOD]: [
10
+ 'fast-req-resp',
11
+ 'fast-node-rpc',
12
+ 'slow-req-resp',
13
+ 'slow-node-rpc'
14
+ ]
15
+ });
9
16
  this.collectionDurationPerTx = meter.createHistogram(Metrics.TX_COLLECTOR_DURATION_PER_TX);
10
17
  this.collectionDurationPerRequest = meter.createHistogram(Metrics.TX_COLLECTOR_DURATION_PER_REQUEST);
11
18
  }
@@ -0,0 +1,48 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import type { DateProvider } from '@aztec/foundation/timer';
3
+ import type { Tx, TxHash } from '@aztec/stdlib/tx';
4
+ import type { PeerId } from '@libp2p/interface';
5
+ import type { BatchTxRequesterConfig } from '../reqresp/batch-tx-requester/config.js';
6
+ import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
7
+ import type { IBatchRequestTxValidator } from '../reqresp/batch-tx-requester/tx_validator.js';
8
+ import { type BlockTxsSource } from '../reqresp/index.js';
9
+ /**
10
+ * Strategy interface for collecting missing transactions for a block or proposal.
11
+ * Allows swapping between different tx collection implementations for benchmarking.
12
+ */
13
+ export interface MissingTxsCollector {
14
+ /**
15
+ * Collect missing transactions for a block or proposal.
16
+ * @param txHashes - The transaction hashes to collect
17
+ * @param blockTxsSource - The block or proposal containing the transactions
18
+ * @param pinnedPeer - Optional peer expected to have the transactions
19
+ * @param timeoutMs - Timeout in milliseconds
20
+ * @returns The collected transactions
21
+ */
22
+ collectTxs(txHashes: TxHash[], blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
23
+ }
24
+ /**
25
+ * Collects transactions using the BatchTxRequester implementation.
26
+ * This uses a smart/dumb peer strategy with parallel workers.
27
+ */
28
+ export declare class BatchTxRequesterCollector implements MissingTxsCollector {
29
+ private p2pService;
30
+ private log;
31
+ private dateProvider;
32
+ private txValidator?;
33
+ private batchTxRequesterConfig?;
34
+ constructor(p2pService: BatchTxRequesterLibP2PService, log: Logger, dateProvider: DateProvider, txValidator?: IBatchRequestTxValidator | undefined, batchTxRequesterConfig?: Partial<BatchTxRequesterConfig> | undefined);
35
+ collectTxs(txHashes: TxHash[], blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
36
+ }
37
+ /**
38
+ * Collects transactions using the sendBatchRequest implementation from ReqResp.
39
+ * This is the original implementation that balances requests across peers.
40
+ */
41
+ export declare class SendBatchRequestCollector implements MissingTxsCollector {
42
+ private p2pService;
43
+ private maxPeers;
44
+ private maxRetryAttempts;
45
+ constructor(p2pService: BatchTxRequesterLibP2PService, maxPeers?: number, maxRetryAttempts?: number);
46
+ collectTxs(txHashes: TxHash[], _blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdHhfY29sbGVjdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9wcm9wb3NhbF90eF9jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBNEMsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRzs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDOzs7Ozs7O09BT0c7SUFDSCxVQUFVLENBQ1IsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUNsQixjQUFjLEVBQUUsY0FBYyxFQUM5QixVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsU0FBUyxFQUFFLE1BQU0sR0FDaEIsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDbEI7QUFFRDs7O0dBR0c7QUFDSCxxQkFBYSx5QkFBMEIsWUFBVyxtQkFBbUI7SUFFakUsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztJQUxqQyxZQUNVLFVBQVUsRUFBRSw2QkFBNkIsRUFDekMsR0FBRyxFQUFFLE1BQU0sRUFDWCxZQUFZLEVBQUUsWUFBWSxFQUMxQixXQUFXLENBQUMsc0NBQTBCLEVBQ3RDLHNCQUFzQixDQUFDLDZDQUFpQyxFQUM5RDtJQUVFLFVBQVUsQ0FDZCxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQ2xCLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM5QixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0EwQmY7Q0FDRjtBQUtEOzs7R0FHRztBQUNILHFCQUFhLHlCQUEwQixZQUFXLG1CQUFtQjtJQUVqRSxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsZ0JBQWdCO0lBSDFCLFlBQ1UsVUFBVSxFQUFFLDZCQUE2QixFQUN6QyxRQUFRLEdBQUUsTUFBMEIsRUFDcEMsZ0JBQWdCLEdBQUUsTUFBbUMsRUFDM0Q7SUFFRSxVQUFVLENBQ2QsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUNsQixlQUFlLEVBQUUsY0FBYyxFQUMvQixVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsU0FBUyxFQUFFLE1BQU0sR0FDaEIsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBV2Y7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal_tx_collector.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/proposal_tx_collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,qBAAqB,CAAC;AAEpG;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,UAAU,CACR,QAAQ,EAAE,MAAM,EAAE,EAClB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IAEjE,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,sBAAsB,CAAC;IALjC,YACU,UAAU,EAAE,6BAA6B,EACzC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,sCAA0B,EACtC,sBAAsB,CAAC,6CAAiC,EAC9D;IAEE,UAAU,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,EAAE,EAAE,CAAC,CA0Bf;CACF;AAKD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IAEjE,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IAH1B,YACU,UAAU,EAAE,6BAA6B,EACzC,QAAQ,GAAE,MAA0B,EACpC,gBAAgB,GAAE,MAAmC,EAC3D;IAEE,UAAU,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,eAAe,EAAE,cAAc,EAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,EAAE,EAAE,CAAC,CAWf;CACF"}
@@ -0,0 +1,49 @@
1
+ import { BatchTxRequester } from '../reqresp/batch-tx-requester/batch_tx_requester.js';
2
+ import { ReqRespSubProtocol, chunkTxHashesRequest } from '../reqresp/index.js';
3
+ /**
4
+ * Collects transactions using the BatchTxRequester implementation.
5
+ * This uses a smart/dumb peer strategy with parallel workers.
6
+ */ export class BatchTxRequesterCollector {
7
+ p2pService;
8
+ log;
9
+ dateProvider;
10
+ txValidator;
11
+ batchTxRequesterConfig;
12
+ constructor(p2pService, log, dateProvider, txValidator, batchTxRequesterConfig){
13
+ this.p2pService = p2pService;
14
+ this.log = log;
15
+ this.dateProvider = dateProvider;
16
+ this.txValidator = txValidator;
17
+ this.batchTxRequesterConfig = batchTxRequesterConfig;
18
+ }
19
+ async collectTxs(txHashes, blockTxsSource, pinnedPeer, timeoutMs) {
20
+ 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
+ smartParallelWorkerCount,
23
+ dumbParallelWorkerCount,
24
+ txBatchSize,
25
+ badPeerThreshold,
26
+ txValidator: this.txValidator
27
+ });
28
+ return await BatchTxRequester.collectAllTxs(batchRequester.run());
29
+ }
30
+ }
31
+ const DEFAULT_MAX_PEERS = 10;
32
+ const DEFAULT_MAX_RETRY_ATTEMPTS = 3;
33
+ /**
34
+ * Collects transactions using the sendBatchRequest implementation from ReqResp.
35
+ * This is the original implementation that balances requests across peers.
36
+ */ export class SendBatchRequestCollector {
37
+ p2pService;
38
+ maxPeers;
39
+ maxRetryAttempts;
40
+ constructor(p2pService, maxPeers = DEFAULT_MAX_PEERS, maxRetryAttempts = DEFAULT_MAX_RETRY_ATTEMPTS){
41
+ this.p2pService = p2pService;
42
+ this.maxPeers = maxPeers;
43
+ this.maxRetryAttempts = maxRetryAttempts;
44
+ }
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);
47
+ return txs.flat();
48
+ }
49
+ }
@@ -1,7 +1,7 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
3
  import { DateProvider } from '@aztec/foundation/timer';
4
- import type { L2BlockNew } from '@aztec/stdlib/block';
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
7
  import { type ReqRespInterface } from '../reqresp/interface.js';
@@ -30,7 +30,7 @@ export declare class SlowTxCollection {
30
30
  stop(): Promise<void>;
31
31
  trigger(): Promise<void>;
32
32
  /** Starts collecting the given tx hashes for the given L2Block in the slow loop */
33
- startCollecting(block: L2BlockNew, txHashes: TxHash[]): void;
33
+ startCollecting(block: L2Block, txHashes: TxHash[]): void;
34
34
  private collectMissingTxsFromNode;
35
35
  private collectMissingTxsViaReqResp;
36
36
  /** Retrieves all missing txs for the slow collection process. This is, all missing txs that are not part of a fast request. */
@@ -47,7 +47,9 @@ export declare class SlowTxCollection {
47
47
  * To be called when there is a chain prune and previously mined txs are no longer relevant.
48
48
  */
49
49
  stopCollectingForBlocksAfter(blockNumber: BlockNumber): void;
50
+ /** Groups missing tx entries by block number. */
51
+ private groupByBlock;
50
52
  /** Computes the proof submission deadline for a given slot, a tx mined in this slot is no longer interesting after this deadline */
51
53
  private getDeadlineForSlot;
52
54
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvd190eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9zbG93X3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBMkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MscUJBQWEsZ0JBQWdCO0lBV3pCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLEdBQUc7SUFqQmIsbUVBQW1FO0lBQ25FLE9BQU8sQ0FBQyxVQUFVLENBQXlDO0lBRTNELCtEQUErRDtJQUMvRCxPQUFPLENBQUMsd0JBQXdCLENBQW1CO0lBRW5ELHFFQUFxRTtJQUNyRSxPQUFPLENBQUMseUJBQXlCLENBQWlCO0lBRWxELFlBQ1UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ2pCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixDQUFDLEVBQ25FLFNBQVMsRUFBRSxpQkFBaUIsRUFDNUIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixZQUFZLEdBQUUsWUFBaUMsRUFDL0MsR0FBRyxHQUFFLE1BQWtELEVBZ0JoRTtJQUVNLGtCQUFrQixhQUV4QjtJQUVNLEtBQUssU0FHWDtJQUVZLElBQUksa0JBS2hCO0lBRVksT0FBTyxrQkFLbkI7SUFFRCxtRkFBbUY7SUFDNUUsZUFBZSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQW9CM0Q7WUFHYSx5QkFBeUI7WUFpQ3pCLDJCQUEyQjtJQXNDekMsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyw4QkFBOEI7SUFxQnRDLDhHQUE4RztJQUN2RyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNakU7SUFFRDs7O09BR0c7SUFDSSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNbEU7SUFFRCxvSUFBb0k7SUFDcEksT0FBTyxDQUFDLGtCQUFrQjtDQU0zQiJ9
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvd190eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9zbG93X3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBMkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MscUJBQWEsZ0JBQWdCO0lBV3pCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLEdBQUc7SUFqQmIsbUVBQW1FO0lBQ25FLE9BQU8sQ0FBQyxVQUFVLENBQXlDO0lBRTNELCtEQUErRDtJQUMvRCxPQUFPLENBQUMsd0JBQXdCLENBQW1CO0lBRW5ELHFFQUFxRTtJQUNyRSxPQUFPLENBQUMseUJBQXlCLENBQWlCO0lBRWxELFlBQ1UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ2pCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixDQUFDLEVBQ25FLFNBQVMsRUFBRSxpQkFBaUIsRUFDNUIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixZQUFZLEdBQUUsWUFBaUMsRUFDL0MsR0FBRyxHQUFFLE1BQWtELEVBZ0JoRTtJQUVNLGtCQUFrQixhQUV4QjtJQUVNLEtBQUssU0FHWDtJQUVZLElBQUksa0JBS2hCO0lBRVksT0FBTyxrQkFLbkI7SUFFRCxtRkFBbUY7SUFDNUUsZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQXFCeEQ7WUFHYSx5QkFBeUI7WUF5Q3pCLDJCQUEyQjtJQTJDekMsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyw4QkFBOEI7SUFxQnRDLDhHQUE4RztJQUN2RyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNakU7SUFFRDs7O09BR0c7SUFDSSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNbEU7SUFFRCxpREFBaUQ7SUFDakQsT0FBTyxDQUFDLFlBQVk7SUFjcEIsb0lBQW9JO0lBQ3BJLE9BQU8sQ0FBQyxrQkFBa0I7Q0FNM0IifQ==
@@ -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,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,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,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAoB3D;YAGa,yBAAyB;YAiCzB,2BAA2B;IAsCzC,+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,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,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"}