@aztec/p2p 0.0.1-commit.d6f2b3f94 → 0.0.1-commit.d939eb5aa

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 (420) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +7 -7
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +37 -30
  5. package/dest/client/interface.d.ts +22 -20
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +11 -19
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +92 -104
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +20 -10
  11. package/dest/config.d.ts +128 -96
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +97 -38
  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 +1 -2
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +0 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +10 -6
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.js +21 -9
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
  27. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  30. package/dest/mem_pools/index.d.ts +1 -2
  31. package/dest/mem_pools/index.d.ts.map +1 -1
  32. package/dest/mem_pools/instrumentation.d.ts +4 -2
  33. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  34. package/dest/mem_pools/instrumentation.js +16 -14
  35. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +30 -13
  36. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
  38. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  39. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  41. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  42. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +7 -3
  44. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  47. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  48. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  51. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  54. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +9 -7
  55. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  56. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  58. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  59. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  60. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  61. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  62. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  64. package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
  65. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  66. package/dest/mem_pools/tx_pool_v2/index.js +1 -1
  67. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  68. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  70. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +28 -10
  71. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  72. package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
  73. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -15
  74. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  75. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +113 -20
  76. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  77. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -5
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +17 -6
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +319 -147
  85. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +5 -2
  86. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  87. package/dest/msg_validators/attestation_validator/attestation_validator.js +20 -11
  88. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -2
  89. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  90. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  91. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  92. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  93. package/dest/msg_validators/clock_tolerance.js +54 -3
  94. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +7 -4
  95. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  97. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +7 -4
  98. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  99. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  100. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +15 -8
  101. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/proposal_validator/proposal_validator.js +67 -47
  103. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
  104. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  105. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  106. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  107. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  108. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  109. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  110. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  111. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  112. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  113. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  114. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  115. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  116. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  117. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  119. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  120. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  121. package/dest/msg_validators/tx_validator/factory.js +247 -60
  122. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  123. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  125. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  126. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/gas_validator.js +112 -43
  128. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  129. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  130. package/dest/msg_validators/tx_validator/index.js +2 -0
  131. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  132. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  133. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  134. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  135. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  136. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  137. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  138. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  139. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  140. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
  141. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  143. package/dest/services/data_store.d.ts +1 -1
  144. package/dest/services/data_store.d.ts.map +1 -1
  145. package/dest/services/data_store.js +5 -5
  146. package/dest/services/dummy_service.d.ts +8 -5
  147. package/dest/services/dummy_service.d.ts.map +1 -1
  148. package/dest/services/dummy_service.js +10 -5
  149. package/dest/services/encoding.d.ts +6 -2
  150. package/dest/services/encoding.d.ts.map +1 -1
  151. package/dest/services/encoding.js +16 -9
  152. package/dest/services/gossipsub/topic_score_params.d.ts +30 -7
  153. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  154. package/dest/services/gossipsub/topic_score_params.js +53 -14
  155. package/dest/services/libp2p/libp2p_service.d.ts +29 -36
  156. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  157. package/dest/services/libp2p/libp2p_service.js +224 -197
  158. package/dest/services/peer-manager/metrics.d.ts +3 -1
  159. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  160. package/dest/services/peer-manager/metrics.js +6 -0
  161. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  162. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  163. package/dest/services/peer-manager/peer_manager.js +39 -11
  164. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  165. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  166. package/dest/services/peer-manager/peer_scoring.js +32 -10
  167. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +12 -8
  168. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  169. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +83 -106
  170. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  171. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  172. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  173. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  174. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  175. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  176. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  177. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  178. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  179. package/dest/services/reqresp/config.d.ts +3 -3
  180. package/dest/services/reqresp/config.d.ts.map +1 -1
  181. package/dest/services/reqresp/interface.d.ts +14 -9
  182. package/dest/services/reqresp/interface.d.ts.map +1 -1
  183. package/dest/services/reqresp/interface.js +10 -11
  184. package/dest/services/reqresp/metrics.d.ts +1 -1
  185. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  186. package/dest/services/reqresp/metrics.js +0 -1
  187. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  188. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  189. package/dest/services/reqresp/protocols/index.js +0 -1
  190. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  191. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  192. package/dest/services/reqresp/protocols/tx.js +1 -3
  193. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  194. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  195. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  196. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  197. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  198. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  199. package/dest/services/reqresp/reqresp.d.ts +4 -2
  200. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  201. package/dest/services/reqresp/reqresp.js +30 -12
  202. package/dest/services/service.d.ts +9 -4
  203. package/dest/services/service.d.ts.map +1 -1
  204. package/dest/services/tx_collection/config.d.ts +13 -1
  205. package/dest/services/tx_collection/config.d.ts.map +1 -1
  206. package/dest/services/tx_collection/config.js +30 -0
  207. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  208. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  209. package/dest/services/tx_collection/fast_tx_collection.js +65 -75
  210. package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
  211. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  212. package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
  213. package/dest/services/tx_collection/file_store_tx_source.d.ts +17 -6
  214. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  215. package/dest/services/tx_collection/file_store_tx_source.js +53 -10
  216. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  217. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  218. package/dest/services/tx_collection/instrumentation.js +2 -1
  219. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -7
  220. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  221. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  222. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  223. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  224. package/dest/services/tx_collection/request_tracker.js +84 -0
  225. package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
  226. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  227. package/dest/services/tx_collection/slow_tx_collection.js +17 -12
  228. package/dest/services/tx_collection/tx_collection.d.ts +9 -9
  229. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  230. package/dest/services/tx_collection/tx_collection.js +26 -10
  231. package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
  232. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  233. package/dest/services/tx_collection/tx_collection_sink.js +13 -22
  234. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  235. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  236. package/dest/services/tx_collection/tx_source.js +26 -7
  237. package/dest/services/tx_file_store/tx_file_store.d.ts +3 -2
  238. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  239. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  240. package/dest/services/tx_provider.d.ts +3 -3
  241. package/dest/services/tx_provider.d.ts.map +1 -1
  242. package/dest/services/tx_provider.js +4 -4
  243. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  244. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  245. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  246. package/dest/test-helpers/mock-pubsub.d.ts +14 -6
  247. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  248. package/dest/test-helpers/mock-pubsub.js +43 -12
  249. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  250. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  251. package/dest/test-helpers/reqresp-nodes.js +3 -4
  252. package/dest/test-helpers/testbench-utils.d.ts +8 -3
  253. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  254. package/dest/test-helpers/testbench-utils.js +30 -4
  255. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  256. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  257. package/dest/testbench/p2p_client_testbench_worker.js +78 -26
  258. package/dest/testbench/worker_client_manager.d.ts +10 -1
  259. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  260. package/dest/testbench/worker_client_manager.js +55 -3
  261. package/dest/util.d.ts +3 -3
  262. package/dest/util.d.ts.map +1 -1
  263. package/package.json +14 -14
  264. package/src/client/factory.ts +68 -48
  265. package/src/client/interface.ts +26 -21
  266. package/src/client/p2p_client.ts +102 -135
  267. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +33 -14
  268. package/src/config.ts +146 -44
  269. package/src/errors/p2p-service.error.ts +11 -0
  270. package/src/errors/tx-pool.error.ts +12 -0
  271. package/src/index.ts +0 -1
  272. package/src/mem_pools/attestation_pool/attestation_pool.ts +25 -12
  273. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  274. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  275. package/src/mem_pools/index.ts +0 -3
  276. package/src/mem_pools/instrumentation.ts +17 -13
  277. package/src/mem_pools/tx_pool_v2/README.md +52 -28
  278. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
  279. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  280. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +7 -3
  281. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  282. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  283. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  284. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  285. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +8 -8
  286. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  287. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  288. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  289. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  290. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  291. package/src/mem_pools/tx_pool_v2/interfaces.ts +30 -10
  292. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +164 -28
  293. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
  294. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +34 -8
  295. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +353 -143
  296. package/src/msg_validators/attestation_validator/README.md +49 -0
  297. package/src/msg_validators/attestation_validator/attestation_validator.ts +21 -9
  298. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -1
  299. package/src/msg_validators/clock_tolerance.ts +72 -3
  300. package/src/msg_validators/proposal_validator/README.md +123 -0
  301. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +17 -4
  302. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +23 -7
  303. package/src/msg_validators/proposal_validator/proposal_validator.ts +79 -49
  304. package/src/msg_validators/tx_validator/README.md +119 -0
  305. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
  306. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  307. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  308. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  309. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  310. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  311. package/src/msg_validators/tx_validator/factory.ts +394 -78
  312. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  313. package/src/msg_validators/tx_validator/gas_validator.ts +145 -33
  314. package/src/msg_validators/tx_validator/index.ts +2 -0
  315. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  316. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  317. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  318. package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
  319. package/src/services/data_store.ts +5 -13
  320. package/src/services/dummy_service.ts +13 -7
  321. package/src/services/encoding.ts +16 -8
  322. package/src/services/gossipsub/README.md +29 -14
  323. package/src/services/gossipsub/topic_score_params.ts +85 -17
  324. package/src/services/libp2p/libp2p_service.ts +240 -225
  325. package/src/services/peer-manager/metrics.ts +7 -0
  326. package/src/services/peer-manager/peer_manager.ts +45 -11
  327. package/src/services/peer-manager/peer_scoring.ts +27 -5
  328. package/src/services/reqresp/README.md +229 -0
  329. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  330. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +79 -112
  331. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  332. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  333. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  334. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  335. package/src/services/reqresp/config.ts +2 -2
  336. package/src/services/reqresp/interface.ts +21 -11
  337. package/src/services/reqresp/metrics.ts +0 -1
  338. package/src/services/reqresp/protocols/index.ts +0 -1
  339. package/src/services/reqresp/protocols/tx.ts +1 -3
  340. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  341. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  342. package/src/services/reqresp/reqresp.ts +40 -13
  343. package/src/services/service.ts +17 -3
  344. package/src/services/tx_collection/config.ts +42 -0
  345. package/src/services/tx_collection/fast_tx_collection.ts +71 -76
  346. package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
  347. package/src/services/tx_collection/file_store_tx_source.ts +69 -10
  348. package/src/services/tx_collection/instrumentation.ts +7 -1
  349. package/src/services/tx_collection/proposal_tx_collector.ts +9 -13
  350. package/src/services/tx_collection/request_tracker.ts +127 -0
  351. package/src/services/tx_collection/slow_tx_collection.ts +17 -13
  352. package/src/services/tx_collection/tx_collection.ts +46 -17
  353. package/src/services/tx_collection/tx_collection_sink.ts +15 -29
  354. package/src/services/tx_collection/tx_source.ts +28 -8
  355. package/src/services/tx_file_store/tx_file_store.ts +6 -4
  356. package/src/services/tx_provider.ts +2 -2
  357. package/src/test-helpers/make-test-p2p-clients.ts +1 -3
  358. package/src/test-helpers/mock-pubsub.ts +44 -11
  359. package/src/test-helpers/reqresp-nodes.ts +5 -8
  360. package/src/test-helpers/testbench-utils.ts +41 -6
  361. package/src/testbench/p2p_client_testbench_worker.ts +89 -29
  362. package/src/testbench/worker_client_manager.ts +68 -6
  363. package/src/util.ts +8 -2
  364. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  365. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  366. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  367. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  368. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  369. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  370. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  371. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  372. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  373. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  374. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  375. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  376. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  377. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  378. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  379. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  380. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  381. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  382. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  383. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  384. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  385. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  386. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  387. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  388. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  389. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  390. package/dest/mem_pools/tx_pool/index.js +0 -2
  391. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  392. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  393. package/dest/mem_pools/tx_pool/priority.js +0 -15
  394. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  395. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  396. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  397. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  398. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  399. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  400. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  401. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  402. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  403. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  404. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  405. package/dest/services/reqresp/protocols/block.js +0 -32
  406. package/src/mem_pools/tx_pool/README.md +0 -270
  407. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  408. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  409. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  410. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  411. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  412. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  413. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  414. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  415. package/src/mem_pools/tx_pool/index.ts +0 -2
  416. package/src/mem_pools/tx_pool/priority.ts +0 -20
  417. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  418. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  419. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  420. package/src/services/reqresp/protocols/block.ts +0 -37
