@aztec/p2p 0.0.1-commit.fcb71a6 → 0.0.1-commit.ff7989d6c

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 (524) 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 +7 -6
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +53 -14
  7. package/dest/client/interface.d.ts +58 -25
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +46 -51
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +601 -259
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  18. package/dest/config.d.ts +35 -7
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +23 -9
  21. package/dest/errors/tx-pool.error.d.ts +8 -0
  22. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  23. package/dest/errors/tx-pool.error.js +9 -0
  24. package/dest/index.d.ts +2 -1
  25. package/dest/index.d.ts.map +1 -1
  26. package/dest/index.js +1 -0
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +111 -76
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +527 -287
  33. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  34. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/index.js +1 -2
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts +9 -6
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/mocks.js +16 -12
  39. package/dest/mem_pools/index.d.ts +3 -2
  40. package/dest/mem_pools/index.d.ts.map +1 -1
  41. package/dest/mem_pools/index.js +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +5 -14
  45. package/dest/mem_pools/interface.d.ts +5 -5
  46. package/dest/mem_pools/interface.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  51. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  53. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  54. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  56. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  57. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  62. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  65. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  66. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  68. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  70. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  71. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  73. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  74. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  76. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  77. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  109. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  110. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  111. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  112. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  113. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  114. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  115. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +211 -0
  116. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  117. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
  121. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  122. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  123. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  124. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  125. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  126. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
  127. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  128. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  129. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +896 -0
  133. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  134. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  135. package/dest/msg_validators/attestation_validator/attestation_validator.js +51 -18
  136. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
  137. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  138. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  139. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  140. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  141. package/dest/msg_validators/clock_tolerance.js +37 -0
  142. package/dest/msg_validators/index.d.ts +2 -2
  143. package/dest/msg_validators/index.d.ts.map +1 -1
  144. package/dest/msg_validators/index.js +1 -1
  145. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  146. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  147. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  148. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  149. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  150. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  151. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  152. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  153. package/dest/msg_validators/proposal_validator/index.js +3 -0
  154. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  155. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  156. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  157. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  158. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  159. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  160. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  161. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  163. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  165. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  166. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  167. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  168. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  169. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  171. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  172. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  174. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  175. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/factory.js +21 -11
  177. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  178. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  179. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  180. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  181. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  182. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  183. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  184. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  185. package/dest/msg_validators/tx_validator/index.js +1 -0
  186. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  187. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  188. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  189. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  190. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  191. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  192. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  193. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  194. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  195. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  196. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  197. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  198. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  199. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  200. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  201. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  202. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  203. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  204. package/dest/services/data_store.d.ts +1 -1
  205. package/dest/services/data_store.d.ts.map +1 -1
  206. package/dest/services/data_store.js +10 -6
  207. package/dest/services/discv5/discV5_service.js +1 -1
  208. package/dest/services/dummy_service.d.ts +28 -3
  209. package/dest/services/dummy_service.d.ts.map +1 -1
  210. package/dest/services/dummy_service.js +51 -0
  211. package/dest/services/encoding.d.ts +2 -2
  212. package/dest/services/encoding.d.ts.map +1 -1
  213. package/dest/services/encoding.js +9 -7
  214. package/dest/services/gossipsub/index.d.ts +3 -0
  215. package/dest/services/gossipsub/index.d.ts.map +1 -0
  216. package/dest/services/gossipsub/index.js +2 -0
  217. package/dest/services/gossipsub/scoring.d.ts +21 -3
  218. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  219. package/dest/services/gossipsub/scoring.js +24 -7
  220. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  221. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  222. package/dest/services/gossipsub/topic_score_params.js +346 -0
  223. package/dest/services/index.d.ts +2 -1
  224. package/dest/services/index.d.ts.map +1 -1
  225. package/dest/services/index.js +1 -0
  226. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  227. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  228. package/dest/services/libp2p/instrumentation.js +30 -72
  229. package/dest/services/libp2p/libp2p_service.d.ts +106 -33
  230. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  231. package/dest/services/libp2p/libp2p_service.js +984 -317
  232. package/dest/services/peer-manager/metrics.d.ts +2 -2
  233. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  234. package/dest/services/peer-manager/metrics.js +21 -26
  235. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  236. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  237. package/dest/services/peer-manager/peer_manager.js +0 -10
  238. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  239. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  240. package/dest/services/peer-manager/peer_scoring.js +32 -6
  241. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  242. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  243. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +562 -0
  244. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  245. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  246. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  247. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  248. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  249. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  250. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  251. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  252. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  253. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  254. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  255. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  256. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  257. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  258. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  259. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  260. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  261. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  262. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  263. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  264. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  265. package/dest/services/reqresp/constants.d.ts +12 -0
  266. package/dest/services/reqresp/constants.d.ts.map +1 -0
  267. package/dest/services/reqresp/constants.js +7 -0
  268. package/dest/services/reqresp/interface.d.ts +12 -1
  269. package/dest/services/reqresp/interface.d.ts.map +1 -1
  270. package/dest/services/reqresp/interface.js +15 -1
  271. package/dest/services/reqresp/metrics.d.ts +6 -5
  272. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  273. package/dest/services/reqresp/metrics.js +17 -21
  274. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  275. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  276. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  277. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  278. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  279. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  280. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  281. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  282. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  283. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  284. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  285. package/dest/services/reqresp/protocols/status.js +4 -1
  286. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  287. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/tx.js +20 -0
  289. package/dest/services/reqresp/reqresp.d.ts +6 -1
  290. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  291. package/dest/services/reqresp/reqresp.js +471 -50
  292. package/dest/services/service.d.ts +55 -3
  293. package/dest/services/service.d.ts.map +1 -1
  294. package/dest/services/tx_collection/config.d.ts +22 -1
  295. package/dest/services/tx_collection/config.d.ts.map +1 -1
  296. package/dest/services/tx_collection/config.js +55 -1
  297. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  298. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  299. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  300. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  301. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  302. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  303. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  304. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  305. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  306. package/dest/services/tx_collection/index.d.ts +3 -1
  307. package/dest/services/tx_collection/index.d.ts.map +1 -1
  308. package/dest/services/tx_collection/index.js +2 -0
  309. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  310. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  311. package/dest/services/tx_collection/instrumentation.js +11 -13
  312. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  313. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  314. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  315. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  316. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  317. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  318. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
  319. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  320. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  321. package/dest/services/tx_collection/tx_collection.d.ts +29 -16
  322. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  323. package/dest/services/tx_collection/tx_collection.js +79 -7
  324. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  325. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  326. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  327. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  328. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  329. package/dest/services/tx_collection/tx_source.js +19 -2
  330. package/dest/services/tx_file_store/config.d.ts +16 -0
  331. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  332. package/dest/services/tx_file_store/config.js +22 -0
  333. package/dest/services/tx_file_store/index.d.ts +4 -0
  334. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  335. package/dest/services/tx_file_store/index.js +3 -0
  336. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  337. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  338. package/dest/services/tx_file_store/instrumentation.js +29 -0
  339. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  340. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  341. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  342. package/dest/services/tx_provider.d.ts +5 -5
  343. package/dest/services/tx_provider.d.ts.map +1 -1
  344. package/dest/services/tx_provider.js +5 -4
  345. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  346. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  347. package/dest/services/tx_provider_instrumentation.js +7 -20
  348. package/dest/test-helpers/index.d.ts +3 -1
  349. package/dest/test-helpers/index.d.ts.map +1 -1
  350. package/dest/test-helpers/index.js +2 -0
  351. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  352. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  353. package/dest/test-helpers/mock-pubsub.d.ts +29 -2
  354. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  355. package/dest/test-helpers/mock-pubsub.js +103 -2
  356. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  357. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  358. package/dest/test-helpers/reqresp-nodes.js +2 -1
  359. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  360. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  361. package/dest/test-helpers/test_tx_provider.js +41 -0
  362. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  363. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  364. package/dest/test-helpers/testbench-utils.js +366 -0
  365. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  366. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  367. package/dest/testbench/p2p_client_testbench_worker.js +221 -127
  368. package/dest/testbench/worker_client_manager.d.ts +51 -6
  369. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  370. package/dest/testbench/worker_client_manager.js +226 -39
  371. package/dest/util.d.ts +2 -2
  372. package/dest/util.d.ts.map +1 -1
  373. package/package.json +16 -16
  374. package/src/bootstrap/bootstrap.ts +7 -4
  375. package/src/client/factory.ts +96 -24
  376. package/src/client/interface.ts +76 -25
  377. package/src/client/p2p_client.ts +269 -290
  378. package/src/client/test/tx_proposal_collector/README.md +227 -0
  379. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +346 -0
  380. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  381. package/src/config.ts +49 -13
  382. package/src/errors/tx-pool.error.ts +12 -0
  383. package/src/index.ts +1 -0
  384. package/src/mem_pools/attestation_pool/attestation_pool.ts +510 -78
  385. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +612 -320
  386. package/src/mem_pools/attestation_pool/index.ts +9 -2
  387. package/src/mem_pools/attestation_pool/mocks.ts +20 -13
  388. package/src/mem_pools/index.ts +4 -1
  389. package/src/mem_pools/instrumentation.ts +10 -18
  390. package/src/mem_pools/interface.ts +4 -4
  391. package/src/mem_pools/tx_pool/README.md +29 -14
  392. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  393. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  394. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  395. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  396. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  397. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  398. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  399. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  400. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  401. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  402. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  403. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  404. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  405. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
  406. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  407. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  408. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  409. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  410. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  411. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  412. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  413. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  414. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  415. package/src/mem_pools/tx_pool_v2/interfaces.ts +242 -0
  416. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
  417. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  418. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  419. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  420. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1069 -0
  421. package/src/msg_validators/attestation_validator/attestation_validator.ts +36 -21
  422. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
  423. package/src/msg_validators/clock_tolerance.ts +51 -0
  424. package/src/msg_validators/index.ts +1 -1
  425. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  426. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  427. package/src/msg_validators/proposal_validator/index.ts +3 -0
  428. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  429. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  430. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  431. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  432. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  433. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  434. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  435. package/src/msg_validators/tx_validator/factory.ts +64 -23
  436. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  437. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  438. package/src/msg_validators/tx_validator/index.ts +1 -0
  439. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  440. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  441. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  442. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
  443. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  444. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  445. package/src/services/data_store.ts +10 -7
  446. package/src/services/discv5/discV5_service.ts +1 -1
  447. package/src/services/dummy_service.ts +68 -1
  448. package/src/services/encoding.ts +8 -6
  449. package/src/services/gossipsub/README.md +641 -0
  450. package/src/services/gossipsub/index.ts +2 -0
  451. package/src/services/gossipsub/scoring.ts +29 -5
  452. package/src/services/gossipsub/topic_score_params.ts +487 -0
  453. package/src/services/index.ts +1 -0
  454. package/src/services/libp2p/instrumentation.ts +32 -73
  455. package/src/services/libp2p/libp2p_service.ts +651 -301
  456. package/src/services/peer-manager/metrics.ts +22 -26
  457. package/src/services/peer-manager/peer_manager.ts +1 -2
  458. package/src/services/peer-manager/peer_scoring.ts +28 -4
  459. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  460. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  461. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  462. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  463. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  464. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  465. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  466. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  467. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  468. package/src/services/reqresp/constants.ts +14 -0
  469. package/src/services/reqresp/interface.ts +29 -1
  470. package/src/services/reqresp/metrics.ts +36 -27
  471. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  472. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  473. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  474. package/src/services/reqresp/protocols/status.ts +7 -4
  475. package/src/services/reqresp/protocols/tx.ts +22 -0
  476. package/src/services/reqresp/reqresp.ts +79 -22
  477. package/src/services/service.ts +72 -4
  478. package/src/services/tx_collection/config.ts +83 -1
  479. package/src/services/tx_collection/fast_tx_collection.ts +93 -47
  480. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  481. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  482. package/src/services/tx_collection/index.ts +6 -0
  483. package/src/services/tx_collection/instrumentation.ts +11 -13
  484. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  485. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  486. package/src/services/tx_collection/slow_tx_collection.ts +68 -35
  487. package/src/services/tx_collection/tx_collection.ts +121 -24
  488. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  489. package/src/services/tx_collection/tx_source.ts +22 -3
  490. package/src/services/tx_file_store/config.ts +37 -0
  491. package/src/services/tx_file_store/index.ts +3 -0
  492. package/src/services/tx_file_store/instrumentation.ts +36 -0
  493. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  494. package/src/services/tx_provider.ts +10 -9
  495. package/src/services/tx_provider_instrumentation.ts +13 -20
  496. package/src/test-helpers/index.ts +2 -0
  497. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  498. package/src/test-helpers/mock-pubsub.ts +143 -3
  499. package/src/test-helpers/reqresp-nodes.ts +2 -1
  500. package/src/test-helpers/test_tx_provider.ts +64 -0
  501. package/src/test-helpers/testbench-utils.ts +430 -0
  502. package/src/testbench/p2p_client_testbench_worker.ts +348 -123
  503. package/src/testbench/worker_client_manager.ts +304 -42
  504. package/src/util.ts +7 -1
  505. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  506. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  507. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  508. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  509. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  510. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  511. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  512. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  513. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  514. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  515. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  516. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  517. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  518. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  519. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  520. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  521. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  522. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
  523. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  524. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,10 +1,377 @@
