@aztec/p2p 0.0.1-commit.03f7ef2 → 0.0.1-commit.04852196a

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 (550) 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 +11 -11
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +46 -18
  7. package/dest/client/interface.d.ts +61 -35
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +47 -60
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +595 -332
  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 +304 -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 +56 -22
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +95 -50
  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 +445 -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 +6 -4
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +21 -26
  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 +35 -26
  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 +312 -336
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  51. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  53. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  54. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -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 +17 -0
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  62. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  65. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  66. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  68. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  69. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  71. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  72. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  73. package/dest/mem_pools/tx_pool/index.js +0 -1
  74. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  75. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool/priority.js +6 -1
  77. package/dest/mem_pools/tx_pool/tx_pool.d.ts +8 -4
  78. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  79. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +7 -7
  80. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  81. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  82. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  83. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  84. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  85. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  86. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  87. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  119. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  120. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  121. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  122. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  123. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  124. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  125. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +213 -0
  126. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  127. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  128. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +127 -0
  129. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  130. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +210 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  133. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  134. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  135. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  136. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  137. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  138. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  139. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +164 -0
  140. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  141. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  142. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +909 -0
  143. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  144. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  145. package/dest/msg_validators/attestation_validator/attestation_validator.js +51 -18
  146. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
  147. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  148. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  149. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  150. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  151. package/dest/msg_validators/clock_tolerance.js +37 -0
  152. package/dest/msg_validators/index.d.ts +2 -2
  153. package/dest/msg_validators/index.d.ts.map +1 -1
  154. package/dest/msg_validators/index.js +1 -1
  155. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +11 -0
  156. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  157. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  158. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +11 -0
  159. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  160. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +20 -0
  161. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  162. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  163. package/dest/msg_validators/proposal_validator/index.js +3 -0
  164. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +18 -0
  165. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  166. package/dest/msg_validators/proposal_validator/proposal_validator.js +116 -0
  167. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  168. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  170. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  171. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  172. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  173. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  174. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  175. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  176. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  177. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  178. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  179. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  180. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  181. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  182. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  183. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  184. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  185. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  186. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  187. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  188. package/dest/msg_validators/tx_validator/factory.d.ts +118 -5
  189. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  190. package/dest/msg_validators/tx_validator/factory.js +228 -57
  191. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  192. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  193. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  194. package/dest/msg_validators/tx_validator/gas_validator.d.ts +59 -3
  195. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  196. package/dest/msg_validators/tx_validator/gas_validator.js +84 -52
  197. package/dest/msg_validators/tx_validator/index.d.ts +4 -1
  198. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  199. package/dest/msg_validators/tx_validator/index.js +3 -0
  200. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  201. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  202. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
  203. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  204. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  205. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  206. package/dest/msg_validators/tx_validator/phases_validator.d.ts +4 -3
  207. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  208. package/dest/msg_validators/tx_validator/phases_validator.js +47 -26
  209. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  210. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  211. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  212. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  213. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  214. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  215. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  216. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  217. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  218. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  219. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  220. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  221. package/dest/services/data_store.d.ts +1 -1
  222. package/dest/services/data_store.d.ts.map +1 -1
  223. package/dest/services/data_store.js +10 -6
  224. package/dest/services/discv5/discV5_service.js +1 -1
  225. package/dest/services/dummy_service.d.ts +28 -4
  226. package/dest/services/dummy_service.d.ts.map +1 -1
  227. package/dest/services/dummy_service.js +49 -1
  228. package/dest/services/encoding.d.ts +3 -3
  229. package/dest/services/encoding.d.ts.map +1 -1
  230. package/dest/services/encoding.js +16 -14
  231. package/dest/services/gossipsub/index.d.ts +3 -0
  232. package/dest/services/gossipsub/index.d.ts.map +1 -0
  233. package/dest/services/gossipsub/index.js +2 -0
  234. package/dest/services/gossipsub/scoring.d.ts +21 -3
  235. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  236. package/dest/services/gossipsub/scoring.js +24 -7
  237. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  238. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  239. package/dest/services/gossipsub/topic_score_params.js +346 -0
  240. package/dest/services/index.d.ts +2 -1
  241. package/dest/services/index.d.ts.map +1 -1
  242. package/dest/services/index.js +1 -0
  243. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  244. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  245. package/dest/services/libp2p/instrumentation.js +30 -72
  246. package/dest/services/libp2p/libp2p_service.d.ts +115 -40
  247. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  248. package/dest/services/libp2p/libp2p_service.js +1032 -375
  249. package/dest/services/peer-manager/metrics.d.ts +9 -2
  250. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  251. package/dest/services/peer-manager/metrics.js +39 -21
  252. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  253. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  254. package/dest/services/peer-manager/peer_manager.js +4 -11
  255. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  256. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  257. package/dest/services/peer-manager/peer_scoring.js +32 -6
  258. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  259. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  260. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +539 -0
  261. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  262. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  263. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  264. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  265. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  266. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  267. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  268. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  269. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  270. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +60 -0
  271. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  272. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +173 -0
  273. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  274. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  275. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  276. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  277. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  278. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  279. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  280. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  281. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  282. package/dest/services/reqresp/constants.d.ts +12 -0
  283. package/dest/services/reqresp/constants.d.ts.map +1 -0
  284. package/dest/services/reqresp/constants.js +7 -0
  285. package/dest/services/reqresp/interface.d.ts +12 -1
  286. package/dest/services/reqresp/interface.d.ts.map +1 -1
  287. package/dest/services/reqresp/interface.js +15 -1
  288. package/dest/services/reqresp/metrics.d.ts +6 -5
  289. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  290. package/dest/services/reqresp/metrics.js +17 -21
  291. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  292. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  293. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  294. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  295. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  296. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  297. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  298. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  299. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  300. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  301. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  302. package/dest/services/reqresp/protocols/status.js +4 -1
  303. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  304. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  305. package/dest/services/reqresp/protocols/tx.js +20 -0
  306. package/dest/services/reqresp/reqresp.d.ts +6 -1
  307. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  308. package/dest/services/reqresp/reqresp.js +473 -51
  309. package/dest/services/service.d.ts +56 -4
  310. package/dest/services/service.d.ts.map +1 -1
  311. package/dest/services/tx_collection/config.d.ts +22 -1
  312. package/dest/services/tx_collection/config.d.ts.map +1 -1
  313. package/dest/services/tx_collection/config.js +55 -1
  314. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  315. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  316. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  317. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  318. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  319. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  320. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  321. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  322. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  323. package/dest/services/tx_collection/index.d.ts +3 -1
  324. package/dest/services/tx_collection/index.d.ts.map +1 -1
  325. package/dest/services/tx_collection/index.js +2 -0
  326. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  327. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  328. package/dest/services/tx_collection/instrumentation.js +11 -13
  329. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  330. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  331. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  332. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  333. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  334. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  335. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
  336. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  337. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  338. package/dest/services/tx_collection/tx_collection.d.ts +29 -16
  339. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  340. package/dest/services/tx_collection/tx_collection.js +79 -7
  341. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  342. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  343. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  344. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  345. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  346. package/dest/services/tx_collection/tx_source.js +19 -2
  347. package/dest/services/tx_file_store/config.d.ts +16 -0
  348. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  349. package/dest/services/tx_file_store/config.js +22 -0
  350. package/dest/services/tx_file_store/index.d.ts +4 -0
  351. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  352. package/dest/services/tx_file_store/index.js +3 -0
  353. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  354. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  355. package/dest/services/tx_file_store/instrumentation.js +29 -0
  356. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  357. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  358. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  359. package/dest/services/tx_provider.d.ts +6 -6
  360. package/dest/services/tx_provider.d.ts.map +1 -1
  361. package/dest/services/tx_provider.js +12 -9
  362. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  363. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  364. package/dest/services/tx_provider_instrumentation.js +7 -20
  365. package/dest/test-helpers/index.d.ts +3 -1
  366. package/dest/test-helpers/index.d.ts.map +1 -1
  367. package/dest/test-helpers/index.js +2 -0
  368. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  369. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  370. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  371. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  372. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  373. package/dest/test-helpers/mock-pubsub.js +105 -4
  374. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  375. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  376. package/dest/test-helpers/reqresp-nodes.js +4 -3
  377. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  378. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  379. package/dest/test-helpers/test_tx_provider.js +41 -0
  380. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  381. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  382. package/dest/test-helpers/testbench-utils.js +366 -0
  383. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  384. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  385. package/dest/testbench/p2p_client_testbench_worker.js +226 -130
  386. package/dest/testbench/worker_client_manager.d.ts +53 -6
  387. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  388. package/dest/testbench/worker_client_manager.js +231 -40
  389. package/dest/util.d.ts +3 -3
  390. package/dest/util.d.ts.map +1 -1
  391. package/package.json +16 -16
  392. package/src/bootstrap/bootstrap.ts +7 -4
  393. package/src/client/factory.ts +86 -38
  394. package/src/client/interface.ts +73 -36
  395. package/src/client/p2p_client.ts +254 -381
  396. package/src/client/test/tx_proposal_collector/README.md +227 -0
  397. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
  398. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  399. package/src/config.ts +147 -60
  400. package/src/errors/tx-pool.error.ts +12 -0
  401. package/src/index.ts +1 -0
  402. package/src/mem_pools/attestation_pool/attestation_pool.ts +511 -78
  403. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +612 -320
  404. package/src/mem_pools/attestation_pool/index.ts +9 -2
  405. package/src/mem_pools/attestation_pool/mocks.ts +20 -13
  406. package/src/mem_pools/index.ts +4 -1
  407. package/src/mem_pools/instrumentation.ts +28 -30
  408. package/src/mem_pools/interface.ts +4 -4
  409. package/src/mem_pools/tx_pool/README.md +270 -0
  410. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +360 -368
  411. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  412. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  413. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  414. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  415. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  416. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  417. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  418. package/src/mem_pools/tx_pool/index.ts +0 -1
  419. package/src/mem_pools/tx_pool/priority.ts +8 -1
  420. package/src/mem_pools/tx_pool/tx_pool.ts +8 -3
  421. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +7 -7
  422. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  423. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  424. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  425. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  426. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  427. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  428. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  429. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  430. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  431. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  432. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  433. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  434. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  435. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  436. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  437. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  438. package/src/mem_pools/tx_pool_v2/interfaces.ts +245 -0
  439. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +327 -0
  440. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  441. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  442. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +226 -0
  443. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
  444. package/src/msg_validators/attestation_validator/attestation_validator.ts +36 -21
  445. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
  446. package/src/msg_validators/clock_tolerance.ts +51 -0
  447. package/src/msg_validators/index.ts +1 -1
  448. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +20 -0
  449. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -0
  450. package/src/msg_validators/proposal_validator/index.ts +3 -0
  451. package/src/msg_validators/proposal_validator/proposal_validator.ts +115 -0
  452. package/src/msg_validators/tx_validator/README.md +115 -0
  453. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  454. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  455. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  456. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  457. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  458. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  459. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  460. package/src/msg_validators/tx_validator/factory.ts +372 -55
  461. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  462. package/src/msg_validators/tx_validator/gas_validator.ts +106 -54
  463. package/src/msg_validators/tx_validator/index.ts +3 -0
  464. package/src/msg_validators/tx_validator/metadata_validator.ts +30 -11
  465. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  466. package/src/msg_validators/tx_validator/phases_validator.ts +56 -29
  467. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  468. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -19
  469. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  470. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  471. package/src/services/data_store.ts +10 -7
  472. package/src/services/discv5/discV5_service.ts +1 -1
  473. package/src/services/dummy_service.ts +65 -2
  474. package/src/services/encoding.ts +13 -12
  475. package/src/services/gossipsub/README.md +641 -0
  476. package/src/services/gossipsub/index.ts +2 -0
  477. package/src/services/gossipsub/scoring.ts +29 -5
  478. package/src/services/gossipsub/topic_score_params.ts +487 -0
  479. package/src/services/index.ts +1 -0
  480. package/src/services/libp2p/instrumentation.ts +32 -73
  481. package/src/services/libp2p/libp2p_service.ts +718 -374
  482. package/src/services/peer-manager/metrics.ts +46 -21
  483. package/src/services/peer-manager/peer_manager.ts +5 -3
  484. package/src/services/peer-manager/peer_scoring.ts +28 -4
  485. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  486. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +678 -0
  487. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  488. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  489. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  490. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +244 -0
  491. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  492. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  493. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  494. package/src/services/reqresp/constants.ts +14 -0
  495. package/src/services/reqresp/interface.ts +29 -1
  496. package/src/services/reqresp/metrics.ts +36 -27
  497. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  498. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  499. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  500. package/src/services/reqresp/protocols/status.ts +7 -4
  501. package/src/services/reqresp/protocols/tx.ts +22 -0
  502. package/src/services/reqresp/reqresp.ts +82 -23
  503. package/src/services/service.ts +73 -5
  504. package/src/services/tx_collection/config.ts +83 -1
  505. package/src/services/tx_collection/fast_tx_collection.ts +93 -47
  506. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  507. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  508. package/src/services/tx_collection/index.ts +6 -0
  509. package/src/services/tx_collection/instrumentation.ts +11 -13
  510. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  511. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  512. package/src/services/tx_collection/slow_tx_collection.ts +68 -35
  513. package/src/services/tx_collection/tx_collection.ts +121 -24
  514. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  515. package/src/services/tx_collection/tx_source.ts +22 -3
  516. package/src/services/tx_file_store/config.ts +37 -0
  517. package/src/services/tx_file_store/index.ts +3 -0
  518. package/src/services/tx_file_store/instrumentation.ts +36 -0
  519. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  520. package/src/services/tx_provider.ts +16 -12
  521. package/src/services/tx_provider_instrumentation.ts +13 -20
  522. package/src/test-helpers/index.ts +2 -0
  523. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  524. package/src/test-helpers/mock-pubsub.ts +146 -9
  525. package/src/test-helpers/reqresp-nodes.ts +5 -7
  526. package/src/test-helpers/test_tx_provider.ts +64 -0
  527. package/src/test-helpers/testbench-utils.ts +430 -0
  528. package/src/testbench/p2p_client_testbench_worker.ts +351 -128
  529. package/src/testbench/worker_client_manager.ts +312 -42
  530. package/src/util.ts +8 -2
  531. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  532. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  533. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  534. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  535. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  536. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  537. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -81
  538. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  539. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -242
  540. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  541. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  542. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  543. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  544. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  545. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  546. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  547. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  548. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -288
  549. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  550. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,35 +1,39 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