package/README.md CHANGED
@@ -1,7 +1,133 @@
1
1
  # P2P
2
2
 
3
- This package includes the functionality of the P2P networking required by the aztec node. The `P2PClient` provides an interface for the introduction of transactions to the Tx Pool and propagation of those transactions through the network. The `P2PService` offers an abstraction of the P2P networking.
3
+ This package implements the P2P networking layer for Aztec nodes using libp2p. It handles transaction propagation, block and checkpoint proposal dissemination, attestation collection for consensus, and peer management. The `P2PClient` provides the top-level interface used by `aztec-node`; the `BootstrapNode` class runs a lightweight discovery-only node that introduces peers to the network without participating in gossip.
4
4
 
5
- The package depends on a block source in order to reconcile the transaction pool and remove settled transactions.
5
+ ## Architecture
6
6
 
7
- Additionally, the `BootstrapNode` class provides the functionality for running a P2P 'bootnode', one that serves the purpose of introducing new peers to the network. It does not participate in transaction exchange.
7
+ - **P2PClient** wraps everything below. Manages lifecycle, bridges L2 block events to pool state transitions, exposes `ITxProvider` for RPC.
8
+ - **LibP2PService** is the core networking layer. Subscribes to gossipsub topics, registers req/resp handlers, runs message validation pipelines. It composes:
9
+ - **PeerManager** — peer scoring (gossipsub + application-level), authentication (STATUS/AUTH handshakes), connection gating.
10
+ - **DiscV5Service** — UDP-based peer discovery using Ethereum's discv5 protocol and ENR records.
11
+ - **ReqResp** — request-response protocols: BLOCK, BLOCK_TXS, TX, STATUS, AUTH, PING, GOODBYE.
12
+ - **TxCollection** — coordinates transaction fetching: fast collection for proposals/proving (deadline-driven, falls back to `BatchTxRequester`) and slow background collection for unproven blocks.
13
+ - **Mempools** sit below the service layer:
14
+ - **TxPoolV2** — transaction mempool with explicit state machine (pending, protected, mined, soft-deleted, hard-deleted) and pluggable eviction rules.
15
+ - **AttestationPool** — stores block/checkpoint proposals and attestations per slot. Handles equivocation detection and slash callbacks.
16
+
17
+ ### Key Components
18
+
19
+ | Component | Responsibility |
20
+ |-----------|---------------|
21
+ | **P2PClient** | Top-level orchestrator. Manages lifecycle, bridges L2 block events to pool state transitions, exposes `ITxProvider` for RPC. |
22
+ | **LibP2PService** | Core networking. Subscribes to gossipsub topics, registers req/resp handlers, runs message validation pipelines. |
23
+ | **PeerManager** | Peer scoring (gossipsub + application-level), authentication (STATUS/AUTH handshakes), connection gating. |
24
+ | **DiscV5Service** | UDP-based peer discovery using Ethereum's discv5 protocol and ENR records. |
25
+ | **TxCollection** | Coordinates transaction fetching: fast collection for proposals/proving (deadline-driven, falls back to `BatchTxRequester`) and slow background collection for unproven blocks. |
26
+ | **BatchTxRequester** | Aggressive parallel fetching of missing txs from peers via BLOCK_TXS protocol. Classifies peers as pinned/dumb/smart for efficient batching. |
27
+ | **TxPoolV2** | Transaction mempool with explicit state machine (pending, protected, mined, soft-deleted, hard-deleted) and pluggable eviction rules. |
28
+ | **AttestationPool** | Stores block/checkpoint proposals and attestations per slot. Handles equivocation detection and slash callbacks. |
29
+
30
+ ### Peer Lifecycle
31
+
32
+ ```
33
+ Unknown → [DiscV5 discovery] → Discovered → [TCP connect] → Connected
34
+ → [STATUS or AUTH handshake] → Authenticated → [gossip participation] → Active
35
+ ```
36
+
37
+ Handshake type depends on config:
38
+ - `p2pAllowOnlyValidators` = true and peer is not protected: **AUTH** handshake (signature challenge proving validator identity). Unauthenticated peers get `appSpecificScore = -Infinity`, excluding them from all gossip.
39
+ - Otherwise: **STATUS** handshake (version compatibility check only).
40
+ - Protected peers (trusted/private/preferred): STATUS only, always considered authenticated.
41
+
42
+ Connection gating: peers with too many failed AUTH attempts (`p2pMaxFailedAuthAttemptsAllowed`, default 3) are denied inbound connections for 1 hour.
43
+
44
+ ---
45
+
46
+ ## Sub-module Documentation
47
+
48
+ | README | Covers |
49
+ |--------|--------|
50
+ | [Gossipsub Scoring](src/services/gossipsub/README.md) | P1-P4 parameter calculation, decay mechanics, convergence math, global thresholds, application-level penalties, tuning guidelines |
51
+ | [Transaction Validation](src/msg_validators/tx_validator/README.md) | Validator factories per entry point, individual validator descriptions with benchmarks, coverage table |
52
+ | [Proposal Validation](src/msg_validators/proposal_validator/README.md) | BlockProposal and CheckpointProposal gossipsub validation, pool admission, validator-client processing, slashing |
53
+ | [Attestation Validation](src/msg_validators/attestation_validator/README.md) | CheckpointAttestation gossipsub validation, pool admission, equivocation detection, L1 submission validation |
54
+ | [ReqResp Protocols](src/services/reqresp/README.md) | Handshake protocols (STATUS, AUTH, PING, GOODBYE), block data protocols (BLOCK, BLOCK_TXS, TX), rate limits, transport validation |
55
+ | [BatchTxRequester](src/services/reqresp/batch-tx-requester/README.md) | Peer classification (pinned/dumb/smart), worker architecture, BLOCK_TXS wire protocol |
56
+ | [TxPool Interface](src/mem_pools/tx_pool/README.md) | TxPool contract, storage structure, priority system, nullifier deduplication, eviction rules |
57
+ | [TxPoolV2](src/mem_pools/tx_pool_v2/README.md) | State machine, soft deletion (slot-based vs prune-based), pre-add vs post-event rules |
58
+
59
+ ---
60
+
61
+ ## Gossipsub Objects
62
+
63
+ All gossipsub messages pass through a shared pre-validation pipeline before topic-specific logic:
64
+
65
+ | Stage | Rule | Consequence | File |
66
+ |-------|------|-------------|------|
67
+ | 0 | Snappy decompressed size <= per-topic limit (see per-object sections) | Message dropped | `p2p/src/services/encoding.ts` |
68
+ | 1 | P2PMessage envelope deserializes | REJECT + LowToleranceError | `p2p/src/services/libp2p/libp2p_service.ts` |
69
+ | 2 | Gossipsub-level message cache dedup (configurable `seenTTL`) | Silently dropped by gossipsub | gossipsub internals |
70
+ | 3 | Application-level dedup via `MessageSeenValidator` (fixed-size circular buffer + Set) | IGNORE | `p2p/src/msg_validators/msg_seen_validator/` |
71
+
72
+ A REJECT result from any validation stage increments the gossipsub P4 (invalidMessageDeliveries) counter for the peer on that topic. P4 weight is -20, decaying over 4 slots. This is in addition to any application-level peer penalty.
73
+
74
+ ### Peer Penalty Severity Reference
75
+
76
+ | Severity | Approx. strikes to ban | Used for |
77
+ |----------|------------------------|----------|
78
+ | `LowToleranceError` | ~2 | Invalid proof, deserialization failure, old double-spend |
79
+ | `MidToleranceError` | ~10 | Most validation failures (metadata, data, gas, phases, size) |
80
+ | `HighToleranceError` | ~50 | Timestamp expiry, block header, recent double-spend, rate limits |
81
+
82
+ See [Gossipsub Scoring](src/services/gossipsub/README.md) for full score calculation, decay mechanics, and threshold alignment.
83
+
84
+ ### Object Summary
85
+
86
+ | Topic | Snappy Limit | Description | Detailed Docs |
87
+ |-------|-------------|-------------|---------------|
88
+ | `tx` | 512 KB | Transactions. Two-stage validation: fast validators (parallel) then proof verification. Pool pre-check between stages avoids wasting CPU on proof for txs the pool would reject. | [Tx Validation](src/msg_validators/tx_validator/README.md) |
89
+ | `block_proposal` | 10 MB | Block proposals from proposers. Validated for slot timing, signature, proposer identity, tx hash integrity. Validator nodes may re-execute and slash on state mismatch. | [Proposal Validation](src/msg_validators/proposal_validator/README.md) |
90
+ | `checkpoint_proposal` | 10 MB | Checkpoint proposals containing the final block. Same proposal validation as blocks, plus embedded block extraction and separate validation. | [Proposal Validation](src/msg_validators/proposal_validator/README.md) |
91
+ | `checkpoint_attestation` | 5 KB | Validator attestations for checkpoints. Validated for slot timing, attester/proposer signatures, committee membership. Equivocation at count=2 triggers slash callback. | [Attestation Validation](src/msg_validators/attestation_validator/README.md) |
92
+
93
+ ---
94
+
95
+ ## ReqResp Protocols
96
+
97
+ See [ReqResp Protocols](src/services/reqresp/README.md) for full protocol details.
98
+
99
+ ### Rate Limits (Responder Side)
100
+
101
+ | Protocol | Peer Limit | Global Limit |
102
+ |----------|-----------|-------------|
103
+ | PING | 5/s | 10/s |
104
+ | STATUS | 5/s | 10/s |
105
+ | AUTH | 5/s | 10/s |
106
+ | GOODBYE | 5/s | 10/s |
107
+ | BLOCK | 2/s | 5/s |
108
+ | BLOCK_TXS | 10/s | 200/s |
109
+ | TX | (see config) | (see config) |
110
+
111
+ Per-peer limit exceeded: `HighToleranceError` + `RATE_LIMIT_EXCEEDED` status. Global limit exceeded: `RATE_LIMIT_EXCEEDED` status only (no peer penalty).
112
+
113
+ ### Peer Score Thresholds
114
+
115
+ | Score | State | Action |
116
+ |-------|-------|--------|
117
+ | > -50 | Healthy | Normal |
118
+ | -100 < score <= -50 | Disconnect | GOODBYE sent + disconnect on next heartbeat |
119
+ | <= -100 | Banned | GOODBYE sent + disconnect on next heartbeat |
120
+
121
+ ### Protocol Summary
122
+
123
+ | Protocol | Request | Response | Purpose |
124
+ |----------|---------|----------|---------|
125
+ | STATUS | Own blockchain state | Peer's blockchain state | Version compatibility check on connect |
126
+ | AUTH | Random challenge (`Fr`) | Signed challenge response | Validator identity verification on connect |
127
+ | PING | (empty) | `pong` | Liveness check |
128
+ | GOODBYE | Reason byte | (none meaningful) | Graceful disconnect |
129
+ | BLOCK | Block number (`Fr`) | Block data (3 MB snappy) | Block sync |
130
+ | BLOCK_TXS | Archive root + tx hashes + BitVector | Txs + BitVector of availability | Batch tx fetching for proposals/proving |
131
+ | TX | `TxHashArray` | Matching txs | Individual tx fetching |
132
+
133
+ Request payloads are NOT snappy-compressed (asymmetric: only responses use snappy).
@@ -2,12 +2,11 @@ import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
3
  import { DateProvider } from '@aztec/foundation/timer';
