@aztec/p2p 0.0.1-commit.3d8f95d → 0.0.1-commit.3e3d0c9cd

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 (311) 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 +35 -29
  5. package/dest/client/interface.d.ts +14 -19
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +9 -18
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +62 -96
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +6 -7
  11. package/dest/config.d.ts +37 -15
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +81 -37
  14. package/dest/errors/tx-pool.error.d.ts +8 -0
  15. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  16. package/dest/errors/tx-pool.error.js +9 -0
  17. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -2
  18. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  19. package/dest/mem_pools/attestation_pool/attestation_pool.js +10 -1
  20. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  21. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  22. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  23. package/dest/mem_pools/instrumentation.d.ts +4 -2
  24. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  25. package/dest/mem_pools/instrumentation.js +16 -14
  26. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  27. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  28. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +2 -1
  29. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  30. package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
  31. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  32. package/dest/mem_pools/tx_pool/priority.js +4 -4
  33. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  34. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  35. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  36. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +30 -13
  37. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  38. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
  39. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  40. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  42. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +7 -3
  45. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  48. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  49. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  51. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  52. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  55. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  56. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  57. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  59. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  60. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  62. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  63. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  65. package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
  66. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool_v2/index.js +1 -1
  68. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  69. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  71. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +24 -6
  72. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  73. package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
  74. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +56 -15
  75. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  76. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +107 -18
  77. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -5
  81. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +17 -6
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +319 -147
  86. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  87. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  88. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  89. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  90. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  91. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  92. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  93. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  94. package/dest/msg_validators/proposal_validator/proposal_validator.js +48 -36
  95. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
  96. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  97. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  98. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  99. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  100. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  101. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  102. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  103. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  104. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  105. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/factory.js +240 -59
  107. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  108. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  110. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  111. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
  113. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  114. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/index.js +2 -0
  116. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  117. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  119. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  120. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  121. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  122. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  123. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/phases_validator.js +71 -23
  125. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
  126. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  128. package/dest/services/dummy_service.d.ts +4 -4
  129. package/dest/services/dummy_service.d.ts.map +1 -1
  130. package/dest/services/dummy_service.js +4 -4
  131. package/dest/services/encoding.d.ts +2 -2
  132. package/dest/services/encoding.d.ts.map +1 -1
  133. package/dest/services/encoding.js +9 -8
  134. package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
  135. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  136. package/dest/services/gossipsub/topic_score_params.js +32 -10
  137. package/dest/services/libp2p/libp2p_service.d.ts +16 -13
  138. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  139. package/dest/services/libp2p/libp2p_service.js +111 -93
  140. package/dest/services/peer-manager/metrics.d.ts +3 -1
  141. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  142. package/dest/services/peer-manager/metrics.js +6 -0
  143. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  144. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  145. package/dest/services/peer-manager/peer_manager.js +2 -1
  146. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -4
  147. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  148. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +45 -55
  149. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -6
  150. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  151. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  152. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  153. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  154. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  155. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  156. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  157. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  158. package/dest/services/reqresp/reqresp.d.ts +1 -1
  159. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  160. package/dest/services/reqresp/reqresp.js +3 -2
  161. package/dest/services/service.d.ts +5 -3
  162. package/dest/services/service.d.ts.map +1 -1
  163. package/dest/services/tx_collection/config.d.ts +13 -1
  164. package/dest/services/tx_collection/config.d.ts.map +1 -1
  165. package/dest/services/tx_collection/config.js +30 -0
  166. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -1
  167. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  168. package/dest/services/tx_collection/fast_tx_collection.js +39 -33
  169. package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
  170. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  171. package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
  172. package/dest/services/tx_collection/file_store_tx_source.d.ts +16 -6
  173. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  174. package/dest/services/tx_collection/file_store_tx_source.js +49 -16
  175. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  176. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  177. package/dest/services/tx_collection/instrumentation.js +2 -1
  178. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  179. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  180. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  181. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -6
  182. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  183. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  184. package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
  185. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  186. package/dest/services/tx_collection/slow_tx_collection.js +17 -12
  187. package/dest/services/tx_collection/tx_collection.d.ts +9 -6
  188. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  189. package/dest/services/tx_collection/tx_collection.js +26 -10
  190. package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
  191. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  192. package/dest/services/tx_collection/tx_collection_sink.js +13 -22
  193. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  194. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  195. package/dest/services/tx_collection/tx_source.js +19 -2
  196. package/dest/services/tx_file_store/tx_file_store.d.ts +3 -2
  197. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  198. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  199. package/dest/services/tx_provider.d.ts +3 -3
  200. package/dest/services/tx_provider.d.ts.map +1 -1
  201. package/dest/services/tx_provider.js +4 -4
  202. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  203. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  204. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  205. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  206. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  207. package/dest/test-helpers/mock-pubsub.js +8 -2
  208. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  209. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  210. package/dest/test-helpers/reqresp-nodes.js +2 -2
  211. package/dest/test-helpers/testbench-utils.d.ts +8 -3
  212. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  213. package/dest/test-helpers/testbench-utils.js +9 -2
  214. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  215. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  216. package/dest/testbench/p2p_client_testbench_worker.js +15 -14
  217. package/dest/testbench/worker_client_manager.d.ts +3 -1
  218. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  219. package/dest/testbench/worker_client_manager.js +6 -2
  220. package/dest/util.d.ts +3 -3
  221. package/dest/util.d.ts.map +1 -1
  222. package/package.json +14 -14
  223. package/src/client/factory.ts +62 -47
  224. package/src/client/interface.ts +17 -20
  225. package/src/client/p2p_client.ts +68 -126
  226. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -11
  227. package/src/config.ts +116 -43
  228. package/src/errors/tx-pool.error.ts +12 -0
  229. package/src/mem_pools/attestation_pool/attestation_pool.ts +13 -4
  230. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  231. package/src/mem_pools/instrumentation.ts +17 -13
  232. package/src/mem_pools/tx_pool/README.md +1 -1
  233. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  234. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  235. package/src/mem_pools/tx_pool/priority.ts +4 -4
  236. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  237. package/src/mem_pools/tx_pool_v2/README.md +52 -28
  238. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
  239. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  240. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +7 -3
  241. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  242. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  243. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  244. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  245. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  246. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  247. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  248. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  249. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  250. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  251. package/src/mem_pools/tx_pool_v2/interfaces.ts +26 -6
  252. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +156 -26
  253. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
  254. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +34 -8
  255. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +353 -143
  256. package/src/msg_validators/attestation_validator/README.md +49 -0
  257. package/src/msg_validators/proposal_validator/README.md +123 -0
  258. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  259. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  260. package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -40
  261. package/src/msg_validators/tx_validator/README.md +119 -0
  262. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -3
  263. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  264. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  265. package/src/msg_validators/tx_validator/factory.ts +387 -78
  266. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  267. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  268. package/src/msg_validators/tx_validator/index.ts +2 -0
  269. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  270. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  271. package/src/msg_validators/tx_validator/phases_validator.ts +81 -26
  272. package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
  273. package/src/services/dummy_service.ts +6 -6
  274. package/src/services/encoding.ts +7 -7
  275. package/src/services/gossipsub/README.md +29 -14
  276. package/src/services/gossipsub/topic_score_params.ts +49 -13
  277. package/src/services/libp2p/libp2p_service.ts +122 -101
  278. package/src/services/peer-manager/metrics.ts +7 -0
  279. package/src/services/peer-manager/peer_manager.ts +2 -1
  280. package/src/services/reqresp/README.md +229 -0
  281. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +49 -57
  282. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -5
  283. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  284. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  285. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  286. package/src/services/reqresp/reqresp.ts +4 -2
  287. package/src/services/service.ts +11 -2
  288. package/src/services/tx_collection/config.ts +42 -0
  289. package/src/services/tx_collection/fast_tx_collection.ts +51 -30
  290. package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
  291. package/src/services/tx_collection/file_store_tx_source.ts +64 -17
  292. package/src/services/tx_collection/instrumentation.ts +7 -1
  293. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  294. package/src/services/tx_collection/proposal_tx_collector.ts +8 -7
  295. package/src/services/tx_collection/slow_tx_collection.ts +17 -13
  296. package/src/services/tx_collection/tx_collection.ts +45 -14
  297. package/src/services/tx_collection/tx_collection_sink.ts +15 -29
  298. package/src/services/tx_collection/tx_source.ts +22 -3
  299. package/src/services/tx_file_store/tx_file_store.ts +6 -4
  300. package/src/services/tx_provider.ts +2 -2
  301. package/src/test-helpers/make-test-p2p-clients.ts +1 -3
  302. package/src/test-helpers/mock-pubsub.ts +13 -6
  303. package/src/test-helpers/reqresp-nodes.ts +3 -6
  304. package/src/test-helpers/testbench-utils.ts +12 -3
  305. package/src/testbench/p2p_client_testbench_worker.ts +24 -20
  306. package/src/testbench/worker_client_manager.ts +13 -5
  307. package/src/util.ts +8 -2
  308. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  309. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  310. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  311. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
