@aztec/p2p 0.0.1-commit.2ed92850 → 0.0.1-commit.43c09e3f

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 (310) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +1 -1
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +9 -6
  7. package/dest/client/p2p_client.d.ts +4 -2
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +15 -4
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  11. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  16. package/dest/config.d.ts +14 -2
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +5 -1
  19. package/dest/mem_pools/instrumentation.d.ts +1 -1
  20. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  21. package/dest/mem_pools/instrumentation.js +2 -2
  22. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  23. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  24. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  25. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  26. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  27. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  28. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  29. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  30. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  31. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  32. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  33. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  34. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  35. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  36. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  37. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  38. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  39. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  40. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  41. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  42. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  43. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  44. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  58. package/dest/mem_pools/tx_pool_v2/index.d.ts +5 -0
  59. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/index.js +4 -0
  61. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +193 -0
  62. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  64. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +71 -0
  65. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +94 -0
  67. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  68. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  70. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  71. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +150 -0
  73. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  74. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +1041 -0
  76. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +1 -1
  77. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  78. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +7 -2
  79. package/dest/msg_validators/proposal_validator/proposal_validator.js +5 -5
  80. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  81. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  82. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  83. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  84. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  86. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  87. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  88. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  89. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  90. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  91. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  92. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  93. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  94. package/dest/msg_validators/tx_validator/factory.js +21 -11
  95. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  96. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  97. package/dest/msg_validators/tx_validator/gas_validator.js +3 -2
  98. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  99. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  100. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  101. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  102. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  103. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  104. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  105. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  107. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  108. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  110. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  111. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  113. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  114. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  116. package/dest/services/data_store.d.ts +1 -1
  117. package/dest/services/data_store.d.ts.map +1 -1
  118. package/dest/services/data_store.js +10 -6
  119. package/dest/services/discv5/discV5_service.js +1 -1
  120. package/dest/services/dummy_service.d.ts +13 -1
  121. package/dest/services/dummy_service.d.ts.map +1 -1
  122. package/dest/services/dummy_service.js +39 -0
  123. package/dest/services/index.d.ts +2 -1
  124. package/dest/services/index.d.ts.map +1 -1
  125. package/dest/services/index.js +1 -0
  126. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  127. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  128. package/dest/services/libp2p/instrumentation.js +14 -3
  129. package/dest/services/libp2p/libp2p_service.d.ts +9 -3
  130. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  131. package/dest/services/libp2p/libp2p_service.js +37 -28
  132. package/dest/services/peer-manager/metrics.d.ts +2 -2
  133. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  134. package/dest/services/peer-manager/metrics.js +20 -5
  135. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  136. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  137. package/dest/services/peer-manager/peer_scoring.js +8 -2
  138. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  139. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  140. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  141. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  142. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  143. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  144. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  145. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  146. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  147. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  148. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  149. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  150. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  151. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  152. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  153. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  154. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  155. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  156. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  157. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  158. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  159. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  160. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  161. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  162. package/dest/services/reqresp/interface.d.ts +3 -1
  163. package/dest/services/reqresp/interface.d.ts.map +1 -1
  164. package/dest/services/reqresp/metrics.d.ts +6 -5
  165. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  166. package/dest/services/reqresp/metrics.js +17 -5
  167. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  168. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  169. package/dest/services/reqresp/protocols/block_txs/bitvector.js +5 -0
  170. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  171. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  172. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -3
  173. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +18 -6
  174. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  175. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +43 -13
  176. package/dest/services/reqresp/reqresp.d.ts +6 -1
  177. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  178. package/dest/services/reqresp/reqresp.js +58 -22
  179. package/dest/services/service.d.ts +4 -1
  180. package/dest/services/service.d.ts.map +1 -1
  181. package/dest/services/tx_collection/config.d.ts +4 -1
  182. package/dest/services/tx_collection/config.d.ts.map +1 -1
  183. package/dest/services/tx_collection/config.js +9 -1
  184. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -4
  185. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  186. package/dest/services/tx_collection/fast_tx_collection.js +16 -5
  187. package/dest/services/tx_collection/index.d.ts +2 -1
  188. package/dest/services/tx_collection/index.d.ts.map +1 -1
  189. package/dest/services/tx_collection/index.js +1 -0
  190. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  191. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  192. package/dest/services/tx_collection/instrumentation.js +9 -2
  193. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  194. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  195. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  196. package/dest/services/tx_collection/tx_collection.d.ts +4 -4
  197. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  198. package/dest/services/tx_collection/tx_collection.js +5 -5
  199. package/dest/services/tx_file_store/config.d.ts +18 -0
  200. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  201. package/dest/services/tx_file_store/config.js +26 -0
  202. package/dest/services/tx_file_store/index.d.ts +4 -0
  203. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  204. package/dest/services/tx_file_store/index.js +3 -0
  205. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  206. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  207. package/dest/services/tx_file_store/instrumentation.js +29 -0
  208. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  209. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  210. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  211. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  212. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  213. package/dest/services/tx_provider_instrumentation.js +5 -5
  214. package/dest/test-helpers/index.d.ts +3 -1
  215. package/dest/test-helpers/index.d.ts.map +1 -1
  216. package/dest/test-helpers/index.js +2 -0
  217. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  218. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  219. package/dest/test-helpers/test_tx_provider.js +41 -0
  220. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  221. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  222. package/dest/test-helpers/testbench-utils.js +297 -0
  223. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  224. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  225. package/dest/testbench/p2p_client_testbench_worker.js +212 -131
  226. package/dest/testbench/worker_client_manager.d.ts +51 -6
  227. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  228. package/dest/testbench/worker_client_manager.js +226 -44
  229. package/package.json +14 -14
  230. package/src/bootstrap/bootstrap.ts +7 -4
  231. package/src/client/factory.ts +10 -10
  232. package/src/client/p2p_client.ts +14 -2
  233. package/src/client/test/tx_proposal_collector/README.md +227 -0
  234. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  235. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  236. package/src/config.ts +13 -1
  237. package/src/mem_pools/instrumentation.ts +2 -1
  238. package/src/mem_pools/tx_pool_v2/README.md +188 -0
  239. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  240. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  241. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  242. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  243. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  244. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  245. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  246. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  247. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  248. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  249. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  250. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  251. package/src/mem_pools/tx_pool_v2/index.ts +11 -0
  252. package/src/mem_pools/tx_pool_v2/interfaces.ts +225 -0
  253. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +160 -0
  254. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  255. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +209 -0
  256. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1265 -0
  257. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +8 -2
  258. package/src/msg_validators/proposal_validator/proposal_validator.ts +5 -5
  259. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  260. package/src/msg_validators/tx_validator/block_header_validator.ts +7 -8
  261. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  262. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  263. package/src/msg_validators/tx_validator/factory.ts +64 -23
  264. package/src/msg_validators/tx_validator/gas_validator.ts +9 -3
  265. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  266. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  267. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  268. package/src/msg_validators/tx_validator/timestamp_validator.ts +6 -3
  269. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  270. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  271. package/src/services/data_store.ts +10 -7
  272. package/src/services/discv5/discV5_service.ts +1 -1
  273. package/src/services/dummy_service.ts +45 -0
  274. package/src/services/index.ts +1 -0
  275. package/src/services/libp2p/instrumentation.ts +15 -2
  276. package/src/services/libp2p/libp2p_service.ts +60 -46
  277. package/src/services/peer-manager/metrics.ts +21 -4
  278. package/src/services/peer-manager/peer_scoring.ts +4 -1
  279. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  280. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  281. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  282. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  283. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  284. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  285. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  286. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  287. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  288. package/src/services/reqresp/interface.ts +3 -0
  289. package/src/services/reqresp/metrics.ts +34 -9
  290. package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
  291. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +18 -4
  292. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +51 -9
  293. package/src/services/reqresp/reqresp.ts +66 -19
  294. package/src/services/service.ts +4 -0
  295. package/src/services/tx_collection/config.ts +15 -1
  296. package/src/services/tx_collection/fast_tx_collection.ts +36 -13
  297. package/src/services/tx_collection/index.ts +5 -0
  298. package/src/services/tx_collection/instrumentation.ts +11 -2
  299. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  300. package/src/services/tx_collection/tx_collection.ts +4 -4
  301. package/src/services/tx_file_store/config.ts +43 -0
  302. package/src/services/tx_file_store/index.ts +3 -0
  303. package/src/services/tx_file_store/instrumentation.ts +36 -0
  304. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  305. package/src/services/tx_provider_instrumentation.ts +11 -5
  306. package/src/test-helpers/index.ts +2 -0
  307. package/src/test-helpers/test_tx_provider.ts +64 -0
  308. package/src/test-helpers/testbench-utils.ts +374 -0
  309. package/src/testbench/p2p_client_testbench_worker.ts +321 -122
  310. package/src/testbench/worker_client_manager.ts +304 -47