1
1
  // @attribution: lodestar impl for inspiration
2
- function _ts_decorate(decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
2
+ function applyDecs2203RFactory() {
3
+ function createAddInitializerMethod(initializers, decoratorFinishedRef) {
4
+ return function addInitializer(initializer) {
5
+ assertNotFinished(decoratorFinishedRef, "addInitializer");
6
+ assertCallable(initializer, "An initializer");
7
+ initializers.push(initializer);
8
+ };
9
+ }
10
+ function memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value) {
11
+ var kindStr;
12
+ switch(kind){
13
+ case 1:
14
+ kindStr = "accessor";
15
+ break;
16
+ case 2:
17
+ kindStr = "method";
18
+ break;
19
+ case 3:
20
+ kindStr = "getter";
21
+ break;
22
+ case 4:
23
+ kindStr = "setter";
24
+ break;
25
+ default:
26
+ kindStr = "field";
27
+ }
28
+ var ctx = {
29
+ kind: kindStr,
30
+ name: isPrivate ? "#" + name : name,
31
+ static: isStatic,
32
+ private: isPrivate,
33
+ metadata: metadata
34
+ };
35
+ var decoratorFinishedRef = {
36
+ v: false
37
+ };
38
+ ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef);
39
+ var get, set;
40
+ if (kind === 0) {
41
+ if (isPrivate) {
42
+ get = desc.get;
43
+ set = desc.set;
44
+ } else {
45
+ get = function() {
46
+ return this[name];
47
+ };
48
+ set = function(v) {
49
+ this[name] = v;
50
+ };
51
+ }
52
+ } else if (kind === 2) {
53
+ get = function() {
54
+ return desc.value;
55
+ };
56
+ } else {
57
+ if (kind === 1 || kind === 3) {
58
+ get = function() {
59
+ return desc.get.call(this);
60
+ };
61
+ }
62
+ if (kind === 1 || kind === 4) {
63
+ set = function(v) {
64
+ desc.set.call(this, v);
65
+ };
66
+ }
67
+ }
68
+ ctx.access = get && set ? {
69
+ get: get,
70
+ set: set
71
+ } : get ? {
72
+ get: get
73
+ } : {
74
+ set: set
75
+ };
76
+ try {
77
+ return dec(value, ctx);
78
+ } finally{
79
+ decoratorFinishedRef.v = true;
80
+ }
81
+ }
82
+ function assertNotFinished(decoratorFinishedRef, fnName) {
83
+ if (decoratorFinishedRef.v) {
84
+ throw new Error("attempted to call " + fnName + " after decoration was finished");
85
+ }
86
+ }
87
+ function assertCallable(fn, hint) {
88
+ if (typeof fn !== "function") {
89
+ throw new TypeError(hint + " must be a function");
90
+ }
91
+ }
92
+ function assertValidReturnValue(kind, value) {
93
+ var type = typeof value;
94
+ if (kind === 1) {
95
+ if (type !== "object" || value === null) {
96
+ throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
97
+ }
98
+ if (value.get !== undefined) {
99
+ assertCallable(value.get, "accessor.get");
100
+ }
101
+ if (value.set !== undefined) {
102
+ assertCallable(value.set, "accessor.set");
103
+ }
104
+ if (value.init !== undefined) {
105
+ assertCallable(value.init, "accessor.init");
106
+ }
107
+ } else if (type !== "function") {
108
+ var hint;
109
+ if (kind === 0) {
110
+ hint = "field";
111
+ } else if (kind === 10) {
112
+ hint = "class";
113
+ } else {
114
+ hint = "method";
115
+ }
116
+ throw new TypeError(hint + " decorators must return a function or void 0");
117
+ }
118
+ }
119
+ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata) {
120
+ var decs = decInfo[0];
121
+ var desc, init, value;
122
+ if (isPrivate) {
123
+ if (kind === 0 || kind === 1) {
124
+ desc = {
125
+ get: decInfo[3],
126
+ set: decInfo[4]
127
+ };
128
+ } else if (kind === 3) {
129
+ desc = {
130
+ get: decInfo[3]
131
+ };
132
+ } else if (kind === 4) {
133
+ desc = {
134
+ set: decInfo[3]
135
+ };
136
+ } else {
137
+ desc = {
138
+ value: decInfo[3]
139
+ };
140
+ }
141
+ } else if (kind !== 0) {
142
+ desc = Object.getOwnPropertyDescriptor(base, name);
143
+ }
144
+ if (kind === 1) {
145
+ value = {
146
+ get: desc.get,
147
+ set: desc.set
148
+ };
149
+ } else if (kind === 2) {
150
+ value = desc.value;
151
+ } else if (kind === 3) {
152
+ value = desc.get;
153
+ } else if (kind === 4) {
154
+ value = desc.set;
155
+ }
156
+ var newValue, get, set;
157
+ if (typeof decs === "function") {
158
+ newValue = memberDec(decs, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);
159
+ if (newValue !== void 0) {
160
+ assertValidReturnValue(kind, newValue);
161
+ if (kind === 0) {
162
+ init = newValue;
163
+ } else if (kind === 1) {
164
+ init = newValue.init;
165
+ get = newValue.get || value.get;
166
+ set = newValue.set || value.set;
167
+ value = {
168
+ get: get,
169
+ set: set
170
+ };
171
+ } else {
172
+ value = newValue;
173
+ }
174
+ }
175
+ } else {
176
+ for(var i = decs.length - 1; i >= 0; i--){
177
+ var dec = decs[i];
178
+ newValue = memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, metadata, value);
179
+ if (newValue !== void 0) {
180
+ assertValidReturnValue(kind, newValue);
181
+ var newInit;
182
+ if (kind === 0) {
183
+ newInit = newValue;
184
+ } else if (kind === 1) {
185
+ newInit = newValue.init;
186
+ get = newValue.get || value.get;
187
+ set = newValue.set || value.set;
188
+ value = {
189
+ get: get,
190
+ set: set
191
+ };
192
+ } else {
193
+ value = newValue;
194
+ }
195
+ if (newInit !== void 0) {
196
+ if (init === void 0) {
197
+ init = newInit;
198
+ } else if (typeof init === "function") {
199
+ init = [
200
+ init,
201
+ newInit
202
+ ];
203
+ } else {
204
+ init.push(newInit);
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ if (kind === 0 || kind === 1) {
211
+ if (init === void 0) {
212
+ init = function(instance, init) {
213
+ return init;
214
+ };
215
+ } else if (typeof init !== "function") {
216
+ var ownInitializers = init;
217
+ init = function(instance, init) {
218
+ var value = init;
219
+ for(var i = 0; i < ownInitializers.length; i++){
220
+ value = ownInitializers[i].call(instance, value);
221
+ }
222
+ return value;
223
+ };
224
+ } else {
225
+ var originalInitializer = init;
226
+ init = function(instance, init) {
227
+ return originalInitializer.call(instance, init);
228
+ };
229
+ }
230
+ ret.push(init);
231
+ }
232
+ if (kind !== 0) {
233
+ if (kind === 1) {
234
+ desc.get = value.get;
235
+ desc.set = value.set;
236
+ } else if (kind === 2) {
237
+ desc.value = value;
238
+ } else if (kind === 3) {
239
+ desc.get = value;
240
+ } else if (kind === 4) {
241
+ desc.set = value;
242
+ }
243
+ if (isPrivate) {
244
+ if (kind === 1) {
245
+ ret.push(function(instance, args) {
246
+ return value.get.call(instance, args);
247
+ });
248
+ ret.push(function(instance, args) {
249
+ return value.set.call(instance, args);
250
+ });
251
+ } else if (kind === 2) {
252
+ ret.push(value);
253
+ } else {
254
+ ret.push(function(instance, args) {
255
+ return value.call(instance, args);
256
+ });
257
+ }
258
+ } else {
259
+ Object.defineProperty(base, name, desc);
260
+ }
261
+ }
262
+ }
263
+ function applyMemberDecs(Class, decInfos, metadata) {
264
+ var ret = [];
265
+ var protoInitializers;
266
+ var staticInitializers;
267
+ var existingProtoNonFields = new Map();
268
+ var existingStaticNonFields = new Map();
269
+ for(var i = 0; i < decInfos.length; i++){
270
+ var decInfo = decInfos[i];
271
+ if (!Array.isArray(decInfo)) continue;
272
+ var kind = decInfo[1];
273
+ var name = decInfo[2];
274
+ var isPrivate = decInfo.length > 3;
275
+ var isStatic = kind >= 5;
276
+ var base;
277
+ var initializers;
278
+ if (isStatic) {
279
+ base = Class;
280
+ kind = kind - 5;
281
+ staticInitializers = staticInitializers || [];
282
+ initializers = staticInitializers;
283
+ } else {
284
+ base = Class.prototype;
285
+ protoInitializers = protoInitializers || [];
286
+ initializers = protoInitializers;
287
+ }
288
+ if (kind !== 0 && !isPrivate) {
289
+ var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields;
290
+ var existingKind = existingNonFields.get(name) || 0;
291
+ if (existingKind === true || existingKind === 3 && kind !== 4 || existingKind === 4 && kind !== 3) {
292
+ throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + name);
293
+ } else if (!existingKind && kind > 2) {
294
+ existingNonFields.set(name, kind);
295
+ } else {
296
+ existingNonFields.set(name, true);
297
+ }
298
+ }
299
+ applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers, metadata);
300
+ }
301
+ pushInitializers(ret, protoInitializers);
302
+ pushInitializers(ret, staticInitializers);
303
+ return ret;
304
+ }
305
+ function pushInitializers(ret, initializers) {
306
+ if (initializers) {
307
+ ret.push(function(instance) {
308
+ for(var i = 0; i < initializers.length; i++){
309
+ initializers[i].call(instance);
310
+ }
311
+ return instance;
312
+ });
313
+ }
314
+ }
315
+ function applyClassDecs(targetClass, classDecs, metadata) {
316
+ if (classDecs.length > 0) {
317
+ var initializers = [];
318
+ var newClass = targetClass;
319
+ var name = targetClass.name;
320
+ for(var i = classDecs.length - 1; i >= 0; i--){
321
+ var decoratorFinishedRef = {
322
+ v: false
323
+ };
324
+ try {
325
+ var nextNewClass = classDecs[i](newClass, {
326
+ kind: "class",
327
+ name: name,
328
+ addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef),
329
+ metadata
330
+ });
331
+ } finally{
332
+ decoratorFinishedRef.v = true;
333
+ }
334
+ if (nextNewClass !== undefined) {
335
+ assertValidReturnValue(10, nextNewClass);
336
+ newClass = nextNewClass;
337
+ }
338
+ }
339
+ return [
340
+ defineMetadata(newClass, metadata),
341
+ function() {
342
+ for(var i = 0; i < initializers.length; i++){
343
+ initializers[i].call(newClass);
344
+ }
345
+ }
346
+ ];
347
+ }
348
+ }
349
+ function defineMetadata(Class, metadata) {
350
+ return Object.defineProperty(Class, Symbol.metadata || Symbol.for("Symbol.metadata"), {
351
+ configurable: true,
352
+ enumerable: true,
353
+ value: metadata
354
+ });
355
+ }
356
+ return function applyDecs2203R(targetClass, memberDecs, classDecs, parentClass) {
357
+ if (parentClass !== void 0) {
358
+ var parentMetadata = parentClass[Symbol.metadata || Symbol.for("Symbol.metadata")];
359
+ }
360
+ var metadata = Object.create(parentMetadata === void 0 ? null : parentMetadata);
361
+ var e = applyMemberDecs(targetClass, memberDecs, metadata);
362
+ if (!classDecs.length) defineMetadata(targetClass, metadata);
363
+ return {
364
+ e: e,
365
+ get c () {
366
+ return applyClassDecs(targetClass, classDecs, metadata);
367
+ }
368
+ };
369
+ };
7
370
  }