package/dest/util.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SecretValue } from '@aztec/foundation/config';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
- import type { DataStoreConfig } from '@aztec/kv-store/config';
4
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
5
5
  import type { GossipSub } from '@chainsafe/libp2p-gossipsub';
6
6
  import type { Identify } from '@libp2p/identify';
7
7
  import type { PeerId } from '@libp2p/interface';
@@ -10,7 +10,7 @@ import type { Libp2p } from 'libp2p';
10
10
  import type { P2PConfig } from './config.js';
11
11
  export interface PubSubLibp2p extends Pick<Libp2p, 'status' | 'start' | 'stop' | 'peerId'> {
12
12
  services: {
13
- pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct'> & {
13
+ pubsub: Pick<GossipSub, 'addEventListener' | 'removeEventListener' | 'publish' | 'subscribe' | 'reportMessageValidationResult' | 'direct' | 'getMeshPeers'> & {
14
14
  score: Pick<GossipSub['score'], 'score'>;
15
15
  };
16
16
  };
@@ -58,4 +58,4 @@ export declare function getPeerIdPrivateKey(config: {
58
58
  * @returns The peer ID.
59
59
  */
60
60
  export declare function createLibP2PPeerIdFromPrivateKey(privateKey: string): Promise<PeerId>;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSXJDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk3QyxNQUFNLFdBQVcsWUFBYSxTQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3hGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJLENBQ1YsU0FBUyxFQUNULGtCQUFrQixHQUFHLHFCQUFxQixHQUFHLFNBQVMsR0FBRyxXQUFXLEdBQUcsK0JBQStCLEdBQUcsUUFBUSxDQUNsSCxHQUFHO1lBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FBRSxDQUFDO0tBQ2xELENBQUM7Q0FDSDtBQUVELE1BQU0sTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzlCLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDbkIsTUFBTSxFQUFFLFNBQVMsQ0FBQztJQUNsQixVQUFVLEVBQUU7UUFDVixpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztLQUN0QyxDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7NkNBTzZDO0FBQzdDLHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQU9qRztBQUVEOztHQUVHO0FBQ0gsd0JBQXNCLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBUW5EO0FBRUQsd0JBQWdCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUd6RDtBQUVELHdCQUFzQix5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVc5RjtBQWNELHdCQUFzQiwyQkFBMkIsQ0FDL0MsT0FBTyxFQUFFLFNBQVMsR0FBRyxlQUFlLEdBQ25DLE9BQU8sQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLENBbUJ0QztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLG1CQUFtQixDQUN2QyxNQUFNLEVBQUU7SUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFDLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsRUFDekcsS0FBSyxFQUFFLGlCQUFpQixFQUN4QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0EyRDlCO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FTMUYifQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSXJDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk3QyxNQUFNLFdBQVcsWUFBYSxTQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3hGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJLENBQ1YsU0FBUyxFQUNQLGtCQUFrQixHQUNsQixxQkFBcUIsR0FDckIsU0FBUyxHQUNULFdBQVcsR0FDWCwrQkFBK0IsR0FDL0IsUUFBUSxHQUNSLGNBQWMsQ0FDakIsR0FBRztZQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQUUsQ0FBQztLQUNsRCxDQUFDO0NBQ0g7QUFFRCxNQUFNLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM5QixRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ25CLE1BQU0sRUFBRSxTQUFTLENBQUM7SUFDbEIsVUFBVSxFQUFFO1FBQ1YsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUM7S0FDdEMsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVIOzs7Ozs7OzZDQU82QztBQUM3Qyx3QkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FPakc7QUFFRDs7R0FFRztBQUNILHdCQUFzQixXQUFXLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVFuRDtBQUVELHdCQUFnQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FHekQ7QUFFRCx3QkFBc0IseUJBQXlCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FXOUY7QUFjRCx3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxTQUFTLEdBQUcsZUFBZSxHQUNuQyxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQW1CdEM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixtQkFBbUIsQ0FDdkMsTUFBTSxFQUFFO0lBQUUsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFBQyxvQkFBb0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEVBQ3pHLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBMkQ5QjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsZ0NBQWdDLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBUzFGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACT,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,+BAA+B,GAAG,QAAQ,CAClH,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACP,kBAAkB,GAClB,qBAAqB,GACrB,SAAS,GACT,WAAW,GACX,+BAA+B,GAC/B,QAAQ,GACR,cAAc,CACjB,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.0.1-commit.3d8f95d",
3
+ "version": "0.0.1-commit.3e3d0c9cd",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -67,17 +67,17 @@
67
67
  ]
68
68
  },
69
69
  "dependencies": {
70
- "@aztec/constants": "0.0.1-commit.3d8f95d",
71
- "@aztec/epoch-cache": "0.0.1-commit.3d8f95d",
72
- "@aztec/ethereum": "0.0.1-commit.3d8f95d",
73
- "@aztec/foundation": "0.0.1-commit.3d8f95d",
74
- "@aztec/kv-store": "0.0.1-commit.3d8f95d",
75
- "@aztec/noir-contracts.js": "0.0.1-commit.3d8f95d",
76
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.3d8f95d",
77
- "@aztec/protocol-contracts": "0.0.1-commit.3d8f95d",
78
- "@aztec/simulator": "0.0.1-commit.3d8f95d",
79
- "@aztec/stdlib": "0.0.1-commit.3d8f95d",
80
- "@aztec/telemetry-client": "0.0.1-commit.3d8f95d",
70
+ "@aztec/constants": "0.0.1-commit.3e3d0c9cd",
71
+ "@aztec/epoch-cache": "0.0.1-commit.3e3d0c9cd",
72
+ "@aztec/ethereum": "0.0.1-commit.3e3d0c9cd",
73
+ "@aztec/foundation": "0.0.1-commit.3e3d0c9cd",
74
+ "@aztec/kv-store": "0.0.1-commit.3e3d0c9cd",
75
+ "@aztec/noir-contracts.js": "0.0.1-commit.3e3d0c9cd",
76
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.3e3d0c9cd",
77
+ "@aztec/protocol-contracts": "0.0.1-commit.3e3d0c9cd",
78
+ "@aztec/simulator": "0.0.1-commit.3e3d0c9cd",
79
+ "@aztec/stdlib": "0.0.1-commit.3e3d0c9cd",
80
+ "@aztec/telemetry-client": "0.0.1-commit.3e3d0c9cd",
81
81
  "@chainsafe/libp2p-gossipsub": "13.0.0",
82
82
  "@chainsafe/libp2p-noise": "^15.0.0",
83
83
  "@chainsafe/libp2p-yamux": "^6.0.2",
@@ -104,8 +104,8 @@
104
104
  "xxhash-wasm": "^1.1.0"
105
105
  },
106
106
  "devDependencies": {
107
- "@aztec/archiver": "0.0.1-commit.3d8f95d",
108
- "@aztec/world-state": "0.0.1-commit.3d8f95d",
107
+ "@aztec/archiver": "0.0.1-commit.3e3d0c9cd",
108
+ "@aztec/world-state": "0.0.1-commit.3e3d0c9cd",
109
109
  "@jest/globals": "^30.0.0",
110
110
  "@types/jest": "^30.0.0",
111
111
  "@types/node": "^22.15.17",
@@ -1,15 +1,14 @@
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
- import type { BlockHash, L2BlockSource } from '@aztec/stdlib/block';
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';
12
- import { MerkleTreeId } from '@aztec/stdlib/trees';
10
+ import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
11
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
13
12
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
14
13
 
15
14
  import { P2PClient } from '../client/p2p_client.js';
@@ -17,26 +16,28 @@ import type { P2PConfig } from '../config.js';
17
16
  import { AttestationPool, type AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
18
17
  import type { MemPools } from '../mem_pools/interface.js';
19
18
  import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
20
- import type { TxMetaData } from '../mem_pools/tx_pool_v2/tx_metadata.js';
21
19
  import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
22
- import { AggregateTxValidator } from '../msg_validators/tx_validator/aggregate_tx_validator.js';
23
- import { BlockHeaderTxValidator } from '../msg_validators/tx_validator/block_header_validator.js';
24
- import { DoubleSpendTxValidator } from '../msg_validators/tx_validator/double_spend_validator.js';
20
+ import {
21
+ createCheckAllowedSetupCalls,
22
+ createTxValidatorForTransactionsEnteringPendingTxPool,
23
+ getDefaultAllowedSetupFunctions,
24
+ } from '../msg_validators/index.js';
25
25
  import { DummyP2PService } from '../services/dummy_service.js';
26
26
  import { LibP2PService } from '../services/index.js';
27
27
  import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
28
28
  import { TxCollection } from '../services/tx_collection/tx_collection.js';
29
- import { type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
29
+ import { NodeRpcTxSource, type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
30
30
  import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
31
31
  import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
32
32
 
33
- export type P2PClientDeps<T extends P2PClientType> = {
33
+ export type P2PClientDeps = {
34
34
  txPool?: TxPoolV2;
35
35
  store?: AztecAsyncKVStore;
36
36
  attestationPool?: AttestationPoolApi;
37
37
  logger?: Logger;
38
38
  txCollectionNodeSources?: TxSource[];
39
- p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService<T>>;
39
+ rpcTxProviders?: AztecNode[];
40
+ p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
40
41
  };
41
42
 
42
43
  export const P2P_STORE_NAME = 'p2p';
@@ -44,8 +45,7 @@ export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
44
45
  export const P2P_PEER_STORE_NAME = 'p2p-peers';
45
46
  export const P2P_ATTESTATION_STORE_NAME = 'p2p-attestation';
46
47
 
47
- export async function createP2PClient<T extends P2PClientType>(
48
- clientType: T,
48
+ export async function createP2PClient(
49
49
  inputConfig: P2PConfig & DataStoreConfig & ChainConfig,
50
50
  archiver: L2BlockSource & ContractDataSource,
51
51
  proofVerifier: ClientProtocolCircuitVerifier,
@@ -54,7 +54,7 @@ export async function createP2PClient<T extends P2PClientType>(
54
54
  packageVersion: string,
55
55
  dateProvider: DateProvider = new DateProvider(),
56
56
  telemetry: TelemetryClient = getTelemetryClient(),
57
- deps: P2PClientDeps<T> = {},
57
+ deps: P2PClientDeps = {},
58
58
  ) {
59
59
  const config = await configureP2PClientAddresses({
60
60
  ...inputConfig,
@@ -76,29 +76,33 @@ export async function createP2PClient<T extends P2PClientType>(
76
76
  const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 1, config, bindings);
77
77
  const l1Constants = await archiver.getL1Constants();
78
78
 
79
- /** Validator factory for pool re-validation (double-spend + block header only). */
80
- const createPoolTxValidator = async () => {
81
- await worldStateSynchronizer.syncImmediate();
82
- return new AggregateTxValidator<TxMetaData>(
83
- new DoubleSpendTxValidator<TxMetaData>(
84
- {
85
- nullifiersExist: async (nullifiers: Buffer[]) => {
86
- const merkleTree = worldStateSynchronizer.getCommitted();
87
- const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
88
- return indices.map(index => index !== undefined);
89
- },
90
- },
91
- bindings,
92
- ),
93
- new BlockHeaderTxValidator<TxMetaData>(
94
- {
95
- getArchiveIndices: (archives: BlockHash[]) => {
96
- const merkleTree = worldStateSynchronizer.getCommitted();
97
- return merkleTree.findLeafIndices(MerkleTreeId.ARCHIVE, archives);
98
- },
99
- },
100
- bindings,
101
- ),
79
+ const rollupAddress = inputConfig.l1Contracts.rollupAddress.toString().toLowerCase().replace(/^0x/, '');
80
+ const txFileStoreBasePath = `aztec-${inputConfig.l1ChainId}-${inputConfig.rollupVersion}-0x${rollupAddress}`;
81
+
82
+ const allowedInSetup = [
83
+ ...(await getDefaultAllowedSetupFunctions()),
84
+ ...(inputConfig.txPublicSetupAllowListExtend ?? []),
85
+ ];
86
+ const checkAllowedSetupCalls = createCheckAllowedSetupCalls(
87
+ archiver,
88
+ allowedInSetup,
89
+ () => epochCache.getEpochAndSlotInNextL1Slot().ts,
90
+ );
91
+
92
+ const createTxValidator = async () => {
93
+ // We accept transactions if they are not expired by the next slot and block number (checked based on the ExpirationTimestamp field)
94
+ const currentBlockNumber = await archiver.getBlockNumber();
95
+ const { ts: nextSlotTimestamp } = epochCache.getEpochAndSlotInNextL1Slot();
96
+ const l1Constants = await archiver.getL1Constants();
97
+ return createTxValidatorForTransactionsEnteringPendingTxPool(
98
+ worldStateSynchronizer,
99
+ nextSlotTimestamp,
100
+ BlockNumber(currentBlockNumber + 1),
101
+ {
102
+ rollupManaLimit: l1Constants.rollupManaLimit,
103
+ maxBlockL2Gas: config.validateMaxL2BlockGas,
104
+ maxBlockDAGas: config.validateMaxDABlockGas,
105
+ },
102
106
  );
103
107
  };
104
108
 
@@ -110,13 +114,18 @@ export async function createP2PClient<T extends P2PClientType>(
110
114
  {
111
115
  l2BlockSource: archiver,
112
116
  worldStateSynchronizer,
113
- createTxValidator: createPoolTxValidator,
117
+ checkAllowedSetupCalls,
118
+ createTxValidator,
114
119
  },
115
120
  telemetry,
116
121
  {
117
122
  maxPendingTxCount: config.maxPendingTxCount,
118
123
  archivedTxLimit: config.archivedTxLimit,
124
+ minTxPoolAgeMs: config.minTxPoolAgeMs,
125
+ dropTransactionsProbability: config.dropTransactionsProbability,
126
+ priceBumpPercentage: config.priceBumpPercentage,
119
127
  },
128
+ dateProvider,
120
129
  );
121
130
 
122
131
  const mempools: MemPools = {
@@ -124,9 +133,8 @@ export async function createP2PClient<T extends P2PClientType>(
124
133
  attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
125
134
  };
126
135
 
127
- const p2pService = await createP2PService<T>(
136
+ const p2pService = await createP2PService(
128
137
  config,
129
- clientType,
130
138
  archiver,
131
139
  proofVerifier,
132
140
  worldStateSynchronizer,
@@ -142,6 +150,7 @@ export async function createP2PClient<T extends P2PClientType>(
142
150
 
143
151
  const nodeSources = [
144
152
  ...createNodeRpcTxSources(config.txCollectionNodeRpcUrls, config),
153
+ ...(deps.rpcTxProviders ?? []).map((node, i) => new NodeRpcTxSource(node, `node-rpc-provider-${i}`)),
145
154
  ...(deps.txCollectionNodeSources ?? []),
146
155
  ];
147
156
  if (nodeSources.length > 0) {
@@ -152,7 +161,9 @@ export async function createP2PClient<T extends P2PClientType>(
152
161
 
153
162
  const fileStoreSources = await createFileStoreTxSources(
154
163
  config.txCollectionFileStoreUrls,
164
+ txFileStoreBasePath,
155
165
  logger.createChild('file-store-tx-source'),
166
+ telemetry,
156
167
  );
157
168
  if (fileStoreSources.length > 0) {
158
169
  logger.info(`Using ${fileStoreSources.length} file store sources for tx collection.`, {
@@ -172,10 +183,15 @@ export async function createP2PClient<T extends P2PClientType>(
172
183
  logger.createChild('tx-collection'),
173
184
  );
174
185
 
175
- const txFileStore = await TxFileStore.create(mempools.txPool, config, logger.createChild('tx-file-store'), telemetry);
186
+ const txFileStore = await TxFileStore.create(
187
+ mempools.txPool,
188
+ config,
189
+ txFileStoreBasePath,
190
+ logger.createChild('tx-file-store'),
191
+ telemetry,
192
+ );
176
193
 
177
194
  return new P2PClient(
178
- clientType,
179
195
  store,
180
196
  archiver,
181
197
  mempools,
@@ -189,9 +205,8 @@ export async function createP2PClient<T extends P2PClientType>(
189
205
  );
190
206
  }
191
207
 
192
- async function createP2PService<T extends P2PClientType>(
208
+ async function createP2PService(
193
209
  config: P2PConfig & DataStoreConfig,
194
- clientType: T,
195
210
  archiver: L2BlockSource & ContractDataSource,
196
211
  proofVerifier: ClientProtocolCircuitVerifier,
197
212
  worldStateSynchronizer: WorldStateSynchronizer,
@@ -199,7 +214,7 @@ async function createP2PService<T extends P2PClientType>(
199
214
  store: AztecAsyncKVStore,
200
215
  peerStore: AztecLMDBStoreV2,
201
216
  mempools: MemPools,
202
- p2pServiceFactory: P2PClientDeps<T>['p2pServiceFactory'],
217
+ p2pServiceFactory: P2PClientDeps['p2pServiceFactory'],
203
218
  packageVersion: string,
204
219
  logger: Logger,
205
220
  telemetry: TelemetryClient,
@@ -215,7 +230,7 @@ async function createP2PService<T extends P2PClientType>(
215
230
  const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
216
231
  const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey.getValue());
217
232
 
218
- const p2pService = await (p2pServiceFactory ?? LibP2PService.new<T>)(clientType, config, peerId, {
233
+ const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(config, peerId, {
219
234
  packageVersion,
220
235
  mempools,
221
236
  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
 
7
7
  import type { PeerId } from '@libp2p/interface';
@@ -48,7 +48,7 @@ export interface P2PSyncState {
48
48
  /**
49
49
  * Interface of a P2P client.
50
50
  **/
51
- export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> & {
51
+ export type P2P = P2PClient & {
52
52
  /**
53
53
  * Broadcasts a block proposal to other peers.
54
54
  *
@@ -107,13 +107,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
107
107
  **/
108
108
  sendTx(tx: Tx): Promise<void>;
109
109
 
110
- /**
111
- * Adds transactions to the pool. Does not send to peers or validate the tx.
112
- * @param txs - The transactions.
113
- * @returns The number of txs added to the pool. Note if the transaction already exists, it will not be added again.
114
- **/
115
- addTxsToPool(txs: Tx[]): Promise<number>;
116
-
117
110
  /**
118
111
  * Handles failed transaction execution by removing txs from the pool.
119
112
  * @param txHashes - Hashes of the transactions that failed execution.
@@ -141,14 +134,6 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
141
134
  */
142
135
  hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
143
136
 
144
- /**
145
- * Returns transactions in the transaction pool by hash, requesting from the network if not found.
146
- * @param txHashes - Hashes of tx to return.
147
- * @param pinnedPeerId - An optional peer id that will be used to request the tx from (in addition to other random peers).
148
- * @returns An array of tx or undefined.
149
- */
150
- getTxsByHash(txHashes: TxHash[], pinnedPeerId: PeerId | undefined): Promise<(Tx | undefined)[]>;
151
-
152
137
  /**
153
138
  * Returns an archived transaction from the transaction pool by its hash.
154
139
  * @param txHash - Hash of tx to return.
@@ -166,6 +151,9 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
166
151
  /** Returns an iterator over pending txs on the mempool. */
167
152
  iteratePendingTxs(): AsyncIterableIterator<Tx>;
168
153
 
154
+ /** Returns an iterator over pending txs that have been in the pool long enough to be eligible for block building. */
155
+ iterateEligiblePendingTxs(): AsyncIterableIterator<Tx>;
156
+
169
157
  /** Returns the number of pending txs in the mempool. */
170
158
  getPendingTxCount(): Promise<number>;
171
159
 
@@ -217,10 +205,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
217
205
  /** Identifies a p2p client. */
218
206
  isP2PClient(): true;
219
207
 
208
+ /** Returns the tx provider used for fetching transactions. */
209
+ getTxProvider(): ITxProvider;
210
+
220
211
  updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
221
212
 
222
- /** Validates a set of txs. */
223
- validate(txs: Tx[]): Promise<void>;
213
+ /** Validates a set of txs received in a block proposal. */
214
+ validateTxsReceivedInBlockProposal(txs: Tx[]): Promise<void>;
224
215
 
225
216
  /** Clears the db. */
226
217
  clear(): Promise<void>;
@@ -233,6 +224,12 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
233
224
 
234
225
  handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
235
226
 
227
+ /** Checks if any block proposals exist for the given slot. */
228
+ hasBlockProposalsForSlot(slot: SlotNumber): Promise<boolean>;
229
+
236
230
  /** If node running this P2P stack is validator, passes in validator address to P2P layer */
237
231
  registerThisValidatorAddresses(address: EthAddress[]): void;
232
+
233
+ /** Returns the number of peers in the GossipSub mesh for a given topic type. */
234
+ getGossipMeshPeerCount(topicType: TopicType): Promise<number>;
238
235
  };