@aztec/p2p 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2b2662070

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 (525) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +4 -3
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +4 -4
  5. package/dest/client/factory.d.ts +11 -11
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +60 -19
  8. package/dest/client/interface.d.ts +54 -34
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +43 -52
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +190 -226
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +22 -12
  14. package/dest/config.d.ts +134 -87
  15. package/dest/config.d.ts.map +1 -1
  16. package/dest/config.js +111 -40
  17. package/dest/errors/p2p-service.error.d.ts +9 -0
  18. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  19. package/dest/errors/p2p-service.error.js +10 -0
  20. package/dest/errors/tx-pool.error.d.ts +8 -0
  21. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  22. package/dest/errors/tx-pool.error.js +9 -0
  23. package/dest/index.d.ts +2 -2
  24. package/dest/index.d.ts.map +1 -1
  25. package/dest/index.js +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +106 -88
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.js +448 -3
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  32. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  33. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/index.js +1 -2
  35. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  37. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  38. package/dest/mem_pools/index.d.ts +3 -3
  39. package/dest/mem_pools/index.d.ts.map +1 -1
  40. package/dest/mem_pools/index.js +1 -1
  41. package/dest/mem_pools/instrumentation.d.ts +4 -2
  42. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  43. package/dest/mem_pools/instrumentation.js +18 -16
  44. package/dest/mem_pools/interface.d.ts +5 -5
  45. package/dest/mem_pools/interface.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  47. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  52. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  53. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  73. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  85. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  86. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  88. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  89. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  91. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +215 -0
  92. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +134 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +220 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +923 -0
  109. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  110. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  111. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  112. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -3
  113. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  114. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +9 -4
  115. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  116. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  117. package/dest/msg_validators/clock_tolerance.js +54 -3
  118. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +7 -4
  119. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  120. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  121. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +7 -4
  122. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  124. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +15 -8
  125. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/proposal_validator/proposal_validator.js +67 -47
  127. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  128. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  130. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  131. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  133. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  134. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  135. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  136. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  137. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  138. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  139. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  140. package/dest/msg_validators/tx_validator/block_header_validator.js +5 -4
  141. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  142. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  143. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  144. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  145. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  146. package/dest/msg_validators/tx_validator/data_validator.js +39 -3
  147. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  148. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  149. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  150. package/dest/msg_validators/tx_validator/factory.d.ts +135 -7
  151. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  152. package/dest/msg_validators/tx_validator/factory.js +247 -60
  153. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  154. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  155. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  156. package/dest/msg_validators/tx_validator/gas_validator.d.ts +68 -3
  157. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  158. package/dest/msg_validators/tx_validator/gas_validator.js +114 -44
  159. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  160. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  161. package/dest/msg_validators/tx_validator/index.js +2 -0
  162. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  163. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
  165. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  166. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  167. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  168. package/dest/msg_validators/tx_validator/phases_validator.d.ts +24 -3
  169. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
  171. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  172. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  174. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  175. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  177. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  178. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  179. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  180. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  181. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  182. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  183. package/dest/services/data_store.d.ts +1 -1
  184. package/dest/services/data_store.d.ts.map +1 -1
  185. package/dest/services/data_store.js +14 -10
  186. package/dest/services/discv5/discV5_service.js +1 -1
  187. package/dest/services/dummy_service.d.ts +17 -6
  188. package/dest/services/dummy_service.d.ts.map +1 -1
  189. package/dest/services/dummy_service.js +16 -5
  190. package/dest/services/encoding.d.ts +7 -3
  191. package/dest/services/encoding.d.ts.map +1 -1
  192. package/dest/services/encoding.js +18 -11
  193. package/dest/services/gossipsub/index.d.ts +3 -0
  194. package/dest/services/gossipsub/index.d.ts.map +1 -0
  195. package/dest/services/gossipsub/index.js +2 -0
  196. package/dest/services/gossipsub/scoring.d.ts +21 -3
  197. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  198. package/dest/services/gossipsub/scoring.js +24 -7
  199. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  200. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  201. package/dest/services/gossipsub/topic_score_params.js +363 -0
  202. package/dest/services/index.d.ts +2 -1
  203. package/dest/services/index.d.ts.map +1 -1
  204. package/dest/services/index.js +1 -0
  205. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  206. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  207. package/dest/services/libp2p/instrumentation.js +14 -3
  208. package/dest/services/libp2p/libp2p_service.d.ts +92 -50
  209. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  210. package/dest/services/libp2p/libp2p_service.js +558 -436
  211. package/dest/services/peer-manager/metrics.d.ts +4 -2
  212. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  213. package/dest/services/peer-manager/metrics.js +26 -5
  214. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  215. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  216. package/dest/services/peer-manager/peer_manager.js +39 -11
  217. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  218. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  219. package/dest/services/peer-manager/peer_scoring.js +65 -14
  220. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
  221. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  222. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +89 -112
  223. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  224. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  225. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  226. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  227. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  228. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  229. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  230. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  231. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  232. package/dest/services/reqresp/config.d.ts +3 -3
  233. package/dest/services/reqresp/config.d.ts.map +1 -1
  234. package/dest/services/reqresp/interface.d.ts +23 -9
  235. package/dest/services/reqresp/interface.d.ts.map +1 -1
  236. package/dest/services/reqresp/interface.js +23 -10
  237. package/dest/services/reqresp/metrics.d.ts +6 -5
  238. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  239. package/dest/services/reqresp/metrics.js +16 -5
  240. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  241. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  242. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +17 -12
  243. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +25 -14
  244. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  245. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +40 -24
  246. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  247. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  248. package/dest/services/reqresp/protocols/index.js +0 -1
  249. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  250. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  251. package/dest/services/reqresp/protocols/tx.js +21 -3
  252. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  253. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  254. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  255. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  256. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  257. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  258. package/dest/services/reqresp/reqresp.d.ts +4 -2
  259. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  260. package/dest/services/reqresp/reqresp.js +40 -15
  261. package/dest/services/service.d.ts +43 -4
  262. package/dest/services/service.d.ts.map +1 -1
  263. package/dest/services/tx_collection/config.d.ts +22 -4
  264. package/dest/services/tx_collection/config.d.ts.map +1 -1
  265. package/dest/services/tx_collection/config.js +49 -3
  266. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -8
  267. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  268. package/dest/services/tx_collection/fast_tx_collection.js +88 -88
  269. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  270. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  271. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  272. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  273. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  274. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  275. package/dest/services/tx_collection/index.d.ts +3 -2
  276. package/dest/services/tx_collection/index.d.ts.map +1 -1
  277. package/dest/services/tx_collection/index.js +1 -0
  278. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  279. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  280. package/dest/services/tx_collection/instrumentation.js +10 -2
  281. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -15
  282. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  283. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  284. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  285. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  286. package/dest/services/tx_collection/request_tracker.js +84 -0
  287. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  288. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  289. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  290. package/dest/services/tx_collection/tx_collection.d.ts +23 -13
  291. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  292. package/dest/services/tx_collection/tx_collection.js +75 -3
  293. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  294. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  295. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  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 +48 -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 +152 -0
  311. package/dest/services/tx_provider.d.ts +4 -4
  312. package/dest/services/tx_provider.d.ts.map +1 -1
  313. package/dest/services/tx_provider.js +9 -8
  314. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  315. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  316. package/dest/services/tx_provider_instrumentation.js +5 -5
  317. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  318. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  319. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  320. package/dest/test-helpers/mock-pubsub.d.ts +40 -6
  321. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  322. package/dest/test-helpers/mock-pubsub.js +139 -13
  323. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  324. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  325. package/dest/test-helpers/reqresp-nodes.js +5 -5
  326. package/dest/test-helpers/testbench-utils.d.ts +45 -38
  327. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  328. package/dest/test-helpers/testbench-utils.js +152 -62
  329. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  330. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  331. package/dest/testbench/p2p_client_testbench_worker.js +81 -29
  332. package/dest/testbench/worker_client_manager.d.ts +10 -1
  333. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  334. package/dest/testbench/worker_client_manager.js +55 -3
  335. package/dest/util.d.ts +3 -3
  336. package/dest/util.d.ts.map +1 -1
  337. package/package.json +14 -14
  338. package/src/bootstrap/bootstrap.ts +7 -4
  339. package/src/client/factory.ts +113 -37
  340. package/src/client/interface.ts +65 -35
  341. package/src/client/p2p_client.ts +228 -272
  342. package/src/client/test/tx_proposal_collector/README.md +4 -4
  343. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +35 -16
  344. package/src/config.ts +178 -45
  345. package/src/errors/p2p-service.error.ts +11 -0
  346. package/src/errors/tx-pool.error.ts +12 -0
  347. package/src/index.ts +1 -1
  348. package/src/mem_pools/attestation_pool/attestation_pool.ts +501 -91
  349. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  350. package/src/mem_pools/attestation_pool/index.ts +9 -2
  351. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  352. package/src/mem_pools/index.ts +2 -2
  353. package/src/mem_pools/instrumentation.ts +19 -14
  354. package/src/mem_pools/interface.ts +4 -4
  355. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  356. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  357. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  358. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  359. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  360. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  361. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  362. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  363. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  364. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  365. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  366. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  367. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  368. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  369. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  370. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  371. package/src/mem_pools/tx_pool_v2/interfaces.ts +247 -0
  372. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +343 -0
  373. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  374. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  375. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  376. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1105 -0
  377. package/src/msg_validators/attestation_validator/README.md +49 -0
  378. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  379. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -5
  380. package/src/msg_validators/clock_tolerance.ts +72 -3
  381. package/src/msg_validators/proposal_validator/README.md +123 -0
  382. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +17 -4
  383. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +23 -7
  384. package/src/msg_validators/proposal_validator/proposal_validator.ts +79 -49
  385. package/src/msg_validators/tx_validator/README.md +119 -0
  386. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  387. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  388. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  389. package/src/msg_validators/tx_validator/archive_cache.ts +2 -2
  390. package/src/msg_validators/tx_validator/block_header_validator.ts +22 -11
  391. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  392. package/src/msg_validators/tx_validator/data_validator.ts +48 -3
  393. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  394. package/src/msg_validators/tx_validator/factory.ts +401 -69
  395. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  396. package/src/msg_validators/tx_validator/gas_validator.ts +154 -36
  397. package/src/msg_validators/tx_validator/index.ts +2 -0
  398. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  399. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  400. package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
  401. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  402. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
  403. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  404. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  405. package/src/services/data_store.ts +14 -19
  406. package/src/services/discv5/discV5_service.ts +1 -1
  407. package/src/services/dummy_service.ts +25 -7
  408. package/src/services/encoding.ts +18 -10
  409. package/src/services/gossipsub/README.md +641 -0
  410. package/src/services/gossipsub/index.ts +2 -0
  411. package/src/services/gossipsub/scoring.ts +29 -5
  412. package/src/services/gossipsub/topic_score_params.ts +519 -0
  413. package/src/services/index.ts +1 -0
  414. package/src/services/libp2p/instrumentation.ts +15 -2
  415. package/src/services/libp2p/libp2p_service.ts +595 -481
  416. package/src/services/peer-manager/metrics.ts +28 -4
  417. package/src/services/peer-manager/peer_manager.ts +45 -11
  418. package/src/services/peer-manager/peer_scoring.ts +56 -6
  419. package/src/services/reqresp/README.md +229 -0
  420. package/src/services/reqresp/batch-tx-requester/README.md +60 -21
  421. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +89 -122
  422. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  423. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  424. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  425. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  426. package/src/services/reqresp/config.ts +2 -2
  427. package/src/services/reqresp/interface.ts +45 -10
  428. package/src/services/reqresp/metrics.ts +33 -9
  429. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +24 -15
  430. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -24
  431. package/src/services/reqresp/protocols/index.ts +0 -1
  432. package/src/services/reqresp/protocols/tx.ts +23 -3
  433. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  434. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  435. package/src/services/reqresp/reqresp.ts +53 -16
  436. package/src/services/service.ts +57 -3
  437. package/src/services/tx_collection/config.ts +74 -6
  438. package/src/services/tx_collection/fast_tx_collection.ts +94 -97
  439. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  440. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  441. package/src/services/tx_collection/index.ts +2 -1
  442. package/src/services/tx_collection/instrumentation.ts +17 -2
  443. package/src/services/tx_collection/proposal_tx_collector.ts +21 -27
  444. package/src/services/tx_collection/request_tracker.ts +127 -0
  445. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  446. package/src/services/tx_collection/tx_collection.ts +114 -19
  447. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  448. package/src/services/tx_collection/tx_source.ts +28 -8
  449. package/src/services/tx_file_store/config.ts +37 -0
  450. package/src/services/tx_file_store/index.ts +3 -0
  451. package/src/services/tx_file_store/instrumentation.ts +36 -0
  452. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  453. package/src/services/tx_provider.ts +10 -9
  454. package/src/services/tx_provider_instrumentation.ts +11 -5
  455. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  456. package/src/test-helpers/mock-pubsub.ts +177 -14
  457. package/src/test-helpers/reqresp-nodes.ts +7 -9
  458. package/src/test-helpers/testbench-utils.ts +159 -74
  459. package/src/testbench/p2p_client_testbench_worker.ts +92 -32
  460. package/src/testbench/worker_client_manager.ts +68 -6
  461. package/src/util.ts +8 -2
  462. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  463. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  464. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  465. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  466. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  467. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  468. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  469. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  470. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  471. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  472. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  473. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  474. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  475. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  476. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  477. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  478. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  479. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  480. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  481. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  482. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  483. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  484. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  485. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  486. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  487. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  488. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  489. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  490. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  491. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  492. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  493. package/dest/mem_pools/tx_pool/index.js +0 -2
  494. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  495. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  496. package/dest/mem_pools/tx_pool/priority.js +0 -15
  497. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  498. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  499. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  500. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  501. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  502. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  503. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  504. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  505. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  506. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  507. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  508. package/dest/services/reqresp/protocols/block.js +0 -32
  509. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  510. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  511. package/src/mem_pools/tx_pool/README.md +0 -270
  512. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  513. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  514. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  515. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  516. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  517. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  518. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  519. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  520. package/src/mem_pools/tx_pool/index.ts +0 -2
  521. package/src/mem_pools/tx_pool/priority.ts +0 -20
  522. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  523. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  524. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  525. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -1,5 +1,6 @@
