@aztec/p2p 0.0.1-commit.9593d84 → 0.0.1-commit.96dac018d

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