@aztec/p2p 0.0.1-commit.5daedc8 → 0.0.1-commit.6201a7b05

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