4
4
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
- import type { DataStoreConfig } from '@aztec/kv-store/config';
6
5
  import type { L2BlockSource } from '@aztec/stdlib/block';
7
6
  import type { ChainConfig } from '@aztec/stdlib/config';
8
7
  import type { ContractDataSource } from '@aztec/stdlib/contract';
9
- import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
10
- import { P2PClientType } from '@aztec/stdlib/p2p';
8
+ import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
9
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
11
10
  import { type TelemetryClient } from '@aztec/telemetry-client';
12
11
  import { P2PClient } from '../client/p2p_client.js';
13
12
  import type { P2PConfig } from '../config.js';
@@ -15,17 +14,18 @@ import { type AttestationPoolApi } from '../mem_pools/attestation_pool/attestati
15
14
  import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
16
15
  import { LibP2PService } from '../services/index.js';
17
16
  import { type TxSource } from '../services/tx_collection/tx_source.js';
18
- export type P2PClientDeps<T extends P2PClientType> = {
17
+ export type P2PClientDeps = {
19
18
  txPool?: TxPoolV2;
20
19
  store?: AztecAsyncKVStore;
21
20
  attestationPool?: AttestationPoolApi;
22
21
  logger?: Logger;
23
22
  txCollectionNodeSources?: TxSource[];
24
- p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService<T>>;
23
+ rpcTxProviders?: AztecNode[];
24
+ p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
25
25
  };
26
26
  export declare const P2P_STORE_NAME = "p2p";
27
27
  export declare const P2P_ARCHIVE_STORE_NAME = "p2p-archive";
28
28
  export declare const P2P_PEER_STORE_NAME = "p2p-peers";
29
29
  export declare const P2P_ATTESTATION_STORE_NAME = "p2p-attestation";
30
- export declare function createP2PClient<T extends P2PClientType>(clientType: T, inputConfig: P2PConfig & DataStoreConfig & ChainConfig, archiver: L2BlockSource & ContractDataSource, proofVerifier: ClientProtocolCircuitVerifier, worldStateSynchronizer: WorldStateSynchronizer, epochCache: EpochCacheInterface, packageVersion: string, dateProvider?: DateProvider, telemetry?: TelemetryClient, deps?: P2PClientDeps<T>): Promise<P2PClient<T>>;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFhLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFtQixLQUFLLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFN0csT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFPdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3JELE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBMEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUkvRixNQUFNLE1BQU0sYUFBYSxDQUFDLENBQUMsU0FBUyxhQUFhLElBQUk7SUFDbkQsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ2xCLEtBQUssQ0FBQyxFQUFFLGlCQUFpQixDQUFDO0lBQzFCLGVBQWUsQ0FBQyxFQUFFLGtCQUFrQixDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNoQix1QkFBdUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZHLENBQUM7QUFFRixlQUFPLE1BQU0sY0FBYyxRQUFRLENBQUM7QUFDcEMsZUFBTyxNQUFNLHNCQUFzQixnQkFBZ0IsQ0FBQztBQUNwRCxlQUFPLE1BQU0sbUJBQW1CLGNBQWMsQ0FBQztBQUMvQyxlQUFPLE1BQU0sMEJBQTBCLG9CQUFvQixDQUFDO0FBRTVELHdCQUFzQixlQUFlLENBQUMsQ0FBQyxTQUFTLGFBQWEsRUFDM0QsVUFBVSxFQUFFLENBQUMsRUFDYixXQUFXLEVBQUUsU0FBUyxHQUFHLGVBQWUsR0FBRyxXQUFXLEVBQ3RELFFBQVEsRUFBRSxhQUFhLEdBQUcsa0JBQWtCLEVBQzVDLGFBQWEsRUFBRSw2QkFBNkIsRUFDNUMsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFVBQVUsRUFBRSxtQkFBbUIsRUFDL0IsY0FBYyxFQUFFLE1BQU0sRUFDdEIsWUFBWSxHQUFFLFlBQWlDLEVBQy9DLFNBQVMsR0FBRSxlQUFzQyxFQUNqRCxJQUFJLEdBQUUsYUFBYSxDQUFDLENBQUMsQ0FBTSx5QkFxSTVCIn0=
30
+ export declare function createP2PClient(inputConfig: P2PConfig & DataStoreConfig & ChainConfig, archiver: L2BlockSource & ContractDataSource, proofVerifier: ClientProtocolCircuitVerifier, worldStateSynchronizer: WorldStateSynchronizer, epochCache: EpochCacheInterface, packageVersion: string, dateProvider?: DateProvider, telemetry?: TelemetryClient, deps?: P2PClientDeps): Promise<P2PClient>;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLDZCQUE2QixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEgsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFtQixLQUFLLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFN0csT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFTdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3JELE9BQU8sRUFBbUIsS0FBSyxRQUFRLEVBQTBCLE1BQU0sd0NBQXdDLENBQUM7QUFJaEgsTUFBTSxNQUFNLGFBQWEsR0FBRztJQUMxQixNQUFNLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDbEIsS0FBSyxDQUFDLEVBQUUsaUJBQWlCLENBQUM7SUFDMUIsZUFBZSxDQUFDLEVBQUUsa0JBQWtCLENBQUM7SUFDckMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLHVCQUF1QixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDckMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDN0IsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDcEcsQ0FBQztBQUVGLGVBQU8sTUFBTSxjQUFjLFFBQVEsQ0FBQztBQUNwQyxlQUFPLE1BQU0sc0JBQXNCLGdCQUFnQixDQUFDO0FBQ3BELGVBQU8sTUFBTSxtQkFBbUIsY0FBYyxDQUFDO0FBQy9DLGVBQU8sTUFBTSwwQkFBMEIsb0JBQW9CLENBQUM7QUFFNUQsd0JBQXNCLGVBQWUsQ0FDbkMsV0FBVyxFQUFFLFNBQVMsR0FBRyxlQUFlLEdBQUcsV0FBVyxFQUN0RCxRQUFRLEVBQUUsYUFBYSxHQUFHLGtCQUFrQixFQUM1QyxhQUFhLEVBQUUsNkJBQTZCLEVBQzVDLHNCQUFzQixFQUFFLHNCQUFzQixFQUM5QyxVQUFVLEVBQUUsbUJBQW1CLEVBQy9CLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLFlBQVksR0FBRSxZQUFpQyxFQUMvQyxTQUFTLEdBQUUsZUFBc0MsRUFDakQsSUFBSSxHQUFFLGFBQWtCLHNCQXlKekIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/client/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAE7G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAOtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,KAAK,QAAQ,EAA0B,MAAM,wCAAwC,CAAC;AAI/F,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI;IACnD,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACvG,CAAC;AAEF,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAE5D,wBAAsB,eAAe,CAAC,CAAC,SAAS,aAAa,EAC3D,UAAU,EAAE,CAAC,EACb,WAAW,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,EACtD,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAC5C,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,GAAE,YAAiC,EAC/C,SAAS,GAAE,eAAsC,EACjD,IAAI,GAAE,aAAa,CAAC,CAAC,CAAM,yBAqI5B"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/client/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACxH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAE7G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAStE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAmB,KAAK,QAAQ,EAA0B,MAAM,wCAAwC,CAAC;AAIhH,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrC,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACpG,CAAC;AAEF,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAE5D,wBAAsB,eAAe,CACnC,WAAW,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,EACtD,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAC5C,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,GAAE,YAAiC,EAC/C,SAAS,GAAE,eAAsC,EACjD,IAAI,GAAE,aAAkB,sBAyJzB"}
@@ -1,26 +1,24 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import { createLogger } from '@aztec/foundation/log';
2
3
  import { DateProvider } from '@aztec/foundation/timer';
