@aztec/p2p 0.0.1-commit.4ad48494d → 0.0.1-commit.4d3c002

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 (381) 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 +33 -29
  5. package/dest/client/interface.d.ts +18 -20
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +9 -19
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +72 -102
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -10
  11. package/dest/config.d.ts +34 -15
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +86 -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 +4 -4
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.js +11 -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 +3 -1
  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 +9 -0
  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 +5 -4
  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 +4 -4
  54. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +5 -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 +12 -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 +24 -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 +4 -1
  73. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +54 -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 +111 -19
  76. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +5 -2
  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 +38 -46
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -4
  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 +12 -5
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +12 -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 +296 -153
  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 +104 -37
  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/discv5/discV5_service.d.ts +1 -1
  140. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  141. package/dest/services/discv5/discV5_service.js +5 -2
  142. package/dest/services/dummy_service.d.ts +7 -5
  143. package/dest/services/dummy_service.d.ts.map +1 -1
  144. package/dest/services/dummy_service.js +9 -5
  145. package/dest/services/encoding.d.ts +6 -2
  146. package/dest/services/encoding.d.ts.map +1 -1
  147. package/dest/services/encoding.js +16 -9
  148. package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
  149. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  150. package/dest/services/gossipsub/topic_score_params.js +32 -10
  151. package/dest/services/libp2p/libp2p_service.d.ts +30 -22
  152. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  153. package/dest/services/libp2p/libp2p_service.js +241 -151
  154. package/dest/services/peer-manager/metrics.d.ts +3 -1
  155. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  156. package/dest/services/peer-manager/metrics.js +6 -0
  157. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  158. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  159. package/dest/services/peer-manager/peer_manager.js +24 -9
  160. package/dest/services/peer-manager/peer_scoring.d.ts +5 -2
  161. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  162. package/dest/services/peer-manager/peer_scoring.js +28 -10
  163. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +12 -8
  164. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  165. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +83 -106
  166. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  167. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  168. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  169. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  170. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  171. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  172. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  173. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  174. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  175. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  176. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  177. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  178. package/dest/services/reqresp/reqresp.d.ts +1 -1
  179. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  180. package/dest/services/reqresp/reqresp.js +19 -10
  181. package/dest/services/service.d.ts +11 -4
  182. package/dest/services/service.d.ts.map +1 -1
  183. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  184. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  185. package/dest/services/tx_collection/fast_tx_collection.js +65 -75
  186. package/dest/services/tx_collection/file_store_tx_collection.d.ts +1 -1
  187. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  188. package/dest/services/tx_collection/file_store_tx_collection.js +4 -2
  189. package/dest/services/tx_collection/file_store_tx_source.d.ts +16 -6
  190. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  191. package/dest/services/tx_collection/file_store_tx_source.js +50 -9
  192. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  193. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  194. package/dest/services/tx_collection/instrumentation.js +2 -1
  195. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -7
  196. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  197. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  198. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  199. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  200. package/dest/services/tx_collection/request_tracker.js +84 -0
  201. package/dest/services/tx_collection/slow_tx_collection.d.ts +2 -2
  202. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  203. package/dest/services/tx_collection/slow_tx_collection.js +10 -8
  204. package/dest/services/tx_collection/tx_collection.d.ts +5 -7
  205. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  206. package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
  207. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  208. package/dest/services/tx_collection/tx_collection_sink.js +13 -22
  209. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  210. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  211. package/dest/services/tx_collection/tx_source.js +26 -7
  212. package/dest/services/tx_file_store/tx_file_store.js +1 -1
  213. package/dest/services/tx_provider.d.ts +3 -3
  214. package/dest/services/tx_provider.d.ts.map +1 -1
  215. package/dest/services/tx_provider.js +4 -4
  216. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  217. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  218. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  219. package/dest/test-helpers/mock-pubsub.d.ts +11 -4
  220. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  221. package/dest/test-helpers/mock-pubsub.js +16 -3
  222. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  223. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  224. package/dest/test-helpers/reqresp-nodes.js +7 -3
  225. package/dest/test-helpers/testbench-utils.d.ts +6 -3
  226. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  227. package/dest/test-helpers/testbench-utils.js +23 -4
  228. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  229. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  230. package/dest/testbench/p2p_client_testbench_worker.js +56 -26
  231. package/dest/testbench/worker_client_manager.d.ts +3 -1
  232. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  233. package/dest/testbench/worker_client_manager.js +6 -3
  234. package/dest/util.d.ts +9 -5
  235. package/dest/util.d.ts.map +1 -1
  236. package/dest/util.js +2 -10
  237. package/package.json +14 -14
  238. package/src/client/factory.ts +56 -48
  239. package/src/client/interface.ts +20 -21
  240. package/src/client/p2p_client.ts +78 -132
  241. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +33 -14
  242. package/src/config.ts +125 -43
  243. package/src/errors/p2p-service.error.ts +11 -0
  244. package/src/errors/tx-pool.error.ts +12 -0
  245. package/src/index.ts +0 -1
  246. package/src/mem_pools/attestation_pool/attestation_pool.ts +12 -9
  247. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  248. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  249. package/src/mem_pools/index.ts +0 -3
  250. package/src/mem_pools/instrumentation.ts +17 -13
  251. package/src/mem_pools/tx_pool_v2/README.md +10 -2
  252. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +11 -0
  253. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  254. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +5 -4
  255. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  256. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  257. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  258. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +4 -4
  259. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  260. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +12 -9
  261. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  262. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  263. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  264. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  265. package/src/mem_pools/tx_pool_v2/interfaces.ts +24 -10
  266. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +159 -27
  267. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +43 -46
  268. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +28 -8
  269. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +330 -149
  270. package/src/msg_validators/attestation_validator/README.md +49 -0
  271. package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
  272. package/src/msg_validators/clock_tolerance.ts +4 -3
  273. package/src/msg_validators/proposal_validator/README.md +123 -0
  274. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  275. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  276. package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -45
  277. package/src/msg_validators/tx_validator/README.md +119 -0
  278. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
  279. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  280. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  281. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  282. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  283. package/src/msg_validators/tx_validator/factory.ts +394 -78
  284. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  285. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  286. package/src/msg_validators/tx_validator/index.ts +2 -0
  287. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  288. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  289. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  290. package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
  291. package/src/services/discv5/discV5_service.ts +5 -2
  292. package/src/services/dummy_service.ts +12 -7
  293. package/src/services/encoding.ts +16 -8
  294. package/src/services/gossipsub/README.md +29 -14
  295. package/src/services/gossipsub/topic_score_params.ts +49 -13
  296. package/src/services/libp2p/libp2p_service.ts +262 -176
  297. package/src/services/peer-manager/metrics.ts +7 -0
  298. package/src/services/peer-manager/peer_manager.ts +28 -9
  299. package/src/services/peer-manager/peer_scoring.ts +21 -5
  300. package/src/services/reqresp/README.md +229 -0
  301. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  302. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +79 -112
  303. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  304. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  305. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  306. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  307. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  308. package/src/services/reqresp/reqresp.ts +22 -12
  309. package/src/services/service.ts +20 -3
  310. package/src/services/tx_collection/fast_tx_collection.ts +71 -76
  311. package/src/services/tx_collection/file_store_tx_collection.ts +7 -3
  312. package/src/services/tx_collection/file_store_tx_source.ts +65 -9
  313. package/src/services/tx_collection/instrumentation.ts +7 -1
  314. package/src/services/tx_collection/proposal_tx_collector.ts +9 -13
  315. package/src/services/tx_collection/request_tracker.ts +127 -0
  316. package/src/services/tx_collection/slow_tx_collection.ts +8 -9
  317. package/src/services/tx_collection/tx_collection.ts +5 -6
  318. package/src/services/tx_collection/tx_collection_sink.ts +15 -29
  319. package/src/services/tx_collection/tx_source.ts +28 -8
  320. package/src/services/tx_file_store/tx_file_store.ts +1 -1
  321. package/src/services/tx_provider.ts +2 -2
  322. package/src/test-helpers/make-test-p2p-clients.ts +1 -3
  323. package/src/test-helpers/mock-pubsub.ts +20 -6
  324. package/src/test-helpers/reqresp-nodes.ts +7 -6
  325. package/src/test-helpers/testbench-utils.ts +32 -6
  326. package/src/testbench/p2p_client_testbench_worker.ts +62 -29
  327. package/src/testbench/worker_client_manager.ts +13 -6
  328. package/src/util.ts +15 -16
  329. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  330. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  331. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  332. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  333. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  334. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  335. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  336. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  337. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  338. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  339. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  340. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  341. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  342. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  343. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  344. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  345. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  346. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  347. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  348. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  349. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  350. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  351. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  352. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  353. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  354. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  355. package/dest/mem_pools/tx_pool/index.js +0 -2
  356. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  357. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  358. package/dest/mem_pools/tx_pool/priority.js +0 -15
  359. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  360. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  361. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  362. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  363. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  364. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  365. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  366. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  367. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  368. package/src/mem_pools/tx_pool/README.md +0 -270
  369. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  370. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  371. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  372. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  373. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  374. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  375. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  376. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  377. package/src/mem_pools/tx_pool/index.ts +0 -2
  378. package/src/mem_pools/tx_pool/priority.ts +0 -20
  379. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  380. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  381. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -1,11 +1,10 @@
