@aztec/p2p 0.0.1-commit.21caa21 → 0.0.1-commit.21ecf947b

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