@aztec/p2p 0.0.1-commit.6d3c34e → 0.0.1-commit.6d63667d

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 (395) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +1 -1
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +9 -6
  7. package/dest/client/p2p_client.d.ts +4 -2
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +16 -5
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  11. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  16. package/dest/config.d.ts +14 -2
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +7 -3
  19. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  20. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +20 -9
  22. package/dest/mem_pools/attestation_pool/mocks.d.ts +4 -2
  23. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/mocks.js +8 -5
  25. package/dest/mem_pools/instrumentation.d.ts +1 -1
  26. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  27. package/dest/mem_pools/instrumentation.js +2 -2
  28. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +15 -10
  29. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +91 -50
  31. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +19 -5
  32. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  33. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +59 -3
  34. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +79 -5
  35. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  36. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +47 -0
  37. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  38. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  39. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  40. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +2 -2
  41. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +4 -4
  43. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  45. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +2 -2
  46. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  48. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  49. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  54. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  86. package/dest/mem_pools/tx_pool_v2/index.d.ts +5 -0
  87. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/index.js +4 -0
  89. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +197 -0
  90. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +71 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +95 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +99 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +332 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +156 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +748 -0
  107. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -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 +41 -10
  110. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -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 +18 -6
  113. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  114. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  115. package/dest/msg_validators/clock_tolerance.js +37 -0
  116. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
  117. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/proposal_validator/proposal_validator.js +55 -31
  119. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
  120. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  121. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +93 -64
  122. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  123. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  125. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  126. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/block_header_validator.js +3 -2
  128. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  129. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  130. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  131. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  132. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  133. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  134. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  135. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  136. package/dest/msg_validators/tx_validator/factory.js +21 -11
  137. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  138. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  139. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  140. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  141. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  143. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  144. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  145. package/dest/msg_validators/tx_validator/index.js +1 -0
  146. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  147. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  148. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  149. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  150. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  151. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  152. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  153. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  154. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  155. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +3 -2
  156. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  158. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  159. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  160. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  161. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  162. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  163. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  164. package/dest/services/data_store.d.ts +1 -1
  165. package/dest/services/data_store.d.ts.map +1 -1
  166. package/dest/services/data_store.js +10 -6
  167. package/dest/services/discv5/discV5_service.js +1 -1
  168. package/dest/services/dummy_service.d.ts +13 -1
  169. package/dest/services/dummy_service.d.ts.map +1 -1
  170. package/dest/services/dummy_service.js +39 -0
  171. package/dest/services/encoding.d.ts +1 -1
  172. package/dest/services/encoding.d.ts.map +1 -1
  173. package/dest/services/encoding.js +2 -3
  174. package/dest/services/index.d.ts +2 -1
  175. package/dest/services/index.d.ts.map +1 -1
  176. package/dest/services/index.js +1 -0
  177. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  178. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  179. package/dest/services/libp2p/instrumentation.js +19 -8
  180. package/dest/services/libp2p/libp2p_service.d.ts +15 -9
  181. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  182. package/dest/services/libp2p/libp2p_service.js +63 -58
  183. package/dest/services/peer-manager/metrics.d.ts +2 -2
  184. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  185. package/dest/services/peer-manager/metrics.js +20 -5
  186. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  187. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  188. package/dest/services/peer-manager/peer_scoring.js +8 -2
  189. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  190. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  191. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  192. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  193. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  194. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  195. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  196. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  197. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  198. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  199. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  200. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  201. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  202. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  203. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  204. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  205. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  206. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  207. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  208. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  209. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  210. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  211. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  212. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  213. package/dest/services/reqresp/constants.d.ts +12 -0
  214. package/dest/services/reqresp/constants.d.ts.map +1 -0
  215. package/dest/services/reqresp/constants.js +7 -0
  216. package/dest/services/reqresp/interface.d.ts +3 -1
  217. package/dest/services/reqresp/interface.d.ts.map +1 -1
  218. package/dest/services/reqresp/metrics.d.ts +6 -5
  219. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  220. package/dest/services/reqresp/metrics.js +17 -5
  221. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  222. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  223. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  224. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +6 -5
  225. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  226. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  227. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +23 -6
  228. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  229. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +44 -13
  230. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  231. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  232. package/dest/services/reqresp/protocols/status.js +2 -1
  233. package/dest/services/reqresp/reqresp.d.ts +6 -1
  234. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  235. package/dest/services/reqresp/reqresp.js +58 -22
  236. package/dest/services/service.d.ts +4 -1
  237. package/dest/services/service.d.ts.map +1 -1
  238. package/dest/services/tx_collection/config.d.ts +4 -1
  239. package/dest/services/tx_collection/config.d.ts.map +1 -1
  240. package/dest/services/tx_collection/config.js +9 -1
  241. package/dest/services/tx_collection/fast_tx_collection.d.ts +5 -4
  242. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  243. package/dest/services/tx_collection/fast_tx_collection.js +17 -10
  244. package/dest/services/tx_collection/index.d.ts +2 -1
  245. package/dest/services/tx_collection/index.d.ts.map +1 -1
  246. package/dest/services/tx_collection/index.js +1 -0
  247. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  248. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  249. package/dest/services/tx_collection/instrumentation.js +9 -2
  250. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  251. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  252. package/dest/services/tx_collection/proposal_tx_collector.js +49 -0
  253. package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -3
  254. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  255. package/dest/services/tx_collection/tx_collection.d.ts +8 -8
  256. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  257. package/dest/services/tx_collection/tx_collection.js +5 -5
  258. package/dest/services/tx_file_store/config.d.ts +18 -0
  259. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  260. package/dest/services/tx_file_store/config.js +26 -0
  261. package/dest/services/tx_file_store/index.d.ts +4 -0
  262. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  263. package/dest/services/tx_file_store/index.js +3 -0
  264. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  265. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  266. package/dest/services/tx_file_store/instrumentation.js +29 -0
  267. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  268. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  269. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  270. package/dest/services/tx_provider.d.ts +3 -3
  271. package/dest/services/tx_provider.d.ts.map +1 -1
  272. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  273. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  274. package/dest/services/tx_provider_instrumentation.js +5 -5
  275. package/dest/test-helpers/index.d.ts +3 -1
  276. package/dest/test-helpers/index.d.ts.map +1 -1
  277. package/dest/test-helpers/index.js +2 -0
  278. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  279. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  280. package/dest/test-helpers/test_tx_provider.js +41 -0
  281. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  282. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  283. package/dest/test-helpers/testbench-utils.js +297 -0
  284. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  285. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  286. package/dest/testbench/p2p_client_testbench_worker.js +212 -132
  287. package/dest/testbench/worker_client_manager.d.ts +51 -6
  288. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  289. package/dest/testbench/worker_client_manager.js +226 -44
  290. package/package.json +16 -16
  291. package/src/bootstrap/bootstrap.ts +7 -4
  292. package/src/client/factory.ts +10 -10
  293. package/src/client/p2p_client.ts +20 -8
  294. package/src/client/test/tx_proposal_collector/README.md +227 -0
  295. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  296. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  297. package/src/config.ts +15 -3
  298. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +17 -9
  299. package/src/mem_pools/attestation_pool/mocks.ts +6 -4
  300. package/src/mem_pools/instrumentation.ts +2 -1
  301. package/src/mem_pools/tx_pool/README.md +28 -13
  302. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +130 -75
  303. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +66 -5
  304. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +119 -4
  305. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  306. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  307. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  308. package/src/mem_pools/tx_pool_v2/README.md +209 -0
  309. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  310. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  311. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  312. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  313. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  314. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  315. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  316. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  317. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  318. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  319. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  320. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  321. package/src/mem_pools/tx_pool_v2/index.ts +11 -0
  322. package/src/mem_pools/tx_pool_v2/interfaces.ts +227 -0
  323. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +161 -0
  324. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  325. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +417 -0
  326. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +212 -0
  327. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +882 -0
  328. package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
  329. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -8
  330. package/src/msg_validators/clock_tolerance.ts +51 -0
  331. package/src/msg_validators/proposal_validator/proposal_validator.ts +31 -31
  332. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +91 -67
  333. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  334. package/src/msg_validators/tx_validator/block_header_validator.ts +6 -5
  335. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  336. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  337. package/src/msg_validators/tx_validator/factory.ts +64 -23
  338. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  339. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  340. package/src/msg_validators/tx_validator/index.ts +1 -0
  341. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  342. package/src/msg_validators/tx_validator/phases_validator.ts +5 -3
  343. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  344. package/src/msg_validators/tx_validator/timestamp_validator.ts +6 -3
  345. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  346. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  347. package/src/services/data_store.ts +10 -7
  348. package/src/services/discv5/discV5_service.ts +1 -1
  349. package/src/services/dummy_service.ts +45 -0
  350. package/src/services/encoding.ts +2 -3
  351. package/src/services/index.ts +1 -0
  352. package/src/services/libp2p/instrumentation.ts +20 -7
  353. package/src/services/libp2p/libp2p_service.ts +108 -78
  354. package/src/services/peer-manager/metrics.ts +21 -4
  355. package/src/services/peer-manager/peer_scoring.ts +4 -1
  356. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  357. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  358. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  359. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  360. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  361. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  362. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  363. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  364. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  365. package/src/services/reqresp/constants.ts +14 -0
  366. package/src/services/reqresp/interface.ts +3 -0
  367. package/src/services/reqresp/metrics.ts +34 -9
  368. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  369. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -12
  370. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +57 -9
  371. package/src/services/reqresp/protocols/status.ts +5 -3
  372. package/src/services/reqresp/reqresp.ts +66 -19
  373. package/src/services/service.ts +4 -0
  374. package/src/services/tx_collection/config.ts +15 -1
  375. package/src/services/tx_collection/fast_tx_collection.ts +30 -17
  376. package/src/services/tx_collection/index.ts +5 -0
  377. package/src/services/tx_collection/instrumentation.ts +11 -2
  378. package/src/services/tx_collection/proposal_tx_collector.ts +112 -0
  379. package/src/services/tx_collection/slow_tx_collection.ts +2 -2
  380. package/src/services/tx_collection/tx_collection.ts +8 -8
  381. package/src/services/tx_file_store/config.ts +43 -0
  382. package/src/services/tx_file_store/index.ts +3 -0
  383. package/src/services/tx_file_store/instrumentation.ts +36 -0
  384. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  385. package/src/services/tx_provider.ts +2 -2
  386. package/src/services/tx_provider_instrumentation.ts +11 -5
  387. package/src/test-helpers/index.ts +2 -0
  388. package/src/test-helpers/test_tx_provider.ts +64 -0
  389. package/src/test-helpers/testbench-utils.ts +374 -0
  390. package/src/testbench/p2p_client_testbench_worker.ts +321 -126
  391. package/src/testbench/worker_client_manager.ts +304 -47
  392. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +0 -15
  393. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +0 -1
  394. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +0 -88
  395. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +0 -108