3
4
  import { createStore } from '@aztec/kv-store/lmdb-v2';
4
- import { MerkleTreeId } from '@aztec/stdlib/trees';
5
5
  import { getTelemetryClient } from '@aztec/telemetry-client';
6
6
  import { P2PClient } from '../client/p2p_client.js';
7
7
  import { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
8
8
  import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
9
- import { AggregateTxValidator } from '../msg_validators/tx_validator/aggregate_tx_validator.js';
10
- import { BlockHeaderTxValidator } from '../msg_validators/tx_validator/block_header_validator.js';
11
- import { DoubleSpendTxValidator } from '../msg_validators/tx_validator/double_spend_validator.js';
9
+ import { createCheckAllowedSetupCalls, createTxValidatorForReqResponseReceivedTxs, createTxValidatorForTransactionsEnteringPendingTxPool, getDefaultAllowedSetupFunctions } from '../msg_validators/index.js';
12
10
  import { DummyP2PService } from '../services/dummy_service.js';
13
11
  import { LibP2PService } from '../services/index.js';
14
12
  import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
15
13
  import { TxCollection } from '../services/tx_collection/tx_collection.js';
16
- import { createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
14
+ import { NodeRpcTxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
17
15
  import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
18
16
  import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
19
17
  export const P2P_STORE_NAME = 'p2p';
20
18
  export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
21
19
  export const P2P_PEER_STORE_NAME = 'p2p-peers';
22
20
  export const P2P_ATTESTATION_STORE_NAME = 'p2p-attestation';
23
- export async function createP2PClient(clientType, inputConfig, archiver, proofVerifier, worldStateSynchronizer, epochCache, packageVersion, dateProvider = new DateProvider(), telemetry = getTelemetryClient(), deps = {}) {
21
+ export async function createP2PClient(inputConfig, archiver, proofVerifier, worldStateSynchronizer, epochCache, packageVersion, dateProvider = new DateProvider(), telemetry = getTelemetryClient(), deps = {}) {
24
22
  const config = await configureP2PClientAddresses({
25
23
  ...inputConfig,
26
24
  dataStoreMapSizeKb: inputConfig.p2pStoreMapSizeKb ?? inputConfig.dataStoreMapSizeKb
@@ -35,36 +33,45 @@ export async function createP2PClient(clientType, inputConfig, archiver, proofVe
35
33
  const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, bindings);
36
34
  const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 1, config, bindings);
37
35
  const l1Constants = await archiver.getL1Constants();
38
- /** Validator factory for pool re-validation (double-spend + block header only). */ const createPoolTxValidator = async ()=>{
39
- await worldStateSynchronizer.syncImmediate();
40
- return new AggregateTxValidator(new DoubleSpendTxValidator({
41
- nullifiersExist: async (nullifiers)=>{
42
- const merkleTree = worldStateSynchronizer.getCommitted();
43
- const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
44
- return indices.map((index)=>index !== undefined);
45
- }
46
- }, bindings), new BlockHeaderTxValidator({
47
- getArchiveIndices: (archives)=>{
48
- const merkleTree = worldStateSynchronizer.getCommitted();
49
- return merkleTree.findLeafIndices(MerkleTreeId.ARCHIVE, archives);
50
- }
51
- }, bindings));
36
+ const rollupAddress = inputConfig.l1Contracts.rollupAddress.toString().toLowerCase().replace(/^0x/, '');
37
+ const txFileStoreBasePath = `aztec-${inputConfig.l1ChainId}-${inputConfig.rollupVersion}-0x${rollupAddress}`;
38
+ const allowedInSetup = [
39
+ ...await getDefaultAllowedSetupFunctions(),
40
+ ...inputConfig.txPublicSetupAllowListExtend ?? []
41
+ ];
42
+ const checkAllowedSetupCalls = createCheckAllowedSetupCalls(archiver, allowedInSetup, ()=>epochCache.getEpochAndSlotInNextL1Slot().ts);
43
+ const createTxValidator = async ()=>{
44
+ // We accept transactions if they are not expired by the next slot and block number (checked based on the ExpirationTimestamp field)
45
+ const currentBlockNumber = await archiver.getBlockNumber();
46
+ const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
47
+ const l1Constants = await archiver.getL1Constants();
48
+ return createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, nextSlotTimestamp, BlockNumber(currentBlockNumber + 1), {
49
+ rollupManaLimit: l1Constants.rollupManaLimit,
50
+ maxBlockL2Gas: config.validateMaxL2BlockGas,
51
+ maxBlockDAGas: config.validateMaxDABlockGas
52
+ });
52
53
  };
53
54
  const txPool = deps.txPool ?? new AztecKVTxPoolV2(store, archive, {
54
55
  l2BlockSource: archiver,
55
56
  worldStateSynchronizer,
56
- createTxValidator: createPoolTxValidator
57
+ checkAllowedSetupCalls,
58
+ createTxValidator
57
59
  }, telemetry, {
58
60
  maxPendingTxCount: config.maxPendingTxCount,
59
- archivedTxLimit: config.archivedTxLimit
60
- });
61
+ archivedTxLimit: config.archivedTxLimit,
62
+ minTxPoolAgeMs: config.minTxPoolAgeMs,
63
+ dropTransactionsProbability: config.dropTransactionsProbability,
64
+ priceBumpPercentage: config.priceBumpPercentage
65
+ }, dateProvider);
61
66
  const mempools = {
62
67
  txPool,
63
68
  attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry)
64
69
  };
65
- const p2pService = await createP2PService(config, clientType, archiver, proofVerifier, worldStateSynchronizer, epochCache, store, peerStore, mempools, deps.p2pServiceFactory, packageVersion, logger.createChild('libp2p_service'), telemetry);
70
+ const p2pService = await createP2PService(config, archiver, proofVerifier, worldStateSynchronizer, epochCache, store, peerStore, mempools, deps.p2pServiceFactory, packageVersion, logger.createChild('libp2p_service'), telemetry);
71
+ const txValidatorForTxCollection = createTxValidatorForReqResponseReceivedTxs(proofVerifier, config);
66
72
  const nodeSources = [
67
- ...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
73
+ ...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, txValidatorForTxCollection, config),
74
+ ...(deps.rpcTxProviders ?? []).map((node, i)=>new NodeRpcTxSource(node, txValidatorForTxCollection, `node-rpc-provider-${i}`)),
68
75
  ...deps.txCollectionNodeSources ?? []
69
76
  ];
70
77
  if (nodeSources.length > 0) {
@@ -72,17 +79,17 @@ export async function createP2PClient(clientType, inputConfig, archiver, proofVe
72
79
  nodes: nodeSources.map((n)=>n.getInfo())
73
80
  });
74
81
  }
75
- const fileStoreSources = await createFileStoreTxSources(config.txCollectionFileStoreUrls, logger.createChild('file-store-tx-source'));
82
+ const fileStoreSources = await createFileStoreTxSources(config.txCollectionFileStoreUrls, txFileStoreBasePath, txValidatorForTxCollection, logger.createChild('file-store-tx-source'), telemetry);
76
83
  if (fileStoreSources.length > 0) {
77
84
  logger.info(`Using ${fileStoreSources.length} file store sources for tx collection.`, {
78
85
  stores: fileStoreSources.map((s)=>s.getInfo())
79
86
  });
80
87
  }
81
88
  const txCollection = new TxCollection(p2pService.getBatchTxRequesterService(), nodeSources, l1Constants, mempools.txPool, config, fileStoreSources, dateProvider, telemetry, logger.createChild('tx-collection'));
82
- const txFileStore = await TxFileStore.create(mempools.txPool, config, logger.createChild('tx-file-store'), telemetry);
83
- return new P2PClient(clientType, store, archiver, mempools, p2pService, txCollection, txFileStore, epochCache, config, dateProvider, telemetry);
89
+ const txFileStore = await TxFileStore.create(mempools.txPool, config, txFileStoreBasePath, logger.createChild('tx-file-store'), telemetry);
90
+ return new P2PClient(store, archiver, mempools, p2pService, txCollection, txFileStore, epochCache, config, dateProvider, telemetry);
84
91
  }
