@aztec/p2p 0.0.1-commit.e3c1de76 → 0.0.1-commit.e57c76e

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 (553) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +9 -1
  5. package/dest/client/factory.d.ts +13 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +61 -17
  8. package/dest/client/interface.d.ts +58 -36
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +52 -58
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +233 -235
  13. package/dest/config.d.ts +162 -89
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +153 -42
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +1 -20
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +0 -21
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +162 -106
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +511 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +507 -125
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  40. package/dest/mem_pools/index.d.ts +3 -3
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +4 -2
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +33 -15
  46. package/dest/mem_pools/interface.d.ts +5 -5
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +39 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +97 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  91. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +914 -0
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  115. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +8 -4
  118. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  120. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  121. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  122. package/dest/msg_validators/clock_tolerance.js +56 -3
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -4
  124. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +10 -4
  127. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  129. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +21 -8
  130. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/proposal_validator/proposal_validator.js +90 -44
  132. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  133. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  135. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  136. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  138. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  139. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  140. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  141. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  142. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  143. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  145. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  146. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  147. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  148. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  149. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  150. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  151. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  152. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  154. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  155. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  157. package/dest/msg_validators/tx_validator/factory.d.ts +135 -7
  158. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/factory.js +252 -61
  160. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  161. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  163. package/dest/msg_validators/tx_validator/gas_validator.d.ts +99 -3
  164. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  165. package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
  166. package/dest/msg_validators/tx_validator/index.d.ts +5 -1
  167. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/index.js +4 -0
  169. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  170. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  171. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  172. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  173. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  174. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  175. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  176. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  178. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  179. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  181. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  182. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  184. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  185. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  186. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  187. package/dest/services/data_store.d.ts +1 -1
  188. package/dest/services/data_store.d.ts.map +1 -1
  189. package/dest/services/data_store.js +5 -5
  190. package/dest/services/discv5/discV5_service.d.ts +2 -1
  191. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  192. package/dest/services/discv5/discV5_service.js +35 -8
  193. package/dest/services/dummy_service.d.ts +22 -18
  194. package/dest/services/dummy_service.d.ts.map +1 -1
  195. package/dest/services/dummy_service.js +22 -20
  196. package/dest/services/encoding.d.ts +7 -3
  197. package/dest/services/encoding.d.ts.map +1 -1
  198. package/dest/services/encoding.js +18 -11
  199. package/dest/services/gossipsub/index.d.ts +3 -0
  200. package/dest/services/gossipsub/index.d.ts.map +1 -0
  201. package/dest/services/gossipsub/index.js +2 -0
  202. package/dest/services/gossipsub/scoring.d.ts +21 -3
  203. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  204. package/dest/services/gossipsub/scoring.js +24 -7
  205. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  206. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  207. package/dest/services/gossipsub/topic_score_params.js +363 -0
  208. package/dest/services/index.d.ts +2 -1
  209. package/dest/services/index.d.ts.map +1 -1
  210. package/dest/services/index.js +1 -0
  211. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  212. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  213. package/dest/services/libp2p/instrumentation.js +14 -0
  214. package/dest/services/libp2p/libp2p_service.d.ts +102 -60
  215. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  216. package/dest/services/libp2p/libp2p_service.js +685 -562
  217. package/dest/services/peer-manager/metrics.d.ts +3 -1
  218. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  219. package/dest/services/peer-manager/metrics.js +6 -0
  220. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  221. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  222. package/dest/services/peer-manager/peer_manager.js +40 -11
  223. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  224. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  225. package/dest/services/peer-manager/peer_scoring.js +57 -12
  226. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +7 -10
  227. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  228. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +100 -132
  229. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +11 -11
  230. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  231. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  232. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  233. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  234. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  235. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  236. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  237. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  238. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  239. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  240. package/dest/services/reqresp/config.d.ts +3 -3
  241. package/dest/services/reqresp/config.d.ts.map +1 -1
  242. package/dest/services/reqresp/interface.d.ts +25 -18
  243. package/dest/services/reqresp/interface.d.ts.map +1 -1
  244. package/dest/services/reqresp/interface.js +23 -19
  245. package/dest/services/reqresp/metrics.d.ts +1 -1
  246. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  247. package/dest/services/reqresp/metrics.js +0 -1
  248. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
  249. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  250. package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
  251. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  252. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  253. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +34 -26
  254. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +32 -16
  255. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  256. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +68 -34
  257. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  258. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  259. package/dest/services/reqresp/protocols/index.js +0 -1
  260. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  261. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  262. package/dest/services/reqresp/protocols/tx.js +21 -3
  263. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  264. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  265. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  266. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  267. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  268. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  269. package/dest/services/reqresp/reqresp.d.ts +7 -29
  270. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  271. package/dest/services/reqresp/reqresp.js +53 -218
  272. package/dest/services/service.d.ts +46 -13
  273. package/dest/services/service.d.ts.map +1 -1
  274. package/dest/services/tx_collection/config.d.ts +11 -14
  275. package/dest/services/tx_collection/config.d.ts.map +1 -1
  276. package/dest/services/tx_collection/config.js +26 -33
  277. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  278. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  279. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  280. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  281. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  282. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  283. package/dest/services/tx_collection/index.d.ts +3 -3
  284. package/dest/services/tx_collection/index.d.ts.map +1 -1
  285. package/dest/services/tx_collection/index.js +1 -1
  286. package/dest/services/tx_collection/instrumentation.js +1 -2
  287. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  288. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  289. package/dest/services/tx_collection/request_tracker.js +84 -0
  290. package/dest/services/tx_collection/tx_collection.d.ts +45 -51
  291. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  292. package/dest/services/tx_collection/tx_collection.js +296 -68
  293. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  294. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  295. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  296. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  297. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  298. package/dest/services/tx_collection/tx_source.js +26 -7
  299. package/dest/services/tx_file_store/config.d.ts +16 -0
  300. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  301. package/dest/services/tx_file_store/config.js +22 -0
  302. package/dest/services/tx_file_store/index.d.ts +4 -0
  303. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  304. package/dest/services/tx_file_store/index.js +3 -0
  305. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  306. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  307. package/dest/services/tx_file_store/instrumentation.js +29 -0
  308. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  309. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  310. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  311. package/dest/services/tx_provider.d.ts +6 -4
  312. package/dest/services/tx_provider.d.ts.map +1 -1
  313. package/dest/services/tx_provider.js +12 -8
  314. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  315. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  316. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  317. package/dest/test-helpers/mock-pubsub.d.ts +46 -6
  318. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  319. package/dest/test-helpers/mock-pubsub.js +115 -14
  320. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  321. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  322. package/dest/test-helpers/reqresp-nodes.js +19 -20
  323. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  324. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  325. package/dest/test-helpers/test_tx_provider.js +3 -0
  326. package/dest/test-helpers/testbench-utils.d.ts +53 -50
  327. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  328. package/dest/test-helpers/testbench-utils.js +169 -75
  329. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  330. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  331. package/dest/testbench/p2p_client_testbench_worker.js +94 -48
  332. package/dest/testbench/worker_client_manager.d.ts +12 -6
  333. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  334. package/dest/testbench/worker_client_manager.js +57 -11
  335. package/dest/util.d.ts +13 -8
  336. package/dest/util.d.ts.map +1 -1
  337. package/dest/util.js +35 -14
  338. package/dest/versioning.d.ts +3 -6
  339. package/dest/versioning.d.ts.map +1 -1
  340. package/dest/versioning.js +3 -24
  341. package/package.json +15 -14
  342. package/src/bootstrap/bootstrap.ts +9 -1
  343. package/src/client/factory.ts +130 -30
  344. package/src/client/interface.ts +70 -44
  345. package/src/client/p2p_client.ts +278 -299
  346. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  347. package/src/config.ts +267 -46
  348. package/src/errors/p2p-service.error.ts +11 -0
  349. package/src/errors/reqresp.error.ts +0 -25
  350. package/src/errors/tx-pool.error.ts +12 -0
  351. package/src/index.ts +1 -1
  352. package/src/mem_pools/attestation_pool/attestation_pool.ts +575 -94
  353. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +617 -141
  354. package/src/mem_pools/attestation_pool/index.ts +9 -2
  355. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  356. package/src/mem_pools/index.ts +2 -2
  357. package/src/mem_pools/instrumentation.ts +22 -14
  358. package/src/mem_pools/interface.ts +4 -4
  359. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  360. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  361. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +112 -0
  362. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  363. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  364. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  365. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  366. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  367. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  368. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  369. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  370. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  371. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  372. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  373. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  374. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  375. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  376. package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
  377. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  378. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  379. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  380. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  381. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
  382. package/src/msg_validators/attestation_validator/README.md +49 -0
  383. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  384. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -9
  385. package/src/msg_validators/clock_tolerance.ts +73 -3
  386. package/src/msg_validators/proposal_validator/README.md +123 -0
  387. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
  388. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
  389. package/src/msg_validators/proposal_validator/proposal_validator.ts +114 -47
  390. package/src/msg_validators/tx_validator/README.md +127 -0
  391. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  392. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  393. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  394. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  395. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  396. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  397. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  398. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  399. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  400. package/src/msg_validators/tx_validator/factory.ts +407 -80
  401. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  402. package/src/msg_validators/tx_validator/gas_validator.ts +199 -54
  403. package/src/msg_validators/tx_validator/index.ts +4 -0
  404. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  405. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  406. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  407. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  408. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  409. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  410. package/src/services/data_store.ts +5 -13
  411. package/src/services/discv5/discV5_service.ts +38 -5
  412. package/src/services/dummy_service.ts +32 -45
  413. package/src/services/encoding.ts +18 -10
  414. package/src/services/gossipsub/README.md +641 -0
  415. package/src/services/gossipsub/index.ts +2 -0
  416. package/src/services/gossipsub/scoring.ts +29 -5
  417. package/src/services/gossipsub/topic_score_params.ts +519 -0
  418. package/src/services/index.ts +1 -0
  419. package/src/services/libp2p/instrumentation.ts +14 -0
  420. package/src/services/libp2p/libp2p_service.ts +738 -620
  421. package/src/services/peer-manager/metrics.ts +7 -0
  422. package/src/services/peer-manager/peer_manager.ts +46 -11
  423. package/src/services/peer-manager/peer_scoring.ts +52 -5
  424. package/src/services/reqresp/README.md +215 -0
  425. package/src/services/reqresp/batch-tx-requester/README.md +53 -14
  426. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +101 -147
  427. package/src/services/reqresp/batch-tx-requester/interface.ts +14 -10
  428. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  429. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  430. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  431. package/src/services/reqresp/config.ts +2 -2
  432. package/src/services/reqresp/interface.ts +45 -46
  433. package/src/services/reqresp/metrics.ts +0 -1
  434. package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
  435. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +43 -30
  436. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +84 -34
  437. package/src/services/reqresp/protocols/index.ts +0 -1
  438. package/src/services/reqresp/protocols/tx.ts +23 -3
  439. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  440. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  441. package/src/services/reqresp/reqresp.ts +61 -264
  442. package/src/services/service.ts +62 -29
  443. package/src/services/tx_collection/config.ts +40 -49
  444. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  445. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  446. package/src/services/tx_collection/index.ts +2 -6
  447. package/src/services/tx_collection/instrumentation.ts +1 -1
  448. package/src/services/tx_collection/request_tracker.ts +127 -0
  449. package/src/services/tx_collection/tx_collection.ts +362 -110
  450. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  451. package/src/services/tx_collection/tx_source.ts +28 -8
  452. package/src/services/tx_file_store/config.ts +37 -0
  453. package/src/services/tx_file_store/index.ts +3 -0
  454. package/src/services/tx_file_store/instrumentation.ts +36 -0
  455. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  456. package/src/services/tx_provider.ts +15 -9
  457. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  458. package/src/test-helpers/mock-pubsub.ts +137 -14
  459. package/src/test-helpers/reqresp-nodes.ts +17 -29
  460. package/src/test-helpers/test_tx_provider.ts +5 -0
  461. package/src/test-helpers/testbench-utils.ts +175 -96
  462. package/src/testbench/p2p_client_testbench_worker.ts +100 -63
  463. package/src/testbench/worker_client_manager.ts +72 -25
  464. package/src/util.ts +40 -19
  465. package/src/versioning.ts +3 -33
  466. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  467. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  468. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  469. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  470. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  471. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  472. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  473. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  474. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  475. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  476. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  477. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  478. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  479. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  480. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  481. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  482. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  483. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  484. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  485. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  486. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  487. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  488. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  489. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  490. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  491. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  492. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  493. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  494. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  495. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  496. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  497. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  498. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  499. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  500. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  501. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  502. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  503. package/dest/mem_pools/tx_pool/index.js +0 -2
  504. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  505. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  506. package/dest/mem_pools/tx_pool/priority.js +0 -15
  507. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  508. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  509. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  510. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  511. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  512. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  513. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  514. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  515. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  516. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  517. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  518. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  519. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  520. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  521. package/dest/services/reqresp/protocols/block.js +0 -32
  522. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -53
  523. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  524. package/dest/services/tx_collection/fast_tx_collection.js +0 -311
  525. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  526. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  527. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  528. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  529. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  530. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  531. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -336
  532. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  533. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  534. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  535. package/src/mem_pools/tx_pool/README.md +0 -270
  536. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  537. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  538. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  539. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  540. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  541. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  542. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  543. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  544. package/src/mem_pools/tx_pool/index.ts +0 -2
  545. package/src/mem_pools/tx_pool/priority.ts +0 -20
  546. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  547. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  548. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  549. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  550. package/src/services/reqresp/protocols/block.ts +0 -37
  551. package/src/services/tx_collection/fast_tx_collection.ts +0 -364
  552. package/src/services/tx_collection/proposal_tx_collector.ts +0 -114
  553. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
