@aztec/p2p 0.0.1-commit.e558bd1c → 0.0.1-commit.e5a3663dd

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