@@ -6,7 +6,6 @@ import { type Logger, createLibp2pComponentLogger, createLogger } from '@aztec/f
6
6
  import { RunningPromise } from '@aztec/foundation/running-promise';
7
7
  import { Timer } from '@aztec/foundation/timer';
8
8
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
9
- import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
10
9
  import { protocolContractsHash } from '@aztec/protocol-contracts';
11
10
  import type { EthAddress, L2Block, L2BlockSource } from '@aztec/stdlib/block';
12
11
  import type { ContractDataSource } from '@aztec/stdlib/contract';
@@ -20,6 +19,7 @@ import {
20
19
  type Gossipable,
21
20
  P2PClientType,
22
21
  P2PMessage,
22
+ type ValidationResult as P2PValidationResult,
23
23
  PeerErrorSeverity,
24
24
  TopicType,
25
25
  createTopicString,
@@ -60,23 +60,21 @@ import { createLibp2p } from 'libp2p';
60
60
 
61
61
  import type { P2PConfig } from '../../config.js';
62
62
  import { ProposalSlotCapExceededError } from '../../errors/attestation-pool.error.js';
63
- import type { MemPools } from '../../mem_pools/interface.js';
63
+ import type { MemPools } from '../../mem_pools/index.js';
64
64
  import {
65
65
  BlockProposalValidator,
66
66
  CheckpointAttestationValidator,
67
67
  CheckpointProposalValidator,
68
+ DoubleSpendTxValidator,
68
69
  FishermanAttestationValidator,
70
+ getDefaultAllowedSetupFunctions,
69
71
  } from '../../msg_validators/index.js';
70
72
  import { MessageSeenValidator } from '../../msg_validators/msg_seen_validator/msg_seen_validator.js';
71
- import { getDefaultAllowedSetupFunctions } from '../../msg_validators/tx_validator/allowed_public_setup.js';
72
- import { type MessageValidator, createTxMessageValidators } from '../../msg_validators/tx_validator/factory.js';
73
73
  import {
74
- AggregateTxValidator,
75
- DataTxValidator,
76
- DoubleSpendTxValidator,
77
- MetadataTxValidator,
78
- TxProofValidator,
79
- } from '../../msg_validators/tx_validator/index.js';
74
+ type MessageValidator,
75
+ createTxMessageValidators,
76
+ createTxReqRespValidator,
77
+ } from '../../msg_validators/tx_validator/factory.js';
80
78
  import { GossipSubEvent } from '../../types/index.js';