85
- async function createP2PService(config, clientType, archiver, proofVerifier, worldStateSynchronizer, epochCache, store, peerStore, mempools, p2pServiceFactory, packageVersion, logger, telemetry) {
92
+ async function createP2PService(config, archiver, proofVerifier, worldStateSynchronizer, epochCache, store, peerStore, mempools, p2pServiceFactory, packageVersion, logger, telemetry) {
86
93
  if (!config.p2pEnabled) {
87
94
  logger.verbose('P2P is disabled. Using dummy P2P service.');
88
95
  return new DummyP2PService();
@@ -91,7 +98,7 @@ async function createP2PService(config, clientType, archiver, proofVerifier, wor
91
98
  // Create peer discovery service
92
99
  const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
93
100
  const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey.getValue());
94
- const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(clientType, config, peerId, {
101
+ const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(config, peerId, {
95
102
  packageVersion,
96
103
  mempools,
97
104
  l2BlockSource: archiver,
@@ -1,7 +1,7 @@
1
1
  import type { SlotNumber } from '@aztec/foundation/branded-types';
2
2
  import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
3
- import type { P2PApiFull } from '@aztec/stdlib/interfaces/server';
4
- import type { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PClientType } from '@aztec/stdlib/p2p';
3
+ import type { ITxProvider, P2PClient } from '@aztec/stdlib/interfaces/server';
4
+ import type { BlockProposal, CheckpointAttestation, CheckpointProposal, TopicType } from '@aztec/stdlib/p2p';
5
5
  import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
6
6
  import type { PeerId } from '@libp2p/interface';
7
7
  import type { ENR } from '@nethermindeth/enr';
@@ -34,7 +34,7 @@ export interface P2PSyncState {
34
34
  /**
35
35
  * Interface of a P2P client.
36
36
  **/
37
- export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> & {
37
+ export type P2P = P2PClient & {
38
38
  /**
39
39
  * Broadcasts a block proposal to other peers.
40
40
  *
@@ -62,7 +62,14 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
62
62
  *
63
63
  * @param handler - A function taking a received checkpoint proposal and producing attestations
64
64
  */
65
- registerCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
65
+ registerValidatorCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
66
+ /**
67
+ * Registers a callback that runs for ALL nodes (not just validators) when a checkpoint proposal is received.
68
+ * Used to set the proposed checkpoint number on the archiver so the sequencer can build on top of it.
69
+ *
70
+ * @param handler - A function taking a received checkpoint proposal
71
+ */
72
+ registerAllNodesCheckpointProposalHandler(callback: P2PCheckpointReceivedCallback): void;
66
73
  /**
67
74
  * Registers a callback invoked when a duplicate proposal is detected (equivocation).
68
75
  * The callback is triggered on the first duplicate (when count goes from 1 to 2).
@@ -83,12 +90,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
83
90
  * @param tx - The transaction.
84
91
  **/
85
92
  sendTx(tx: Tx): Promise<void>;
86
- /**
87
- * Adds transactions to the pool. Does not send to peers or validate the tx.
88
- * @param txs - The transactions.
89
- * @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
90
- **/
91
- addTxsToPool(txs: Tx[]): Promise<number>;
92
93
  /**
93
94
  * Handles failed transaction execution by removing txs from the pool.
94
95
  * @param txHashes - Hashes of the transactions that failed execution.
@@ -112,13 +113,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
112
113
  * @returns True or False for each hash
113
114
  */
114
115
  hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
115
- /**
116
- * Returns transactions in the transaction pool by hash, requesting from the network if not found.
117
- * @param txHashes - Hashes of tx to return.
118
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
119
- * @returns An array of tx or undefined.
120
- */
121
- getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
122
116
  /**
123
117
  * Returns an archived transaction from the transaction pool by its hash.
124
118
  * @param txHash - Hash of tx to return.
@@ -133,6 +127,8 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
133
127
  getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
134
128
  /** Returns an iterator over pending txs on the mempool. */
135
129
  iteratePendingTxs(): AsyncIterableIterator<Tx>;
130
+ /** Returns an iterator over pending txs that have been in the pool long enough to be eligible for block building. */
131
+ iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
136
132
  /** Returns the number of pending txs in the mempool. */
137
133
  getPendingTxCount(): Promise<number>;
138
134
  /**
@@ -175,14 +171,20 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
175
171
  getEnr(): ENR | undefined;
176
172
  /** Identifies a p2p client. */
177
173
  isP2PClient(): true;
174
+ /** Returns the tx provider used for fetching transactions. */
175
+ getTxProvider(): ITxProvider;
178
176
  updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
179
- /** Validates a set of txs. */
180
- validate(txs: Tx[]): Promise<void>;
177
+ /** Validates a set of txs received in a block proposal. */
178
+ validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
181
179
  /** Clears the db. */
182
180
  clear(): Promise<void>;
183
181
  addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler, validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
184
182
  handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
183
+ /** Checks if any block proposals exist for the given slot. */
184
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
185
185
  /** If node running this P2P stack is validator, passes in validator address to P2P layer */
186
186
  registerThisValidatorAddresses(address: EthAddress[]): void;
187
+ /** Returns the number of peers in the GossipSub mesh for a given topic type. */
188
+ getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
187
189
  };
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pILE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFDVixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM3QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUNWLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLDZCQUE2QixFQUM5QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDOztHQUVHO0FBQ0gsb0JBQVksY0FBYztJQUN4QixJQUFJLElBQUE7SUFDSixRQUFRLElBQUE7SUFDUixPQUFPLElBQUE7SUFDUCxPQUFPLElBQUE7Q0FDUjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLFlBQVk7SUFDM0I7O09BRUc7SUFDSCxLQUFLLEVBQUUsY0FBYyxDQUFDO0lBQ3RCOztPQUVHO0lBQ0gsZUFBZSxFQUFFLFNBQVMsQ0FBQztDQUM1QjtBQUVEOztJQUVJO0FBQ0osTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHO0lBQzlFOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxRDs7OztPQUlHO0lBQ0gsMkJBQTJCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6RSx5REFBeUQ7SUFDekQsK0JBQStCLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRGOzs7OztPQUtHO0lBR0gsNEJBQTRCLENBQUMsUUFBUSxFQUFFLHdCQUF3QixHQUFHLElBQUksQ0FBQztJQUV2RTs7Ozs7T0FLRztJQUNILGlDQUFpQyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsR0FBRyxJQUFJLENBQUM7SUFFakY7Ozs7O09BS0c7SUFDSCxpQ0FBaUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQztJQUV6Rjs7Ozs7O09BTUc7SUFDSCxvQ0FBb0MsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQztJQUUvRjs7O1FBR0k7SUFDSixNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFOUI7Ozs7UUFJSTtJQUNKLFlBQVksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXpDOzs7UUFHSTtJQUNKLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFekQ7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUU3RDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFdEU7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFckQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFaEc7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUU3RDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRWxGLDJEQUEyRDtJQUMzRCxpQkFBaUIsSUFBSSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUvQyx3REFBd0Q7SUFDeEQsaUJBQWlCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXJDOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU1RTs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV0RDs7O09BR0c7SUFDSCxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZCOzs7T0FHRztJQUNILElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEI7OztPQUdHO0lBQ0gsT0FBTyxJQUFJLE9BQU8sQ0FBQztJQUVuQjs7T0FFRztJQUNILFNBQVMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFbkM7O09BRUc7SUFDSCxNQUFNLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUUxQiwrQkFBK0I7SUFDL0IsV0FBVyxJQUFJLElBQUksQ0FBQztJQUVwQixlQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFM0QsOEJBQThCO0lBQzlCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLHFCQUFxQjtJQUNyQixLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZCLHFCQUFxQixDQUNuQixXQUFXLEVBQUUsa0JBQWtCLEVBQy9CLE9BQU8sRUFBRSx5QkFBeUIsRUFDbEMsU0FBUyxDQUFDLEVBQUUsNEJBQTRCLENBQUMsa0JBQWtCLENBQUMsR0FDM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpCLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFNUYsNEZBQTRGO0lBQzVGLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUM7Q0FDN0QsQ0FBQyJ9
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RyxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkUsT0FBTyxLQUFLLEVBQ1Ysa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDN0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEtBQUssRUFDVix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4Qiw2QkFBNkIsRUFDOUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQzs7R0FFRztBQUNILG9CQUFZLGNBQWM7SUFDeEIsSUFBSSxJQUFBO0lBQ0osUUFBUSxJQUFBO0lBQ1IsT0FBTyxJQUFBO0lBQ1AsT0FBTyxJQUFBO0NBQ1I7QUFFRDs7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
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/client/interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/client/interface.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
5
  import { type EthAddress, type L2BlockSource, type L2BlockStreamEvent, type L2Tips } from '@aztec/stdlib/block';
6
6
  import type { ContractDataSource } from '@aztec/stdlib/contract';
7
7
  import { type PeerInfo } from '@aztec/stdlib/interfaces/server';
8
- import { type BlockProposal, CheckpointAttestation, type CheckpointProposal, type P2PClientType } from '@aztec/stdlib/p2p';
8
+ import { type BlockProposal, CheckpointAttestation, type CheckpointProposal, type TopicType } from '@aztec/stdlib/p2p';
9
9
  import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
10
10
  import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
11
11
  import type { PeerId } from '@libp2p/interface';
@@ -22,7 +22,7 @@ import { type P2P, type P2PSyncState } from './interface.js';
22
22
  /**
23
23
  * The P2P client implementation.
24
24
  */
25
- export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> extends WithTracer implements P2P, P2P<P2PClientType.Prover> {
25
+ export declare class P2PClient extends WithTracer implements P2P {
26
26
  #private;
27
27
  private store;
28
28
  private l2BlockSource;
@@ -53,12 +53,13 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
53
53
  private lastSlotProcessed;
54
54
  /** Polls for slot changes and calls prepareForSlot on the tx pool */
55
55
  private slotMonitor;
56
- constructor(_clientType: T, store: AztecAsyncKVStore, l2BlockSource: L2BlockSource & ContractDataSource, mempools: MemPools, p2pService: P2PService, txCollection: TxCollection, txFileStore: TxFileStore | undefined, epochCache: EpochCacheInterface, config?: Partial<P2PConfig>, _dateProvider?: DateProvider, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
56
+ constructor(store: AztecAsyncKVStore, l2BlockSource: L2BlockSource & ContractDataSource, mempools: MemPools, p2pService: P2PService, txCollection: TxCollection, txFileStore: TxFileStore | undefined, epochCache: EpochCacheInterface, config?: Partial<P2PConfig>, _dateProvider?: DateProvider, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
57
57
  registerThisValidatorAddresses(addresses: EthAddress[]): void;
58
58
  clear(): Promise<void>;
59
59
  isP2PClient(): true;
60
60
  getTxProvider(): TxProvider;
61
61
  getPeers(includePending?: boolean): Promise<PeerInfo[]>;
62
+ getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
62
63
  getL2BlockHash(number: BlockNumber): Promise<string | undefined>;
63
64
  updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
64
65
  getL2Tips(): Promise<L2Tips>;
@@ -82,14 +83,16 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
82
83
  broadcastCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
83
84
  getCheckpointAttestationsForSlot(slot: SlotNumber, proposalId?: string): Promise<CheckpointAttestation[]>;
84
85
  addOwnCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
86
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
85
87
  registerBlockProposalHandler(handler: P2PBlockReceivedCallback): void;
86
- registerCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
88
+ registerValidatorCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
89
+ registerAllNodesCheckpointProposalHandler(handler: P2PCheckpointReceivedCallback): void;
87
90
  registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
88
91
  registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
89
- private requestTxsByHash;
90
92
  getPendingTxs(limit?: number, after?: TxHash): Promise<Tx[]>;
91
93
  getPendingTxCount(): Promise<number>;
92
94
  iteratePendingTxs(): AsyncIterableIterator<Tx>;
95
+ iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
93
96
  /**
94
97
  * Returns a transaction in the transaction pool by its hash.
95
98
  * @param txHash - Hash of the transaction to look for in the pool.
@@ -103,13 +106,6 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
103
106
  */
104
107
  getTxsByHashFromPool(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
105
108
  hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
106
- /**
107
- * Returns transactions in the transaction pool by hash.
108
- * If a transaction is not in the pool, it will be requested from the network.
109
- * @param txHashes - Hashes of the transactions to look for.
110
- * @returns The txs found, or undefined if not found in the order requested.
111
- */
112
- getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
113
109
  /**
114
110
  * Returns an archived transaction in the transaction pool by its hash.
115
111
  * @param txHash - Hash of the archived transaction to look for.
@@ -122,11 +118,6 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
122
118
  * @returns Empty promise.
123
119
  **/
124
120
  sendTx(tx: Tx): Promise<void>;
125
- /**
126
- * Adds transactions to the pool. Does not send to peers or validate the txs.
127
- * @param txs - The transactions.
128
- **/
129
- addTxsToPool(txs: Tx[]): Promise<number>;
130
121
  /**
131
122
  * Returns whether the given tx hash is flagged as pending or mined.
132
123
  * @param txHash - Hash of the tx to query.
@@ -168,6 +159,7 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
168
159
  private startCollectingMissingTxs;
169
160
  private handleFinalizedL2Blocks;
170
161
  private handlePruneL2Blocks;
162
+ private isEpochPrune;
171
163
  private maybeCallPrepareForSlot;
172
164
  private startServiceIfSynched;
173
165
  /**
@@ -175,7 +167,7 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
175
167
  * @param newState - New state value.
176
168
  */
177
169
  private setCurrentState;
178
- validate(txs: Tx[]): Promise<void>;
170
+ validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
179
171
  /**
180
172
  * Protects existing transactions by hash for a given slot.
181
173
  * Returns hashes of transactions that weren't found in the pool.
@@ -192,4 +184,4 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
192
184
  prepareForSlot(slotNumber: SlotNumber): Promise<void>;
193
185
  handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
194
186
  }
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9wMnBfY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUNMLEtBQUssVUFBVSxFQUdmLEtBQUssYUFBYSxFQUVsQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLE1BQU0sRUFFWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFXLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUNMLEtBQUssYUFBYSxFQUNsQixxQkFBcUIsRUFDckIsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxhQUFhLEVBQ25CLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQWMsS0FBSyxlQUFlLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHlCQUF5QixDQUFDO0FBRXRILE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUs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
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9wMnBfY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBb0IsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBRTlFLE9BQU8sRUFFTCxLQUFLLFVBQVUsRUFJZixLQUFLLGFBQWEsRUFFbEIsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxNQUFNLEVBRVosTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBVyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkgsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQWMsS0FBSyxlQUFlLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHlCQUF5QixDQUFDO0FBRXRILE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFHbkUsT0FBTyxLQUFLLEVBQUUsUUFB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