@aztec/p2p 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0

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 (575) hide show
  1. package/README.md +130 -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 +26 -10
  5. package/dest/client/factory.d.ts +13 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +70 -21
  8. package/dest/client/interface.d.ts +104 -41
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +72 -70
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +681 -346
  13. package/dest/config.d.ts +171 -89
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +169 -58
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +9 -16
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +10 -17
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +154 -77
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +518 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +694 -295
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +11 -8
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +19 -13
  40. package/dest/mem_pools/index.d.ts +3 -3
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +14 -1
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +51 -12
  46. package/dest/mem_pools/interface.d.ts +6 -7
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +39 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +97 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  91. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +243 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/interfaces.js +11 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +122 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +368 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +68 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +178 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +91 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +1013 -0
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +12 -5
  115. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/attestation_validator/attestation_validator.js +78 -22
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +11 -7
  118. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +25 -17
  120. package/dest/msg_validators/index.d.ts +2 -2
  121. package/dest/msg_validators/index.d.ts.map +1 -1
  122. package/dest/msg_validators/index.js +1 -1
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +16 -0
  124. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  125. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +16 -0
  127. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  128. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +26 -0
  129. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  130. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  131. package/dest/msg_validators/proposal_validator/index.js +3 -0
  132. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +40 -0
  133. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  134. package/dest/msg_validators/proposal_validator/proposal_validator.js +186 -0
  135. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  136. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  138. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  139. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  140. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  141. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  142. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  143. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  144. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  145. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  146. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  147. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  148. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  149. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  150. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  151. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  152. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  153. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  154. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  155. package/dest/msg_validators/tx_validator/data_validator.d.ts +4 -1
  156. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/data_validator.js +40 -3
  158. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  159. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  160. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  161. package/dest/msg_validators/tx_validator/factory.d.ts +137 -6
  162. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  163. package/dest/msg_validators/tx_validator/factory.js +268 -58
  164. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  165. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  166. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  167. package/dest/msg_validators/tx_validator/gas_validator.d.ts +105 -3
  168. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/gas_validator.js +146 -67
  170. package/dest/msg_validators/tx_validator/index.d.ts +6 -1
  171. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  172. package/dest/msg_validators/tx_validator/index.js +5 -0
  173. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
  174. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  175. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
  176. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  177. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  178. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  179. package/dest/msg_validators/tx_validator/phases_validator.d.ts +24 -3
  180. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  181. package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
  182. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  183. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  184. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  185. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  186. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  187. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  188. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  189. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  190. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  191. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  192. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  193. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +4 -2
  194. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  195. package/dest/msg_validators/tx_validator/tx_proof_validator.js +4 -2
  196. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  197. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  198. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  199. package/dest/services/data_store.d.ts +1 -1
  200. package/dest/services/data_store.d.ts.map +1 -1
  201. package/dest/services/data_store.js +14 -10
  202. package/dest/services/discv5/discV5_service.d.ts +13 -2
  203. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  204. package/dest/services/discv5/discV5_service.js +120 -24
  205. package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
  206. package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
  207. package/dest/services/discv5/persisted_enr_store.js +145 -0
  208. package/dest/services/dummy_service.d.ts +40 -16
  209. package/dest/services/dummy_service.d.ts.map +1 -1
  210. package/dest/services/dummy_service.js +61 -14
  211. package/dest/services/encoding.d.ts +24 -7
  212. package/dest/services/encoding.d.ts.map +1 -1
  213. package/dest/services/encoding.js +48 -30
  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 +167 -0
  221. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  222. package/dest/services/gossipsub/topic_score_params.js +336 -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 +3 -1
  227. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  228. package/dest/services/libp2p/instrumentation.js +43 -71
  229. package/dest/services/libp2p/libp2p_service.d.ts +127 -54
  230. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  231. package/dest/services/libp2p/libp2p_service.js +1324 -556
  232. package/dest/services/peer-manager/metrics.d.ts +9 -2
  233. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  234. package/dest/services/peer-manager/metrics.js +39 -21
  235. package/dest/services/peer-manager/peer_manager.d.ts +21 -4
  236. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  237. package/dest/services/peer-manager/peer_manager.js +87 -38
  238. package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
  239. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  240. package/dest/services/peer-manager/peer_scoring.js +134 -19
  241. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +44 -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 +534 -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 +50 -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 +35 -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 +136 -0
  253. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -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 +176 -0
  256. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +11 -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 +7 -0
  259. package/dest/services/reqresp/config.d.ts +15 -3
  260. package/dest/services/reqresp/config.d.ts.map +1 -1
  261. package/dest/services/reqresp/config.js +11 -0
  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 +27 -18
  269. package/dest/services/reqresp/interface.d.ts.map +1 -1
  270. package/dest/services/reqresp/interface.js +23 -19
  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 +16 -21
  274. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  275. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  276. package/dest/services/reqresp/protocols/auth.js +2 -2
  277. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +8 -3
  278. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  279. package/dest/services/reqresp/protocols/block_txs/bitvector.js +15 -2
  280. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  281. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  282. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +35 -14
  283. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +37 -9
  284. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  285. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +85 -21
  286. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  287. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  288. package/dest/services/reqresp/protocols/index.js +0 -1
  289. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  290. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  291. package/dest/services/reqresp/protocols/status.js +4 -1
  292. package/dest/services/reqresp/protocols/tx.d.ts +8 -3
  293. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  294. package/dest/services/reqresp/protocols/tx.js +21 -3
  295. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  296. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  297. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  298. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  299. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  300. package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -13
  301. package/dest/services/reqresp/reqresp.d.ts +12 -29
  302. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  303. package/dest/services/reqresp/reqresp.js +480 -200
  304. package/dest/services/service.d.ts +78 -13
  305. package/dest/services/service.d.ts.map +1 -1
  306. package/dest/services/tx_collection/config.d.ts +11 -11
  307. package/dest/services/tx_collection/config.d.ts.map +1 -1
  308. package/dest/services/tx_collection/config.js +28 -27
  309. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  310. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  311. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  312. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  313. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  314. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  315. package/dest/services/tx_collection/index.d.ts +3 -2
  316. package/dest/services/tx_collection/index.d.ts.map +1 -1
  317. package/dest/services/tx_collection/index.js +1 -0
  318. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  319. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  320. package/dest/services/tx_collection/instrumentation.js +9 -13
  321. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  322. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  323. package/dest/services/tx_collection/request_tracker.js +84 -0
  324. package/dest/services/tx_collection/tx_collection.d.ts +49 -55
  325. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  326. package/dest/services/tx_collection/tx_collection.js +299 -71
  327. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  328. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  329. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  330. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  331. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  332. package/dest/services/tx_collection/tx_source.js +29 -7
  333. package/dest/services/tx_file_store/config.d.ts +16 -0
  334. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  335. package/dest/services/tx_file_store/config.js +22 -0
  336. package/dest/services/tx_file_store/index.d.ts +4 -0
  337. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  338. package/dest/services/tx_file_store/index.js +3 -0
  339. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  340. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  341. package/dest/services/tx_file_store/instrumentation.js +29 -0
  342. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  343. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  344. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  345. package/dest/services/tx_provider.d.ts +9 -6
  346. package/dest/services/tx_provider.d.ts.map +1 -1
  347. package/dest/services/tx_provider.js +23 -10
  348. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  349. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  350. package/dest/services/tx_provider_instrumentation.js +14 -14
  351. package/dest/test-helpers/index.d.ts +3 -1
  352. package/dest/test-helpers/index.d.ts.map +1 -1
  353. package/dest/test-helpers/index.js +2 -0
  354. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  355. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  356. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  357. package/dest/test-helpers/mock-pubsub.d.ts +46 -6
  358. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  359. package/dest/test-helpers/mock-pubsub.js +115 -14
  360. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  361. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  362. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  363. package/dest/test-helpers/reqresp-nodes.js +19 -20
  364. package/dest/test-helpers/test_tx_provider.d.ts +42 -0
  365. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  366. package/dest/test-helpers/test_tx_provider.js +44 -0
  367. package/dest/test-helpers/testbench-utils.d.ts +164 -0
  368. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  369. package/dest/test-helpers/testbench-utils.js +400 -0
  370. package/dest/testbench/p2p_client_testbench_worker.d.ts +26 -2
  371. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  372. package/dest/testbench/p2p_client_testbench_worker.js +289 -131
  373. package/dest/testbench/worker_client_manager.d.ts +57 -6
  374. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  375. package/dest/testbench/worker_client_manager.js +277 -44
  376. package/dest/util.d.ts +13 -8
  377. package/dest/util.d.ts.map +1 -1
  378. package/dest/util.js +35 -14
  379. package/dest/versioning.d.ts +3 -6
  380. package/dest/versioning.d.ts.map +1 -1
  381. package/dest/versioning.js +3 -24
  382. package/package.json +18 -18
  383. package/src/bootstrap/bootstrap.ts +24 -7
  384. package/src/client/factory.ts +141 -46
  385. package/src/client/interface.ts +113 -49
  386. package/src/client/p2p_client.ts +342 -418
  387. package/src/client/test/p2p_client.batch_tx_requester.bench.README.md +197 -0
  388. package/src/config.ts +298 -66
  389. package/src/errors/p2p-service.error.ts +11 -0
  390. package/src/errors/reqresp.error.ts +13 -19
  391. package/src/errors/tx-pool.error.ts +12 -0
  392. package/src/index.ts +1 -1
  393. package/src/mem_pools/attestation_pool/attestation_pool.ts +594 -76
  394. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +796 -329
  395. package/src/mem_pools/attestation_pool/index.ts +9 -2
  396. package/src/mem_pools/attestation_pool/mocks.ts +29 -17
  397. package/src/mem_pools/index.ts +2 -2
  398. package/src/mem_pools/instrumentation.ts +48 -13
  399. package/src/mem_pools/interface.ts +5 -7
  400. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  401. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  402. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +112 -0
  403. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  404. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  405. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  406. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  407. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  408. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  409. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  410. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  411. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  412. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  413. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  414. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  415. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  416. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  417. package/src/mem_pools/tx_pool_v2/interfaces.ts +274 -0
  418. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  419. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  420. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +465 -0
  421. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +252 -0
  422. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1215 -0
  423. package/src/msg_validators/attestation_validator/README.md +49 -0
  424. package/src/msg_validators/attestation_validator/attestation_validator.ts +71 -24
  425. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +34 -23
  426. package/src/msg_validators/index.ts +1 -1
  427. package/src/msg_validators/proposal_validator/README.md +123 -0
  428. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +32 -0
  429. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +49 -0
  430. package/src/msg_validators/proposal_validator/index.ts +3 -0
  431. package/src/msg_validators/proposal_validator/proposal_validator.ts +198 -0
  432. package/src/msg_validators/tx_validator/README.md +129 -0
  433. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  434. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  435. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  436. package/src/msg_validators/tx_validator/archive_cache.ts +2 -2
  437. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  438. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  439. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  440. package/src/msg_validators/tx_validator/data_validator.ts +62 -7
  441. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  442. package/src/msg_validators/tx_validator/factory.ts +431 -57
  443. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  444. package/src/msg_validators/tx_validator/gas_validator.ts +206 -76
  445. package/src/msg_validators/tx_validator/index.ts +5 -0
  446. package/src/msg_validators/tx_validator/metadata_validator.ts +31 -12
  447. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  448. package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
  449. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  450. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  451. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
  452. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  453. package/src/msg_validators/tx_validator/tx_proof_validator.ts +10 -3
  454. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  455. package/src/services/data_store.ts +14 -19
  456. package/src/services/discv5/discV5_service.ts +127 -15
  457. package/src/services/discv5/persisted_enr_store.ts +158 -0
  458. package/src/services/dummy_service.ts +82 -38
  459. package/src/services/encoding.ts +46 -29
  460. package/src/services/gossipsub/README.md +663 -0
  461. package/src/services/gossipsub/index.ts +2 -0
  462. package/src/services/gossipsub/scoring.ts +29 -5
  463. package/src/services/gossipsub/topic_score_params.ts +478 -0
  464. package/src/services/index.ts +1 -0
  465. package/src/services/libp2p/instrumentation.ts +48 -75
  466. package/src/services/libp2p/libp2p_service.ts +1073 -607
  467. package/src/services/peer-manager/metrics.ts +46 -21
  468. package/src/services/peer-manager/peer_manager.ts +96 -29
  469. package/src/services/peer-manager/peer_scoring.ts +130 -12
  470. package/src/services/reqresp/README.md +194 -0
  471. package/src/services/reqresp/batch-tx-requester/README.md +344 -0
  472. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +660 -0
  473. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  474. package/src/services/reqresp/batch-tx-requester/interface.ts +61 -0
  475. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
  476. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
  477. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +24 -0
  478. package/src/services/reqresp/config.ts +19 -2
  479. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  480. package/src/services/reqresp/constants.ts +14 -0
  481. package/src/services/reqresp/interface.ts +48 -46
  482. package/src/services/reqresp/metrics.ts +35 -27
  483. package/src/services/reqresp/protocols/auth.ts +2 -2
  484. package/src/services/reqresp/protocols/block_txs/bitvector.ts +19 -2
  485. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +44 -17
  486. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +109 -17
  487. package/src/services/reqresp/protocols/index.ts +0 -1
  488. package/src/services/reqresp/protocols/status.ts +7 -4
  489. package/src/services/reqresp/protocols/tx.ts +24 -5
  490. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  491. package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
  492. package/src/services/reqresp/reqresp.ts +107 -223
  493. package/src/services/service.ts +102 -31
  494. package/src/services/tx_collection/config.ts +42 -37
  495. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  496. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  497. package/src/services/tx_collection/index.ts +2 -1
  498. package/src/services/tx_collection/instrumentation.ts +5 -13
  499. package/src/services/tx_collection/request_tracker.ts +127 -0
  500. package/src/services/tx_collection/tx_collection.ts +367 -115
  501. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  502. package/src/services/tx_collection/tx_source.ts +29 -8
  503. package/src/services/tx_file_store/config.ts +37 -0
  504. package/src/services/tx_file_store/index.ts +3 -0
  505. package/src/services/tx_file_store/instrumentation.ts +36 -0
  506. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  507. package/src/services/tx_provider.ts +34 -13
  508. package/src/services/tx_provider_instrumentation.ts +24 -14
  509. package/src/test-helpers/index.ts +2 -0
  510. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  511. package/src/test-helpers/mock-pubsub.ts +138 -15
  512. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  513. package/src/test-helpers/reqresp-nodes.ts +18 -30
  514. package/src/test-helpers/test_tx_provider.ts +69 -0
  515. package/src/test-helpers/testbench-utils.ts +465 -0
  516. package/src/testbench/p2p_client_testbench_worker.ts +406 -130
  517. package/src/testbench/worker_client_manager.ts +355 -46
  518. package/src/util.ts +40 -19
  519. package/src/versioning.ts +3 -33
  520. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  521. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  522. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  523. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  524. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  525. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  526. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -116
  527. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  528. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -617
  529. package/dest/mem_pools/tx_pool/index.d.ts +0 -4
  530. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  531. package/dest/mem_pools/tx_pool/index.js +0 -3
  532. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -81
  533. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  534. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -239
  535. package/dest/mem_pools/tx_pool/priority.d.ts +0 -8
  536. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  537. package/dest/mem_pools/tx_pool/priority.js +0 -10
  538. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -123
  539. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  540. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  541. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  542. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  543. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -395
  544. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  545. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  546. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  547. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  548. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  549. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  550. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
  551. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  552. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -92
  553. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  554. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  555. package/dest/services/reqresp/protocols/block.js +0 -32
  556. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
  557. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  558. package/dest/services/tx_collection/fast_tx_collection.js +0 -300
  559. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  560. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  561. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  562. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  563. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  564. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -751
  565. package/src/mem_pools/tx_pool/index.ts +0 -3
  566. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -285
  567. package/src/mem_pools/tx_pool/priority.ts +0 -13
  568. package/src/mem_pools/tx_pool/tx_pool.ts +0 -136
  569. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -314
  570. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  571. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
  572. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -100
  573. package/src/services/reqresp/protocols/block.ts +0 -37
  574. package/src/services/tx_collection/fast_tx_collection.ts +0 -341
  575. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