4
  import { DateProvider } from '@aztec/foundation/timer';
4
5
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
- import type { DataStoreConfig } from '@aztec/kv-store/config';
6
6
  import { AztecLMDBStoreV2, createStore } from '@aztec/kv-store/lmdb-v2';
7
7
  import type { L2BlockSource } from '@aztec/stdlib/block';
8
8
  import type { ChainConfig } from '@aztec/stdlib/config';
9
9
  import type { ContractDataSource } from '@aztec/stdlib/contract';
10
- import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
11
- import { P2PClientType } from '@aztec/stdlib/p2p';
10
+ import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
11
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
12
12
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
13
13
 
14
14
  import { P2PClient } from '../client/p2p_client.js';
15
15
  import type { P2PConfig } from '../config.js';
16
- import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
17
- import { KvAttestationPool } from '../mem_pools/attestation_pool/kv_attestation_pool.js';
16
+ import { AttestationPool, type AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
18
17
  import type { MemPools } from '../mem_pools/interface.js';
19
- import { AztecKVTxPool, type TxPool } from '../mem_pools/tx_pool/index.js';
18
+ import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
19
+ import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
20
+ import { createTxValidatorForTransactionsEnteringPendingTxPool } from '../msg_validators/index.js';
20
21
  import { DummyP2PService } from '../services/dummy_service.js';
21
22
  import { LibP2PService } from '../services/index.js';
23
+ import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
22
24
  import { TxCollection } from '../services/tx_collection/tx_collection.js';
23
- import { type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
25
+ import { NodeRpcTxSource, type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
26
+ import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
24
27
  import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
25
28
 
26
- export type P2PClientDeps<T extends P2PClientType> = {
27
- txPool?: TxPool;
29
+ export type P2PClientDeps = {
30
+ txPool?: TxPoolV2;
28
31
  store?: AztecAsyncKVStore;
29
- attestationPool?: AttestationPool;
32
+ attestationPool?: AttestationPoolApi;
30
33
  logger?: Logger;
31
34
  txCollectionNodeSources?: TxSource[];
32
- p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService<T>>;
35
+ rpcTxProviders?: AztecNode[];
36
+ p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
33
37
  };
34
38
 
35
39
  export const P2P_STORE_NAME = 'p2p';
@@ -37,8 +41,7 @@ export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
37
41
  export const P2P_PEER_STORE_NAME = 'p2p-peers';
38
42
  export const P2P_ATTESTATION_STORE_NAME = 'p2p-attestation';
39
43
 
40
- export async function createP2PClient<T extends P2PClientType>(
41
- clientType: T,
44
+ export async function createP2PClient(
42
45
  inputConfig: P2PConfig & DataStoreConfig & ChainConfig,
43
46
  archiver: L2BlockSource & ContractDataSource,
44
47
  proofVerifier: ClientProtocolCircuitVerifier,
@@ -47,7 +50,7 @@ export async function createP2PClient<T extends P2PClientType>(
47
50
  packageVersion: string,
48
51
  dateProvider: DateProvider = new DateProvider(),
49
52
  telemetry: TelemetryClient = getTelemetryClient(),
50
- deps: P2PClientDeps<T> = {},
53
+ deps: P2PClientDeps = {},
51
54
  ) {
52
55
  const config = await configureP2PClientAddresses({
53
56
  ...inputConfig,
@@ -62,30 +65,53 @@ export async function createP2PClient<T extends P2PClientType>(
62
65
  );
63
66
  }
64
67
 
65
- const store = deps.store ?? (await createStore(P2P_STORE_NAME, 2, config, createLogger('p2p:lmdb-v2')));
66
- const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, createLogger('p2p-archive:lmdb-v2'));
67
- const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, createLogger('p2p-peer:lmdb-v2'));
68
- const attestationStore = await createStore(
69
- P2P_ATTESTATION_STORE_NAME,
70
- 1,
71
- config,
72
- createLogger('p2p-attestation:lmdb-v2'),
73
- );
68
+ const bindings = logger.getBindings();
69
+ const store = deps.store ?? (await createStore(P2P_STORE_NAME, 2, config, bindings));
70
+ const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, bindings);
71
+ const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, bindings);
72
+ const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 1, config, bindings);
74
73
  const l1Constants = await archiver.getL1Constants();
75
74
 
76
- const mempools: MemPools = {
77
- txPool:
78
- deps.txPool ??
79
- new AztecKVTxPool(store, archive, worldStateSynchronizer, telemetry, {
80
- maxTxPoolSize: config.maxTxPoolSize,
75
+ const rollupAddress = inputConfig.l1Contracts.rollupAddress.toString().toLowerCase().replace(/^0x/, '');
76
+ const txFileStoreBasePath = `aztec-${inputConfig.l1ChainId}-${inputConfig.rollupVersion}-0x${rollupAddress}`;
77
+
78
+ const txPool =
79
+ deps.txPool ??
80
+ new AztecKVTxPoolV2(
81
+ store,
82
+ archive,
83
+ {
84
+ l2BlockSource: archiver,
85
+ worldStateSynchronizer,
86
+ createTxValidator: async () => {
87
+ // We accept transactions if they are not expired by the next slot and block number (checked based on the ExpirationTimestamp field)
88
+ const currentBlockNumber = await archiver.getBlockNumber();
89
+ const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
90
+ return createTxValidatorForTransactionsEnteringPendingTxPool(
91
+ worldStateSynchronizer,
92
+ nextSlotTimestamp,
93
+ BlockNumber(currentBlockNumber + 1),
94
+ );
95
+ },
96
+ },
97
+ telemetry,
98
+ {
99
+ maxPendingTxCount: config.maxPendingTxCount,
81
100
  archivedTxLimit: config.archivedTxLimit,
82
- }),
83
- attestationPool: deps.attestationPool ?? new KvAttestationPool(attestationStore, telemetry),
101
+ minTxPoolAgeMs: config.minTxPoolAgeMs,
102
+ dropTransactionsProbability: config.dropTransactionsProbability,
103
+ priceBumpPercentage: config.priceBumpPercentage,
104
+ },
105
+ dateProvider,
106
+ );
107
+
108
+ const mempools: MemPools = {
109
+ txPool,
110
+ attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
84
111
  };
85
112
 
86
- const p2pService = await createP2PService<T>(
113
+ const p2pService = await createP2PService(
87
114
  config,
88
- clientType,
89
115
  archiver,
90
116
  proofVerifier,
91
117
  worldStateSynchronizer,
@@ -101,6 +127,7 @@ export async function createP2PClient<T extends P2PClientType>(
101
127
 
102
128
  const nodeSources = [
103
129
  ...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
130
+ ...(deps.rpcTxProviders ?? []).map((node, i) => new NodeRpcTxSource(node, `node-rpc-provider-${i}`)),
104
131
  ...(deps.txCollectionNodeSources ?? []),
105
132
  ];
106
133
  if (nodeSources.length > 0) {
@@ -109,33 +136,54 @@ export async function createP2PClient<T extends P2PClientType>(
109
136
  });
110
137
  }
111
138
 
139
+ const fileStoreSources = await createFileStoreTxSources(
140
+ config.txCollectionFileStoreUrls,
141
+ txFileStoreBasePath,
142
+ logger.createChild('file-store-tx-source'),
143
+ telemetry,
144
+ );
145
+ if (fileStoreSources.length > 0) {
146
+ logger.info(`Using ${fileStoreSources.length} file store sources for tx collection.`, {
147
+ stores: fileStoreSources.map(s => s.getInfo()),
148
+ });
149
+ }
150
+
112
151
  const txCollection = new TxCollection(
113
- p2pService,
152
+ p2pService.getBatchTxRequesterService(),
114
153
  nodeSources,
115
154
  l1Constants,
116
155
  mempools.txPool,
117
156
  config,
157
+ fileStoreSources,
118
158
  dateProvider,
119
159
  telemetry,
120
160
  logger.createChild('tx-collection'),
121
161
  );
122
162
 
163
+ const txFileStore = await TxFileStore.create(
164
+ mempools.txPool,
165
+ config,
166
+ txFileStoreBasePath,
167
+ logger.createChild('tx-file-store'),
168
+ telemetry,
169
+ );
170
+
123
171
  return new P2PClient(
124
- clientType,
125
172
  store,
126
173
  archiver,
127
174
  mempools,
128
175
  p2pService,
129
176
  txCollection,
177
+ txFileStore,
178
+ epochCache,
130
179
  config,
131
180
  dateProvider,
132
181
  telemetry,
133
182
  );
134
183
  }
135
184
 
136
- async function createP2PService<T extends P2PClientType>(
185
+ async function createP2PService(
137
186
  config: P2PConfig & DataStoreConfig,
138
- clientType: T,
139
187
  archiver: L2BlockSource & ContractDataSource,
140
188
  proofVerifier: ClientProtocolCircuitVerifier,
141
189
  worldStateSynchronizer: WorldStateSynchronizer,
@@ -143,7 +191,7 @@ async function createP2PService<T extends P2PClientType>(
143
191
  store: AztecAsyncKVStore,
144
192
  peerStore: AztecLMDBStoreV2,
145
193
  mempools: MemPools,
146
- p2pServiceFactory: P2PClientDeps<T>['p2pServiceFactory'],
194
+ p2pServiceFactory: P2PClientDeps['p2pServiceFactory'],
147
195
  packageVersion: string,
148
196
  logger: Logger,
149
197
  telemetry: TelemetryClient,
@@ -159,7 +207,7 @@ async function createP2PService<T extends P2PClientType>(
159
207
  const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
160
208
  const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey.getValue());
161
209
 
162
- const p2pService = await (p2pServiceFactory ?? LibP2PService.new<T>)(clientType, config, peerId, {
210
+ const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(config, peerId, {
163
211
  packageVersion,
164
212
  mempools,
165
213
  l2BlockSource: archiver,
@@ -1,7 +1,8 @@
1
+ import type { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
2
- import type { P2PApiFull } from '@aztec/stdlib/interfaces/server';
3
- import type { BlockAttestation, BlockProposal, P2PClientType } from '@aztec/stdlib/p2p';
4
- import type { Tx, TxHash } from '@aztec/stdlib/tx';
3
+ import type { ITxProvider, P2PClient } from '@aztec/stdlib/interfaces/server';
4
+ import type { BlockProposal, CheckpointAttestation, CheckpointProposal, TopicType } from '@aztec/stdlib/p2p';
5
+ import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
5
6
 
6
7
  import type { PeerId } from '@libp2p/interface';
7
8
  import type { ENR } from '@nethermindeth/enr';
@@ -13,7 +14,12 @@ import type {
13
14
  ReqRespSubProtocolHandler,
14
15
  ReqRespSubProtocolValidators,
15
16
  } from '../services/reqresp/interface.js';
16
- import type { P2PBlockReceivedCallback } from '../services/service.js';
17
+ import type {
18
+ DuplicateAttestationInfo,
19
+ DuplicateProposalInfo,
20
+ P2PBlockReceivedCallback,
21
+ P2PCheckpointReceivedCallback,
22
+ } from '../services/service.js';
17
23
 
18
24
  /**
19
25
  * Enum defining the possible states of the p2p client.
@@ -42,7 +48,7 @@ export interface P2PSyncState {
42
48
  /**
43
49
  * Interface of a P2P client.
44
50
  **/
45
- export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> & {
51
+ export type P2P = P2PClient & {
46
52
  /**
47
53
  * Broadcasts a block proposal to other peers.
48
54
  *
@@ -50,8 +56,15 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
50
56
  */
51
57
  broadcastProposal(proposal: BlockProposal): Promise<void>;
52
58
 
53
- /** Broadcasts block attestations to other peers. */
54
- broadcastAttestations(attestations: BlockAttestation[]): Promise<void>;
59
+ /**
60
+ * Broadcasts a checkpoint proposal (last block in a checkpoint) to other peers.
61
+ *
62
+ * @param proposal - the checkpoint proposal
63
+ */
64
+ broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
65
+
66
+ /** Broadcasts checkpoint attestations to other peers. */
67
+ broadcastCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
55
68
 
56
69
  /**
57
70
  * Registers a callback from the validator client that determines how to behave when
@@ -64,12 +77,29 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
64
77
  registerBlockProposalHandler(callback: P2PBlockReceivedCallback): void;
65
78
 
66
79
  /**
67
- * Request a list of transactions from another peer by their tx hashes.
68
- * @param txHashes - Hashes of the txs to query.
69
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
70
- * @returns A list of transactions or undefined if the transactions are not found.
80
+ * Registers a callback from the validator client that determines how to behave when
81
+ * foreign checkpoint proposals are received
82
+ *
83
+ * @param handler - A function taking a received checkpoint proposal and producing attestations
84
+ */
85
+ registerCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
86
+
87
+ /**
88
+ * Registers a callback invoked when a duplicate proposal is detected (equivocation).
89
+ * The callback is triggered on the first duplicate (when count goes from 1 to 2).
90
+ *
91
+ * @param callback - Function called with info about the duplicate proposal
92
+ */
93
+ registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
94
+
95
+ /**
96
+ * Registers a callback invoked when a duplicate attestation is detected (equivocation).
97
+ * A validator signing attestations for different proposals at the same slot.
98
+ * The callback is triggered on the first duplicate (when count goes from 1 to 2).
99
+ *
100
+ * @param callback - Function called with info about the duplicate attestation
71
101
  */
72
- requestTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId): Promise<Tx[]>;
102
+ registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
73
103
 
74
104
  /**
75
105
  * Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
@@ -78,18 +108,10 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
78
108
  sendTx(tx: Tx): Promise<void>;
79
109
 
80
110
  /**
81
- * Adds transactions to the pool. Does not send to peers or validate the tx.
82
- * @param txs - The transactions.
83
- * @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
84
- **/
85
- addTxsToPool(txs: Tx[]): Promise<number>;
86
-
87
- /**
88
- * Deletes 'txs' from the pool, given hashes.
89
- * NOT used if we use sendTx as reconcileTxPool will handle this.
90
- * @param txHashes - Hashes to check.
111
+ * Handles failed transaction execution by removing txs from the pool.
112
+ * @param txHashes - Hashes of the transactions that failed execution.
91
113
  **/
92
- deleteTxs(txHashes: TxHash[]): Promise<void>;
114
+ handleFailedExecution(txHashes: TxHash[]): Promise<void>;
93
115
 
94
116
  /**
95
117
  * Returns a transaction in the transaction pool by its hash.
@@ -112,14 +134,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
112
134
  */
113
135
  hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
114
136
 
115
- /**
116
- * Returns transactions in the transaction pool by hash, requesting from the network if not found.
117
- * @param txHashes - Hashes of tx to return.
118
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
119
- * @returns An array of tx or undefined.
120
- */
121
- getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
122
-
123
137
  /**
124
138
  * Returns an archived transaction from the transaction pool by its hash.
125
139
  * @param txHash - Hash of tx to return.
@@ -137,14 +151,28 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
137
151
  /** Returns an iterator over pending txs on the mempool. */
138
152
  iteratePendingTxs(): AsyncIterableIterator<Tx>;
139
153
 
154
+ /** Returns an iterator over pending txs that have been in the pool long enough to be eligible for block building. */
155
+ iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
156
+
140
157
  /** Returns the number of pending txs in the mempool. */
141
158
  getPendingTxCount(): Promise<number>;
142
159
 
143
160
  /**
144
- * Marks transactions as non-evictable in the pool.
145
- * @param txHashes - Hashes of the transactions to mark as non-evictable.
161
+ * Protects existing transactions by hash for a given slot.
162
+ * Returns hashes of transactions that weren't found in the pool.
163
+ * @param txHashes - Hashes of the transactions to protect.
164
+ * @param blockHeader - The block header providing slot context.
165
+ * @returns Hashes of transactions not found in the pool.
166
+ */
167
+ protectTxs(txHashes: TxHash[], blockHeader: BlockHeader): Promise<TxHash[]>;
168
+
169
+ /**
170
+ * Prepares the pool for a new slot.
171
+ * Unprotects transactions from earlier slots and validates them before
172
+ * returning to pending state.
173
+ * @param slotNumber - The slot number to prepare for
146
174
  */
147
- markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
175
+ prepareForSlot(slotNumber: SlotNumber): Promise<void>;
148
176
 
149
177
  /**
150
178
  * Starts the p2p client.
@@ -177,10 +205,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
177
205
  /** Identifies a p2p client. */
178
206
  isP2PClient(): true;
179
207
 
208
+ /** Returns the tx provider used for fetching transactions. */
209
+ getTxProvider(): ITxProvider;
210
+
180
211
  updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
181
212
 
182
- /** Validates a set of txs. */
183
- validate(txs: Tx[]): Promise<void>;
213
+ /** Validates a set of txs received in a block proposal. */
214
+ validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
184
215
 
185
216
  /** Clears the db. */
186
217
  clear(): Promise<void>;
@@ -193,6 +224,12 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
193
224
 
194
225
  handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
195
226
 
227
+ /** Checks if any block proposals exist for the given slot. */
228
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
229
+
196
230
  /** If node running this P2P stack is validator, passes in validator address to P2P layer */
197
231
  registerThisValidatorAddresses(address: EthAddress[]): void;
232
+
233
+ /** Returns the number of peers in the GossipSub mesh for a given topic type. */
234
+ getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
198
235
  };