@@ -0,0 +1,297 @@
1
+ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { TxHash } from '@aztec/stdlib/tx';
3
+ import EventEmitter from 'events';
4
+ import { RateLimitStatus } from '../services/reqresp/rate-limiter/rate_limiter.js';
5
+ /**
6
+ * In-memory TxPool implementation for testing.
7
+ * Provides basic tx storage without persistence.
8
+ */ export class InMemoryTxPool extends EventEmitter {
9
+ txsByHash = new Map();
10
+ logger = null;
11
+ setLogger(logger) {
12
+ this.logger = logger;
13
+ }
14
+ setTxs(txs) {
15
+ this.txsByHash.clear();
16
+ return this.appendTxs(txs);
17
+ }
18
+ appendTxs(txs) {
19
+ let added = 0;
20
+ for (const tx of txs){
21
+ const key = tx.getTxHash().toString();
22
+ if (!this.txsByHash.has(key)) {
23
+ added += 1;
24
+ }
25
+ this.txsByHash.set(key, tx);
26
+ }
27
+ return added;
28
+ }
29
+ clearTxs() {
30
+ this.txsByHash.clear();
31
+ }
32
+ resetState() {
33
+ this.txsByHash.clear();
34
+ this.removeAllListeners();
35
+ }
36
+ addTxs(txs, opts) {
37
+ const newTxs = [];
38
+ let added = 0;
39
+ for (const tx of txs){
40
+ const key = tx.getTxHash().toString();
41
+ if (!this.txsByHash.has(key)) {
42
+ newTxs.push(tx);
43
+ added += 1;
44
+ }
45
+ this.txsByHash.set(key, tx);
46
+ }
47
+ if (newTxs.length > 0) {
48
+ this.emit('txs-added', {
49
+ txs: newTxs,
50
+ source: opts?.source
51
+ });
52
+ }
53
+ return Promise.resolve(added);
54
+ }
55
+ getTxByHash(hash) {
56
+ return Promise.resolve(this.txsByHash.get(hash.toString()));
57
+ }
58
+ getTxsByHash(hashes) {
59
+ const result = hashes.map((h)=>this.txsByHash.get(h.toString()));
60
+ const found = result.filter((tx)=>tx !== undefined).length;
61
+ this.logger?.debug(`[TxPool] getTxsByHash: requested ${hashes.length}, found ${found}`);
62
+ return Promise.resolve(result);
63
+ }
64
+ hasTxs(hashes) {
65
+ return Promise.resolve(hashes.map((h)=>this.txsByHash.has(h.toString())));
66
+ }
67
+ hasTx(hash) {
68
+ return Promise.resolve(this.txsByHash.has(hash.toString()));
69
+ }
70
+ getArchivedTxByHash(_hash) {
71
+ return Promise.resolve(undefined);
72
+ }
73
+ async markAsMined(_txHashes, _blockHeader) {}
74
+ async markMinedAsPending(_txHashes, _latestBlock) {}
75
+ deleteTxs(txHashes, _opts) {
76
+ for (const txHash of txHashes){
77
+ this.txsByHash.delete(txHash.toString());
78
+ }
79
+ return Promise.resolve();
80
+ }
81
+ getAllTxs() {
82
+ return Promise.resolve([
83
+ ...this.txsByHash.values()
84
+ ]);
85
+ }
86
+ getAllTxHashes() {
87
+ return Promise.resolve([
88
+ ...this.txsByHash.keys()
89
+ ].map((key)=>TxHash.fromString(key)));
90
+ }
91
+ getPendingTxHashes() {
92
+ return Promise.resolve([
93
+ ...this.txsByHash.keys()
94
+ ].map((key)=>TxHash.fromString(key)));
95
+ }
96
+ getPendingTxCount() {
97
+ return Promise.resolve(this.txsByHash.size);
98
+ }
99
+ getMinedTxHashes() {
100
+ return Promise.resolve([]);
101
+ }
102
+ getTxStatus(hash) {
103
+ return Promise.resolve(this.txsByHash.has(hash.toString()) ? 'pending' : undefined);
104
+ }
105
+ updateConfig(_config) {}
106
+ isEmpty() {
107
+ return Promise.resolve(this.txsByHash.size === 0);
108
+ }
109
+ async markTxsAsNonEvictable(_txHashes) {}
110
+ async clearNonEvictableTxs() {}
111
+ cleanupDeletedMinedTxs(_blockNumber) {
112
+ return Promise.resolve(0);
113
+ }
114
+ }
115
+ /**
116
+ * In-memory AttestationPool implementation for testing.
117
+ */ export class InMemoryAttestationPool {
118
+ proposals = new Map();
119
+ addBlockProposal(blockProposal) {
120
+ this.proposals.set(blockProposal.archive.toString(), blockProposal);
121
+ return Promise.resolve();
122
+ }
123
+ getBlockProposal(id) {
124
+ return Promise.resolve(this.proposals.get(id));
125
+ }
126
+ hasBlockProposal(idOrProposal) {
127
+ const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
128
+ return Promise.resolve(this.proposals.has(id));
129
+ }
130
+ canAddProposal(_block) {
131
+ return Promise.resolve(true);
132
+ }
133
+ async addCheckpointProposal(_proposal) {}
134
+ getCheckpointProposal(_id) {
135
+ return Promise.resolve(undefined);
136
+ }
137
+ hasCheckpointProposal(_idOrProposal) {
138
+ return Promise.resolve(false);
139
+ }
140
+ async addCheckpointAttestations(_attestations) {}
141
+ async deleteCheckpointAttestationsOlderThan(_slot) {}
142
+ getCheckpointAttestationsForSlot(_slot) {
143
+ return Promise.resolve([]);
144
+ }
145
+ getCheckpointAttestationsForSlotAndProposal(_slot, _proposalId) {
146
+ return Promise.resolve([]);
147
+ }
148
+ hasCheckpointAttestation(_attestation) {
149
+ return Promise.resolve(false);
150
+ }
151
+ canAddCheckpointProposal(_proposal) {
152
+ return Promise.resolve(true);
153
+ }
154
+ canAddCheckpointAttestation(_attestation, _committeeSize) {
155
+ return Promise.resolve(true);
156
+ }
157
+ hasReachedCheckpointProposalCap(_slot) {
158
+ return Promise.resolve(false);
159
+ }
160
+ hasReachedCheckpointAttestationCap(_slot, _proposalId, _committeeSize) {
161
+ return Promise.resolve(false);
162
+ }
163
+ isEmpty() {
164
+ return Promise.resolve(this.proposals.size === 0);
165
+ }
166
+ resetState() {
167
+ this.proposals.clear();
168
+ }
169
+ }
170
+ /**
171
+ * Creates a mock EpochCache for testing.
172
+ */ export function createMockEpochCache() {
173
+ return {
174
+ getCommittee: ()=>Promise.resolve({
175
+ committee: [],
176
+ seed: 1n,
177
+ epoch: EpochNumber.ZERO,
178
+ isEscapeHatchOpen: false
179
+ }),
180
+ getProposerIndexEncoding: ()=>'0x',
181
+ getEpochAndSlotNow: ()=>({
182
+ epoch: EpochNumber.ZERO,
183
+ slot: SlotNumber.ZERO,
184
+ ts: 0n,
185
+ nowMs: 0n
186
+ }),
187
+ computeProposerIndex: ()=>0n,
188
+ getCurrentAndNextSlot: ()=>({
189
+ currentSlot: SlotNumber.ZERO,
190
+ nextSlot: SlotNumber.ZERO
191
+ }),
192
+ getProposerAttesterAddressInSlot: ()=>Promise.resolve(undefined),
193
+ getEpochAndSlotInNextL1Slot: ()=>({
194
+ epoch: EpochNumber.ZERO,
195
+ slot: SlotNumber.ZERO,
196
+ ts: 0n,
197
+ now: 0n
198
+ }),
199
+ isInCommittee: ()=>Promise.resolve(false),
200
+ getRegisteredValidators: ()=>Promise.resolve([]),
201
+ filterInCommittee: ()=>Promise.resolve([])
202
+ };
203
+ }
204
+ /**
205
+ * Creates a mock WorldStateSynchronizer for testing.
206
+ */ export function createMockWorldStateSynchronizer() {
207
+ return {
208
+ status: ()=>Promise.resolve({
209
+ syncSummary: {
210
+ latestBlockNumber: 0,
211
+ latestBlockHash: '',
212
+ finalizedBlockNumber: 0,
213
+ treesAreSynched: false,
214
+ oldestHistoricBlockNumber: 0
215
+ }
216
+ })
217
+ };
218
+ }
219
+ /**
220
+ * Unlimited rate limit configuration for benchmarks.
221
+ */ export const UNLIMITED_RATE_LIMIT_QUOTA = {
222
+ peerLimit: {
223
+ quotaTimeMs: 1000,
224
+ quotaCount: 10_000
225
+ },
226
+ globalLimit: {
227
+ quotaTimeMs: 1000,
228
+ quotaCount: 100_000
229
+ }
230
+ };
231
+ /**
232
+ * Installs unlimited rate limits on a ReqResp instance.
233
+ * Used in benchmarks to avoid rate limiting affecting results.
234
+ *
235
+ * Note: Uses `as any` because rateLimiter is private. This is acceptable
236
+ * in test code where we need to override internal behavior.
237
+ */ export function installUnlimitedRateLimitsOnReqResp(reqResp) {
238
+ const rateLimiter = reqResp.rateLimiter;
239
+ rateLimiter.getRateLimits = ()=>UNLIMITED_RATE_LIMIT_QUOTA;
240
+ rateLimiter.allow = ()=>RateLimitStatus.Allowed;
241
+ }
242
+ /**
243
+ * Display names for collector types (for output/logging only).
244
+ */ export const COLLECTOR_DISPLAY_NAMES = {
245
+ 'batch-requester': 'batch-requester (new)',
246
+ 'send-batch-request': 'send-batch-request (old)'
247
+ };
248
+ /**
249
+ * Benchmark timing constants.
250
+ */ export const BENCHMARK_CONSTANTS = {
251
+ /** Time to wait for peers to connect before starting benchmark */ PEER_DISCOVERY_WAIT_MS: 10_000,
252
+ /** Maximum time to wait for peer connections */ MAX_PEER_WAIT_MS: 60_000,
253
+ /** Interval between peer connection checks */ PEER_CHECK_INTERVAL_MS: 500,
254
+ /** Default worker ready timeout */ WORKER_READY_TIMEOUT_MS: 30_000,
255
+ /** Graceful shutdown timeout before force kill */ GRACEFUL_SHUTDOWN_TIMEOUT_MS: 5_000,
256
+ /** Overall cleanup timeout */ CLEANUP_TIMEOUT_MS: 10_000,
257
+ /** Buffer time for internal timeout to ensure we return before outer timeout */ TIMEOUT_BUFFER_MS: 5_000,
258
+ /** Minimum internal timeout regardless of buffer */ MIN_INTERNAL_TIMEOUT_MS: 1_000,
259
+ /** Fixed max peers for fair benchmarking */ FIXED_MAX_PEERS: 10,
260
+ /** Fixed max retry attempts for fair benchmarking */ FIXED_MAX_RETRY_ATTEMPTS: 3,
261
+ /** LMDB map size for temp stores used in benchmarks (in KB). */ KV_STORE_MAP_SIZE_KB: 256 * 1024
262
+ };
263
+ /**
264
+ * Filters transactions based on distribution pattern for benchmark responders.
265
+ *
266
+ * @param allTxs - All transactions to filter
267
+ * @param peerIndex - Index of the current peer (0 = aggregator)
268
+ * @param peerCount - Total number of peers
269
+ * @param distribution - Distribution pattern to apply
270
+ * @param pinnedPeerIndex - Index of the pinned peer (for pinned-only distribution)
271
+ * @returns Filtered transactions for this peer
272
+ */ export function filterTxsByDistribution(allTxs, peerIndex, peerCount, distribution, pinnedPeerIndex = 1) {
273
+ if (peerIndex === 0) {
274
+ return [];
275
+ }
276
+ const responderCount = peerCount - 1;
277
+ switch(distribution){
278
+ case 'uniform':
279
+ return allTxs;
280
+ case 'sparse':
281
+ {
282
+ const responderIndex = peerIndex - 1;
283
+ return allTxs.filter((_, txIndex)=>{
284
+ const bucket = txIndex % responderCount;
285
+ return bucket === responderIndex || bucket === (responderIndex + 1) % responderCount;
286
+ });
287
+ }
288
+ case 'pinned-only':
289
+ return peerIndex === pinnedPeerIndex ? allTxs : [];
290
+ }
291
+ }
292
+ /**
293
+ * Calculates the internal timeout for collector operations.
294
+ * Ensures we return before the outer timeout while maintaining a minimum.
295
+ */ export function calculateInternalTimeout(timeoutMs) {
296
+ return Math.max(timeoutMs - BENCHMARK_CONSTANTS.TIMEOUT_BUFFER_MS, BENCHMARK_CONSTANTS.MIN_INTERNAL_TIMEOUT_MS);
297
+ }
@@ -1,2 +1,28 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudF90ZXN0YmVuY2hfd29ya2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3AycF9jbGllbnRfdGVzdGJlbmNoX3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
1
+ import { type CollectorType, type DistributionPattern } from '../test-helpers/testbench-utils.js';
2
+ export type { DistributionPattern, CollectorType } from '../test-helpers/testbench-utils.js';
3
+ export { COLLECTOR_DISPLAY_NAMES } from '../test-helpers/testbench-utils.js';
4
+ export interface BenchReqRespCommand {
5
+ type: 'BENCH_REQRESP';
6
+ txCount: number;
7
+ peerCount: number;
8
+ distribution: DistributionPattern;
9
+ collectorType: CollectorType;
10
+ timeoutMs: number;
11
+ isAggregator: boolean;
12
+ peerIndex: number;
13
+ pinnedPeerIndex?: number;
14
+ pinnedPeerId?: string;
15
+ blockNumber: number;
16
+ seed: number;
17
+ }
18
+ export interface BenchResultMessage {
19
+ type: 'BENCH_RESULT';
20
+ durationMs: number;
21
+ fetchedCount: number;
22
+ success: boolean;
23
+ error?: string;
24
+ }
25
+ export interface BenchReadyMessage {
26
+ type: 'BENCH_READY';
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudF90ZXN0YmVuY2hfd29ya2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3AycF9jbGllbnRfdGVzdGJlbmNoX3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQ0EsT0FBTyxFQUVMLEtBQUssYUFBYSxFQUNsQixLQUFLLG1CQUFtQixFQU96QixNQUFNLG9DQUFvQyxDQUFDO0FBRzVDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU3RSxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLElBQUksRUFBRSxlQUFlLENBQUM7SUFDdEIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztJQUNsQyxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsWUFBWSxFQUFFLE9BQU8sQ0FBQztJQUN0QixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN6QixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEIsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQixJQUFJLEVBQUUsTUFBTSxDQUFDO0NBQ2Q7QUFFRCxNQUFNLFdBQVcsa0JBQWtCO0lBQ2pDLElBQUksRUFBRSxjQUFjLENBQUM7SUFDckIsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDakIsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2hCO0FBRUQsTUFBTSxXQUFXLGlCQUFpQjtJQUNoQyxJQUFJLEVBQUUsYUFBYSxDQUFDO0NBQ3JCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"p2p_client_testbench_worker.d.ts","sourceRoot":"","sources":["../../src/testbench/p2p_client_testbench_worker.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"p2p_client_testbench_worker.d.ts","sourceRoot":"","sources":["../../src/testbench/p2p_client_testbench_worker.ts"],"names":[],"mappings":"AA+CA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAOzB,MAAM,oCAAoC,CAAC;AAG5C,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;CACrB"}