@aztec/p2p 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5a9928

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