@@ -1,364 +0,0 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { times } from '@aztec/foundation/collection';
3
- import { AbortError, TimeoutError } from '@aztec/foundation/error';
4
- import { type Logger, createLogger } from '@aztec/foundation/log';
5
- import { boundInclusive } from '@aztec/foundation/number';
6
- import { promiseWithResolvers } from '@aztec/foundation/promise';
7
- import { sleep } from '@aztec/foundation/sleep';
8
- import { DateProvider, elapsed } from '@aztec/foundation/timer';
9
- import type { L2BlockInfo } from '@aztec/stdlib/block';
10
- import type { BlockProposal } from '@aztec/stdlib/p2p';
11
- import { type Tx, TxHash } from '@aztec/stdlib/tx';
12
-
13
- import type { PeerId } from '@libp2p/interface';
14
-
15
- import type { BatchTxRequesterConfig } from '../reqresp/batch-tx-requester/config.js';
16
- import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
17
- import { ReqRespSubProtocol } from '../reqresp/interface.js';
18
- import { chunkTxHashesRequest } from '../reqresp/protocols/tx.js';
19
- import type { TxCollectionConfig } from './config.js';
20
- import {
21
- BatchTxRequesterCollector,
22
- type ProposalTxCollector,
23
- SendBatchRequestCollector,
24
- } from './proposal_tx_collector.js';
25
- import type { FastCollectionRequest, FastCollectionRequestInput } from './tx_collection.js';
26
- import type { TxCollectionSink } from './tx_collection_sink.js';
27
- import type { TxSource } from './tx_source.js';
28
-
29
- export class FastTxCollection {
30
- // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
31
- protected requests: Set<FastCollectionRequest> = new Set();
32
- private proposalTxCollector: ProposalTxCollector;
33
-
34
- constructor(
35
- private p2pService: BatchTxRequesterLibP2PService,
36
- private nodes: TxSource[],
37
- private txCollectionSink: TxCollectionSink,
38
- private config: TxCollectionConfig,
39
- private dateProvider: DateProvider = new DateProvider(),
40
- private log: Logger = createLogger('p2p:tx_collection_service'),
41
- proposalTxCollector?: ProposalTxCollector,
42
- ) {
43
- const batchTxRequesterConfig = this.config as Partial<BatchTxRequesterConfig>;
44
- const proposalCollectorType = this.config.txCollectionProposalTxCollectorType;
45
- this.proposalTxCollector =
46
- proposalTxCollector ??
47
- (proposalCollectorType === 'old'
48
- ? new SendBatchRequestCollector(p2pService)
49
- : new BatchTxRequesterCollector(p2pService, log, dateProvider, undefined, batchTxRequesterConfig));
50
- }
51
-
52
- public async stop() {
53
- this.requests.forEach(request => request.promise.reject(new AbortError(`Stopped collection service`)));
54
- await Promise.resolve();
55
- }
56
-
57
- public getFastCollectionRequests() {
58
- return this.requests;
59
- }
60
-
61
- public async collectFastFor(
62
- input: FastCollectionRequestInput,
63
- txHashes: TxHash[] | string[],
64
- opts: { deadline: Date; pinnedPeer?: PeerId },
65
- ) {
66
- const timeout = opts.deadline.getTime() - this.dateProvider.now();
67
- if (timeout <= 0) {
68
- this.log.warn(`Deadline for fast tx collection is in the past (${timeout}ms)`, {
69
- deadline: opts.deadline.getTime(),
70
- now: this.dateProvider.now(),
71
- });
72
- return [];
73
- }
74
-
75
- const blockInfo: L2BlockInfo =
76
- input.type === 'proposal'
77
- ? { ...input.blockProposal.toBlockInfo(), blockNumber: input.blockNumber }
78
- : { ...input.block.toBlockInfo() };
79
-
80
- // This promise is used to await for the collection to finish during the main collectFast method.
81
- // It gets resolved in `foundTxs` when all txs have been collected, or rejected if the request is aborted or hits the deadline.
82
- const promise = promiseWithResolvers<void>();
83
- setTimeout(() => promise.reject(new TimeoutError(`Timed out while collecting txs`)), timeout);
84
-
85
- const request: FastCollectionRequest = {
86
- ...input,
87
- blockInfo,
88
- promise,
89
- foundTxs: new Map<string, Tx>(),
90
- missingTxHashes: new Set(txHashes.map(t => t.toString())),
91
- deadline: opts.deadline,
92
- };
93
-
94
- const [duration] = await elapsed(() => this.collectFast(request, { ...opts }));
95
-
96
- this.log.verbose(
97
- `Collected ${request.foundTxs.size} txs out of ${txHashes.length} for ${input.type} at slot ${blockInfo.slotNumber}`,
98
- {
99
- ...blockInfo,
100
- duration,
101
- requestType: input.type,
102
- missingTxs: [...request.missingTxHashes],
103
- },
104
- );
105
- return [...request.foundTxs.values()];
106
- }
107
-
108
- protected async collectFast(
109
- request: FastCollectionRequest,
110
- opts: { proposal?: BlockProposal; deadline: Date; pinnedPeer?: PeerId },
111
- ) {
112
- this.requests.add(request);
113
- const { blockInfo } = request;
114
-
115
- this.log.debug(
116
- `Starting fast collection of ${request.missingTxHashes.size} txs for ${request.type} at slot ${blockInfo.slotNumber}`,
117
- { ...blockInfo, requestType: request.type, deadline: opts.deadline },
118
- );
119
-
120
- try {
121
- // Start blasting all nodes for the txs. We give them a little time to respond before we start reqresp.
122
- // And keep an eye on the request promise to ensure we don't wait longer than the deadline or return as soon
123
- // as we have collected all txs, whatever the source.
124
- const nodeCollectionPromise = this.collectFastFromNodes(request, opts);
125
- const waitBeforeReqResp = sleep(this.config.txCollectionFastNodesTimeoutBeforeReqRespMs);
126
- await Promise.race([request.promise.promise, waitBeforeReqResp]);
127
-
128
- // If we have collected all txs, we can stop here
129
- if (request.missingTxHashes.size === 0) {
130
- this.log.debug(`All txs collected for slot ${blockInfo.slotNumber} without reqresp`, blockInfo);
131
- return;
132
- }
133
-
134
- // Start blasting reqresp for the remaining txs. Note that node collection keeps running in parallel.
135
- // We stop when we have collected all txs, timed out, or both node collection and reqresp have given up.
136
- const collectionPromise = Promise.allSettled([this.collectFastViaReqResp(request, opts), nodeCollectionPromise]);
137
- await Promise.race([collectionPromise, request.promise.promise]);
138
- } catch (err) {
139
- // Log and swallow all errors
140
- const logCtx = {
141
- ...blockInfo,
142
- errorMessage: err instanceof Error ? err.message : undefined,
143
- missingTxs: [...request.missingTxHashes].map(txHash => txHash.toString()),
144
- };
145
- if (err instanceof Error && err.name === 'TimeoutError') {
146
- this.log.warn(`Timed out collecting txs for ${request.type} at slot ${blockInfo.slotNumber}`, logCtx);
147
- } else if (err instanceof Error && err.name === 'AbortError') {
148
- this.log.warn(`Aborted collecting txs for ${request.type} at slot ${blockInfo.slotNumber}`, logCtx);
149
- } else {
150
- this.log.error(`Error collecting txs for ${request.type} for slot ${blockInfo.slotNumber}`, err, logCtx);
151
- }
152
- } finally {
153
- // Ensure no unresolved promises and remove the request from the set
154
- request.promise.resolve();
155
- this.requests.delete(request);
156
- }
157
- }
158
-
159
- /**
160
- * Starts collecting txs from all configured nodes. We send `txCollectionFastMaxParallelRequestsPerNode` requests
161
- * in parallel to each node. We keep track of the number of attempts made to collect each tx, so we can prioritize
162
- * the txs that have been requested less often whenever we need to send a new batch of requests. We ensure that no
163
- * tx is requested more than once at the same time to the same node.
164
- */
165
- private async collectFastFromNodes(request: FastCollectionRequest, opts: { deadline: Date }): Promise<void> {
166
- if (this.nodes.length === 0) {
167
- return;
168
- }
169
-
170
- // Keep a shared priority queue of all txs pending to be requested, sorted by the number of attempts made to collect them.
171
- const attemptsPerTx = [...request.missingTxHashes].map(txHash => ({ txHash, attempts: 0, found: false }));
172
-
173
- // Returns once we have finished all node loops. Each loop finishes when the deadline is hit, or all txs have been collected.
174
- await Promise.allSettled(this.nodes.map(node => this.collectFastFromNode(request, node, attemptsPerTx, opts)));
175
- }
176
-
177
- private async collectFastFromNode(
178
- request: FastCollectionRequest,
179
- node: TxSource,
180
- attemptsPerTx: { txHash: string; attempts: number; found: boolean }[],
181
- opts: { deadline: Date },
182
- ) {
183
- const notFinished = () =>
184
- this.dateProvider.now() <= +opts.deadline && request.missingTxHashes.size > 0 && this.requests.has(request);
185
-
186
- const maxParallelRequests = this.config.txCollectionFastMaxParallelRequestsPerNode;
187
- const maxBatchSize = this.config.txCollectionNodeRpcMaxBatchSize;
188
- const activeRequestsToThisNode = new Set<string>(); // Track the txs being actively requested to this node
189
-
190
- const processBatch = async () => {
191
- while (notFinished()) {
192
- // Pull tx hashes from the attemptsPerTx array, which is sorted by attempts,
193
- // so we prioritize txs that have been requested less often.
194
- const batch = [];
195
- let index = 0;
196
- while (batch.length < maxBatchSize) {
197
- const txToRequest = attemptsPerTx[index++];
198
- if (!txToRequest) {
199
- // No more txs to process
200
- break;
201
- } else if (!request.missingTxHashes.has(txToRequest.txHash)) {
202
- // Mark as found if it was found somewhere else, we'll then remove it from the array.
203
- // We don't delete it now since 'array.splice' is pretty expensive, so we do it after sorting.
204
- txToRequest.found = true;
205
- } else if (!activeRequestsToThisNode.has(txToRequest.txHash)) {
206
- // If the tx is not alredy being requested to this node, add it to the current batch and increase attempts.
207
- // Note that we increase the attempts *before* making the request, so the next `collectFastFromNode` that
208
- // needs to grab txs to send, will pick txs that have been requested less often, instead of all requesting
209
- // the same txs at the same time.
210
- batch.push(txToRequest);
211
- activeRequestsToThisNode.add(txToRequest.txHash);
212
- txToRequest.attempts++;
213
- }
214
- }
215
-
216
- // After modifying the array by removing txs or updating attempts, re-sort it and trim the found txs from the end.
217
- attemptsPerTx.sort((a, b) =>
218
- a.found === b.found ? a.attempts - b.attempts : Number(a.found) - Number(b.found),
219
- );
220
- const firstFoundTxIndex = attemptsPerTx.findIndex(tx => tx.found);
221
- if (firstFoundTxIndex !== -1) {
222
- attemptsPerTx.length = firstFoundTxIndex;
223
- }
224
-
225
- // If we see no more txs to request, we can stop this "process" loop
226
- if (batch.length === 0) {
227
- return;
228
- }
229
-
230
- // Collect this batch from the node
231
- await this.txCollectionSink.collect(
232
- txHashes => node.getTxsByHash(txHashes),
233
- batch.map(({ txHash }) => TxHash.fromString(txHash)),
234
- {
235
- description: `fast ${node.getInfo()}`,
236
- node: node.getInfo(),
237
- method: 'fast-node-rpc',
238
- ...request.blockInfo,
239
- },
240
- );
241
-
242
- // Clear from the active requests the txs we just requested
243
- for (const requestedTx of batch) {
244
- activeRequestsToThisNode.delete(requestedTx.txHash);
245
- }
246
-
247
- // Sleep a bit until hitting the node again (or not, depending on config)
248
- if (notFinished()) {
249
- await sleep(this.config.txCollectionFastNodeIntervalMs);
250
- }
251
- }
252
- };
253
-
254
- // Kick off N parallel requests to the node, up to the maxParallelRequests limit
255
- await Promise.all(times(maxParallelRequests, processBatch));
256
- }
257
-
258
- private async collectFastViaReqResp(request: FastCollectionRequest, opts: { pinnedPeer?: PeerId }) {
259
- const timeoutMs = +request.deadline - this.dateProvider.now();
260
- const pinnedPeer = opts.pinnedPeer;
261
- const maxPeers = boundInclusive(Math.ceil(request.missingTxHashes.size / 2), 8, 32);
262
- const maxRetryAttempts = 5;
263
- const blockInfo = request.blockInfo;
264
- const slotNumber = blockInfo.slotNumber;
265
- if (timeoutMs < 100) {
266
- this.log.warn(
267
- `Not initiating fast reqresp for txs for ${request.type} at slot ${blockInfo.slotNumber} due to timeout`,
268
- { timeoutMs, ...blockInfo },
269
- );
270
- return;
271
- }
272
-
273
- this.log.debug(
274
- `Starting fast reqresp for ${request.missingTxHashes.size} txs for ${request.type} at slot ${blockInfo.slotNumber}`,
275
- { ...blockInfo, timeoutMs, pinnedPeer },
276
- );
277
-
278
- try {
279
- await this.txCollectionSink.collect(
280
- async txHashes => {
281
- if (request.type === 'proposal') {
282
- return await this.proposalTxCollector.collectTxs(txHashes, request.blockProposal, pinnedPeer, timeoutMs);
283
- } else if (request.type === 'block') {
284
- const txs = await this.p2pService.reqResp.sendBatchRequest<ReqRespSubProtocol.TX>(
285
- ReqRespSubProtocol.TX,
286
- chunkTxHashesRequest(txHashes),
287
- pinnedPeer,
288
- timeoutMs,
289
- maxPeers,
290
- maxRetryAttempts,
291
- );
292
-
293
- return txs.flat();
294
- } else {
295
- throw new Error(`Unknown request type: ${(request as any).type}`);
296
- }
297
- },
298
- Array.from(request.missingTxHashes).map(txHash => TxHash.fromString(txHash)),
299
- { description: `reqresp for slot ${slotNumber}`, method: 'fast-req-resp', ...opts, ...request.blockInfo },
300
- );
301
- } catch (err) {
302
- this.log.error(`Error sending fast reqresp request for txs`, err, {
303
- txs: [...request.missingTxHashes],
304
- ...blockInfo,
305
- });
306
- }
307
- }
308
-
309
- /**
310
- * 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.
311
- * Called internally and from the main tx collection manager whenever the tx pool emits a tx-added event.
312
- */
313
- public foundTxs(txs: Tx[]) {
314
- for (const request of this.requests) {
315
- for (const tx of txs) {
316
- const txHash = tx.txHash.toString();
317
- // Remove the tx hash from the missing set, and add it to the found set.
318
- if (request.missingTxHashes.has(txHash)) {
319
- request.missingTxHashes.delete(txHash);
320
- request.foundTxs.set(txHash, tx);
321
- this.log.trace(`Found tx ${txHash} for fast collection request`, {
322
- ...request.blockInfo,
323
- txHash: tx.txHash.toString(),
324
- type: request.type,
325
- });
326
- // If we found all txs for this request, we resolve the promise
327
- if (request.missingTxHashes.size === 0) {
328
- this.log.trace(`All txs found for fast collection request`, {
329
- ...request.blockInfo,
330
- type: request.type,
331
- });
332
- request.promise.resolve();
333
- }
334
- }
335
- }
336
- }
337
- }
338
-
339
- /**
340
- * Stop collecting all txs for blocks less than or requal to the block number specified.
341
- * To be called when we no longer care about gathering txs up to a certain block, eg when they become proven or finalized.
342
- */
343
- public stopCollectingForBlocksUpTo(blockNumber: BlockNumber): void {
344
- for (const request of this.requests) {
345
- if (request.blockInfo.blockNumber <= blockNumber) {
346
- request.promise.reject(new AbortError(`Stopped collecting txs up to block ${blockNumber}`));
347
- this.requests.delete(request);
348
- }
349
- }
350
- }
351
-
352
- /**
353
- * Stop collecting all txs for blocks greater than the block number specified.
354
- * To be called when there is a chain prune and previously mined txs are no longer relevant.
355
- */
356
- public stopCollectingForBlocksAfter(blockNumber: BlockNumber): void {
357
- for (const request of this.requests) {
358
- if (request.blockInfo.blockNumber > blockNumber) {
359
- request.promise.reject(new AbortError(`Stopped collecting txs after block ${blockNumber}`));
360
- this.requests.delete(request);
361
- }
362
- }
363
- }
364
- }
@@ -1,114 +0,0 @@
1
- import type { Logger } from '@aztec/foundation/log';
2
- import type { DateProvider } from '@aztec/foundation/timer';
3
- import type { BlockProposal } from '@aztec/stdlib/p2p';
4
- import type { Tx, TxHash } from '@aztec/stdlib/tx';
5
-
6
- import type { PeerId } from '@libp2p/interface';
7
-
8
- import { BatchTxRequester } from '../reqresp/batch-tx-requester/batch_tx_requester.js';
9
- import type { BatchTxRequesterConfig } from '../reqresp/batch-tx-requester/config.js';
10
- import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
11
- import type { IBatchRequestTxValidator } from '../reqresp/batch-tx-requester/tx_validator.js';
12
- import { ReqRespSubProtocol } from '../reqresp/interface.js';
13
- import { chunkTxHashesRequest } from '../reqresp/protocols/tx.js';
14
-
15
- /**
16
- * Strategy interface for collecting transactions for block proposals.
17
- * Allows swapping between different tx collection implementations for benchmarking.
18
- */
19
- export interface ProposalTxCollector {
20
- /**
21
- * Collect transactions for a block proposal.
22
- * @param txHashes - The transaction hashes to collect
23
- * @param blockProposal - The block proposal containing the transactions
24
- * @param pinnedPeer - Optional peer that sent the proposal (expected to have all txs)
25
- * @param timeoutMs - Timeout in milliseconds
26
- * @returns The collected transactions
27
- */
28
- collectTxs(
29
- txHashes: TxHash[],
30
- blockProposal: BlockProposal,
31
- pinnedPeer: PeerId | undefined,
32
- timeoutMs: number,
33
- ): Promise<Tx[]>;
34
- }
35
-
36
- /**
37
- * Collects transactions using the BatchTxRequester implementation.
38
- * This uses a smart/dumb peer strategy with parallel workers.
39
- */
40
- export class BatchTxRequesterCollector implements ProposalTxCollector {
41
- constructor(
42
- private p2pService: BatchTxRequesterLibP2PService,
43
- private log: Logger,
44
- private dateProvider: DateProvider,
45
- private txValidator?: IBatchRequestTxValidator,
46
- private batchTxRequesterConfig?: Partial<BatchTxRequesterConfig>,
47
- ) {}
48
-
49
- async collectTxs(
50
- txHashes: TxHash[],
51
- blockProposal: BlockProposal,
52
- pinnedPeer: PeerId | undefined,
53
- timeoutMs: number,
54
- ): Promise<Tx[]> {
55
- const {
56
- batchTxRequesterSmartParallelWorkerCount: smartParallelWorkerCount,
57
- batchTxRequesterDumbParallelWorkerCount: dumbParallelWorkerCount,
58
- batchTxRequesterTxBatchSize: txBatchSize,
59
- batchTxRequesterBadPeerThreshold: badPeerThreshold,
60
- } = this.batchTxRequesterConfig ?? {};
61
-
62
- const batchRequester = new BatchTxRequester(
63
- txHashes,
64
- blockProposal,
65
- pinnedPeer,
66
- timeoutMs,
67
- this.p2pService,
68
- this.log,
69
- this.dateProvider,
70
- {
71
- smartParallelWorkerCount,
72
- dumbParallelWorkerCount,
73
- txBatchSize,
74
- badPeerThreshold,
75
- txValidator: this.txValidator,
76
- },
77
- );
78
-
79
- return await BatchTxRequester.collectAllTxs(batchRequester.run());
80
- }
81
- }
82
-
83
- const DEFAULT_MAX_PEERS = 10;
84
- const DEFAULT_MAX_RETRY_ATTEMPTS = 3;
85
-
86
- /**
87
- * Collects transactions using the sendBatchRequest implementation from ReqResp.
88
- * This is the original implementation that balances requests across peers.
89
- */
90
- export class SendBatchRequestCollector implements ProposalTxCollector {
91
- constructor(
92
- private p2pService: BatchTxRequesterLibP2PService,
93
- private maxPeers: number = DEFAULT_MAX_PEERS,
94
- private maxRetryAttempts: number = DEFAULT_MAX_RETRY_ATTEMPTS,
95
- ) {}
96
-
97
- async collectTxs(
98
- txHashes: TxHash[],
99
- _blockProposal: BlockProposal,
100
- pinnedPeer: PeerId | undefined,
101
- timeoutMs: number,
102
- ): Promise<Tx[]> {
103
- const txs = await this.p2pService.reqResp.sendBatchRequest<ReqRespSubProtocol.TX>(
104
- ReqRespSubProtocol.TX,
105
- chunkTxHashesRequest(txHashes),
106
- pinnedPeer,
107
- timeoutMs,
108
- this.maxPeers,
109
- this.maxRetryAttempts,
110
- );
111
-
112
- return txs.flat();
113
- }
114
- }