1
1
  import { times } from '@aztec/foundation/collection';
2
- import { AbortError, TimeoutError } from '@aztec/foundation/error';
3
2
  import { createLogger } from '@aztec/foundation/log';
4
- import { promiseWithResolvers } from '@aztec/foundation/promise';
5
3
  import { sleep } from '@aztec/foundation/sleep';
6
4
  import { DateProvider, elapsed } from '@aztec/foundation/timer';
7
5
  import { TxHash } from '@aztec/stdlib/tx';
8
6
  import { BatchTxRequesterCollector, SendBatchRequestCollector } from './proposal_tx_collector.js';
7
+ import { RequestTracker } from './request_tracker.js';
9
8
  export class FastTxCollection {
10
9
  nodes;
11
10
  txCollectionSink;
@@ -27,7 +26,9 @@ export class FastTxCollection {
27
26
  this.missingTxsCollector = missingTxsCollector ?? (missingTxsCollectorType === 'old' ? new SendBatchRequestCollector(p2pService) : new BatchTxRequesterCollector(p2pService, log, dateProvider, undefined, batchTxRequesterConfig));
28
27
  }
29
28
  async stop() {
30
- this.requests.forEach((request)=>request.promise.reject(new AbortError(`Stopped collection service`)));
29
+ this.requests.forEach((request)=>{
30
+ request.requestTracker.cancel();
31
+ });
31
32
  await Promise.resolve();
32
33
  }
33
34
  getFastCollectionRequests() {
@@ -48,86 +49,66 @@ export class FastTxCollection {
48
49
  } : {
49
50
  ...input.block.toBlockInfo()
50
51
  };
51
- // This promise is used to await for the collection to finish during the main collectFast method.
52
- // It gets resolved in `foundTxs` when all txs have been collected, or rejected if the request is aborted or hits the deadline.
53
- const promise = promiseWithResolvers();
54
- const timeoutTimer = setTimeout(()=>promise.reject(new TimeoutError(`Timed out while collecting txs`)), timeout);
55
52
  const request = {
56
53
  ...input,
57
54
  blockInfo,
58
- promise,
59
- foundTxs: new Map(),
60
- missingTxHashes: new Set(txHashes.map((t)=>t.toString())),
61
- deadline: opts.deadline
55
+ requestTracker: RequestTracker.create(txHashes, opts.deadline, this.dateProvider)
62
56
  };
63
57
  const [duration] = await elapsed(()=>this.collectFast(request, {
64
58
  ...opts
65
59
  }));
66
- clearTimeout(timeoutTimer);
67
- this.log.verbose(`Collected ${request.foundTxs.size} txs out of ${txHashes.length} for ${input.type} at slot ${blockInfo.slotNumber}`, {
60
+ this.log.verbose(`Collected ${request.requestTracker.collectedTxs.length} txs out of ${txHashes.length} for ${input.type} at slot ${blockInfo.slotNumber}`, {
68
61
  ...blockInfo,
69
62
  duration,
70
63
  requestType: input.type,
71
64
  missingTxs: [
72
- ...request.missingTxHashes
65
+ ...request.requestTracker.missingTxHashes
73
66
  ]
74
67
  });
75
- return [
76
- ...request.foundTxs.values()
77
- ];
68
+ return request.requestTracker.collectedTxs;
78
69
  }
79
70
  async collectFast(request, opts) {
80
71
  this.requests.add(request);
81
72
  const { blockInfo } = request;
82
- this.log.debug(`Starting fast collection of ${request.missingTxHashes.size} txs for ${request.type} at slot ${blockInfo.slotNumber}`, {
73
+ this.log.debug(`Starting fast collection of ${request.requestTracker.numberOfMissingTxs} txs for ${request.type} at slot ${blockInfo.slotNumber}`, {
83
74
  ...blockInfo,
84
75
  requestType: request.type,
85
- deadline: opts.deadline
76
+ deadline: request.requestTracker.deadline
86
77
  });
87
78
  try {
88
79
  // Start blasting all nodes for the txs. We give them a little time to respond before we start reqresp.
89
- // And keep an eye on the request promise to ensure we don't wait longer than the deadline or return as soon
90
- // as we have collected all txs, whatever the source.
91
- const nodeCollectionPromise = this.collectFastFromNodes(request, opts);
80
+ // We race against the cancellation token to exit as soon as all txs are collected, the deadline expires,
81
+ // or the request is externally cancelled.
82
+ const nodeCollectionPromise = this.collectFastFromNodes(request);
92
83
  const waitBeforeReqResp = sleep(this.config.txCollectionFastNodesTimeoutBeforeReqRespMs);
93
84
  await Promise.race([
94
- request.promise.promise,
85
+ request.requestTracker.cancellationToken,
95
86
  waitBeforeReqResp
96
87
  ]);
97
- // If we have collected all txs, we can stop here
98
- if (request.missingTxHashes.size === 0) {
99
- this.log.debug(`All txs collected for slot ${blockInfo.slotNumber} without reqresp`, blockInfo);
88
+ // If we have collected all txs or the request was cancelled, we can stop here.
89
+ // Wait for node collection to settle so inner tasks finish before we return.
90
+ if (request.requestTracker.checkCancelled()) {
91
+ if (request.requestTracker.allFetched()) {
92
+ this.log.debug(`All txs collected for slot ${blockInfo.slotNumber} without reqresp`, blockInfo);
93
+ }
94
+ await nodeCollectionPromise;
100
95
  return;
101
96
  }
102
97
  // Start blasting reqresp for the remaining txs. Note that node collection keeps running in parallel.
103
98
  // We stop when we have collected all txs, timed out, or both node collection and reqresp have given up.
104
- const collectionPromise = Promise.allSettled([
99
+ // Inner tasks observe requestTracker.checkCancelled() and stop themselves, so this settles shortly after cancellation.
100
+ await Promise.allSettled([
105
101
  this.collectFastViaReqResp(request, opts),
106
102
  nodeCollectionPromise
107
103
  ]);
108
- await Promise.race([
109
- collectionPromise,
110
- request.promise.promise
111
- ]);
112
104
  } catch (err) {
113
- // Log and swallow all errors
114
- const logCtx = {
105
+ this.log.error(`Error collecting txs for ${request.type} for slot ${blockInfo.slotNumber}`, err, {
115
106
  ...blockInfo,
116
- errorMessage: err instanceof Error ? err.message : undefined,
117
- missingTxs: [
118
- ...request.missingTxHashes
119
- ].map((txHash)=>txHash.toString())
120
- };
121
- if (err instanceof Error && err.name === 'TimeoutError') {
122
- this.log.warn(`Timed out collecting txs for ${request.type} at slot ${blockInfo.slotNumber}`, logCtx);
123
- } else if (err instanceof Error && err.name === 'AbortError') {
124
- this.log.warn(`Aborted collecting txs for ${request.type} at slot ${blockInfo.slotNumber}`, logCtx);
125
- } else {
126
- this.log.error(`Error collecting txs for ${request.type} for slot ${blockInfo.slotNumber}`, err, logCtx);
127
- }
107
+ missingTxs: request.requestTracker.missingTxHashes.values().map((txHash)=>txHash.toString())
108
+ });
128
109
  } finally{
129
110
  // Ensure no unresolved promises and remove the request from the set
130
- request.promise.resolve();
111
+ request.requestTracker.cancel();
131
112
  this.requests.delete(request);
132
113
  }
133
114
  }
@@ -136,23 +117,23 @@ export class FastTxCollection {
136
117
  * in parallel to each node. We keep track of the number of attempts made to collect each tx, so we can prioritize
137
118
  * the txs that have been requested less often whenever we need to send a new batch of requests. We ensure that no
138
119
  * tx is requested more than once at the same time to the same node.
139
- */ async collectFastFromNodes(request, opts) {
120
+ */ async collectFastFromNodes(request) {
140
121
  if (this.nodes.length === 0) {
141
122
  return;
142
123
  }
143
124
  // Keep a shared priority queue of all txs pending to be requested, sorted by the number of attempts made to collect them.
144
125
  const attemptsPerTx = [
145
- ...request.missingTxHashes
126
+ ...request.requestTracker.missingTxHashes
146
127
  ].map((txHash)=>({
147
128
  txHash,
148
129
  attempts: 0,
149
130
  found: false
150
131
  }));
151
132
  // Returns once we have finished all node loops. Each loop finishes when the deadline is hit, or all txs have been collected.
152
- await Promise.allSettled(this.nodes.map((node)=>this.collectFastFromNode(request, node, attemptsPerTx, opts)));
133
+ await Promise.allSettled(this.nodes.map((node)=>this.collectFastFromNode(request, node, attemptsPerTx)));
153
134
  }
154
- async collectFastFromNode(request, node, attemptsPerTx, opts) {
155
- const notFinished = ()=>this.dateProvider.now() <= +opts.deadline && request.missingTxHashes.size > 0 && this.requests.has(request);
135
+ async collectFastFromNode(request, node, attemptsPerTx) {
136
+ const notFinished = ()=>!request.requestTracker.checkCancelled();
156
137
  const maxParallelRequests = this.config.txCollectionFastMaxParallelRequestsPerNode;
157
138
  const maxBatchSize = this.config.txCollectionNodeRpcMaxBatchSize;
158
139
  const activeRequestsToThisNode = new Set(); // Track the txs being actively requested to this node
@@ -166,7 +147,7 @@ export class FastTxCollection {
166
147
  const txToRequest = attemptsPerTx[index++];
167
148
  if (!txToRequest) {
168
149
  break;
169
- } else if (!request.missingTxHashes.has(txToRequest.txHash)) {
150
+ } else if (!request.requestTracker.isMissing(txToRequest.txHash)) {
170
151
  // Mark as found if it was found somewhere else, we'll then remove it from the array.
171
152
  // We don't delete it now since 'array.splice' is pretty expensive, so we do it after sorting.
172
153
  txToRequest.found = true;
@@ -190,8 +171,15 @@ export class FastTxCollection {
190
171
  if (batch.length === 0) {
191
172
  return;
192
173
  }
174
+ const txHashes = batch.map(({ txHash })=>txHash);
193
175
  // Collect this batch from the node
194
- await this.txCollectionSink.collect((txHashes)=>node.getTxsByHash(txHashes), batch.map(({ txHash })=>TxHash.fromString(txHash)), {
176
+ await this.txCollectionSink.collect(async ()=>{
177
+ const result = await node.getTxsByHash(txHashes.map(TxHash.fromString));
178
+ for (const tx of result.validTxs){
179
+ request.requestTracker.markFetched(tx);
180
+ }
181
+ return result;
182
+ }, txHashes, {
195
183
  description: `fast ${node.getInfo()}`,
196
184
  node: node.getInfo(),
197
185
  method: 'fast-node-rpc',
@@ -201,9 +189,12 @@ export class FastTxCollection {
201
189
  for (const requestedTx of batch){
202
190
  activeRequestsToThisNode.delete(requestedTx.txHash);
203
191
  }
204
- // Sleep a bit until hitting the node again (or not, depending on config)
192
+ // Sleep a bit until hitting the node again, but wake up immediately on cancellation
205
193
  if (notFinished()) {
206
- await sleep(this.config.txCollectionFastNodeIntervalMs);
194
+ await Promise.race([
195
+ sleep(this.config.txCollectionFastNodeIntervalMs),
196
+ request.requestTracker.cancellationToken
197
+ ]);
207
198
  }
208
199
  }
209
200
  };
@@ -211,36 +202,40 @@ export class FastTxCollection {
211
202
  await Promise.all(times(maxParallelRequests, processBatch));
212
203
  }
213
204
  async collectFastViaReqResp(request, opts) {
214
- const timeoutMs = +request.deadline - this.dateProvider.now();
215
205
  const pinnedPeer = opts.pinnedPeer;
216
206
  const blockInfo = request.blockInfo;
217
207
  const slotNumber = blockInfo.slotNumber;
218
- if (timeoutMs < 100) {
208
+ if (request.requestTracker.timeoutMs < 100) {
219
209
  this.log.warn(`Not initiating fast reqresp for txs for ${request.type} at slot ${blockInfo.slotNumber} due to timeout`, {
220
- timeoutMs,
210
+ timeoutMs: request.requestTracker.timeoutMs,
221
211
  ...blockInfo
222
212
  });
223
213
  return;
224
214
  }
225
- this.log.debug(`Starting fast reqresp for ${request.missingTxHashes.size} txs for ${request.type} at slot ${blockInfo.slotNumber}`, {
215
+ this.log.debug(`Starting fast reqresp for ${request.requestTracker.numberOfMissingTxs} txs for ${request.type} at slot ${blockInfo.slotNumber}`, {
226
216
  ...blockInfo,
227
- timeoutMs,
217
+ timeoutMs: request.requestTracker.timeoutMs,
228
218
  pinnedPeer
229
219
  });
230
220
  try {
231
- await this.txCollectionSink.collect(async (txHashes)=>{
221
+ await this.txCollectionSink.collect(async ()=>{
222
+ let result;
232
223
  if (request.type === 'proposal') {
233
- return await this.missingTxsCollector.collectTxs(txHashes, request.blockProposal, pinnedPeer, timeoutMs);
224
+ result = await this.missingTxsCollector.collectTxs(request.requestTracker, request.blockProposal, pinnedPeer);
234
225
  } else if (request.type === 'block') {
235
226
  const blockTxsSource = {
236
227
  txHashes: request.block.body.txEffects.map((e)=>e.txHash),
237
228
  archive: request.block.archive.root
238
229
  };
239
- return await this.missingTxsCollector.collectTxs(txHashes, blockTxsSource, pinnedPeer, timeoutMs);
230
+ result = await this.missingTxsCollector.collectTxs(request.requestTracker, blockTxsSource, pinnedPeer);
240
231
  } else {
241
232
  throw new Error(`Unknown request type: ${request.type}`);
242
233
  }
243
- }, Array.from(request.missingTxHashes).map((txHash)=>TxHash.fromString(txHash)), {
234
+ return {
235
+ validTxs: result,
236
+ invalidTxHashes: []
237
+ };
238
+ }, Array.from(request.requestTracker.missingTxHashes), {
244
239
  description: `reqresp for slot ${slotNumber}`,
245
240
  method: 'fast-req-resp',
246
241
  ...opts,
@@ -249,7 +244,7 @@ export class FastTxCollection {
249
244
  } catch (err) {
250
245
  this.log.error(`Error sending fast reqresp request for txs`, err, {
251
246
  txs: [
252
- ...request.missingTxHashes
247
+ ...request.requestTracker.missingTxHashes
253
248
  ],
254
249
  ...blockInfo
255
250
  });
@@ -276,21 +271,18 @@ export class FastTxCollection {
276
271
  for (const tx of txs){
277
272
  const txHash = tx.txHash.toString();
278
273
  // Remove the tx hash from the missing set, and add it to the found set.
279
- if (request.missingTxHashes.has(txHash)) {
280
- request.missingTxHashes.delete(txHash);
281
- request.foundTxs.set(txHash, tx);
274
+ if (request.requestTracker.markFetched(tx)) {
282
275
  this.log.trace(`Found tx ${txHash} for fast collection request`, {
283
276
  ...request.blockInfo,
284
277
  txHash: tx.txHash.toString(),
285
278
  type: request.type
286
279
  });
287
- // If we found all txs for this request, we resolve the promise
288
- if (request.missingTxHashes.size === 0) {
280
+ if (request.requestTracker.allFetched()) {
289
281
  this.log.trace(`All txs found for fast collection request`, {
290
282
  ...request.blockInfo,
291
283
  type: request.type
292
284
  });
293
- request.promise.resolve();
285
+ break;
294
286
  }
295
287
  }
296
288
  }
@@ -302,8 +294,7 @@ export class FastTxCollection {
302
294
  */ stopCollectingForBlocksUpTo(blockNumber) {
303
295
  for (const request of this.requests){
304
296
  if (request.blockInfo.blockNumber <= blockNumber) {
305
- request.promise.reject(new AbortError(`Stopped collecting txs up to block ${blockNumber}`));
306
- this.requests.delete(request);
297
+ request.requestTracker.cancel();
307
298
  }
308
299
  }
309
300
  }
@@ -313,8 +304,7 @@ export class FastTxCollection {
313
304
  */ stopCollectingForBlocksAfter(blockNumber) {
314
305
  for (const request of this.requests){
315
306
  if (request.blockInfo.blockNumber > blockNumber) {
316
- request.promise.reject(new AbortError(`Stopped collecting txs after block ${blockNumber}`));
317
- this.requests.delete(request);
307
+ request.requestTracker.cancel();
318
308
  }
319
309
  }
320
310
  }
@@ -50,4 +50,4 @@ export declare class FileStoreTxCollection {
50
50
  private waitForWake;
51
51
  private sleepOrWake;
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV90eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9maWxlX3N0b3JlX3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUUsMERBQTBEO0FBQzFELE1BQU0sTUFBTSx5QkFBeUIsR0FBRztJQUN0QyxXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsWUFBWSxFQUFFLE1BQU0sQ0FBQztDQUN0QixDQUFDO0FBV0Y7Ozs7O0dBS0c7QUFDSCxxQkFBYSxxQkFBcUI7SUFjOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO0lBQ2pDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBakJ0QixrRUFBa0U7SUFDbEUsT0FBTyxDQUFDLE9BQU8sQ0FBdUM7SUFFdEQsa0RBQWtEO0lBQ2xELE9BQU8sQ0FBQyxPQUFPLENBQXVCO0lBRXRDLDBDQUEwQztJQUMxQyxPQUFPLENBQUMsT0FBTyxDQUFTO0lBRXhCLHNGQUFzRjtJQUN0RixPQUFPLENBQUMsVUFBVSxDQUE2QjtJQUUvQyxZQUNtQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsRUFDNUIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLE1BQU0sRUFBRSx5QkFBeUIsRUFDakMsWUFBWSxHQUFFLFlBQWlDLEVBQy9DLEdBQUcsR0FBRSxNQUFxRCxFQUc1RTtJQUVELHFDQUFxQztJQUM5QixLQUFLLElBQUksSUFBSSxDQVNuQjtJQUVELDBDQUEwQztJQUM3QixJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU1qQztJQUVELHdEQUF3RDtJQUNqRCxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLENBc0J0RjtJQUVELDhEQUE4RDtJQUN2RCxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRCxrQ0FBa0M7SUFDM0IsWUFBWSxJQUFJLElBQUksQ0FFMUI7WUFFYSxVQUFVO0lBOEJ4QixxR0FBcUc7SUFDckcsT0FBTyxDQUFDLGFBQWE7SUE4QnJCLDZGQUE2RjtJQUM3RixPQUFPLENBQUMsWUFBWTtJQVFwQiw4REFBOEQ7SUFDOUQsT0FBTyxDQUFDLElBQUk7WUFNRSxXQUFXO1lBS1gsV0FBVztDQUcxQiJ9
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV90eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9maWxlX3N0b3JlX3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUUsMERBQTBEO0FBQzFELE1BQU0sTUFBTSx5QkFBeUIsR0FBRztJQUN0QyxXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsWUFBWSxFQUFFLE1BQU0sQ0FBQztDQUN0QixDQUFDO0FBV0Y7Ozs7O0dBS0c7QUFDSCxxQkFBYSxxQkFBcUI7SUFjOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO0lBQ2pDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBakJ0QixrRUFBa0U7SUFDbEUsT0FBTyxDQUFDLE9BQU8sQ0FBdUM7SUFFdEQsa0RBQWtEO0lBQ2xELE9BQU8sQ0FBQyxPQUFPLENBQXVCO0lBRXRDLDBDQUEwQztJQUMxQyxPQUFPLENBQUMsT0FBTyxDQUFTO0lBRXhCLHNGQUFzRjtJQUN0RixPQUFPLENBQUMsVUFBVSxDQUE2QjtJQUUvQyxZQUNtQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsRUFDNUIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLE1BQU0sRUFBRSx5QkFBeUIsRUFDakMsWUFBWSxHQUFFLFlBQWlDLEVBQy9DLEdBQUcsR0FBRSxNQUFxRCxFQUc1RTtJQUVELHFDQUFxQztJQUM5QixLQUFLLElBQUksSUFBSSxDQVNuQjtJQUVELDBDQUEwQztJQUM3QixJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU1qQztJQUVELHdEQUF3RDtJQUNqRCxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLENBc0J0RjtJQUVELDhEQUE4RDtJQUN2RCxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRCxrQ0FBa0M7SUFDM0IsWUFBWSxJQUFJLElBQUksQ0FFMUI7WUFFYSxVQUFVO0lBa0N4QixxR0FBcUc7SUFDckcsT0FBTyxDQUFDLGFBQWE7SUE4QnJCLDZGQUE2RjtJQUM3RixPQUFPLENBQUMsWUFBWTtJQVFwQiw4REFBOEQ7SUFDOUQsT0FBTyxDQUFDLElBQUk7WUFNRSxXQUFXO1lBS1gsV0FBVztDQUcxQiJ9
@@ -1 +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;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,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;AAE9E,0DAA0D;AAC1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAWF;;;;;GAKG;AACH,qBAAa,qBAAqB;IAc9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAjBtB,kEAAkE;IAClE,OAAO,CAAC,OAAO,CAAuC;IAEtD,kDAAkD;IAClD,OAAO,CAAC,OAAO,CAAuB;IAEtC,0CAA0C;IAC1C,OAAO,CAAC,OAAO,CAAS;IAExB,sFAAsF;IACtF,OAAO,CAAC,UAAU,CAA6B;IAE/C,YACmB,OAAO,EAAE,iBAAiB,EAAE,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,yBAAyB,EACjC,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAqD,EAG5E;IAED,qCAAqC;IAC9B,KAAK,IAAI,IAAI,CASnB;IAED,0CAA0C;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjC;IAED,wDAAwD;IACjD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,CAsBtF;IAED,8DAA8D;IACvD,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAI/B;IAED,kCAAkC;IAC3B,YAAY,IAAI,IAAI,CAE1B;YAEa,UAAU;IA8BxB,qGAAqG;IACrG,OAAO,CAAC,aAAa;IA8BrB,6FAA6F;IAC7F,OAAO,CAAC,YAAY;IAQpB,8DAA8D;IAC9D,OAAO,CAAC,IAAI;YAME,WAAW;YAKX,WAAW;CAG1B"}
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;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,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;AAE9E,0DAA0D;AAC1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAWF;;;;;GAKG;AACH,qBAAa,qBAAqB;IAc9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAjBtB,kEAAkE;IAClE,OAAO,CAAC,OAAO,CAAuC;IAEtD,kDAAkD;IAClD,OAAO,CAAC,OAAO,CAAuB;IAEtC,0CAA0C;IAC1C,OAAO,CAAC,OAAO,CAAS;IAExB,sFAAsF;IACtF,OAAO,CAAC,UAAU,CAA6B;IAE/C,YACmB,OAAO,EAAE,iBAAiB,EAAE,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,yBAAyB,EACjC,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAqD,EAG5E;IAED,qCAAqC;IAC9B,KAAK,IAAI,IAAI,CASnB;IAED,0CAA0C;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjC;IAED,wDAAwD;IACjD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,CAsBtF;IAED,8DAA8D;IACvD,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAI/B;IAED,kCAAkC;IAC3B,YAAY,IAAI,IAAI,CAE1B;YAEa,UAAU;IAkCxB,qGAAqG;IACrG,OAAO,CAAC,aAAa;IA8BrB,6FAA6F;IAC7F,OAAO,CAAC,YAAY;IAQpB,8DAA8D;IAC9D,OAAO,CAAC,IAAI;YAME,WAAW;YAKX,WAAW;CAG1B"}
@@ -89,8 +89,10 @@ import { TxHash } from '@aztec/stdlib/tx';
89
89
  entry.attempts++;
90
90
  entry.lastAttemptTime = this.dateProvider.now();
91
91
  try {
92
- const result = await this.txCollectionSink.collect((hashes)=>source.getTxsByHash(hashes), [
93
- TxHash.fromString(entry.txHash)
92
+ const result = await this.txCollectionSink.collect(()=>source.getTxsByHash([
93
+ TxHash.fromString(entry.txHash)
94
+ ]), [
95
+ entry.txHash
94
96
  ], {
95
97
  description: `file-store ${source.getInfo()}`,
96
98
  method: 'file-store',
@@ -1,28 +1,38 @@
1
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';
2
+ import { type TxHash, type TxValidator } from '@aztec/stdlib/tx';
3
+ import { type TelemetryClient } from '@aztec/telemetry-client';
4
+ import type { TxSource, TxSourceCollectionResult } from './tx_source.js';
4
5
  /** TxSource implementation that downloads txs from a file store. */
5
6
  export declare class FileStoreTxSource implements TxSource {
6
7
  private readonly fileStore;
7
8
  private readonly baseUrl;
8
9
  private readonly basePath;
10
+ private readonly txValidator;
9
11
  private readonly log;
12
+ private downloadsSuccess;
13
+ private downloadsFailed;
14
+ private downloadDuration;
15
+ private downloadSize;
10
16
  private constructor();
11
17
  /**
12
18
  * Creates a FileStoreTxSource from a URL.
13
19
  * @param url - The file store URL (s3://, gs://, file://, http://, https://).
20
+ * @param basePath - Base path for tx files within the store.
14
21
  * @param log - Optional logger.
22
+ * @param telemetry - Optional telemetry client.
15
23
  * @returns The FileStoreTxSource instance, or undefined if creation fails.
16
24
  */
17
- static create(url: string, basePath: string, log?: Logger): Promise<FileStoreTxSource | undefined>;
25
+ static create(url: string, basePath: string, txValidator: TxValidator, log?: Logger, telemetry?: TelemetryClient): Promise<FileStoreTxSource | undefined>;
18
26
  getInfo(): string;
19
- getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
27
+ getTxsByHash(txHashes: TxHash[]): Promise<TxSourceCollectionResult>;
20
28
  }
21
29
  /**
22
30
  * Creates FileStoreTxSource instances from URLs.
23
31
  * @param urls - Array of file store URLs.
32
+ * @param basePath - Base path for tx files within each store.
24
33
  * @param log - Optional logger.
34
+ * @param telemetry - Optional telemetry client.
25
35
  * @returns Array of successfully created FileStoreTxSource instances.
26
36
  */
27
- export declare function createFileStoreTxSources(urls: string[], basePath: string, log?: Logger): Promise<FileStoreTxSource[]>;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV90eF9zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9jb2xsZWN0aW9uL2ZpbGVfc3RvcmVfdHhfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0Msb0VBQW9FO0FBQ3BFLHFCQUFhLGlCQUFrQixZQUFXLFFBQVE7SUFFOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTztJQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBSnRCLE9BQU8sZUFLSDtJQUVKOzs7OztPQUtHO0lBQ0gsT0FBb0IsTUFBTSxDQUN4QixHQUFHLEVBQUUsTUFBTSxFQUNYLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEdBQUcsR0FBRSxNQUFpRCxHQUNyRCxPQUFPLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBWXhDO0lBRU0sT0FBTyxJQUFJLE1BQU0sQ0FFdkI7SUFFTSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBYW5FO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQix3QkFBd0IsQ0FDNUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUNkLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEdBQUcsR0FBRSxNQUFpRCxHQUNyRCxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUc5QiJ9
37
+ export declare function createFileStoreTxSources(urls: string[], basePath: string, txValidator: TxValidator, log?: Logger, telemetry?: TelemetryClient): Promise<FileStoreTxSource[]>;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV90eF9zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90eF9jb2xsZWN0aW9uL2ZpbGVfc3RvcmVfdHhfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQU0sS0FBSyxNQUFNLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBR0wsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsb0VBQW9FO0FBQ3BFLHFCQUFhLGlCQUFrQixZQUFXLFFBQVE7SUFPOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTztJQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO0lBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRztJQVZ0QixPQUFPLENBQUMsZ0JBQWdCLENBQWdCO0lBQ3hDLE9BQU8sQ0FBQyxlQUFlLENBQWdCO0lBQ3ZDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBWTtJQUNwQyxPQUFPLENBQUMsWUFBWSxDQUFZO0lBRWhDLE9BQU8sZUFhTjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFvQixNQUFNLENBQ3hCLEdBQUcsRUFBRSxNQUFNLEVBQ1gsUUFBUSxFQUFFLE1BQU0sRUFDaEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsR0FBRyxHQUFFLE1BQWlELEVBQ3RELFNBQVMsR0FBRSxlQUFzQyxHQUNoRCxPQUFPLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBWXhDO0lBRU0sT0FBTyxJQUFJLE1BQU0sQ0FFdkI7SUFFWSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQXFDL0U7Q0FDRjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBc0Isd0JBQXdCLENBQzVDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFDZCxRQUFRLEVBQUUsTUFBTSxFQUNoQixXQUFXLEVBQUUsV0FBVyxFQUN4QixHQUFHLEdBQUUsTUFBaUQsRUFDdEQsU0FBUyxHQUFFLGVBQXNDLEdBQ2hELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBSzlCIn0=
@@ -1 +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,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,eAKH;IAEJ;;;;;OAKG;IACH,OAAoB,MAAM,CACxB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,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,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAG9B"}
1
+ {"version":3,"file":"file_store_tx_source.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/file_store_tx_source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAM,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,oEAAoE;AACpE,qBAAa,iBAAkB,YAAW,QAAQ;IAO9C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAVtB,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,YAAY,CAAY;IAEhC,OAAO,eAaN;IAED;;;;;;;OAOG;IACH,OAAoB,MAAM,CACxB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,GAAG,GAAE,MAAiD,EACtD,SAAS,GAAE,eAAsC,GAChD,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAYxC;IAEM,OAAO,IAAI,MAAM,CAEvB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAqC/E;CACF;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,GAAG,GAAE,MAAiD,EACtD,SAAS,GAAE,eAAsC,GAChD,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAK9B"}
@@ -1,30 +1,46 @@
1
+ import { partitionAsync } from '@aztec/foundation/collection';
1
2
  import { createLogger } from '@aztec/foundation/log';
3
+ import { Timer } from '@aztec/foundation/timer';
2
4
  import { createReadOnlyFileStore } from '@aztec/stdlib/file-store';
3
5
  import { Tx } from '@aztec/stdlib/tx';
6
+ import { Metrics, getTelemetryClient } from '@aztec/telemetry-client';
4
7
  /** TxSource implementation that downloads txs from a file store. */ export class FileStoreTxSource {
5
8
  fileStore;
6
9
  baseUrl;
7
10
  basePath;
11
+ txValidator;
8
12
  log;
9
- constructor(fileStore, baseUrl, basePath, log){
13
+ downloadsSuccess;
14
+ downloadsFailed;
15
+ downloadDuration;
16
+ downloadSize;
17
+ constructor(fileStore, baseUrl, basePath, txValidator, log, telemetry){
10
18
  this.fileStore = fileStore;
11
19
  this.baseUrl = baseUrl;
12
20
  this.basePath = basePath;
21
+ this.txValidator = txValidator;
13
22
  this.log = log;
23
+ const meter = telemetry.getMeter('file-store-tx-source');
24
+ this.downloadsSuccess = meter.createUpDownCounter(Metrics.TX_FILE_STORE_DOWNLOADS_SUCCESS);
25
+ this.downloadsFailed = meter.createUpDownCounter(Metrics.TX_FILE_STORE_DOWNLOADS_FAILED);
26
+ this.downloadDuration = meter.createHistogram(Metrics.TX_FILE_STORE_DOWNLOAD_DURATION);
27
+ this.downloadSize = meter.createHistogram(Metrics.TX_FILE_STORE_DOWNLOAD_SIZE);
14
28
  }
15
29
  /**
16
30
  * Creates a FileStoreTxSource from a URL.
17
31
  * @param url - The file store URL (s3://, gs://, file://, http://, https://).
32
+ * @param basePath - Base path for tx files within the store.
18
33
  * @param log - Optional logger.
34
+ * @param telemetry - Optional telemetry client.
19
35
  * @returns The FileStoreTxSource instance, or undefined if creation fails.
20
- */ static async create(url, basePath, log = createLogger('p2p:file_store_tx_source')) {
36
+ */ static async create(url, basePath, txValidator, log = createLogger('p2p:file_store_tx_source'), telemetry = getTelemetryClient()) {
21
37
  try {
22
38
  const fileStore = await createReadOnlyFileStore(url, log);
23
39
  if (!fileStore) {
24
40
  log.warn(`Failed to create file store for URL: ${url}`);
25
41
  return undefined;
26
42
  }
27
- return new FileStoreTxSource(fileStore, url, basePath, log);
43
+ return new FileStoreTxSource(fileStore, url, basePath, txValidator, log, telemetry);
28
44
  } catch (err) {
29
45
  log.warn(`Error creating file store for URL: ${url}`, {
30
46
  error: err
@@ -35,25 +51,50 @@ import { Tx } from '@aztec/stdlib/tx';
35
51
  getInfo() {
36
52
  return `file-store:${this.baseUrl}`;
37
53
  }
38
- getTxsByHash(txHashes) {
39
- return Promise.all(txHashes.map(async (txHash)=>{
54
+ async getTxsByHash(txHashes) {
55
+ const results = await Promise.all(txHashes.map(async (txHash)=>{
40
56
  const path = `${this.basePath}/txs/${txHash.toString()}.bin`;
57
+ const timer = new Timer();
41
58
  try {
42
59
  const buffer = await this.fileStore.read(path);
43
- return Tx.fromBuffer(buffer);
60
+ const tx = Tx.fromBuffer(buffer);
61
+ return {
62
+ tx,
63
+ downloadDuration: timer.ms(),
64
+ downloadSize: buffer.length
65
+ };
44
66
  } catch {
45
- // Tx not found or error reading - return undefined
67
+ this.downloadsFailed.add(1);
46
68
  return undefined;
47
69
  }
48
70
  }));
71
+ const txs = results.filter((tx)=>tx !== undefined);
72
+ const [validTxs, invalidTxs] = await partitionAsync(txs, async ({ tx, downloadDuration, downloadSize })=>{
73
+ const valid = await this.txValidator.validateTx(tx);
74
+ if (valid.result === 'valid') {
75
+ this.downloadsSuccess.add(1);
76
+ this.downloadDuration.record(Math.ceil(downloadDuration));
77
+ this.downloadSize.record(downloadSize);
78
+ return true;
79
+ } else {
80
+ this.downloadsFailed.add(1);
81
+ return false;
82
+ }
83
+ });
84
+ return {
85
+ validTxs: validTxs.map(({ tx })=>tx),
86
+ invalidTxHashes: invalidTxs.map(({ tx })=>tx.getTxHash().toString())
87
+ };
49
88
  }
50
89
  }
51
90
  /**
52
91
  * Creates FileStoreTxSource instances from URLs.
53
92
  * @param urls - Array of file store URLs.
93
+ * @param basePath - Base path for tx files within each store.
54
94
  * @param log - Optional logger.
95
+ * @param telemetry - Optional telemetry client.
55
96
  * @returns Array of successfully created FileStoreTxSource instances.
56
- */ export async function createFileStoreTxSources(urls, basePath, log = createLogger('p2p:file_store_tx_source')) {
57
- const sources = await Promise.all(urls.map((url)=>FileStoreTxSource.create(url, basePath, log)));
97
+ */ export async function createFileStoreTxSources(urls, basePath, txValidator, log = createLogger('p2p:file_store_tx_source'), telemetry = getTelemetryClient()) {
98
+ const sources = await Promise.all(urls.map((url)=>FileStoreTxSource.create(url, basePath, txValidator, log, telemetry)));
58
99
  return sources.filter((s)=>s !== undefined);
59
100
  }
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0QscUJBQWEsMkJBQTJCO0lBQ3RDLE9BQU8sQ0FBQyxZQUFZLENBQWdCO0lBQ3BDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBWTtJQUMzQyxPQUFPLENBQUMsNEJBQTRCLENBQVk7SUFFaEQsWUFBWSxNQUFNLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBVWhEO0lBRUQsY0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBS3JFO0NBQ0YifQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFM0QscUJBQWEsMkJBQTJCO0lBQ3RDLE9BQU8sQ0FBQyxZQUFZLENBQWdCO0lBQ3BDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBWTtJQUMzQyxPQUFPLENBQUMsNEJBQTRCLENBQVk7SUFFaEQsWUFBWSxNQUFNLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBZ0JoRDtJQUVELGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUtyRTtDQUNGIn0=
@@ -1 +1 @@
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
+ {"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,EAgBhD;IAED,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAKrE;CACF"}
@@ -10,7 +10,8 @@ export class TxCollectionInstrumentation {
10
10
  'fast-req-resp',
11
11
  'fast-node-rpc',
12
12
  'slow-req-resp',
13
- 'slow-node-rpc'
13
+ 'slow-node-rpc',
14
+ 'file-store'
14
15
  ]
15
16
  });
16
17
  this.collectionDurationPerTx = meter.createHistogram(Metrics.TX_COLLECTOR_DURATION_PER_TX);
@@ -1,11 +1,12 @@
1
1
  import type { Logger } from '@aztec/foundation/log';
2
2
  import type { DateProvider } from '@aztec/foundation/timer';
3
- import type { Tx, TxHash } from '@aztec/stdlib/tx';
3
+ import { type Tx } from '@aztec/stdlib/tx';
4
4
  import type { PeerId } from '@libp2p/interface';
5
5
  import type { BatchTxRequesterConfig } from '../reqresp/batch-tx-requester/config.js';
6
6
  import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
7
7
  import type { IBatchRequestTxValidator } from '../reqresp/batch-tx-requester/tx_validator.js';
8
8
  import { type BlockTxsSource } from '../reqresp/index.js';
9
+ import type { IRequestTracker } from './request_tracker.js';
9
10
  /**
10
11
  * Strategy interface for collecting missing transactions for a block or proposal.
11
12
  * Allows swapping between different tx collection implementations for benchmarking.
@@ -13,13 +14,12 @@ import { type BlockTxsSource } from '../reqresp/index.js';
13
14
  export interface MissingTxsCollector {
14
15
  /**
15
16
  * Collect missing transactions for a block or proposal.
16
- * @param txHashes - The transaction hashes to collect
17
+ * @param requestTracker - The missing transactions tracker
17
18
  * @param blockTxsSource - The block or proposal containing the transactions
18
19
  * @param pinnedPeer - Optional peer expected to have the transactions
19
- * @param timeoutMs - Timeout in milliseconds
20
20
  * @returns The collected transactions
21
21
  */
22
- collectTxs(txHashes: TxHash[], blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
22
+ collectTxs(requestTracker: IRequestTracker, blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined): Promise<Tx[]>;
23
23
  }
24
24
  /**
25
25
  * Collects transactions using the BatchTxRequester implementation.
@@ -32,7 +32,7 @@ export declare class BatchTxRequesterCollector implements MissingTxsCollector {
32
32
  private txValidator?;
33
33
  private batchTxRequesterConfig?;
34
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[]>;
35
+ collectTxs(requestTracker: IRequestTracker, blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined): Promise<Tx[]>;
36
36
  }
37
37
  /**
38
38
  * Collects transactions using the sendBatchRequest implementation from ReqResp.
@@ -43,6 +43,6 @@ export declare class SendBatchRequestCollector implements MissingTxsCollector {
43
43
  private maxPeers;
44
44
  private maxRetryAttempts;
45
45
  constructor(p2pService: BatchTxRequesterLibP2PService, maxPeers?: number, maxRetryAttempts?: number);
46
- collectTxs(txHashes: TxHash[], _blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined, timeoutMs: number): Promise<Tx[]>;
46
+ collectTxs(requestTracker: IRequestTracker, _blockTxsSource: BlockTxsSource, pinnedPeer: PeerId | undefined): Promise<Tx[]>;
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdHhfY29sbGVjdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9wcm9wb3NhbF90eF9jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBNEMsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRzs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDOzs7Ozs7O09BT0c7SUFDSCxVQUFVLENBQ1IsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUNsQixjQUFjLEVBQUUsY0FBYyxFQUM5QixVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsU0FBUyxFQUFFLE1BQU0sR0FDaEIsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDbEI7QUFFRDs7O0dBR0c7QUFDSCxxQkFBYSx5QkFBMEIsWUFBVyxtQkFBbUI7SUFFakUsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztJQUxqQyxZQUNVLFVBQVUsRUFBRSw2QkFBNkIsRUFDekMsR0FBRyxFQUFFLE1BQU0sRUFDWCxZQUFZLEVBQUUsWUFBWSxFQUMxQixXQUFXLENBQUMsc0NBQTBCLEVBQ3RDLHNCQUFzQixDQUFDLDZDQUFpQyxFQUM5RDtJQUVFLFVBQVUsQ0FDZCxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQ2xCLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM5QixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0EwQmY7Q0FDRjtBQUtEOzs7R0FHRztBQUNILHFCQUFhLHlCQUEwQixZQUFXLG1CQUFtQjtJQUVqRSxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsZ0JBQWdCO0lBSDFCLFlBQ1UsVUFBVSxFQUFFLDZCQUE2QixFQUN6QyxRQUFRLEdBQUUsTUFBMEIsRUFDcEMsZ0JBQWdCLEdBQUUsTUFBbUMsRUFDM0Q7SUFFRSxVQUFVLENBQ2QsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUNsQixlQUFlLEVBQUUsY0FBYyxFQUMvQixVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsU0FBUyxFQUFFLE1BQU0sR0FDaEIsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBV2Y7Q0FDRiJ9
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdHhfY29sbGVjdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9wcm9wb3NhbF90eF9jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hHLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDOUYsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUE0QyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BHLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVEOzs7R0FHRztBQUNILE1BQU0sV0FBVyxtQkFBbUI7SUFDbEM7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUNSLGNBQWMsRUFBRSxlQUFlLEVBQy9CLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxHQUM3QixPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztDQUNsQjtBQUVEOzs7R0FHRztBQUNILHFCQUFhLHlCQUEwQixZQUFXLG1CQUFtQjtJQUVqRSxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsR0FBRztJQUNYLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDcEIsT0FBTyxDQUFDLHNCQUFzQixDQUFDO0lBTGpDLFlBQ1UsVUFBVSxFQUFFLDZCQUE2QixFQUN6QyxHQUFHLEVBQUUsTUFBTSxFQUNYLFlBQVksRUFBRSxZQUFZLEVBQzFCLFdBQVcsQ0FBQyxzQ0FBMEIsRUFDdEMsc0JBQXNCLENBQUMsNkNBQWlDLEVBQzlEO0lBRUUsVUFBVSxDQUNkLGNBQWMsRUFBRSxlQUFlLEVBQy9CLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxHQUM3QixPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0F5QmY7Q0FDRjtBQUtEOzs7R0FHRztBQUNILHFCQUFhLHlCQUEwQixZQUFXLG1CQUFtQjtJQUVqRSxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsZ0JBQWdCO0lBSDFCLFlBQ1UsVUFBVSxFQUFFLDZCQUE2QixFQUN6QyxRQUFRLEdBQUUsTUFBMEIsRUFDcEMsZ0JBQWdCLEdBQUUsTUFBbUMsRUFDM0Q7SUFFRSxVQUFVLENBQ2QsY0FBYyxFQUFFLGVBQWUsRUFDL0IsZUFBZSxFQUFFLGNBQWMsRUFDL0IsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLEdBQzdCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQVdmO0NBQ0YifQ==
@@ -1 +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"}
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,EAAE,KAAK,EAAE,EAAU,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;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,UAAU,CACR,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,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,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,EAAE,EAAE,CAAC,CAyBf;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,cAAc,EAAE,eAAe,EAC/B,eAAe,EAAE,cAAc,EAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,EAAE,EAAE,CAAC,CAWf;CACF"}