81
79
  import { type PubSubLibp2p, convertToMultiaddr } from '../../util.js';
82
80
  import { getVersions } from '../../versioning.js';
@@ -87,29 +85,31 @@ import { gossipScoreThresholds } from '../gossipsub/scoring.js';
87
85
  import type { PeerManagerInterface } from '../peer-manager/interface.js';
88
86
  import { PeerManager } from '../peer-manager/peer_manager.js';
89
87
  import { PeerScoring } from '../peer-manager/peer_scoring.js';
88
+ import type { BatchTxRequesterLibP2PService } from '../reqresp/batch-tx-requester/interface.js';
90
89
  import type { P2PReqRespConfig } from '../reqresp/config.js';
91
90
  import {
92
91
  DEFAULT_SUB_PROTOCOL_VALIDATORS,
93
92
  type ReqRespInterface,
93
+ type ReqRespResponse,
94
94
  ReqRespSubProtocol,
95
95
  type ReqRespSubProtocolHandler,
96
96
  type ReqRespSubProtocolHandlers,
97
97
  type ReqRespSubProtocolValidators,
98
98
  type SubProtocolMap,
99
99
  ValidationError,
100
- } from '../reqresp/interface.js';
101
- import { reqRespBlockTxsHandler } from '../reqresp/protocols/block_txs/block_txs_handler.js';
102
- import { reqGoodbyeHandler } from '../reqresp/protocols/goodbye.js';
100
+ } from '../reqresp/index.js';
103
101
  import {
104
102
  AuthRequest,
105
103
  BlockTxsRequest,
106
104
  BlockTxsResponse,
107
105
  StatusMessage,
108
106
  pingHandler,
107
+ reqGoodbyeHandler,
109
108
  reqRespBlockHandler,
109
+ reqRespBlockTxsHandler,
110
110
  reqRespStatusHandler,
111
111
  reqRespTxHandler,
112
- } from '../reqresp/protocols/index.js';
112
+ } from '../reqresp/index.js';
113
113
  import { ReqResp } from '../reqresp/reqresp.js';