1
1
  // Request response metrics
2
- import { Attributes, Metrics } from '@aztec/telemetry-client';
2
+ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
3
+ import { ReqRespSubProtocol } from './interface.js';
3
4
  export class ReqRespMetrics {
4
5
  telemetryClient;
5
6
  tracer;
@@ -11,10 +12,20 @@ export class ReqRespMetrics {
11
12
  this.telemetryClient = telemetryClient;
12
13
  this.tracer = telemetryClient.getTracer(name);
13
14
  const meter = telemetryClient.getMeter(name);
14
- this.sentRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_SENT_REQUESTS);
15
- this.receivedRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_RECEIVED_REQUESTS);
16
- this.failedOutboundRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_FAILED_OUTBOUND_REQUESTS);
17
- this.failedInboundRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_FAILED_INBOUND_REQUESTS);
15
+ const protocolAttrs = {
16
+ [Attributes.P2P_REQ_RESP_PROTOCOL]: [
17
+ ReqRespSubProtocol.PING,
18
+ ReqRespSubProtocol.STATUS,
19
+ ReqRespSubProtocol.GOODBYE,
20
+ ReqRespSubProtocol.TX,
21
+ ReqRespSubProtocol.AUTH,
22
+ ReqRespSubProtocol.BLOCK_TXS
23
+ ]
24
+ };
25
+ this.sentRequests = createUpDownCounterWithDefault(meter, Metrics.P2P_REQ_RESP_SENT_REQUESTS, protocolAttrs);
26
+ this.receivedRequests = createUpDownCounterWithDefault(meter, Metrics.P2P_REQ_RESP_RECEIVED_REQUESTS, protocolAttrs);
27
+ this.failedOutboundRequests = createUpDownCounterWithDefault(meter, Metrics.P2P_REQ_RESP_FAILED_OUTBOUND_REQUESTS, protocolAttrs);
28
+ this.failedInboundRequests = createUpDownCounterWithDefault(meter, Metrics.P2P_REQ_RESP_FAILED_INBOUND_REQUESTS, protocolAttrs);
18
29
  }
