@aztec/p2p 0.0.1-commit.9d2bcf6d → 0.0.1-commit.9ebd450e8

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