114
114
  import type {
115
115
  P2PBlockReceivedCallback,
@@ -284,14 +284,14 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
284
284
 
285
285
  const datastore = new AztecDatastore(peerStore);
286
286
 
287
- const otelMetricsAdapter = new OtelMetricsAdapter(telemetry);
287
+ const otelMetricsAdapter = new OtelMetricsAdapter(telemetry, logger.getBindings());
288
288
 
289
289
  const peerDiscoveryService = new DiscV5Service(
290
290
  peerId,
291
291
  config,
292
292
  packageVersion,
293
293
  telemetry,
294
- createLogger(`${logger.module}:discv5_service`),
294
+ createLogger(`${logger.module}:discv5_service`, logger.getBindings()),
295
295
  );
296
296
 
297
297
  // Seed libp2p's bootstrap discovery with private and trusted peers
@@ -452,7 +452,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
452
452
  connectionManager: components.connectionManager,
453
453
  }),
454
454
  },
455
- logger: createLibp2pComponentLogger(logger.module),
455
+ logger: createLibp2pComponentLogger(logger.module, logger.getBindings()),
456
456
  });
457
457
 
458
458
  const peerScoring = new PeerScoring(config, telemetry);
@@ -524,7 +524,11 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
524
524
  };
525
525
 
526
526
  if (!this.config.disableTransactions) {
527
- const blockTxsHandler = reqRespBlockTxsHandler(this.mempools.attestationPool, this.mempools.txPool);
527
+ const blockTxsHandler = reqRespBlockTxsHandler(
528
+ this.mempools.attestationPool,
529
+ this.archiver,
530
+ this.mempools.txPool,
531
+ );
528
532
  requestResponseHandlers[ReqRespSubProtocol.BLOCK_TXS] = blockTxsHandler.bind(this);
529
533
  }
530
534
 
@@ -640,6 +644,15 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
640
644
  return this.reqresp.sendBatchRequest(protocol, requests, pinnedPeerId);
641
645
  }
642
646
 