19
30
  recordRequestSent(protocol) {
20
31
  this.sentRequests.add(1, {
@@ -1,11 +1,13 @@
1
- import type { AttestationPool } from '../../../../mem_pools/attestation_pool/attestation_pool.js';
2
- import type { TxPool } from '../../../../mem_pools/index.js';
1
+ import type { L2BlockSource } from '@aztec/stdlib/block';
2
+ import type { AttestationPoolApi } from '../../../../mem_pools/attestation_pool/attestation_pool.js';
3
+ import type { TxPoolV2 } from '../../../../mem_pools/tx_pool_v2/interfaces.js';
3
4
  import type { ReqRespSubProtocolHandler } from '../../interface.js';
4
5
  /**
5
6
  * Handler for block txs requests
6
7
  * @param attestationPool - the attestation pool to check for block proposals
7
- * @param mempools - the mempools containing the tx pool
8
+ * @param archiver - the archiver to look up blocks by archive root
9
+ * @param txPool - the tx pool to fetch transactions from
8
10
  * @returns the BlockTxs request handler
9
11
  */
10
- export declare function reqRespBlockTxsHandler(attestationPool: AttestationPool, txPool: TxPool): ReqRespSubProtocolHandler;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX2hhbmRsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDbEcsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtwRTs7Ozs7R0FLRztBQUNILHdCQUFnQixzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcseUJBQXlCLENBZ0RsSCJ9
12
+ export declare function reqRespBlockTxsHandler(attestationPool: AttestationPoolApi, archiver: L2BlockSource, txPool: TxPoolV2): ReqRespSubProtocolHandler;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX2hhbmRsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLekQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNyRyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBS3BFOzs7Ozs7R0FNRztBQUNILHdCQUFnQixzQkFBc0IsQ0FDcEMsZUFBZSxFQUFFLGtCQUFrQixFQUNuQyxRQUFRLEVBQUUsYUFBYSxFQUN2QixNQUFNLEVBQUUsUUFBUSxHQUNmLHlCQUF5QixDQW1EM0IifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"block_txs_handler.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAKpE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAgDlH"}
1
+ {"version":3,"file":"block_txs_handler.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAKpE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,kBAAkB,EACnC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,QAAQ,GACf,yBAAyB,CAmD3B"}
@@ -6,9 +6,10 @@ import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
6
6
  /**
7
7
  * Handler for block txs requests
8
8
  * @param attestationPool - the attestation pool to check for block proposals
9
- * @param mempools - the mempools containing the tx pool
9
+ * @param archiver - the archiver to look up blocks by archive root
10
+ * @param txPool - the tx pool to fetch transactions from
10
11
  * @returns the BlockTxs request handler
11
- */ export function reqRespBlockTxsHandler(attestationPool, txPool) {
12
+ */ export function reqRespBlockTxsHandler(attestationPool, archiver, txPool) {
12
13
  /**
13
14
  * Handler for block txs requests
14
15
  * @param msg - the block txs request message
@@ -23,30 +24,34 @@ import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
23
24
  cause: err
24
25
  });
25
26
  }
26
- const blockProposal = await attestationPool.getBlockProposal(request.blockHash.toString());
27
+ // First try attestation pool, then fall back to archiver
28
+ let txHashes = (await attestationPool.getBlockProposal(request.archiveRoot.toString()))?.txHashes;
29
+ if (!txHashes) {
30
+ txHashes = (await archiver.getL2BlockByArchive(request.archiveRoot))?.body.txEffects.map((effect)=>effect.txHash);
31
+ }
27
32
  let requestedTxsHashes;
28
33
  if (request.txHashes.length > 0) {
29
34
  requestedTxsHashes = request.txHashes;
30
35
  }
31
- // This is scenario in which we don't have this block proposal the peer is requesting from us
36
+ // This is scenario in which we don't have this block the peer is requesting from us
32
37
  // But peer has sent requested tx hashes, so we can send them the transactions
33
- if (!blockProposal && requestedTxsHashes !== undefined) {
38
+ if (!txHashes && requestedTxsHashes !== undefined) {
34
39
  const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter((tx)=>!!tx);
35
40
  const response = new BlockTxsResponse(Fr.zero(), new TxArray(...responseTxs), BitVector.init(0, []));
36
41
  return response.toBuffer();
37
42
  }
38
- // If don't have this block proposal and peer has not sent requested tx hashes
39
- if (!blockProposal) {
43
+ // If we don't have this block and peer has not sent requested tx hashes
44
+ if (!txHashes) {
40
45
  throw new ReqRespStatusError(ReqRespStatus.NOT_FOUND);
41
46
  }
42
- const txsAvailableInPool = await txPool.hasTxs(blockProposal.txHashes);
43
- //Map txs in the pool to their indices in the block proposal
47
+ const txsAvailableInPool = await txPool.hasTxs(txHashes);
48
+ // Map txs in the pool to their indices in the block
44
49
  const availableIndices = txsAvailableInPool.map((hasTx, idx)=>hasTx ? idx : -1).filter((idx)=>idx !== -1);
45
- const responseBitVector = BitVector.init(blockProposal.txHashes.length, availableIndices);
50
+ const responseBitVector = BitVector.init(txHashes.length, availableIndices);
46
51
  const requestedIndices = new Set(request.txIndices.getTrueIndices());
47
- requestedTxsHashes = blockProposal.txHashes.filter((_, idx)=>requestedIndices.has(idx));
52
+ requestedTxsHashes = txHashes.filter((_, idx)=>requestedIndices.has(idx));
48
53
  const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter((tx)=>!!tx);
49
- const response = new BlockTxsResponse(request.blockHash, new TxArray(...responseTxs), responseBitVector);
54
+ const response = new BlockTxsResponse(request.archiveRoot, new TxArray(...responseTxs), responseBitVector);
50
55
  return response.toBuffer();
51
56
  };
52
57
  }
@@ -1,26 +1,31 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { BufferReader } from '@aztec/foundation/serialize';
3
- import type { BlockProposal } from '@aztec/stdlib/p2p';
4
- import { TxArray, TxHash, TxHashArray } from '@aztec/stdlib/tx';
3
+ import { TxArray, type TxHash, TxHashArray } from '@aztec/stdlib/tx';
5
4
  import { BitVector } from './bitvector.js';
5
+ /** Minimal interface for a block source that provides tx hashes and an archive root. */
6
+ export interface BlockTxsSource {
7
+ txHashes: TxHash[];
8
+ archive: Fr;
9
+ }
6
10
  /**
7
11
  * Request message for requesting specific transactions from a block
8
12
  */
9
13
  export declare class BlockTxsRequest {
10
- readonly blockHash: Fr;
14
+ readonly archiveRoot: Fr;
11
15
  readonly txHashes: TxHashArray;
12
16
  readonly txIndices: BitVector;
13
- constructor(blockHash: Fr, txHashes: TxHashArray, txIndices: BitVector);
17
+ constructor(archiveRoot: Fr, txHashes: TxHashArray, txIndices: BitVector);
14
18
  /**
15
- * Crates new BlockTxsRequest given proposal and missing tx hashes
19
+ * Creates new BlockTxsRequest given a block txs source and missing tx hashes.
16
20
  *
17
- * @param: blockProposal - The block proposal for which we are making request
18
- * @param: missingTxHashes - Tx hashes from the proposal we are missing
19
- * @param: includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
21
+ * @param blockTxsSource - The block or proposal for which we are making the request
22
+ * @param missingTxHashes - Tx hashes from the source we are missing
23
+ * @param includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
20
24
  *
21
- * @returns undefined if there were no missingTxHashes matching BlockProposal hashes, otherwise
22
- * returns new BlockTxsRequest*/
23
- static fromBlockProposalAndMissingTxs(blockProposal: BlockProposal, missingTxHashes: TxHash[], includeFullTxHashes?: boolean): BlockTxsRequest | undefined;
25
+ * @returns undefined if there were no missingTxHashes matching the source hashes, otherwise
26
+ * returns new BlockTxsRequest
27
+ */
28
+ static fromTxsSourceAndMissingTxs(blockTxsSource: BlockTxsSource, missingTxHashes: TxHash[], includeFullTxHashes?: boolean): BlockTxsRequest | undefined;
24
29
  /**
25
30
  * Deserializes the BlockTxRequest object from a Buffer
26
31
  * @param buffer - Buffer or BufferReader object to deserialize
@@ -37,10 +42,10 @@ export declare class BlockTxsRequest {
37
42
  * Response message containing requested transactions from a block
38
43
  */
39
44
  export declare class BlockTxsResponse {
40
- readonly blockHash: Fr;
45
+ readonly archiveRoot: Fr;
41
46
  readonly txs: TxArray;
42
47
  readonly txIndices: BitVector;
43
- constructor(blockHash: Fr, txs: TxArray, txIndices: BitVector);
48
+ constructor(archiveRoot: Fr, txs: TxArray, txIndices: BitVector);
44
49
  /**
45
50
  * Deserializes the BlockTxResponse object from a Buffer
46
51
  * @param buffer - Buffer or BufferReader object to deserialize
@@ -56,4 +61,10 @@ export declare class BlockTxsResponse {
56
61
  toBuffer(): Buffer;
57
62
  static empty(): BlockTxsResponse;
58
63
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX3JlcXJlc3AuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX3JlcXJlc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDOztHQUVHO0FBQ0gscUJBQWEsZUFBZTtJQUd4QixRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUU7SUFFdEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXO0lBSzlCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUztJQVQvQixZQUVXLFNBQVMsRUFBRSxFQUFFLEVBRWIsUUFBUSxFQUFFLFdBQVcsRUFLckIsU0FBUyxFQUFFLFNBQVMsRUFDM0I7SUFFSjs7Ozs7Ozs7b0NBUWdDO0lBQ2hDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FDbkMsYUFBYSxFQUFFLGFBQWEsRUFDNUIsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUN6QixtQkFBbUIsVUFBUSxHQUMxQixlQUFlLEdBQUcsU0FBUyxDQW9CN0I7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxlQUFlLENBT2hFO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FFakI7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsZ0JBQWdCO0lBRXpCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRTtJQUN0QixRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU87SUFHckIsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTO0lBTC9CLFlBQ1csU0FBUyxFQUFFLEVBQUUsRUFDYixHQUFHLEVBQUUsT0FBTyxFQUdaLFNBQVMsRUFBRSxTQUFTLEVBQzNCO0lBRUo7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsZ0JBQWdCLENBT2pFO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLElBQUksTUFBTSxDQUVqQjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBRS9CO0NBQ0YifQ==
64
+ /**
65
+ * Calculate the expected response size for a BLOCK_TXS request.
66
+ * @param requestBuffer - The serialized request buffer containing BlockTxsRequest
67
+ * @returns Expected response size in KB
68
+ */
69
+ export declare function calculateBlockTxsResponseSize(requestBuffer: Buffer): number;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX3JlcXJlc3AuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX3JlcXJlc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0Msd0ZBQXdGO0FBQ3hGLE1BQU0sV0FBVyxjQUFjO0lBQzdCLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNuQixPQUFPLEVBQUUsRUFBRSxDQUFDO0NBQ2I7QUFFRDs7R0FFRztBQUNILHFCQUFhLGVBQWU7SUFHeEIsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFO0lBRXhCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsV0FBVztJQUs5QixRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVM7SUFUL0IsWUFFVyxXQUFXLEVBQUUsRUFBRSxFQUVmLFFBQVEsRUFBRSxXQUFXLEVBS3JCLFNBQVMsRUFBRSxTQUFTLEVBQzNCO0lBRUo7Ozs7Ozs7OztPQVNHO0lBQ0gsTUFBTSxDQUFDLDBCQUEwQixDQUMvQixjQUFjLEVBQUUsY0FBYyxFQUM5QixlQUFlLEVBQUUsTUFBTSxFQUFFLEVBQ3pCLG1CQUFtQixVQUFRLEdBQzFCLGVBQWUsR0FBRyxTQUFTLENBb0I3QjtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGVBQWUsQ0FPaEU7SUFFRDs7O09BR0c7SUFDSCxRQUFRLElBQUksTUFBTSxDQUVqQjtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxnQkFBZ0I7SUFFekIsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFO0lBQ3hCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTztJQUdyQixRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVM7SUFML0IsWUFDVyxXQUFXLEVBQUUsRUFBRSxFQUNmLEdBQUcsRUFBRSxPQUFPLEVBR1osU0FBUyxFQUFFLFNBQVMsRUFDM0I7SUFFSjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxnQkFBZ0IsQ0FPakU7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FFL0I7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsNkJBQTZCLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBUzNFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"block_txs_reqresp.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,eAAe;IAGxB,QAAQ,CAAC,SAAS,EAAE,EAAE;IAEtB,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAK9B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,YAEW,SAAS,EAAE,EAAE,EAEb,QAAQ,EAAE,WAAW,EAKrB,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;;;;;oCAQgC;IAChC,MAAM,CAAC,8BAA8B,CACnC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,EAAE,EACzB,mBAAmB,UAAQ,GAC1B,eAAe,GAAG,SAAS,CAoB7B;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAOhE;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;CACF;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,SAAS,EAAE,EAAE;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO;IAGrB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAL/B,YACW,SAAS,EAAE,EAAE,EACb,GAAG,EAAE,OAAO,EAGZ,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAOjE;IAED;;;;;OAKG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;CACF"}
1
+ {"version":3,"file":"block_txs_reqresp.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,wFAAwF;AACxF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,EAAE,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,eAAe;IAGxB,QAAQ,CAAC,WAAW,EAAE,EAAE;IAExB,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAK9B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,YAEW,WAAW,EAAE,EAAE,EAEf,QAAQ,EAAE,WAAW,EAKrB,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;;;;;;OASG;IACH,MAAM,CAAC,0BAA0B,CAC/B,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,MAAM,EAAE,EACzB,mBAAmB,UAAQ,GAC1B,eAAe,GAAG,SAAS,CAoB7B;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAOhE;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;CACF;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,WAAW,EAAE,EAAE;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO;IAGrB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAL/B,YACW,WAAW,EAAE,EAAE,EACf,GAAG,EAAE,OAAO,EAGZ,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAOjE;IAED;;;;;OAKG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;CACF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAS3E"}
@@ -1,45 +1,47 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
3
4
  import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
4
5
  import { BitVector } from './bitvector.js';
5
6
  /**
6
7
  * Request message for requesting specific transactions from a block
7
8
  */ export class BlockTxsRequest {
8
- blockHash;
9
+ archiveRoot;
9
10
  txHashes;
10
11
  txIndices;
11
- constructor(// 32 byte hash of the proposed block header
12
- blockHash, // Hashes of txs we are requesting
12
+ constructor(// Archive root after the proposed block is applied (proposal identifier)
13
+ archiveRoot, // Hashes of txs we are requesting
13
14
  txHashes, // BitVector indicating which txs from the proposal we are requesting
14
15
  // 1 means we want the tx, 0 means we don't
15
16
  // If we know peer has the Block Proposal then we can use this BitVector
16
17
  // Otherwise we can use this optimization
17
18
  txIndices){
18
- this.blockHash = blockHash;
19
+ this.archiveRoot = archiveRoot;
19
20
  this.txHashes = txHashes;
20
21
  this.txIndices = txIndices;
21
22
  }
22
23
  /**
23
- * Crates new BlockTxsRequest given proposal and missing tx hashes
24
+ * Creates new BlockTxsRequest given a block txs source and missing tx hashes.
24
25
  *
25
- * @param: blockProposal - The block proposal for which we are making request
26
- * @param: missingTxHashes - Tx hashes from the proposal we are missing
27
- * @param: includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
26
+ * @param blockTxsSource - The block or proposal for which we are making the request
27
+ * @param missingTxHashes - Tx hashes from the source we are missing
28
+ * @param includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
28
29
  *
29
- * @returns undefined if there were no missingTxHashes matching BlockProposal hashes, otherwise
30
- * returns new BlockTxsRequest*/ static fromBlockProposalAndMissingTxs(blockProposal, missingTxHashes, includeFullTxHashes = false) {
30
+ * @returns undefined if there were no missingTxHashes matching the source hashes, otherwise
31
+ * returns new BlockTxsRequest
32
+ */ static fromTxsSourceAndMissingTxs(blockTxsSource, missingTxHashes, includeFullTxHashes = false) {
31
33
  if (missingTxHashes.length === 0) {
32
34
  return undefined; // No missing txs to request
33
35
  }
34
36
  const missingHashesSet = new Set(missingTxHashes.map((t)=>t.toString()));
35
- // We cannot request txs that are not part of the block proposal
36
- if (!missingHashesSet.isSubsetOf(new Set(blockProposal.txHashes.map((t)=>t.toString())))) {
37
+ // We cannot request txs that are not part of the block
38
+ if (!missingHashesSet.isSubsetOf(new Set(blockTxsSource.txHashes.map((t)=>t.toString())))) {
37
39
  return undefined;
38
40
  }
39
- const missingIndices = blockProposal.txHashes.map((hash, idx)=>missingHashesSet.has(hash.toString()) ? idx : -1).filter((i)=>i != -1);
40
- const requestBitVector = BitVector.init(blockProposal.txHashes.length, missingIndices);
41
+ const missingIndices = blockTxsSource.txHashes.map((hash, idx)=>missingHashesSet.has(hash.toString()) ? idx : -1).filter((i)=>i != -1);
42
+ const requestBitVector = BitVector.init(blockTxsSource.txHashes.length, missingIndices);
41
43
  const hashes = includeFullTxHashes ? new TxHashArray(...missingTxHashes) : new TxHashArray();
42
- return new BlockTxsRequest(blockProposal.archive, hashes, requestBitVector);
44
+ return new BlockTxsRequest(blockTxsSource.archive, hashes, requestBitVector);
43
45
  }
44
46
  /**
45
47
  * Deserializes the BlockTxRequest object from a Buffer
@@ -47,17 +49,17 @@ import { BitVector } from './bitvector.js';
47
49
  * @returns An instance of BlockTxRequest
48
50
  */ static fromBuffer(buffer) {
49
51
  const reader = BufferReader.asReader(buffer);
50
- const blockHash = Fr.fromBuffer(reader);
52
+ const archiveRoot = Fr.fromBuffer(reader);
51
53
  const txHashes = TxHashArray.fromBuffer(reader);
52
54
  const txIndices = BitVector.fromBuffer(reader);
53
- return new BlockTxsRequest(blockHash, txHashes, txIndices);
55
+ return new BlockTxsRequest(archiveRoot, txHashes, txIndices);
54
56
  }
55
57
  /**
56
58
  * Serializes the BlockTxRequest object into a Buffer
57
59
  * @returns Buffer representation of the BlockTxRequest object
58
60
  */ toBuffer() {
59
61
  return serializeToBuffer([
60
- this.blockHash,
62
+ this.archiveRoot,
61
63
  this.txHashes.toBuffer(),
62
64
  this.txIndices.toBuffer()
63
65
  ]);
@@ -66,13 +68,13 @@ import { BitVector } from './bitvector.js';
66
68
  /**
67
69
  * Response message containing requested transactions from a block
68
70
  */ export class BlockTxsResponse {
69
- blockHash;
71
+ archiveRoot;
70
72
  txs;
71
73
  txIndices;
72
- constructor(blockHash, txs, // BitVector indicating which txs from the proposal are available at the peer
74
+ constructor(archiveRoot, txs, // BitVector indicating which txs from the proposal are available at the peer
73
75
  // 1 means the tx is available, 0 means it is not
74
76
  txIndices){
75
- this.blockHash = blockHash;
77
+ this.archiveRoot = archiveRoot;
76
78
  this.txs = txs;
77
79
  this.txIndices = txIndices;
78
80
  }
@@ -82,10 +84,10 @@ import { BitVector } from './bitvector.js';
82
84
  * @returns An instance of BlockTxResponse
83
85
  */ static fromBuffer(buffer) {
84
86
  const reader = BufferReader.asReader(buffer);
85
- const blockHash = Fr.fromBuffer(reader);
87
+ const archiveRoot = Fr.fromBuffer(reader);
86
88
  const txs = TxArray.fromBuffer(reader);
87
89
  const txIndices = BitVector.fromBuffer(reader);
88
- return new BlockTxsResponse(blockHash, txs, txIndices);
90
+ return new BlockTxsResponse(archiveRoot, txs, txIndices);
89
91
  }
90
92
  /**
91
93
  * Serializes the BlockTxResponse object into a Buffer
@@ -94,7 +96,7 @@ import { BitVector } from './bitvector.js';
94
96
  * @returns Buffer representation of the BlockTxResponse object
95
97
  */ toBuffer() {
96
98
  return serializeToBuffer([
97
- this.blockHash,
99
+ this.archiveRoot,
98
100
  this.txs.toBuffer(),
99
101
  this.txIndices.toBuffer()
100
102
  ]);
@@ -103,3 +105,17 @@ import { BitVector } from './bitvector.js';
103
105
  return new BlockTxsResponse(Fr.ZERO, new TxArray(), BitVector.init(0, []));
104
106
  }
105
107
  }
108
+ /**
109
+ * Calculate the expected response size for a BLOCK_TXS request.
110
+ * @param requestBuffer - The serialized request buffer containing BlockTxsRequest
111
+ * @returns Expected response size in KB
112
+ */ export function calculateBlockTxsResponseSize(requestBuffer) {
113
+ try {
114
+ const request = BlockTxsRequest.fromBuffer(requestBuffer);
115
+ const requestedTxCount = request.txIndices.getTrueIndices().length;
116
+ return requestedTxCount * MAX_TX_SIZE_KB + 1; // +1 KB overhead for serialization
117
+ } catch {
118
+ // If we can't parse the request, fall back to allowing a single transaction response
119
+ return MAX_TX_SIZE_KB + 1;
120
+ }
121
+ }
@@ -5,7 +5,6 @@ export * from './ping.js';
5
5
  export * from './status.js';
6
6
  export * from './tx.js';
7
7
  export * from './goodbye.js';
8
- export * from './block.js';
9
8
  export * from './auth.js';
10
9
  export * from './block_txs/index.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsc0JBQXNCLENBQUMifQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsc0JBQXNCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC"}
@@ -4,6 +4,5 @@
4
4
  export * from './status.js';
5
5
  export * from './tx.js';
6
6
  export * from './goodbye.js';
7
- export * from './block.js';
8
7
  export * from './auth.js';
9
8
  export * from './block_txs/index.js';
@@ -20,4 +20,10 @@ export declare function reqRespTxHandler(mempools: MemPools): ReqRespSubProtocol
20
20
  * we define Q as max number of transactions per batch, the comment explains why we use 8.
21
21
  */
22
22
  export declare function chunkTxHashesRequest(hashes: TxHash[], chunkSize?: number): Array<TxHashArray>;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy90eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVcsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakU7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLHlCQUF5QixDQXdCOUU7QUFFRDs7Ozs7Ozs7R0FRRztBQUdILHdCQUFnQixvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxTQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUV4RiJ9
23
+ /**
24
+ * Calculate the expected response size for a TX request.
25
+ * @param requestBuffer - The serialized request buffer containing TxHashArray
26
+ * @returns Expected response size in KB
27
+ */
28
+ export declare function calculateTxResponseSize(requestBuffer: Buffer): number;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy90eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQVcsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakU7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLHlCQUF5QixDQXdCOUU7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxTQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUV4RjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsdUJBQXVCLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBY3JFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/tx.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,yBAAyB,CAwB9E;AAED;;;;;;;;GAQG;AAGH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,SAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAExF"}
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/tx.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,yBAAyB,CAwB9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,SAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAExF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAcrE"}
@@ -1,4 +1,5 @@
1
1
  import { chunk } from '@aztec/foundation/collection';
2
+ import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
2
3
  import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
3
4
  import { ReqRespStatus, ReqRespStatusError } from '../status.js';
4
5
  /**
@@ -41,8 +42,25 @@ import { ReqRespStatus, ReqRespStatusError } from '../status.js';
41
42
  * @param chunkSize - The size of each chunk. Default is 8. Reasoning:
42
43
  * Per: https://github.com/AztecProtocol/aztec-packages/issues/15149#issuecomment-2999054485
43
44
  * we define Q as max number of transactions per batch, the comment explains why we use 8.
44
- */ //TODO: (mralj) chunk size should by default be 8, this is just temporary until the protocol is implemented correctly
45
- //more info: https://github.com/AztecProtocol/aztec-packages/pull/15516#pullrequestreview-2995474321
46
- export function chunkTxHashesRequest(hashes, chunkSize = 1) {
45
+ */ export function chunkTxHashesRequest(hashes, chunkSize = 8) {
47
46
  return chunk(hashes, chunkSize).map((chunk)=>new TxHashArray(...chunk));
48
47
  }
48
+ /**
49
+ * Calculate the expected response size for a TX request.
50
+ * @param requestBuffer - The serialized request buffer containing TxHashArray
51
+ * @returns Expected response size in KB
52
+ */ export function calculateTxResponseSize(requestBuffer) {
53
+ try {
54
+ const txHashes = TxHashArray.fromBuffer(requestBuffer);
55
+ // TxHashArray.fromBuffer returns empty array on parse failure, so check for that
56
+ if (txHashes.length === 0 && requestBuffer.length > 0) {
57
+ // If we got an empty array but had a non-empty buffer, parsing likely failed
58
+ // Fall back to allowing a single transaction response
59
+ return MAX_TX_SIZE_KB + 1;
60
+ }
61
+ return Math.max(txHashes.length, 1) * MAX_TX_SIZE_KB + 1; // +1 KB overhead, at least 1 tx
62
+ } catch {
63
+ // If we can't parse the request, fall back to allowing a single transaction response
64
+ return MAX_TX_SIZE_KB + 1;
65
+ }
66
+ }
@@ -46,9 +46,10 @@ export declare function prettyPrintRateLimitStatus(status: RateLimitStatus): "Al
46
46
  * 2. Individual rate limits for each peer.
47
47
  *
48
48
  * How it works:
49
- * - When a request comes in, it first checks against the global rate limit.
50
- * - If the global limit allows, it then checks against the specific peer's rate limit.
51
- * - The request is only allowed if both the global and peer-specific limits allow it.
49
+ * - When a request comes in, it first checks against the peer's individual rate limit.
50
+ * - If the peer limit allows, it then checks against the global rate limit.
51
+ * - The request is only allowed if both the peer-specific and global limits allow it.
52
+ * - Checking peer limit first ensures a rate-limited peer cannot exhaust the global quota.
52
53
  * - It automatically creates and manages rate limiters for new peers as they make requests.
53
54
  * - It periodically cleans up rate limiters for inactive peers to conserve memory.
54
55
  *
@@ -101,4 +102,4 @@ export declare class RequestResponseRateLimiter {
101
102
  stop(): void;
102
103
  getRateLimits(protocol: ReqRespSubProtocol): ProtocolRateLimitQuota;
103
104
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9yYXRlLWxpbWl0ZXIvcmF0ZV9saW1pdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNaEg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxxQkFBYSxlQUFlO0lBRTFCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBUztJQUUxQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBUztJQUV2Qzs7O09BR0c7SUFDSCxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFJbEQ7SUFFRCxLQUFLLElBQUksT0FBTyxDQVVmO0NBQ0Y7QUFTRCxvQkFBWSxlQUFlO0lBQ3pCLFlBQVksSUFBQTtJQUNaLFVBQVUsSUFBQTtJQUNWLE9BQU8sSUFBQTtDQUNSO0FBRUQsd0JBQWdCLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxlQUFlLDZDQVNqRTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILHFCQUFhLHNCQUFzQjtJQUNqQyxPQUFPLENBQUMsWUFBWSxDQUEyQztJQUMvRCxPQUFPLENBQUMsYUFBYSxDQUFrQjtJQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBUztJQUN4QyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBUztJQUV6QyxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUsvRztJQUVELEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FzQnJDO0lBRUQsb0JBQW9CLFNBT25CO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILHFCQUFhLDBCQUEwQjtJQU9uQyxPQUFPLENBQUMsV0FBVztJQU5yQixPQUFPLENBQUMsdUJBQXVCLENBQWtEO0lBQ2pGLE9BQU8sQ0FBQyxVQUFVLENBQStCO0lBRWpELE9BQU8sQ0FBQyxlQUFlLENBQXlDO0lBRWhFLFlBQ1UsV0FBVyxFQUFFLFdBQVcsRUFDaEMsVUFBVSxHQUFFLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBTSxFQWdCdkQ7SUFFRCxLQUFLLFNBSUo7SUFFRCxLQUFLLENBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsZUFBZSxDQVd0RTtJQUVELG9CQUFvQixTQUVuQjtJQUVEOztPQUVHO0lBQ0gsSUFBSSxTQUVIO0lBRUQsYUFBYSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FFbEU7Q0FDRiJ9
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9yYXRlLWxpbWl0ZXIvcmF0ZV9saW1pdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNaEg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxxQkFBYSxlQUFlO0lBRTFCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBUztJQUUxQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBUztJQUV2Qzs7O09BR0c7SUFDSCxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFJbEQ7SUFFRCxLQUFLLElBQUksT0FBTyxDQVVmO0NBQ0Y7QUFTRCxvQkFBWSxlQUFlO0lBQ3pCLFlBQVksSUFBQTtJQUNaLFVBQVUsSUFBQTtJQUNWLE9BQU8sSUFBQTtDQUNSO0FBRUQsd0JBQWdCLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxlQUFlLDZDQVNqRTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gscUJBQWEsc0JBQXNCO0lBQ2pDLE9BQU8sQ0FBQyxZQUFZLENBQTJDO0lBQy9ELE9BQU8sQ0FBQyxhQUFhLENBQWtCO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFTO0lBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFTO0lBRXpDLFlBQVksY0FBYyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBSy9HO0lBRUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsZUFBZSxDQXlCckM7SUFFRCxvQkFBb0IsU0FPbkI7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gscUJBQWEsMEJBQTBCO0lBT25DLE9BQU8sQ0FBQyxXQUFXO0lBTnJCLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBa0Q7SUFDakYsT0FBTyxDQUFDLFVBQVUsQ0FBK0I7SUFFakQsT0FBTyxDQUFDLGVBQWUsQ0FBeUM7SUFFaEUsWUFDVSxXQUFXLEVBQUUsV0FBVyxFQUNoQyxVQUFVLEdBQUUsT0FBTyxDQUFDLDRCQUE0QixDQUFNLEVBZ0J2RDtJQUVELEtBQUssU0FJSjtJQUVELEtBQUssQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxlQUFlLENBV3RFO0lBRUQsb0JBQW9CLFNBRW5CO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFNBRUg7SUFFRCxhQUFhLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLHNCQUFzQixDQUVsRTtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"rate_limiter.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limiter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAMhH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;IACH,YAAY,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAIlD;IAED,KAAK,IAAI,OAAO,CAUf;CACF;AASD,oBAAY,eAAe;IACzB,YAAY,IAAA;IACZ,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,6CASjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC,YAAY,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAK/G;IAED,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAsBrC;IAED,oBAAoB,SAOnB;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,0BAA0B;IAOnC,OAAO,CAAC,WAAW;IANrB,OAAO,CAAC,uBAAuB,CAAkD;IACjF,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,eAAe,CAAyC;IAEhE,YACU,WAAW,EAAE,WAAW,EAChC,UAAU,GAAE,OAAO,CAAC,4BAA4B,CAAM,EAgBvD;IAED,KAAK,SAIJ;IAED,KAAK,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAWtE;IAED,oBAAoB,SAEnB;IAED;;OAEG;IACH,IAAI,SAEH;IAED,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,sBAAsB,CAElE;CACF"}
1
+ {"version":3,"file":"rate_limiter.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limiter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAMhH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;IACH,YAAY,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAIlD;IAED,KAAK,IAAI,OAAO,CAUf;CACF;AASD,oBAAY,eAAe;IACzB,YAAY,IAAA;IACZ,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,6CASjE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC,YAAY,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAK/G;IAED,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAyBrC;IAED,oBAAoB,SAOnB;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,0BAA0B;IAOnC,OAAO,CAAC,WAAW;IANrB,OAAO,CAAC,uBAAuB,CAAkD;IACjF,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,eAAe,CAAyC;IAEhE,YACU,WAAW,EAAE,WAAW,EAChC,UAAU,GAAE,OAAO,CAAC,4BAA4B,CAAM,EAgBvD;IAED,KAAK,SAIJ;IAED,KAAK,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAWtE;IAED,oBAAoB,SAEnB;IAED;;OAEG;IACH,IAAI,SAEH;IAED,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,sBAAsB,CAElE;CACF"}
@@ -74,9 +74,10 @@ export function prettyPrintRateLimitStatus(status) {
74
74
  * 2. Individual rate limits for each peer.
75
75
  *
76
76
  * How it works:
77
- * - When a request comes in, it first checks against the global rate limit.
78
- * - If the global limit allows, it then checks against the specific peer's rate limit.
79
- * - The request is only allowed if both the global and peer-specific limits allow it.
77
+ * - When a request comes in, it first checks against the peer's individual rate limit.
78
+ * - If the peer limit allows, it then checks against the global rate limit.
79
+ * - The request is only allowed if both the peer-specific and global limits allow it.
80
+ * - Checking peer limit first ensures a rate-limited peer cannot exhaust the global quota.
80
81
  * - It automatically creates and manages rate limiters for new peers as they make requests.
81
82
  * - It periodically cleans up rate limiters for inactive peers to conserve memory.
82
83
  *
@@ -93,9 +94,6 @@ export function prettyPrintRateLimitStatus(status) {
93
94
  this.peerQuotaTimeMs = peerQuotaTimeMs;
94
95
  }
95
96
  allow(peerId) {
96
- if (!this.globalLimiter.allow()) {
97
- return 0;
98
- }
99
97
  const peerIdStr = peerId.toString();
100
98
  let peerLimiter = this.peerLimiters.get(peerIdStr);
101
99
  if (!peerLimiter) {
@@ -108,10 +106,14 @@ export function prettyPrintRateLimitStatus(status) {
108
106
  } else {
109
107
  peerLimiter.lastAccess = Date.now();
110
108
  }
111
- const peerLimitAllowed = peerLimiter.limiter.allow();
112
- if (!peerLimitAllowed) {
109
+ // Check peer limit first: a rate-limited peer must not consume global quota,
110
+ // otherwise one spamming peer can starve all others by exhausting the global bucket.
111
+ if (!peerLimiter.limiter.allow()) {
113
112
  return 1;
114
113
  }
114
+ if (!this.globalLimiter.allow()) {
115
+ return 0;
116
+ }
115
117
  return 2;
116
118
  }
117
119
  cleanupInactivePeers() {
@@ -1,3 +1,3 @@
1
1
  import { type ReqRespSubProtocolRateLimits } from '../interface.js';
2
2
  export declare const DEFAULT_RATE_LIMITS: ReqRespSubProtocolRateLimits;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3JhdGUtbGltaXRlci9yYXRlX2xpbWl0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLEtBQUssNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd4RixlQUFPLE1BQU0sbUJBQW1CLEVBQUUsNEJBdUVqQyxDQUFDIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3JhdGUtbGltaXRlci9yYXRlX2xpbWl0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLEtBQUssNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd4RixlQUFPLE1BQU0sbUJBQW1CLEVBQUUsNEJBNkRqQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"rate_limits.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAGxF,eAAO,MAAM,mBAAmB,EAAE,4BAuEjC,CAAC"}
1
+ {"version":3,"file":"rate_limits.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate-limiter/rate_limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAGxF,eAAO,MAAM,mBAAmB,EAAE,4BA6DjC,CAAC"}
@@ -41,16 +41,6 @@ export const DEFAULT_RATE_LIMITS = {
41
41
  quotaCount: 200
42
42
  }
43
43
  },
44
- [ReqRespSubProtocol.BLOCK]: {
45
- peerLimit: {
46
- quotaTimeMs: 1000,
47
- quotaCount: 2
48
- },
49
- globalLimit: {
50
- quotaTimeMs: 1000,
51
- quotaCount: 5
52
- }
53
- },
54
44
  [ReqRespSubProtocol.GOODBYE]: {
55
45
  peerLimit: {
56
46
  quotaTimeMs: 1000,
@@ -4,7 +4,7 @@ import type { Libp2p } from 'libp2p';
4
4
  import type { PeerScoring } from '../peer-manager/peer_scoring.js';
5
5
  import { type P2PReqRespConfig } from './config.js';
6
6
  import { ConnectionSampler } from './connection-sampler/connection_sampler.js';
7
- import { type ReqRespInterface, type ReqRespResponse, ReqRespSubProtocol, type ReqRespSubProtocolHandler, type ReqRespSubProtocolHandlers, type ReqRespSubProtocolRateLimits, type ReqRespSubProtocolValidators, type SubProtocolMap } from './interface.js';
7
+ import { type ReqRespInterface, type ReqRespResponse, ReqRespSubProtocol, type ReqRespSubProtocolHandler, type ReqRespSubProtocolHandlers, type ReqRespSubProtocolRateLimits, type ReqRespSubProtocolValidators, type ShouldRejectPeer, type SubProtocolMap } from './interface.js';
8
8
  /**
9
9
  * The Request Response Service
10
10
  *
@@ -30,9 +30,11 @@ export declare class ReqResp implements ReqRespInterface {
30
30
  private connectionSampler;
31
31
  private rateLimiter;
32
32
  private snappyTransform;
33
+ private shouldRejectPeer;
33
34
  private metrics;
34
35
  constructor(config: P2PReqRespConfig, libp2p: Libp2p, peerScoring: PeerScoring, logger?: import("@aztec/foundation/log").Logger, rateLimits?: Partial<ReqRespSubProtocolRateLimits>, telemetryClient?: TelemetryClient);
35
36
  updateConfig(config: Partial<P2PReqRespConfig>): void;
37
+ setShouldRejectPeer(checker: ShouldRejectPeer): void;
36
38
  get tracer(): import("@aztec/telemetry-client").Tracer;
37
39
  /**
38
40
  * Get the connection sampler instance
@@ -126,4 +128,4 @@ export declare class ReqResp implements ReqRespInterface {
126
128
  private categorizeResponseError;
127
129
  private categorizeConnectionErrors;
128
130
  }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvcmVxcmVzcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQWMsS0FBSyxlQUFlLEVBQWlDLE1BQU0seUJBQXlCLENBQUM7QUFFMUcsT0FBTyxLQUFLLEVBQXNCLE1BQU0sRUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQVVyQyxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBR0wsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLDRDQUE0QyxDQUFDO0FBQzlGLE9BQU8sRUFFTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLGVBQWUsRUFDcEIsa0JBQWtCLEVBQ2xCLEtBQUsseUJBQXlCLEVBQzlCLEtBQUssMEJBQTBCLEVBQy9CLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssY0FBYyxFQUVwQixNQUFNLGdCQUFnQixDQUFDO0FBU3hCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxxQkFBYSxPQUFRLFlBQVcsZ0JBQWdCO0lBZ0I1QyxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxNQUFNO0lBakJoQixPQUFPLENBQUMsMEJBQTBCLENBQWlEO0lBQ25GLE9BQU8sQ0FBQyxhQUFhLENBQTJDO0lBRWhFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBMkM7SUFDdEUsT0FBTyxDQUFDLHFCQUFxQixDQUE2QztJQUUxRSxPQUFPLENBQUMsaUJBQWlCLENBQW9CO0lBQzdDLE9BQU8sQ0FBQyxXQUFXLENBQTZCO0lBRWhELE9BQU8sQ0FBQyxlQUFlLENBQWtCO0lBRXpDLE9BQU8sQ0FBQyxPQUFPLENBQWlCO0lBRWhDLFlBQ0UsTUFBTSxFQUFFLGdCQUFnQixFQUNoQixNQUFNLEVBQUUsTUFBTSxFQUNkLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLE1BQU0seUNBQThCLEVBQzVDLFVBQVUsR0FBRSxPQUFPLENBQUMsNEJBQTRCLENBQU0sRUFDdEQsZUFBZSxHQUFFLGVBQXNDLEVBZ0J4RDtJQUVNLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQVEzRDtJQUVELElBQUksTUFBTSw2Q0FFVDtJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLHVDQUF1QyxDQUFDLENBRXZGO0lBRUQ7O09BRUc7SUFDRyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsNEJBQTRCLGlCQWdCL0c7SUFFSyxjQUFjLENBQ2xCLFdBQVcsRUFBRSxrQkFBa0IsRUFDL0IsT0FBTyxFQUFFLHlCQUF5QixFQUNsQyxTQUFTLEdBQUUsNEJBQTRCLENBQUMsa0JBQWtCLENBQWdELEdBQ3pHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FXZjtJQUVEOztPQUVHO0lBQ0csSUFBSSxrQkFrQlQ7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBUUcsZ0JBQWdCLENBQUMsV0FBVyxTQUFTLGtCQUFrQixFQUMzRCxXQUFXLEVBQUUsV0FBVyxFQUN4QixRQUFRLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQ2hFLFVBQVUsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUM5QixTQUFTLFNBQVEsRUFDakIsUUFBUSxTQUErQyxFQUN2RCxnQkFBZ0IsU0FBSSxHQUNuQixPQUFPLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FxTGxFO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXdCRztJQUtVLGlCQUFpQixDQUM1QixNQUFNLEVBQUUsTUFBTSxFQUNkLFdBQVcsRUFBRSxrQkFBa0IsRUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFDZixXQUFXLEdBQUUsTUFBMkIsR0FDdkMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQXFEMUI7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxPQUFPLENBQUMsbUJBQW1CO1lBY2IsV0FBVztZQWtFWCxhQUFhO1lBK0RiLGFBQWE7WUF3Q2IsWUFBWTtJQW1DMUIsT0FBTyxDQUFDLGtCQUFrQjtJQU8xQjs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLHNCQUFzQjtJQWlCOUI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyx1QkFBdUI7SUF5Qi9CLE9BQU8sQ0FBQywwQkFBMEI7Q0E4RG5DIn0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvcmVxcmVzcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQWMsS0FBSyxlQUFlLEVBQWlDLE1BQU0seUJBQXlCLENBQUM7QUFFMUcsT0FBTyxLQUFLLEVBQXNCLE1BQU0sRUFBVSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQVVyQyxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBR0wsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLDRDQUE0QyxDQUFDO0FBQzlGLE9BQU8sRUFFTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLGVBQWUsRUFDcEIsa0JBQWtCLEVBQ2xCLEtBQUsseUJBQXlCLEVBQzlCLEtBQUssMEJBQTBCLEVBQy9CLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssY0FBYyxFQUlwQixNQUFNLGdCQUFnQixDQUFDO0FBU3hCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxxQkFBYSxPQUFRLFlBQVcsZ0JBQWdCO0lBa0I1QyxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxNQUFNO0lBbkJoQixPQUFPLENBQUMsMEJBQTBCLENBQWlEO0lBQ25GLE9BQU8sQ0FBQyxhQUFhLENBQTJDO0lBRWhFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBMkM7SUFDdEUsT0FBTyxDQUFDLHFCQUFxQixDQUE2QztJQUUxRSxPQUFPLENBQUMsaUJBQWlCLENBQW9CO0lBQzdDLE9BQU8sQ0FBQyxXQUFXLENBQTZCO0lBRWhELE9BQU8sQ0FBQyxlQUFlLENBQWtCO0lBRXpDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBK0I7SUFFdkQsT0FBTyxDQUFDLE9BQU8sQ0FBaUI7SUFFaEMsWUFDRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsV0FBVyxFQUFFLFdBQVcsRUFDeEIsTUFBTSx5Q0FBOEIsRUFDNUMsVUFBVSxHQUFFLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBTSxFQUN0RCxlQUFlLEdBQUUsZUFBc0MsRUFnQnhEO0lBRU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBUTNEO0lBRU0sbUJBQW1CLENBQUMsT0FBTyxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FFMUQ7SUFFRCxJQUFJLE1BQU0sNkNBRVQ7SUFFRDs7T0FFRztJQUNILG9CQUFvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSx1Q0FBdUMsQ0FBQyxDQUV2RjtJQUVEOztPQUVHO0lBQ0csS0FBSyxDQUFDLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLDRCQUE0QixpQkFnQi9HO0lBRUssY0FBYyxDQUNsQixXQUFXLEVBQUUsa0JBQWtCLEVBQy9CLE9BQU8sRUFBRSx5QkFBeUIsRUFDbEMsU0FBUyxHQUFFLDRCQUE0QixDQUFDLGtCQUFrQixDQUFnRCxHQUN6RyxPQUFPLENBQUMsSUFBSSxDQUFDLENBV2Y7SUFFRDs7T0FFRztJQUNHLElBQUksa0JBa0JUO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQVFHLGdCQUFnQixDQUFDLFdBQVcsU0FBUyxrQkFBa0IsRUFDM0QsV0FBVyxFQUFFLFdBQVcsRUFDeEIsUUFBUSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUNoRSxVQUFVLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFDOUIsU0FBUyxTQUFRLEVBQ2pCLFFBQVEsU0FBK0MsRUFDdkQsZ0JBQWdCLFNBQUksR0FDbkIsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBcUxsRTtJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFLVSxpQkFBaUIsQ0FDNUIsTUFBTSxFQUFFLE1BQU0sRUFDZCxXQUFXLEVBQUUsa0JBQWtCLEVBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQ2YsV0FBVyxHQUFFLE1BQTJCLEdBQ3ZDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0EyRDFCO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsT0FBTyxDQUFDLG1CQUFtQjtZQWlCYixXQUFXO1lBNERYLGFBQWE7WUEwRWIsYUFBYTtZQXdDYixZQUFZO0lBbUMxQixPQUFPLENBQUMsa0JBQWtCO0lBTzFCOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsc0JBQXNCO0lBaUI5Qjs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLHVCQUF1QjtJQXVDL0IsT0FBTyxDQUFDLDBCQUEwQjtDQThEbkMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"reqresp.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/reqresp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reqresp.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/reqresp.ts"],"names":[],"mappings":"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"}