371
+ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
372
+ return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
373
+ }
374
+ var _dec, _dec1, _dec2, _initProto;
8
375
  import { compactArray } from '@aztec/foundation/collection';
9
376
  import { AbortError, TimeoutError } from '@aztec/foundation/error';
10
377
  import { createLogger } from '@aztec/foundation/log';
@@ -17,10 +384,20 @@ import { SnappyTransform } from '../encoding.js';
17
384
  import { DEFAULT_INDIVIDUAL_REQUEST_TIMEOUT_MS, DEFAULT_REQRESP_DIAL_TIMEOUT_MS } from './config.js';
18
385
  import { BatchConnectionSampler } from './connection-sampler/batch_connection_sampler.js';
19
386
  import { ConnectionSampler, RandomSampler } from './connection-sampler/connection_sampler.js';
20
- import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, responseFromBuffer } from './interface.js';
387
+ import { DEFAULT_SUB_PROTOCOL_VALIDATORS, ReqRespSubProtocol, responseFromBuffer, subProtocolSizeCalculators } from './interface.js';
21
388
  import { ReqRespMetrics } from './metrics.js';
22
389
  import { RateLimitStatus, RequestResponseRateLimiter, prettyPrintRateLimitStatus } from './rate-limiter/rate_limiter.js';
23
390
  import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqRespStatus } from './status.js';