647
+ public sendRequestToPeer(
648
+ peerId: PeerId,
649
+ subProtocol: ReqRespSubProtocol,
650
+ payload: Buffer,
651
+ dialTimeout?: number,
652
+ ): Promise<ReqRespResponse> {
653
+ return this.reqresp.sendRequestToPeer(peerId, subProtocol, payload, dialTimeout);
654
+ }
655
+
643
656
  /**
644
657
  * Get the ENR of the node
645
658
  * @returns The ENR of the node
@@ -923,7 +936,8 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
923
936
  const validationFunc: () => Promise<ReceivedMessageValidationResult<CheckpointAttestation>> = async () => {
924
937
  const attestation = CheckpointAttestation.fromBuffer(payloadData);
925
938
  const pool = this.mempools.attestationPool;
926
- const isValid = await this.validateCheckpointAttestation(source, attestation);
939
+ const validationResult = await this.validateCheckpointAttestation(source, attestation);
940
+ const isValid = validationResult.result === 'accept';
927
941
  const exists = isValid && (await pool.hasCheckpointAttestation(attestation));
928
942
 
929
943
  let canAdd = true;
@@ -942,9 +956,9 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
942
956
  [Attributes.P2P_ID]: source.toString(),
943
957
  });
944
958
 
945
- if (!isValid) {
959
+ if (validationResult.result === 'reject') {
946
960
  return { result: TopicValidatorResult.Reject };
947
- } else if (exists) {
961
+ } else if (validationResult.result === 'ignore' || exists) {
948
962
  return { result: TopicValidatorResult.Ignore, obj: attestation };
949
963
  } else if (!canAdd) {
950
964
  this.logger.warn(`Dropping checkpoint attestation due to per-(slot, proposalId) attestation cap`, {
@@ -985,7 +999,8 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
985
999
  private async processBlockFromPeer(payloadData: Buffer, msgId: string, source: PeerId): Promise<void> {
986
1000
  const validationFunc: () => Promise<ReceivedMessageValidationResult<BlockProposal>> = async () => {
987
1001
  const block = BlockProposal.fromBuffer(payloadData);
988
- const isValid = await this.validateBlockProposal(source, block);
1002
+ const validationResult = await this.validateBlockProposal(source, block);
1003
+ const isValid = validationResult.result === 'accept';
989
1004
  const pool = this.mempools.attestationPool;
990
1005
 
991
1006
  const exists = isValid && (await pool.hasBlockProposal(block));
@@ -999,9 +1014,9 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
999
1014
  [Attributes.P2P_ID]: source.toString(),
1000
1015
  });
1001
1016
 
1002
- if (!isValid) {
1017
+ if (validationResult.result === 'reject') {
1003
1018
  return { result: TopicValidatorResult.Reject };
1004
- } else if (exists) {
1019
+ } else if (validationResult.result === 'ignore' || exists) {
1005
1020
  return { result: TopicValidatorResult.Ignore, obj: block };
1006
1021
  } else if (!canAdd) {
1007
1022
  this.peerManager.penalizePeer(source, PeerErrorSeverity.MidToleranceError);
@@ -1081,7 +1096,8 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1081
1096
  // TODO(palla/mbps): This pattern is repeated across multiple message handlers, consider abstracting it.
1082
1097
  const validationFunc: () => Promise<ReceivedMessageValidationResult<CheckpointProposal>> = async () => {
1083
1098
  const checkpoint = CheckpointProposal.fromBuffer(payloadData);
1084
- const isValid = await this.validateCheckpointProposal(source, checkpoint);
1099
+ const validationResult = await this.validateCheckpointProposal(source, checkpoint);
1100
+ const isValid = validationResult.result === 'accept';
1085
1101
  const pool = this.mempools.attestationPool;
1086
1102
 
1087
1103
  const exists = isValid && (await pool.hasCheckpointProposal(checkpoint));
@@ -1095,9 +1111,9 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1095
1111
  [Attributes.P2P_ID]: source.toString(),
1096
1112
  });
1097
1113
 
1098
- if (!isValid) {
1114
+ if (validationResult.result === 'reject') {
1099
1115
  return { result: TopicValidatorResult.Reject };
1100
- } else if (exists) {
1116
+ } else if (validationResult.result === 'ignore' || exists) {
1101
1117
  return { result: TopicValidatorResult.Ignore, obj: checkpoint };
1102
1118
  } else if (!canAdd) {
1103
1119
  this.peerManager.penalizePeer(source, PeerErrorSeverity.MidToleranceError);
@@ -1202,7 +1218,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1202
1218
  * @returns True if the requested block transactions are valid, false otherwise.
1203
1219
  */
1204
1220
  @trackSpan('Libp2pService.validateRequestedBlockTxs', request => ({
1205
- [Attributes.BLOCK_HASH]: request.blockHash.toString(),
1221
+ [Attributes.BLOCK_ARCHIVE]: request.archiveRoot.toString(),
1206
1222
  }))