@@ -1,395 +0,0 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { unfreeze } from '@aztec/foundation/types';
3
- import { GasFees } from '@aztec/stdlib/gas';
4
- import { mockTx } from '@aztec/stdlib/testing';
5
- import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
6
- /**
7
- * Tests a TxPool implementation.
8
- * @param getTxPool - Gets a fresh TxPool
9
- */ export function describeTxPool(getTxPool) {
10
- let pool;
11
- const minedBlockHeader = BlockHeader.empty({
12
- globalVariables: GlobalVariables.empty({
13
- blockNumber: BlockNumber(1),
14
- timestamp: 0n
15
- })
16
- });
17
- beforeEach(()=>{
18
- pool = getTxPool();
19
- });
20
- afterEach(()=>{
21
- pool.removeAllListeners('txs-added');
22
- });
23
- it('adds txs to the pool as pending', async ()=>{
24
- const tx1 = await mockTx();
25
- await pool.addTxs([
26
- tx1
27
- ]);
28
- const poolTx = await pool.getTxByHash(tx1.getTxHash());
29
- expect(poolTx.getTxHash()).toEqual(tx1.getTxHash());
30
- await expect(pool.getTxStatus(tx1.getTxHash())).resolves.toEqual('pending');
31
- await expect(pool.getPendingTxHashes()).resolves.toEqual([
32
- tx1.getTxHash()
33
- ]);
34
- await expect(pool.getPendingTxCount()).resolves.toEqual(1);
35
- });
36
- it('emits txs-added event with new txs', async ()=>{
37
- const tx1 = await mockTx(); // existing and pending
38
- const tx2 = await mockTx(); // mined but not known
39
- const tx3 = await mockTx(); // brand new
40
- await pool.addTxs([
41
- tx1
42
- ]);
43
- await pool.markAsMined([
44
- tx2.getTxHash()
45
- ], minedBlockHeader);
46
- let txsFromEvent = undefined;
47
- pool.once('txs-added', ({ txs })=>{
48
- txsFromEvent = txs;
49
- });
50
- await pool.addTxs([
51
- tx1,
52
- tx2,
53
- tx3
54
- ]);
55
- expect(txsFromEvent).toBeDefined();
56
- expect(txsFromEvent).toHaveLength(2);
57
- expect(txsFromEvent).toEqual(expect.arrayContaining([
58
- tx2,
59
- tx3
60
- ]));
61
- });
62
- it('permanently deletes pending txs and soft-deletes mined txs', async ()=>{
63
- const pendingTx = await mockTx(1);
64
- const minedTx = await mockTx(2);
65
- await pool.addTxs([
66
- pendingTx,
67
- minedTx
68
- ]);
69
- await pool.markAsMined([
70
- minedTx.getTxHash()
71
- ], minedBlockHeader);
72
- // Delete a pending tx - should be permanently deleted
73
- await pool.deleteTxs([
74
- pendingTx.getTxHash()
75
- ]);
76
- await expect(pool.getTxByHash(pendingTx.getTxHash())).resolves.toBeUndefined();
77
- await expect(pool.getTxStatus(pendingTx.getTxHash())).resolves.toBeUndefined();
78
- // Delete a mined tx - should be soft-deleted (still in storage)
79
- await pool.deleteTxs([
80
- minedTx.getTxHash()
81
- ]);
82
- await expect(pool.getTxByHash(minedTx.getTxHash())).resolves.toBeDefined();
83
- await expect(pool.getTxStatus(minedTx.getTxHash())).resolves.toEqual('deleted');
84
- await expect(pool.getMinedTxHashes()).resolves.toEqual([]);
85
- await expect(pool.getPendingTxCount()).resolves.toEqual(0);
86
- });
87
- it('marks txs as mined', async ()=>{
88
- const tx1 = await mockTx(1);
89
- const tx2 = await mockTx(2);
90
- await pool.addTxs([
91
- tx1,
92
- tx2
93
- ]);
94
- await pool.markAsMined([
95
- tx1.getTxHash()
96
- ], minedBlockHeader);
97
- await expect(pool.getTxByHash(tx1.getTxHash())).resolves.toEqual(tx1);
98
- await expect(pool.getTxStatus(tx1.getTxHash())).resolves.toEqual('mined');
99
- await expect(pool.getMinedTxHashes()).resolves.toEqual([
100
- [
101
- tx1.getTxHash(),
102
- 1
103
- ]
104
- ]);
105
- await expect(pool.getPendingTxHashes()).resolves.toEqual([
106
- tx2.getTxHash()
107
- ]);
108
- await expect(pool.getPendingTxCount()).resolves.toEqual(1);
109
- });
110
- it('marks txs as pending after being mined', async ()=>{
111
- const tx1 = await mockTx(1);
112
- const tx2 = await mockTx(2);
113
- await pool.addTxs([
114
- tx1,
115
- tx2
116
- ]);
117
- await pool.markAsMined([
118
- tx1.getTxHash()
119
- ], minedBlockHeader);
120
- await pool.markMinedAsPending([
121
- tx1.getTxHash()
122
- ]);
123
- await expect(pool.getMinedTxHashes()).resolves.toEqual([]);
124
- const pending = await pool.getPendingTxHashes();
125
- expect(pending).toHaveLength(2);
126
- expect(pending).toEqual(expect.arrayContaining([
127
- tx1.getTxHash(),
128
- tx2.getTxHash()
129
- ]));
130
- await expect(pool.getPendingTxCount()).resolves.toEqual(2);
131
- });
132
- it('only marks txs as pending if they are known', async ()=>{
133
- const tx1 = await mockTx(1);
134
- // simulate a situation where not all peers have all the txs
135
- const tx2 = await mockTx(2);
136
- const someTxHashThatThisPeerDidNotSee = tx2.getTxHash();
137
- await pool.addTxs([
138
- tx1
139
- ]);
140
- // this peer knows that tx2 was mined, but it does not have the tx object
141
- await pool.markAsMined([
142
- tx1.getTxHash(),
143
- someTxHashThatThisPeerDidNotSee
144
- ], minedBlockHeader);
145
- expect(await pool.getMinedTxHashes()).toEqual(expect.arrayContaining([
146
- [
147
- tx1.getTxHash(),
148
- 1
149
- ],
150
- [
151
- someTxHashThatThisPeerDidNotSee,
152
- 1
153
- ]
154
- ]));
155
- // reorg: both txs should now become available again
156
- await pool.markMinedAsPending([
157
- tx1.getTxHash(),
158
- someTxHashThatThisPeerDidNotSee
159
- ]);
160
- await expect(pool.getMinedTxHashes()).resolves.toEqual([]);
161
- await expect(pool.getPendingTxHashes()).resolves.toEqual([
162
- tx1.getTxHash()
163
- ]); // tx2 is not in the pool
164
- await expect(pool.getPendingTxCount()).resolves.toEqual(1);
165
- });
166
- it('returns all transactions in the pool', async ()=>{
167
- const tx1 = await mockTx(1);
168
- const tx2 = await mockTx(2);
169
- const tx3 = await mockTx(3);
170
- await pool.addTxs([
171
- tx1,
172
- tx2,
173
- tx3
174
- ]);
175
- const poolTxs = await pool.getAllTxs();
176
- expect(poolTxs).toHaveLength(3);
177
- expect(poolTxs).toEqual(expect.arrayContaining([
178
- tx1,
179
- tx2,
180
- tx3
181
- ]));
182
- await expect(pool.getPendingTxCount()).resolves.toEqual(3);
183
- });
184
- it('returns all txHashes in the pool', async ()=>{
185
- const tx1 = await mockTx(1);
186
- const tx2 = await mockTx(2);
187
- const tx3 = await mockTx(3);
188
- await pool.addTxs([
189
- tx1,
190
- tx2,
191
- tx3
192
- ]);
193
- const poolTxHashes = await pool.getAllTxHashes();
194
- const expectedHashes = [
195
- tx1,
196
- tx2,
197
- tx3
198
- ].map((tx)=>tx.getTxHash());
199
- expect(poolTxHashes).toHaveLength(3);
200
- expect(poolTxHashes).toEqual(expect.arrayContaining(expectedHashes));
201
- await expect(pool.getPendingTxCount()).resolves.toEqual(3);
202
- });
203
- it('returns txs by their hash', async ()=>{
204
- const tx1 = await mockTx(1);
205
- const tx2 = await mockTx(2);
206
- const tx3 = await mockTx(3);
207
- await pool.addTxs([
208
- tx1,
209
- tx2,
210
- tx3
211
- ]);
212
- const requestedTxs = await pool.getTxsByHash([
213
- tx1.getTxHash(),
214
- tx3.getTxHash()
215
- ]);
216
- expect(requestedTxs).toHaveLength(2);
217
- expect(requestedTxs).toEqual(expect.arrayContaining([
218
- tx1,
219
- tx3
220
- ]));
221
- });
222
- it('returns a large number of transactions by their hash', async ()=>{
223
- const numTxs = 1000;
224
- const txs = await Promise.all(Array.from({
225
- length: numTxs
226
- }, (_, i)=>mockTx(i)));
227
- const hashes = txs.map((tx)=>tx.getTxHash());
228
- await pool.addTxs(txs);
229
- const requestedTxs = await pool.getTxsByHash(hashes);
230
- expect(requestedTxs).toHaveLength(numTxs);
231
- expect(requestedTxs).toEqual(expect.arrayContaining(txs));
232
- });
233
- it('returns whether or not txs exist', async ()=>{
234
- const tx1 = await mockTx(1);
235
- const tx2 = await mockTx(2);
236
- const tx3 = await mockTx(3);
237
- await pool.addTxs([
238
- tx1,
239
- tx2,
240
- tx3
241
- ]);
242
- const tx4 = await mockTx(4);
243
- const tx5 = await mockTx(5);
244
- const availability = await pool.hasTxs([
245
- tx1.getTxHash(),
246
- tx2.getTxHash(),
247
- tx3.getTxHash(),
248
- tx4.getTxHash(),
249
- tx5.getTxHash()
250
- ]);
251
- expect(availability).toHaveLength(5);
252
- expect(availability).toEqual(expect.arrayContaining([
253
- true,
254
- true,
255
- true,
256
- false,
257
- false
258
- ]));
259
- });
260
- it('returns pending tx hashes sorted by priority', async ()=>{
261
- const withPriorityFee = (tx, fee)=>{
262
- unfreeze(tx.data.constants.txContext.gasSettings).maxPriorityFeesPerGas = new GasFees(fee, fee);
263
- return tx;
264
- };
265
- const tx1 = withPriorityFee(await mockTx(0), 1000);
266
- const tx2 = withPriorityFee(await mockTx(1), 100);
267
- const tx3 = withPriorityFee(await mockTx(2), 200);
268
- const tx4 = withPriorityFee(await mockTx(3), 3000);
269
- await pool.addTxs([
270
- tx1,
271
- tx2,
272
- tx3,
273
- tx4
274
- ]);
275
- const poolTxHashes = await pool.getPendingTxHashes();
276
- expect(poolTxHashes).toHaveLength(4);
277
- expect(poolTxHashes).toEqual([
278
- tx4,
279
- tx1,
280
- tx3,
281
- tx2
282
- ].map((tx)=>tx.getTxHash()));
283
- });
284
- describe('soft-delete', ()=>{
285
- it('soft-deletes mined txs and keeps them in storage', async ()=>{
286
- const txs = await Promise.all([
287
- mockTx(1),
288
- mockTx(2),
289
- mockTx(3)
290
- ]);
291
- await pool.addTxs(txs);
292
- // Mark first tx as mined
293
- await pool.markAsMined([
294
- txs[0].getTxHash()
295
- ], minedBlockHeader);
296
- // Verify initial state
297
- await expect(pool.getPendingTxCount()).resolves.toBe(2);
298
- await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeDefined();
299
- await expect(pool.getTxByHash(txs[1].getTxHash())).resolves.toBeDefined();
300
- // Delete mined tx - should be soft-deleted
301
- await pool.deleteTxs([
302
- txs[0].getTxHash()
303
- ]);
304
- // Delete pending tx - should be permanently deleted
305
- await pool.deleteTxs([
306
- txs[1].getTxHash()
307
- ]);
308
- // Verify mined tx still exists in storage but has 'deleted' status
309
- await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeDefined();
310
- await expect(pool.getTxStatus(txs[0].getTxHash())).resolves.toEqual('deleted');
311
- // Verify pending tx is permanently deleted
312
- await expect(pool.getTxByHash(txs[1].getTxHash())).resolves.toBeUndefined();
313
- await expect(pool.getTxStatus(txs[1].getTxHash())).resolves.toBeUndefined();
314
- // Verify remaining pending count
315
- await expect(pool.getPendingTxCount()).resolves.toBe(1);
316
- // Verify pending hashes don't include deleted txs
317
- const pendingHashes = await pool.getPendingTxHashes();
318
- expect(pendingHashes).toHaveLength(1);
319
- expect(pendingHashes.map((h)=>h.toString())).toContain(txs[2].getTxHash().toString());
320
- });
321
- it('cleans up old deleted mined transactions', async ()=>{
322
- const txs = await Promise.all([
323
- mockTx(1),
324
- mockTx(2),
325
- mockTx(3)
326
- ]);
327
- await pool.addTxs(txs);
328
- // Mark first two as mined in block 1
329
- await pool.markAsMined([
330
- txs[0].getTxHash(),
331
- txs[1].getTxHash()
332
- ], minedBlockHeader);
333
- // Soft-delete mined transactions
334
- await pool.deleteTxs([
335
- txs[0].getTxHash(),
336
- txs[1].getTxHash()
337
- ]);
338
- // Clean up deleted mined txs from block 1 and earlier
339
- const deletedCount = await pool.cleanupDeletedMinedTxs(BlockNumber(1));
340
- // Verify old transactions are permanently deleted
341
- expect(deletedCount).toBe(2);
342
- await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeUndefined();
343
- await expect(pool.getTxByHash(txs[1].getTxHash())).resolves.toBeUndefined();
344
- await expect(pool.getTxByHash(txs[2].getTxHash())).resolves.toBeDefined();
345
- });
346
- it('does not clean up recent deleted mined transactions', async ()=>{
347
- const txs = await Promise.all([
348
- mockTx(1),
349
- mockTx(2)
350
- ]);
351
- await pool.addTxs(txs);
352
- // Mark as mined in block 2
353
- const laterBlockHeader = BlockHeader.empty({
354
- globalVariables: GlobalVariables.empty({
355
- blockNumber: BlockNumber(2),
356
- timestamp: 0n
357
- })
358
- });
359
- await pool.markAsMined([
360
- txs[0].getTxHash()
361
- ], laterBlockHeader);
362
- // Soft-delete a mined transaction
363
- await pool.deleteTxs([
364
- txs[0].getTxHash()
365
- ]);
366
- // Try to clean up with block 1 (before the mined block)
367
- const deletedCount = await pool.cleanupDeletedMinedTxs(BlockNumber(1));
368
- // Verify no transactions were cleaned up
369
- expect(deletedCount).toBe(0);
370
- await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeDefined();
371
- });
372
- it('restores deleted mined tx when it is mined again', async ()=>{
373
- const tx = await mockTx(1);
374
- await pool.addTxs([
375
- tx
376
- ]);
377
- // Mark as mined
378
- await pool.markAsMined([
379
- tx.getTxHash()
380
- ], minedBlockHeader);
381
- // Soft-delete it
382
- await pool.deleteTxs([
383
- tx.getTxHash()
384
- ]);
385
- await expect(pool.getTxStatus(tx.getTxHash())).resolves.toEqual('deleted');
386
- // Mark as mined again (e.g., after a reorg)
387
- await pool.markAsMined([
388
- tx.getTxHash()
389
- ], minedBlockHeader);
390
- // Should be back to mined status
391
- await expect(pool.getTxStatus(tx.getTxHash())).resolves.toEqual('mined');
392
- await expect(pool.getTxByHash(tx.getTxHash())).resolves.toBeDefined();
393
- });
394
- });
395
- }
@@ -1,12 +0,0 @@
1
- import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { type BlockProposal, type P2PValidator, PeerErrorSeverity } from '@aztec/stdlib/p2p';
3
- export declare class BlockProposalValidator implements P2PValidator<BlockProposal> {
4
- private epochCache;
5
- private logger;
6
- private txsPermitted;
7
- constructor(epochCache: EpochCacheInterface, opts: {
8
- txsPermitted: boolean;
9
- });
10
- validate(block: BlockProposal): Promise<PeerErrorSeverity | undefined>;
11
- }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvYmxvY2tfcHJvcG9zYWxfdmFsaWRhdG9yL2Jsb2NrX3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxLQUFLLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdGLHFCQUFhLHNCQUF1QixZQUFXLFlBQVksQ0FBQyxhQUFhLENBQUM7SUFDeEUsT0FBTyxDQUFDLFVBQVUsQ0FBc0I7SUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUN2QixPQUFPLENBQUMsWUFBWSxDQUFVO0lBRTlCLFlBQVksVUFBVSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRTtRQUFFLFlBQVksRUFBRSxPQUFPLENBQUE7S0FBRSxFQUkzRTtJQUVLLFFBQVEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsQ0ErRTNFO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"block_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/block_proposal_validator/block_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE7F,qBAAa,sBAAuB,YAAW,YAAY,CAAC,aAAa,CAAC;IACxE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAU;IAE9B,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,EAI3E;IAEK,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CA+E3E;CACF"}
@@ -1,82 +0,0 @@
1
- import { NoCommitteeError } from '@aztec/ethereum';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
4
- export class BlockProposalValidator {
5
- epochCache;
6
- logger;
7
- txsPermitted;
8
- constructor(epochCache, opts){
9
- this.epochCache = epochCache;
10
- this.txsPermitted = opts.txsPermitted;
11
- this.logger = createLogger('p2p:block_proposal_validator');
12
- }
13
- async validate(block) {
14
- try {
15
- // Check signature validity first - invalid signatures are a high-severity issue
16
- const proposer = block.getSender();
17
- if (!proposer) {
18
- this.logger.debug(`Penalizing peer for block proposal with invalid signature`);
19
- return PeerErrorSeverity.MidToleranceError;
20
- }
21
- // Check if transactions are permitted when the proposal contains transaction hashes
22
- const embeddedTxCount = block.txs?.length ?? 0;
23
- if (!this.txsPermitted && (block.txHashes.length > 0 || embeddedTxCount > 0)) {
24
- this.logger.debug(`Penalizing peer for block proposal with ${block.txHashes.length} transaction(s) when transactions are not permitted`);
25
- return PeerErrorSeverity.MidToleranceError;
26
- }
27
- // If there are embedded txs, they must be listed in txHashes; if there are no txHashes, there must be no txs
28
- const hashSet = new Set(block.txHashes.map((h)=>h.toString()));
29
- const missingTxHashes = embeddedTxCount > 0 ? block.txs.filter((tx)=>!hashSet.has(tx.getTxHash().toString())).map((tx)=>tx.getTxHash().toString()) : [];
30
- if (embeddedTxCount > 0 && missingTxHashes.length > 0) {
31
- this.logger.warn('Penalizing peer for embedded transaction(s) not included in txHashes', {
32
- embeddedTxCount,
33
- txHashesLength: block.txHashes.length,
34
- missingTxHashes
35
- });
36
- return PeerErrorSeverity.MidToleranceError;
37
- }
38
- const { currentProposer, nextProposer, currentSlot, nextSlot } = await this.epochCache.getProposerAttesterAddressInCurrentOrNextSlot();
39
- // Check that the attestation is for the current or next slot
40
- const slotNumber = block.payload.header.slotNumber;
41
- if (slotNumber !== currentSlot && slotNumber !== nextSlot) {
42
- this.logger.debug(`Penalizing peer for invalid slot number ${slotNumber}`, {
43
- currentSlot,
44
- nextSlot
45
- });
46
- return PeerErrorSeverity.HighToleranceError;
47
- }
48
- // Check that the block proposal is from the current or next proposer
49
- if (slotNumber === currentSlot && currentProposer !== undefined && !proposer.equals(currentProposer)) {
50
- this.logger.debug(`Penalizing peer for invalid proposer for current slot ${slotNumber}`, {
51
- currentProposer,
52
- nextProposer,
53
- proposer: proposer.toString()
54
- });
55
- return PeerErrorSeverity.MidToleranceError;
56
- }
57
- if (slotNumber === nextSlot && nextProposer !== undefined && !proposer.equals(nextProposer)) {
58
- this.logger.debug(`Penalizing peer for invalid proposer for next slot ${slotNumber}`, {
59
- currentProposer,
60
- nextProposer,
61
- proposer: proposer.toString()
62
- });
63
- return PeerErrorSeverity.MidToleranceError;
64
- }
65
- // Validate tx hashes for all txs embedded in the proposal
66
- if (!(await Promise.all(block.txs?.map((tx)=>tx.validateTxHash()) ?? [])).every((v)=>v)) {
67
- this.logger.warn(`Penalizing peer for invalid tx hashes in block proposal`, {
68
- proposer,
69
- slotNumber
70
- });
71
- return PeerErrorSeverity.LowToleranceError;
72
- }
73
- return undefined;
74
- } catch (e) {
75
- // People shouldn't be sending us block proposals if the committee doesn't exist
76
- if (e instanceof NoCommitteeError) {
77
- return PeerErrorSeverity.LowToleranceError;
78
- }
79
- throw e;
80
- }
81
- }
82
- }
@@ -1,2 +0,0 @@
1
- export * from './block_proposal_validator.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy9ibG9ja19wcm9wb3NhbF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQyJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/block_proposal_validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -1 +0,0 @@
1
- export * from './block_proposal_validator.js';
@@ -1,45 +0,0 @@
1
- import type { PeerId } from '@libp2p/interface';
2
- import type { ConnectionSampler } from './connection_sampler.js';
3
- /**
4
- * Manages batches of peers for parallel request processing.
5
- * Tracks active peers and provides deterministic peer assignment for requests.
6
- *
7
- * Example with 3 peers and 10 requests:
8
- *
9
- * Peers: [P1] [P2] [P3]
10
- * ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
11
- * Requests: 0,1,2,9 | 3,4,5 | 6,7,8
12
- *
13
- * Each peer handles a bucket of consecutive requests.
14
- * If a peer fails, it is replaced while maintaining the same bucket.
15
- */
16
- export declare class BatchConnectionSampler {
17
- private readonly connectionSampler;
18
- private readonly logger;
19
- private readonly batch;
20
- private readonly requestsPerPeer;
21
- constructor(connectionSampler: ConnectionSampler, batchSize: number, maxPeers: number, exclude?: PeerId[], logger?: import("@aztec/foundation/log").Logger);
22
- /**
23
- * Gets the peer responsible for handling a specific request index
24
- *
25
- * @param index - The request index
26
- * @returns The peer assigned to handle this request
27
- */
28
- getPeerForRequest(index: number): PeerId | undefined;
29
- /**
30
- * Removes a peer and replaces it with a new one, maintaining the same position
31
- * in the batch array to keep request distribution consistent
32
- *
33
- * @param peerId - The peer to remove and replace
34
- */
35
- removePeerAndReplace(peerId: PeerId): void;
36
- /**
37
- * Gets the number of active peers
38
- */
39
- get activePeerCount(): number;
40
- /**
41
- * Gets the number of requests each peer is assigned to handle
42
- */
43
- get requestsPerBucket(): number;
44
- }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfY29ubmVjdGlvbl9zYW1wbGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9jb25uZWN0aW9uLXNhbXBsZXIvYmF0Y2hfY29ubmVjdGlvbl9zYW1wbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakU7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gscUJBQWEsc0JBQXNCO0lBSy9CLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBSWxDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQVJ6QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBZ0I7SUFDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQVM7SUFFekMsWUFDbUIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ3JELFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUNELE1BQU0seUNBQXVELEVBZS9FO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBUW5EO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FpQnpDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGVBQWUsSUFBSSxNQUFNLENBRTVCO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGlCQUFpQixJQUFJLE1BQU0sQ0FFOUI7Q0FDRiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"batch_connection_sampler.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/connection-sampler/batch_connection_sampler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAsB;IAK/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC,YACmB,iBAAiB,EAAE,iBAAiB,EACrD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAAE,EACD,MAAM,yCAAuD,EAe/E;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQnD;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBzC;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAE9B;CACF"}
@@ -1,92 +0,0 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- /**
3
- * Manages batches of peers for parallel request processing.
4
- * Tracks active peers and provides deterministic peer assignment for requests.
5
- *
6
- * Example with 3 peers and 10 requests:
7
- *
8
- * Peers: [P1] [P2] [P3]
9
- * ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
10
- * Requests: 0,1,2,9 | 3,4,5 | 6,7,8
11
- *
12
- * Each peer handles a bucket of consecutive requests.
13
- * If a peer fails, it is replaced while maintaining the same bucket.
14
- */ export class BatchConnectionSampler {
15
- connectionSampler;
16
- logger;
17
- batch;
18
- requestsPerPeer;
19
- constructor(connectionSampler, batchSize, maxPeers, exclude, logger = createLogger('p2p:reqresp:batch-connection-sampler')){
20
- this.connectionSampler = connectionSampler;
21
- this.logger = logger;
22
- this.batch = [];
23
- if (maxPeers <= 0) {
24
- throw new Error('Max peers cannot be 0');
25
- }
26
- if (batchSize <= 0) {
27
- throw new Error('Batch size cannot be 0');
28
- }
29
- // Calculate how many requests each peer should handle, cannot be 0
30
- this.requestsPerPeer = Math.max(1, Math.floor(batchSize / maxPeers));
31
- // Sample initial peers
32
- const excluding = exclude && new Map(exclude.map((peerId)=>[
33
- peerId.toString(),
34
- true
35
- ]));
36
- this.batch = this.connectionSampler.samplePeersBatch(maxPeers, excluding);
37
- }
38
- /**
39
- * Gets the peer responsible for handling a specific request index
40
- *
41
- * @param index - The request index
42
- * @returns The peer assigned to handle this request
43
- */ getPeerForRequest(index) {
44
- if (this.batch.length === 0) {
45
- return undefined;
46
- }
47
- // Calculate which peer bucket this index belongs to
48
- const peerIndex = Math.floor(index / this.requestsPerPeer) % this.batch.length;
49
- return this.batch[peerIndex];
50
- }
51
- /**
52
- * Removes a peer and replaces it with a new one, maintaining the same position
53
- * in the batch array to keep request distribution consistent
54
- *
55
- * @param peerId - The peer to remove and replace
56
- */ removePeerAndReplace(peerId) {
57
- const index = this.batch.findIndex((p)=>p === peerId);
58
- if (index === -1) {
59
- return;
60
- }
61
- const excluding = new Map([
62
- [
63
- peerId.toString(),
64
- true
65
- ]
66
- ]);
67
- const newPeer = this.connectionSampler.getPeer(excluding); // Q: Shouldn't we accumulate all excluded peers? Otherwise the sampler could return us a previously excluded peer?
68
- if (newPeer) {
69
- this.batch[index] = newPeer;
70
- this.logger.trace('Replaced peer', {
71
- peerId,
72
- newPeer
73
- });
74
- } else {
75
- // If we couldn't get a replacement, remove the peer and compact the array
76
- this.batch.splice(index, 1);
77
- this.logger.trace('Removed peer', {
78
- peerId
79
- });
80
- }
81
- }
82
- /**
83
- * Gets the number of active peers
84
- */ get activePeerCount() {
85
- return this.batch.length;
86
- }
87
- /**
88
- * Gets the number of requests each peer is assigned to handle
89
- */ get requestsPerBucket() {
90
- return this.requestsPerPeer;
91
- }
92
- }
@@ -1,9 +0,0 @@
1
- import type { L2BlockSource } from '@aztec/stdlib/block';
2
- import type { ReqRespSubProtocolHandler } from '../interface.js';
3
- /**
4
- * Handler for L2 Block requests
5
- * @param l2BlockSource - source for L2 blocks
6
- * @returns the Block request handler
7
- * */
8
- export declare function reqRespBlockHandler(l2BlockSource: L2BlockSource): ReqRespSubProtocolHandler;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUl6RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pFOzs7O0tBSUs7QUFDTCx3QkFBZ0IsbUJBQW1CLENBQUMsYUFBYSxFQUFFLGFBQWEsR0FBRyx5QkFBeUIsQ0FzQjNGIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/protocols/block.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE;;;;KAIK;AACL,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,GAAG,yBAAyB,CAsB3F"}