391
+ _dec = trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
392
+ [Attributes.P2P_REQ_RESP_PROTOCOL]: subProtocol,
393
+ [Attributes.P2P_REQ_RESP_BATCH_REQUESTS_COUNT]: requests.length
394
+ })), _dec1 = trackSpan('ReqResp.sendRequestToPeer', (peerId, subProtocol, _)=>({
395
+ [Attributes.P2P_ID]: peerId.toString(),
396
+ [Attributes.P2P_REQ_RESP_PROTOCOL]: subProtocol
397
+ })), _dec2 = trackSpan('ReqResp.streamHandler', (protocol, { connection })=>({
398
+ [Attributes.P2P_REQ_RESP_PROTOCOL]: protocol,
399
+ [Attributes.P2P_ID]: connection.remotePeer.toString()
400
+ }));
24
401
  /**
25
402
  * The Request Response Service
26
403
  *
@@ -38,6 +415,25 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
38
415
  libp2p;
39
416
  peerScoring;
40
417
  logger;
418
+ static{
419
+ ({ e: [_initProto] } = _apply_decs_2203_r(this, [
420
+ [
421
+ _dec,
422
+ 2,
423
+ "sendBatchRequest"
424
+ ],
425
+ [
426
+ _dec1,
427
+ 2,
428
+ "sendRequestToPeer"
429
+ ],
430
+ [
431
+ _dec2,
432
+ 2,
433
+ "streamHandler"
434
+ ]
435
+ ], []));
436
+ }
41
437
  individualRequestTimeoutMs;
42
438
  dialTimeoutMs;
43
439
  subProtocolHandlers;
@@ -50,7 +446,7 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
50
446
  this.libp2p = libp2p;
51
447
  this.peerScoring = peerScoring;
52
448
  this.logger = logger;
53
- this.individualRequestTimeoutMs = DEFAULT_INDIVIDUAL_REQUEST_TIMEOUT_MS;
449
+ this.individualRequestTimeoutMs = (_initProto(this), DEFAULT_INDIVIDUAL_REQUEST_TIMEOUT_MS);
54
450
  this.dialTimeoutMs = DEFAULT_REQRESP_DIAL_TIMEOUT_MS;
55
451
  this.subProtocolHandlers = {};
56
452
  this.subProtocolValidators = {};
@@ -73,6 +469,11 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
73
469
  return this.metrics.tracer;
74
470
  }
75
471
  /**
472
+ * Get the connection sampler instance
473
+ */ getConnectionSampler() {
474
+ return this.connectionSampler;
475
+ }
476
+ /**
76
477
  * Start the reqresp service
77
478
  */ async start(subProtocolHandlers, subProtocolValidators) {
78
479
  Object.assign(this.subProtocolHandlers, subProtocolHandlers);
@@ -132,6 +533,14 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
132
533
  const responseValidator = this.subProtocolValidators[subProtocol] ?? DEFAULT_SUB_PROTOCOL_VALIDATORS[subProtocol];
133
534
  const responses = new Array(requests.length);
134
535
  const requestBuffers = requests.map((req)=>req.toBuffer());
536
+ const isEmptyResponse = (value)=>{
537
+ // Some responses serialize to a non-empty buffer even when they contain no items (e.g., empty TxArray).
538
+ if (!value || typeof value !== 'object') {
539
+ return false;
540
+ }
541
+ const length = value.length;
542
+ return typeof length === 'number' && length === 0;
543
+ };
135
544
  const requestFunction = async (signal)=>{
136
545
  // Track which requests still need to be processed
137
546
  const pendingRequestIndices = new Set(requestBuffers.map((_, i)=>i));
@@ -159,7 +568,7 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
159
568
  for (const requestIndex of pendingRequestIndices){
160
569
  const peer = batchSampler.getPeerForRequest(requestIndex);
161
570
  if (!peer) {
162
- break;
571
+ continue;
163
572
  }
164
573
  const peerAsString = peer.toString();
165
574
  if (!requestBatches.has(peerAsString)) {
@@ -179,6 +588,11 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
179
588
  indices: Array.from(pendingRequestIndices.values()).slice(0, limit)
180
589
  });
181
590
  }
591
+ // If no requests could be assigned (all peers exhausted for all indices), exit early
592
+ if (requestBatches.size === 0) {
593
+ this.logger.warn('No peers available for any pending request indices, stopping batch request');
594
+ break;
595
+ }
182
596
  // Make parallel requests for each peer's batch
183
597
  // A batch entry will look something like this:
184
598
  // PeerId0: [0, 1, 2, 3]
@@ -187,39 +601,56 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
187
601
  // while simultaneously Peer Id 1 will send requests 4, 5, 6, 7 in serial
188
602
  const batchResults = await Promise.all(Array.from(requestBatches.entries()).map(async ([peerAsString, { peerId: peer, indices }])=>{
189
603
  try {
604
+ const markIndexFailed = (index)=>batchSampler.markPeerFailedForIndex(peer, index);
190
605
  // Requests all going to the same peer are sent synchronously
191
606
  const peerResults = [];
607
+ let shouldReplacePeer = false;
608
+ const handleFailure = (status, index)=>{
609
+ this.logger.warn(`Request to peer ${peerAsString} failed with status ${prettyPrintReqRespStatus(status)}`);
610
+ markIndexFailed(index);
611
+ return status === ReqRespStatus.RATE_LIMIT_EXCEEDED;
612
+ };
192
613
  for (const index of indices){
193
- this.logger.trace(`Sending request ${index} to peer ${peerAsString}`);
614
+ this.logger.info(`Sending request ${index} to peer ${peerAsString}`);
194
615
  const response = await this.sendRequestToPeer(peer, subProtocol, requestBuffers[index]);
195
616
  // Check the status of the response buffer
196
617
  if (response.status !== ReqRespStatus.SUCCESS) {
197
- this.logger.debug(`Request to peer ${peerAsString} failed with status ${prettyPrintReqRespStatus(response.status)}`);
198
- // If we hit a rate limit or some failure, we remove the peer and return the results,
199
- // they will be split among remaining peers and the new sampled peer
200
- batchSampler.removePeerAndReplace(peer);
201
- return {
202
- peer,
203
- results: peerResults
204
- };
205
- }
206
- if (response && response.data.length > 0) {
207
- const object = responseFromBuffer(subProtocol, response.data);
208
- const isValid = await responseValidator(requests[index], object, peer);
209
- if (isValid) {
210
- peerResults.push({
211
- index,
212
- response: object
213
- });
618
+ shouldReplacePeer = handleFailure(response.status, index);
619
+ if (shouldReplacePeer) {
620
+ break;
214
621
  }
622
+ continue;
215
623
  }
624
+ if (response.data.length === 0) {
625
+ markIndexFailed(index);
626
+ continue;
627
+ }
628
+ const object = responseFromBuffer(subProtocol, response.data);
629
+ if (isEmptyResponse(object)) {
630
+ markIndexFailed(index);
631
+ continue;
632
+ }
633
+ const isValid = await responseValidator(requests[index], object, peer);
634
+ if (!isValid) {
635
+ markIndexFailed(index);
636
+ continue;
637
+ }
638
+ peerResults.push({
639
+ index,
640
+ response: object
641
+ });
642
+ }
643
+ // If peer had a hard failure (rate limit), replace it for future iterations
644
+ if (shouldReplacePeer) {
645
+ this.logger.warn(`Peer ${peerAsString} hit a hard failure, removing from sampler`);
646
+ batchSampler.removePeerAndReplace(peer);
216
647
  }
217
648
  return {
218
649
  peer,
219
650
  results: peerResults
220
651
  };
221
652
  } catch (error) {
222
- this.logger.debug(`Failed batch request to peer ${peerAsString}:`, error);
653
+ this.logger.warn(`Failed batch request to peer ${peerAsString}:`, error);
223
654
  batchSampler.removePeerAndReplace(peer);
224
655
  return {
225
656
  peer,
@@ -239,14 +670,14 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
239
670
  retryAttempts++;
240
671
  }
241
672
  if (retryAttempts >= maxRetryAttempts) {
242
- this.logger.debug(`Max retry attempts ${maxRetryAttempts} reached for batch request`);
673
+ this.logger.warn(`Max retry attempts ${maxRetryAttempts} reached for batch request`);
243
674
  }
244
675
  return responses;
245
676
  };
246
677
  try {
247
678
  return await executeTimeout(requestFunction, timeoutMs, ()=>new CollectiveReqRespTimeoutError());
248
679
  } catch (e) {
249
- this.logger.debug(`${e.message} | subProtocol: ${subProtocol}`);
680
+ this.logger.warn(`${e.message} | subProtocol: ${subProtocol}`);
250
681
  return [];
251
682
  }
252
683
  }
@@ -278,22 +709,27 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
278
709
  let stream;
279
710
  try {
280
711
  this.metrics.recordRequestSent(subProtocol);
712
+ // Calculate expected response size based on the request payload
713
+ const expectedSizeKb = subProtocolSizeCalculators[subProtocol](payload);
281
714
  this.logger.trace(`Sending request to peer ${peerId.toString()} on sub protocol ${subProtocol}`);
282
715
  stream = await this.connectionSampler.dialProtocol(peerId, subProtocol, dialTimeout);
283
716
  this.logger.trace(`Opened stream ${stream.id} for sending request to peer ${peerId.toString()} on sub protocol ${subProtocol}`);
284
717
  const timeoutErr = new IndividualReqRespTimeoutError();
718
+ // Create a wrapper to pass the expected size to readMessage
719
+ const readMessageWithSizeLimit = (source)=>this.readMessage(source, expectedSizeKb);
285
720
  const [_, resp] = await executeTimeout((signal)=>Promise.all([
286
721
  pipeline([
287
722
  payload
288
723
  ], stream.sink, {
289
724
  signal
290
725
  }),
291
- pipeline(stream.source, this.readMessage.bind(this), {
726
+ pipeline(stream.source, readMessageWithSizeLimit, {
292
727
  signal
293
728
  })
294
729
  ]), this.individualRequestTimeoutMs, ()=>timeoutErr);
295
730
  return resp;
296
731
  } catch (e) {
732
+ this.logger.warn(`SUBPROTOCOL: ${subProtocol}\n`, e);
297
733
  // On error we immediately abort the stream, this is preferred way,
298
734
  // because it signals to the sender that error happened, whereas
299
735
  // closing the stream only closes our side and is much slower
@@ -341,7 +777,10 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
341
777
  * The message is split into two components
342
778
  * - The first chunk should contain a control byte, indicating the status of the response see `ReqRespStatus`
343
779
  * - The second chunk should contain the response data
344
- */ async readMessage(source) {
780
+ *
781
+ * @param source - The async iterable source of data chunks
782
+ * @param maxSizeKb - Optional maximum expected size in KB for the decompressed response
783
+ */ async readMessage(source, maxSizeKb) {
345
784
  let status;
346
785
  const chunks = [];
347
786
  try {
@@ -362,7 +801,7 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
362
801
  }
363
802
  }
364
803
  const messageData = Buffer.concat(chunks);
365
- const message = this.snappyTransform.inboundTransformData(messageData);
804
+ const message = this.snappyTransform.inboundTransformData(messageData, undefined, maxSizeKb);
366
805
  return {
367
806
  status: status ?? ReqRespStatus.UNKNOWN,
368
807
  data: message
@@ -587,21 +1026,3 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
587
1026
  return PeerErrorSeverity.HighToleranceError;
588
1027
  }
589
1028
  }
590
- _ts_decorate([
591
- trackSpan('ReqResp.sendBatchRequest', (subProtocol, requests)=>({
592
- [Attributes.P2P_REQ_RESP_PROTOCOL]: subProtocol,
593
- [Attributes.P2P_REQ_RESP_BATCH_REQUESTS_COUNT]: requests.length
594
- }))
595
- ], ReqResp.prototype, "sendBatchRequest", null);
596
- _ts_decorate([
597
- trackSpan('ReqResp.sendRequestToPeer', (peerId, subProtocol, _)=>({
598
- [Attributes.P2P_ID]: peerId.toString(),
599
- [Attributes.P2P_REQ_RESP_PROTOCOL]: subProtocol
600
- }))
601
- ], ReqResp.prototype, "sendRequestToPeer", null);
602
- _ts_decorate([
603
- trackSpan('ReqResp.streamHandler', (protocol, { connection })=>({
604
- [Attributes.P2P_REQ_RESP_PROTOCOL]: protocol,
605
- [Attributes.P2P_ID]: connection.remotePeer.toString()
606
- }))
607
- ], ReqResp.prototype, "streamHandler", null);