1207
1223
  private async validateRequestedBlockTxs(
1208
1224
  request: BlockTxsRequest,
@@ -1212,10 +1228,10 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1212
1228
  const requestedTxValidator = this.createRequestedTxValidator();
1213
1229
 
1214
1230
  try {
1215
- if (!response.blockHash.equals(request.blockHash)) {
1231
+ if (!response.archiveRoot.equals(request.archiveRoot)) {
1216
1232
  this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
1217
1233
  throw new ValidationError(
1218
- `Received block txs for unexpected block: expected ${request.blockHash.toString()}, got ${response.blockHash.toString()}`,
1234
+ `Received block txs for unexpected archive root: expected ${request.archiveRoot.toString()}, got ${response.archiveRoot.toString()}`,
1219
1235
  );
1220
1236
  }
1221
1237
 
@@ -1245,7 +1261,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1245
1261
  }
1246
1262
 
1247
1263
  // Given proposal (should have locally), ensure returned txs are valid subset and match request indices
1248
- const proposal = await this.mempools.attestationPool.getBlockProposal(request.blockHash.toString());
1264
+ const proposal = await this.mempools.attestationPool.getBlockProposal(request.archiveRoot.toString());
1249
1265
  if (proposal) {
1250
1266
  // Build intersected indices
1251
1267
  const intersectIdx = request.txIndices.getTrueIndices().filter(i => response.txIndices.isSet(i));
@@ -1265,7 +1281,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1265
1281
  } else {
1266
1282
  // No local proposal, cannot check the membership/order of the returned txs
1267
1283
  this.logger.warn(
1268
- `Block proposal not found for block hash ${request.blockHash.toString()}; cannot validate membership/order of returned txs`,
1284
+ `Block proposal not found for archive root ${request.archiveRoot.toString()}; cannot validate membership/order of returned txs`,
1269
1285
  );
1270
1286
  return false;
1271
1287
  }
@@ -1304,7 +1320,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1304
1320
  const requested = new Set(requestedTxHash.map(h => h.toString()));
1305
1321
  const requestedTxValidator = this.createRequestedTxValidator();
1306
1322
 
1307
- //TODO: (mralj) - this is somewhat naive implementation, if single tx is invlid we consider the whole response invalid.
1323
+ //TODO: (mralj) - this is somewhat naive implementation, if single tx is invalid we consider the whole response invalid.
1308
1324
  // I think we should still extract the valid txs and return them, so that we can still use the response.
1309
1325
  try {
1310
1326
  await Promise.all(responseTx.map(tx => this.validateRequestedTx(tx, peerId, requestedTxValidator, requested)));
@@ -1367,27 +1383,8 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1367
1383
  }
1368
1384
  }
1369
1385
 
1370
- private createRequestedTxValidator(): TxValidator {
1371
- return new AggregateTxValidator(
1372
- new DataTxValidator(),
1373
- new MetadataTxValidator({
1374
- l1ChainId: new Fr(this.config.l1ChainId),
1375
- rollupVersion: new Fr(this.config.rollupVersion),
1376
- protocolContractsHash,
1377
- vkTreeRoot: getVKTreeRoot(),
1378
- }),
1379
- new TxProofValidator(this.proofVerifier),
1380
- );
1381
- }
1382
-
1383
1386
  private async validateRequestedTx(tx: Tx, peerId: PeerId, txValidator: TxValidator, requested?: Set<`0x${string}`>) {
1384
1387
  const penalize = (severity: PeerErrorSeverity) => this.peerManager.penalizePeer(peerId, severity);
1385
-
1386
- if (!(await tx.validateTxHash())) {
1387
- penalize(PeerErrorSeverity.MidToleranceError);
1388
- throw new ValidationError(`Received tx with invalid hash ${tx.getTxHash().toString()}.`);
1389
- }
1390
-
1391
1388
  if (requested && !requested.has(tx.getTxHash().toString())) {
1392
1389
  penalize(PeerErrorSeverity.MidToleranceError);
1393
1390
  throw new ValidationError(`Received tx with hash ${tx.getTxHash().toString()} that was not requested.`);
@@ -1400,6 +1397,13 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1400
1397
  }
1401
1398
  }
1402
1399
 
1400
+ private createRequestedTxValidator(): TxValidator {
1401
+ return createTxReqRespValidator(this.proofVerifier, {
1402
+ l1ChainId: this.config.l1ChainId,
1403
+ rollupVersion: this.config.rollupVersion,
1404
+ });
1405
+ }
1406
+
1403
1407
  @trackSpan('Libp2pService.validatePropagatedTx', tx => ({
1404
1408
  [Attributes.TX_HASH]: tx.getTxHash().toString(),
1405
1409
  }))
@@ -1442,6 +1446,22 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1442
1446
  return gasFees;
1443
1447
  }
1444
1448
 
1449
+ /**
1450
+ * Get the BatchTxRequesterLibP2PService dependencies for creating BatchTxRequester instances
1451
+ */
1452
+ public getBatchTxRequesterService(): BatchTxRequesterLibP2PService {
1453
+ return {
1454
+ reqResp: this.reqresp,
1455
+ connectionSampler: this.reqresp.getConnectionSampler(),
1456
+ txValidatorConfig: {
1457
+ l1ChainId: this.config.l1ChainId,
1458
+ rollupVersion: this.config.rollupVersion,
1459
+ proofVerifier: this.proofVerifier,
1460
+ },
1461
+ peerScoring: this.peerManager,
1462
+ };
1463
+ }
1464
+
1445
1465
  public async validate(txs: Tx[]): Promise<void> {
1446
1466
  const currentBlockNumber = await this.archiver.getBlockNumber();
1447
1467
 
@@ -1492,6 +1512,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1492
1512
  this.proofVerifier,
1493
1513
  !this.config.disableTransactions,
1494
1514
  allowedInSetup,
1515
+ this.logger.getBindings(),
1495
1516
  );
1496
1517
  }
1497
1518
 
@@ -1545,15 +1566,18 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1545
1566
  return PeerErrorSeverity.HighToleranceError;
1546
1567
  }
1547
1568
 
1548
- const snapshotValidator = new DoubleSpendTxValidator({
1549
- nullifiersExist: async (nullifiers: Buffer[]) => {
1550
- const merkleTree = this.worldStateSynchronizer.getSnapshot(
1551
- BlockNumber(blockNumber - this.config.doubleSpendSeverePeerPenaltyWindow),
1552
- );
1553
- const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
1554
- return indices.map(index => index !== undefined);
1569
+ const snapshotValidator = new DoubleSpendTxValidator(
1570
+ {
1571
+ nullifiersExist: async (nullifiers: Buffer[]) => {
1572
+ const merkleTree = this.worldStateSynchronizer.getSnapshot(
1573
+ BlockNumber(blockNumber - this.config.doubleSpendSeverePeerPenaltyWindow),
1574
+ );
1575
+ const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
1576
+ return indices.map(index => index !== undefined);
1577
+ },
1555
1578
  },
1556
- });
1579
+ this.logger.getBindings(),
1580
+ );
1557
1581
 
1558
1582
  const validSnapshot = await snapshotValidator.validateTx(tx);
1559
1583
  if (validSnapshot.result !== 'valid') {
@@ -1574,15 +1598,18 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1574
1598
  [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
1575
1599
  [Attributes.P2P_ID]: await attestation.p2pMessageLoggingIdentifier().then(i => i.toString()),
1576
1600
  }))
1577
- public async validateCheckpointAttestation(peerId: PeerId, attestation: CheckpointAttestation): Promise<boolean> {
1578
- const severity = await this.checkpointAttestationValidator.validate(attestation);
1579
- if (severity) {
1601
+ public async validateCheckpointAttestation(
1602
+ peerId: PeerId,
1603
+ attestation: CheckpointAttestation,
1604
+ ): Promise<P2PValidationResult> {
1605
+ const result = await this.checkpointAttestationValidator.validate(attestation);
1606
+
1607
+ if (result.result === 'reject') {
1580
1608
  this.logger.debug(`Penalizing peer ${peerId} for checkpoint attestation validation failure`);
1581
- this.peerManager.penalizePeer(peerId, severity);
1582
- return false;
1609
+ this.peerManager.penalizePeer(peerId, result.severity);
1583
1610
  }
1584
1611
 
1585
- return true;
1612
+ return result;
1586
1613
  }
1587
1614
 
1588
1615
  /**
@@ -1594,15 +1621,15 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1594
1621
  @trackSpan('Libp2pService.validateBlockProposal', (_peerId, block) => ({
1595
1622
  [Attributes.SLOT_NUMBER]: block.slotNumber.toString(),
1596
1623
  }))
1597
- public async validateBlockProposal(peerId: PeerId, block: BlockProposal): Promise<boolean> {
1598
- const severity = await this.blockProposalValidator.validate(block);
1599
- if (severity) {
1624
+ public async validateBlockProposal(peerId: PeerId, block: BlockProposal): Promise<P2PValidationResult> {
1625
+ const result = await this.blockProposalValidator.validate(block);
1626
+
1627
+ if (result.result === 'reject') {
1600
1628
  this.logger.debug(`Penalizing peer ${peerId} for block proposal validation failure`);
1601
- this.peerManager.penalizePeer(peerId, severity);
1602
- return false;
1629
+ this.peerManager.penalizePeer(peerId, result.severity);
1603
1630
  }
1604
1631
 
1605
- return true;
1632
+ return result;
1606
1633
  }
1607
1634
 
1608
1635
  /**
@@ -1614,15 +1641,18 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
1614
1641
  @trackSpan('Libp2pService.validateCheckpointProposal', (_peerId, checkpoint) => ({
1615
1642
  [Attributes.SLOT_NUMBER]: checkpoint.slotNumber.toString(),
1616
1643
  }))
1617
- public async validateCheckpointProposal(peerId: PeerId, checkpoint: CheckpointProposal): Promise<boolean> {
1618
- const severity = await this.checkpointProposalValidator.validate(checkpoint);
1619
- if (severity) {
1644
+ public async validateCheckpointProposal(
1645
+ peerId: PeerId,
1646
+ checkpoint: CheckpointProposal,
1647
+ ): Promise<P2PValidationResult> {
1648
+ const result = await this.checkpointProposalValidator.validate(checkpoint);
1649
+
1650
+ if (result.result === 'reject') {
1620
1651
  this.logger.debug(`Penalizing peer ${peerId} for checkpoint proposal validation failure`);
1621
- this.peerManager.penalizePeer(peerId, severity);
1622
- return false;
1652
+ this.peerManager.penalizePeer(peerId, result.severity);
1623
1653
  }
1624
1654
 
1625
- return true;
1655
+ return result;
1626
1656
  }
1627
1657
 
1628
1658
  public getPeerScore(peerId: PeerId): number {
@@ -6,12 +6,13 @@ import {
6
6
  type TelemetryClient,
7
7
  type Tracer,
8
8
  type UpDownCounter,
9
+ createUpDownCounterWithDefault,
9
10
  getTelemetryClient,
10
11
  } from '@aztec/telemetry-client';
11
12
 
12
13
  import type { PeerId } from '@libp2p/interface';
13
14
 
14
- import { type GoodByeReason, prettyGoodbyeReason } from '../reqresp/protocols/index.js';
15
+ import { GoodByeReason, prettyGoodbyeReason } from '../reqresp/protocols/index.js';
15
16
 
16
17
  export class PeerManagerMetrics {
17
18
  private sentGoodbyes: UpDownCounter;
@@ -31,10 +32,26 @@ export class PeerManagerMetrics {
31
32
  this.tracer = telemetryClient.getTracer(name);
32
33
 
33
34
  const meter = telemetryClient.getMeter(name);
34
- this.sentGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_SENT);
35
- this.receivedGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_RECEIVED);
35
+ const goodbyeReasonAttrs = {
36
+ [Attributes.P2P_GOODBYE_REASON]: [
37
+ prettyGoodbyeReason(GoodByeReason.SHUTDOWN),
38
+ prettyGoodbyeReason(GoodByeReason.MAX_PEERS),
39
+ prettyGoodbyeReason(GoodByeReason.LOW_SCORE),
40
+ prettyGoodbyeReason(GoodByeReason.BANNED),
41
+ prettyGoodbyeReason(GoodByeReason.WRONG_NETWORK),
42
+ prettyGoodbyeReason(GoodByeReason.UNKNOWN),
43
+ ],
44
+ };
45
+ this.sentGoodbyes = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_GOODBYES_SENT, goodbyeReasonAttrs);
46
+ this.receivedGoodbyes = createUpDownCounterWithDefault(
47
+ meter,
48
+ Metrics.PEER_MANAGER_GOODBYES_RECEIVED,
49
+ goodbyeReasonAttrs,
50
+ );
36
51
  this.peerCount = meter.createGauge(Metrics.PEER_MANAGER_PEER_COUNT);
37
- this.lowScoreDisconnects = meter.createUpDownCounter(Metrics.PEER_MANAGER_LOW_SCORE_DISCONNECTS);
52
+ this.lowScoreDisconnects = createUpDownCounterWithDefault(meter, Metrics.PEER_MANAGER_LOW_SCORE_DISCONNECTS, {
53
+ [Attributes.P2P_PEER_SCORE_STATE]: ['Banned', 'Disconnect'],
54
+ });
38
55
  this.peerConnectionDuration = meter.createHistogram(Metrics.PEER_MANAGER_PEER_CONNECTION_DURATION);
39
56
  }
40
57
 
@@ -6,6 +6,7 @@ import {
6
6
  Metrics,
7
7
  type TelemetryClient,
8
8
  type UpDownCounter,
9
+ createUpDownCounterWithDefault,
9
10
  getTelemetryClient,
10
11
  } from '@aztec/telemetry-client';
11
12
 
@@ -52,7 +53,9 @@ export class PeerScoring {
52
53
 
53
54
  const meter = telemetry.getMeter('PeerScoring');
54
55
 
55
- this.peerStateCounter = meter.createUpDownCounter(Metrics.P2P_PEER_STATE_COUNT);
56
+ this.peerStateCounter = createUpDownCounterWithDefault(meter, Metrics.P2P_PEER_STATE_COUNT, {
57
+ [Attributes.P2P_PEER_SCORE_STATE]: ['Healthy', 'Disconnect', 'Banned'],
58
+ });
56
59
  }
57
60
 
58
61
  public penalizePeer(peerId: PeerId, penalty: PeerErrorSeverity) {