@aztec/p2p 0.0.1-commit.2ed92850 → 0.0.1-commit.3d8f95d

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 (408) 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 +5 -5
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +47 -13
  7. package/dest/client/interface.d.ts +33 -15
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +35 -36
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +115 -139
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  18. package/dest/config.d.ts +24 -3
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +16 -2
  21. package/dest/index.d.ts +2 -1
  22. package/dest/index.d.ts.map +1 -1
  23. package/dest/index.js +1 -0
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +102 -88
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.js +436 -3
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  30. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  31. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/index.js +1 -2
  33. package/dest/mem_pools/index.d.ts +3 -2
  34. package/dest/mem_pools/index.d.ts.map +1 -1
  35. package/dest/mem_pools/index.js +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts +1 -1
  37. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  38. package/dest/mem_pools/instrumentation.js +2 -2
  39. package/dest/mem_pools/interface.d.ts +5 -5
  40. package/dest/mem_pools/interface.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  42. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  43. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  44. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  45. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  46. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  47. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +87 -0
  48. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  49. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +180 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +90 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +63 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +91 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +70 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  80. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  81. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  82. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  83. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +197 -0
  84. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  85. package/dest/mem_pools/tx_pool_v2/interfaces.js +6 -0
  86. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +93 -0
  87. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +127 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +99 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +332 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +55 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +156 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +69 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +751 -0
  101. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  102. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  103. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +7 -2
  104. package/dest/msg_validators/proposal_validator/proposal_validator.js +5 -5
  105. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  106. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  107. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  108. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  109. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  110. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  111. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  112. package/dest/msg_validators/tx_validator/block_header_validator.js +5 -4
  113. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  114. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  115. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  116. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  117. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  118. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  119. package/dest/msg_validators/tx_validator/factory.d.ts +8 -3
  120. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  121. package/dest/msg_validators/tx_validator/factory.js +21 -11
  122. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  123. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/gas_validator.js +3 -2
  125. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  126. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  128. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  129. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  130. package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
  131. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  132. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  133. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  134. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  135. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  136. package/dest/msg_validators/tx_validator/timestamp_validator.js +4 -4
  137. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  138. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  139. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  140. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  141. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  143. package/dest/services/data_store.d.ts +1 -1
  144. package/dest/services/data_store.d.ts.map +1 -1
  145. package/dest/services/data_store.js +10 -6
  146. package/dest/services/discv5/discV5_service.js +1 -1
  147. package/dest/services/dummy_service.d.ts +22 -2
  148. package/dest/services/dummy_service.d.ts.map +1 -1
  149. package/dest/services/dummy_service.js +45 -0
  150. package/dest/services/encoding.d.ts +2 -2
  151. package/dest/services/encoding.d.ts.map +1 -1
  152. package/dest/services/encoding.js +2 -2
  153. package/dest/services/gossipsub/index.d.ts +3 -0
  154. package/dest/services/gossipsub/index.d.ts.map +1 -0
  155. package/dest/services/gossipsub/index.js +2 -0
  156. package/dest/services/gossipsub/scoring.d.ts +21 -3
  157. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  158. package/dest/services/gossipsub/scoring.js +24 -7
  159. package/dest/services/gossipsub/topic_score_params.d.ts +161 -0
  160. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  161. package/dest/services/gossipsub/topic_score_params.js +324 -0
  162. package/dest/services/index.d.ts +2 -1
  163. package/dest/services/index.d.ts.map +1 -1
  164. package/dest/services/index.js +1 -0
  165. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  166. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  167. package/dest/services/libp2p/instrumentation.js +14 -3
  168. package/dest/services/libp2p/libp2p_service.d.ts +90 -35
  169. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  170. package/dest/services/libp2p/libp2p_service.js +403 -299
  171. package/dest/services/peer-manager/metrics.d.ts +2 -2
  172. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  173. package/dest/services/peer-manager/metrics.js +20 -5
  174. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  175. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  176. package/dest/services/peer-manager/peer_scoring.js +33 -4
  177. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  178. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  179. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  180. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  181. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  182. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  183. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  184. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  185. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  186. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  187. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  188. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  189. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  190. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  191. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  192. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  193. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  194. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  195. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  196. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  197. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  198. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  199. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  200. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  201. package/dest/services/reqresp/interface.d.ts +12 -1
  202. package/dest/services/reqresp/interface.d.ts.map +1 -1
  203. package/dest/services/reqresp/interface.js +15 -1
  204. package/dest/services/reqresp/metrics.d.ts +6 -5
  205. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  206. package/dest/services/reqresp/metrics.js +17 -5
  207. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  208. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  209. package/dest/services/reqresp/protocols/block_txs/bitvector.js +5 -0
  210. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  211. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  212. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  213. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  214. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  215. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  216. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  217. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  218. package/dest/services/reqresp/protocols/tx.js +20 -0
  219. package/dest/services/reqresp/reqresp.d.ts +6 -1
  220. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  221. package/dest/services/reqresp/reqresp.js +69 -26
  222. package/dest/services/service.d.ts +38 -1
  223. package/dest/services/service.d.ts.map +1 -1
  224. package/dest/services/tx_collection/config.d.ts +10 -1
  225. package/dest/services/tx_collection/config.d.ts.map +1 -1
  226. package/dest/services/tx_collection/config.js +25 -1
  227. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  228. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  229. package/dest/services/tx_collection/fast_tx_collection.js +34 -13
  230. package/dest/services/tx_collection/file_store_tx_collection.d.ts +44 -0
  231. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  232. package/dest/services/tx_collection/file_store_tx_collection.js +118 -0
  233. package/dest/services/tx_collection/file_store_tx_source.d.ts +27 -0
  234. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  235. package/dest/services/tx_collection/file_store_tx_source.js +57 -0
  236. package/dest/services/tx_collection/index.d.ts +3 -1
  237. package/dest/services/tx_collection/index.d.ts.map +1 -1
  238. package/dest/services/tx_collection/index.js +2 -0
  239. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  240. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  241. package/dest/services/tx_collection/instrumentation.js +9 -2
  242. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  243. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  244. package/dest/services/tx_collection/proposal_tx_collector.js +49 -0
  245. package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -1
  246. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  247. package/dest/services/tx_collection/slow_tx_collection.js +48 -19
  248. package/dest/services/tx_collection/tx_collection.d.ts +19 -9
  249. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  250. package/dest/services/tx_collection/tx_collection.js +62 -6
  251. package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
  252. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  253. package/dest/services/tx_collection/tx_collection_sink.js +13 -7
  254. package/dest/services/tx_file_store/config.d.ts +16 -0
  255. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  256. package/dest/services/tx_file_store/config.js +22 -0
  257. package/dest/services/tx_file_store/index.d.ts +4 -0
  258. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  259. package/dest/services/tx_file_store/index.js +3 -0
  260. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  261. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  262. package/dest/services/tx_file_store/instrumentation.js +29 -0
  263. package/dest/services/tx_file_store/tx_file_store.d.ts +47 -0
  264. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  265. package/dest/services/tx_file_store/tx_file_store.js +149 -0
  266. package/dest/services/tx_provider.d.ts +3 -3
  267. package/dest/services/tx_provider.d.ts.map +1 -1
  268. package/dest/services/tx_provider.js +5 -4
  269. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  270. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  271. package/dest/services/tx_provider_instrumentation.js +5 -5
  272. package/dest/test-helpers/index.d.ts +3 -1
  273. package/dest/test-helpers/index.d.ts.map +1 -1
  274. package/dest/test-helpers/index.js +2 -0
  275. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  276. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  277. package/dest/test-helpers/mock-pubsub.d.ts +27 -1
  278. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  279. package/dest/test-helpers/mock-pubsub.js +97 -2
  280. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  281. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  282. package/dest/test-helpers/reqresp-nodes.js +2 -1
  283. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  284. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  285. package/dest/test-helpers/test_tx_provider.js +41 -0
  286. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  287. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  288. package/dest/test-helpers/testbench-utils.js +360 -0
  289. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  290. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  291. package/dest/testbench/p2p_client_testbench_worker.js +213 -132
  292. package/dest/testbench/worker_client_manager.d.ts +51 -6
  293. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  294. package/dest/testbench/worker_client_manager.js +226 -44
  295. package/package.json +14 -14
  296. package/src/bootstrap/bootstrap.ts +7 -4
  297. package/src/client/factory.ts +78 -22
  298. package/src/client/interface.ts +39 -14
  299. package/src/client/p2p_client.ts +151 -162
  300. package/src/client/test/tx_proposal_collector/README.md +227 -0
  301. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  302. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  303. package/src/config.ts +38 -2
  304. package/src/index.ts +1 -0
  305. package/src/mem_pools/attestation_pool/attestation_pool.ts +488 -91
  306. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  307. package/src/mem_pools/attestation_pool/index.ts +9 -2
  308. package/src/mem_pools/index.ts +4 -1
  309. package/src/mem_pools/instrumentation.ts +2 -1
  310. package/src/mem_pools/interface.ts +4 -4
  311. package/src/mem_pools/tx_pool_v2/README.md +259 -0
  312. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  313. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  314. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +234 -0
  315. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  316. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +118 -0
  317. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  318. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  319. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  320. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  321. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  322. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +86 -0
  323. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  324. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  325. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  326. package/src/mem_pools/tx_pool_v2/interfaces.ts +227 -0
  327. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +207 -0
  328. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  329. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +417 -0
  330. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +212 -0
  331. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +895 -0
  332. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +10 -4
  333. package/src/msg_validators/proposal_validator/proposal_validator.ts +5 -5
  334. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  335. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  336. package/src/msg_validators/tx_validator/block_header_validator.ts +22 -11
  337. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  338. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  339. package/src/msg_validators/tx_validator/factory.ts +64 -23
  340. package/src/msg_validators/tx_validator/gas_validator.ts +9 -3
  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 +6 -2
  344. package/src/msg_validators/tx_validator/timestamp_validator.ts +25 -17
  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 +57 -0
  350. package/src/services/encoding.ts +2 -2
  351. package/src/services/gossipsub/README.md +626 -0
  352. package/src/services/gossipsub/index.ts +2 -0
  353. package/src/services/gossipsub/scoring.ts +29 -5
  354. package/src/services/gossipsub/topic_score_params.ts +451 -0
  355. package/src/services/index.ts +1 -0
  356. package/src/services/libp2p/instrumentation.ts +15 -2
  357. package/src/services/libp2p/libp2p_service.ts +428 -319
  358. package/src/services/peer-manager/metrics.ts +21 -4
  359. package/src/services/peer-manager/peer_scoring.ts +29 -1
  360. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  361. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  362. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  363. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  364. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  365. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  366. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  367. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  368. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  369. package/src/services/reqresp/interface.ts +29 -1
  370. package/src/services/reqresp/metrics.ts +34 -9
  371. package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
  372. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  373. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  374. package/src/services/reqresp/protocols/tx.ts +22 -0
  375. package/src/services/reqresp/reqresp.ts +79 -22
  376. package/src/services/service.ts +44 -0
  377. package/src/services/tx_collection/config.ts +41 -1
  378. package/src/services/tx_collection/fast_tx_collection.ts +44 -19
  379. package/src/services/tx_collection/file_store_tx_collection.ts +152 -0
  380. package/src/services/tx_collection/file_store_tx_source.ts +70 -0
  381. package/src/services/tx_collection/index.ts +6 -0
  382. package/src/services/tx_collection/instrumentation.ts +11 -2
  383. package/src/services/tx_collection/proposal_tx_collector.ts +112 -0
  384. package/src/services/tx_collection/slow_tx_collection.ts +55 -26
  385. package/src/services/tx_collection/tx_collection.ts +82 -16
  386. package/src/services/tx_collection/tx_collection_sink.ts +17 -7
  387. package/src/services/tx_file_store/config.ts +37 -0
  388. package/src/services/tx_file_store/index.ts +3 -0
  389. package/src/services/tx_file_store/instrumentation.ts +36 -0
  390. package/src/services/tx_file_store/tx_file_store.ts +173 -0
  391. package/src/services/tx_provider.ts +8 -7
  392. package/src/services/tx_provider_instrumentation.ts +11 -5
  393. package/src/test-helpers/index.ts +2 -0
  394. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  395. package/src/test-helpers/mock-pubsub.ts +133 -3
  396. package/src/test-helpers/reqresp-nodes.ts +2 -1
  397. package/src/test-helpers/test_tx_provider.ts +64 -0
  398. package/src/test-helpers/testbench-utils.ts +422 -0
  399. package/src/testbench/p2p_client_testbench_worker.ts +322 -123
  400. package/src/testbench/worker_client_manager.ts +304 -47
  401. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  402. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  403. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  404. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  405. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  406. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  407. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  408. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -1,8 +1,8 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
2
  import { type CheckpointAttestation, PeerErrorSeverity, type ValidationResult } from '@aztec/stdlib/p2p';
3
- import { Attributes, Metrics, type TelemetryClient } from '@aztec/telemetry-client';
3
+ import { Attributes, Metrics, type TelemetryClient, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
4
4
 
5
- import type { AttestationPool } from '../../mem_pools/attestation_pool/attestation_pool.js';
5
+ import type { AttestationPoolApi } from '../../mem_pools/attestation_pool/attestation_pool.js';
6
6
  import { CheckpointAttestationValidator } from './attestation_validator.js';
7
7
 
8
8
  /**
@@ -18,14 +18,20 @@ export class FishermanAttestationValidator extends CheckpointAttestationValidato
18
18
 
19
19
  constructor(
20
20
  epochCache: EpochCacheInterface,
21
- private attestationPool: AttestationPool,
21
+ private attestationPool: AttestationPoolApi,
22
22
  telemetryClient: TelemetryClient,
23
23
  ) {
24
24
  super(epochCache);
25
25
  this.logger = this.logger.createChild('[FISHERMAN]');
26
26
 
27
27
  const meter = telemetryClient.getMeter('FishermanAttestationValidator');
28
- this.invalidAttestationCounter = meter.createUpDownCounter(Metrics.VALIDATOR_INVALID_ATTESTATION_RECEIVED_COUNT);
28
+ this.invalidAttestationCounter = createUpDownCounterWithDefault(
29
+ meter,
30
+ Metrics.VALIDATOR_INVALID_ATTESTATION_RECEIVED_COUNT,
31
+ {
32
+ [Attributes.ERROR_TYPE]: ['base_validation_failed', 'payload_mismatch'],
33
+ },
34
+ );
29
35
  }
30
36
 
31
37
  override async validate(message: CheckpointAttestation): Promise<ValidationResult> {
@@ -24,24 +24,24 @@ export abstract class ProposalValidator<TProposal extends BlockProposal | Checkp
24
24
  if (slotNumber !== currentSlot && slotNumber !== nextSlot) {
25
25
  // Check if message is for previous slot and within clock tolerance
26
26
  if (!isWithinClockTolerance(slotNumber, currentSlot, this.epochCache)) {
27
- this.logger.debug(`Penalizing peer for invalid slot number ${slotNumber}`, { currentSlot, nextSlot });
27
+ this.logger.warn(`Penalizing peer for invalid slot number ${slotNumber}`, { currentSlot, nextSlot });
28
28
  return { result: 'reject', severity: PeerErrorSeverity.HighToleranceError };
29
29
  }
30
- this.logger.debug(`Ignoring proposal for previous slot ${slotNumber} within clock tolerance`);
30
+ this.logger.verbose(`Ignoring proposal for previous slot ${slotNumber} within clock tolerance`);
31
31
  return { result: 'ignore' };
32
32
  }
33
33
 
34
34
  // Signature validity
35
35
  const proposer = proposal.getSender();
36
36
  if (!proposer) {
37
- this.logger.debug(`Penalizing peer for proposal with invalid signature`);
37
+ this.logger.warn(`Penalizing peer for proposal with invalid signature`);
38
38
  return { result: 'reject', severity: PeerErrorSeverity.MidToleranceError };
39
39
  }
40
40
 
41
41
  // Transactions permitted check
42
42
  const embeddedTxCount = proposal.txs?.length ?? 0;
43
43
  if (!this.txsPermitted && (proposal.txHashes.length > 0 || embeddedTxCount > 0)) {
44
- this.logger.debug(
44
+ this.logger.warn(
45
45
  `Penalizing peer for proposal with ${proposal.txHashes.length} transaction(s) when transactions are not permitted`,
46
46
  );
47
47
  return { result: 'reject', severity: PeerErrorSeverity.MidToleranceError };
@@ -65,7 +65,7 @@ export abstract class ProposalValidator<TProposal extends BlockProposal | Checkp
65
65
  // Proposer check
66
66
  const expectedProposer = await this.epochCache.getProposerAttesterAddressInSlot(slotNumber);
67
67
  if (expectedProposer !== undefined && !proposer.equals(expectedProposer)) {
68
- this.logger.debug(`Penalizing peer for invalid proposer for current slot ${slotNumber}`, {
68
+ this.logger.warn(`Penalizing peer for invalid proposer for current slot ${slotNumber}`, {
69
69
  expectedProposer,
70
70
  proposer: proposer.toString(),
71
71
  });
@@ -1,6 +1,6 @@
1
- import type { ProcessedTx, Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
1
+ import type { TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
2
2
 
3
- export class AggregateTxValidator<T extends Tx | ProcessedTx> implements TxValidator<T> {
3
+ export class AggregateTxValidator<T> implements TxValidator<T> {
4
4
  #validators: TxValidator<T>[];
5
5
  constructor(...validators: TxValidator<T>[]) {
6
6
  if (validators.length === 0) {
@@ -1,5 +1,5 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
1
  import type { ArchiveSource } from '@aztec/p2p';
2
+ import type { BlockHash } from '@aztec/stdlib/block';
3
3
  import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
4
4
  import { MerkleTreeId } from '@aztec/stdlib/trees';
5
5
 
@@ -14,8 +14,8 @@ export class ArchiveCache implements ArchiveSource {
14
14
  this.archives = new Map<string, bigint>();
15
15
  }
16
16
 
17
- public async getArchiveIndices(archives: Fr[]): Promise<(bigint | undefined)[]> {
18
- const toCheckDb = archives.filter(n => !this.archives.has(n.toString()));
17
+ public async getArchiveIndices(archives: BlockHash[]): Promise<(bigint | undefined)[]> {
18
+ const toCheckDb = archives.filter(n => !this.archives.has(n.toString())).map(n => n.toFr());
19
19
  const dbHits = await this.db.findLeafIndices(MerkleTreeId.ARCHIVE, toCheckDb);
20
20
  dbHits.forEach((x, index) => {
21
21
  if (x !== undefined) {
@@ -1,25 +1,36 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import { type AnyTx, TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
+ import type { BlockHash } from '@aztec/stdlib/block';
3
+ import { TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export interface ArchiveSource {
6
- getArchiveIndices: (archives: Fr[]) => Promise<(bigint | undefined)[]>;
6
+ getArchiveIndices: (archives: BlockHash[]) => Promise<(bigint | undefined)[]>;
7
7
  }
8
8
 
9
- export class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
10
- #log = createLogger('p2p:tx_validator:tx_block_header');
9
+ /** Structural interface for block header validation. */
10
+ export interface HasBlockHeaderData {
11
+ txHash: { toString(): string };
12
+ data: {
13
+ constants: {
14
+ anchorBlockHeader: {
15
+ hash(): Promise<BlockHash>;
16
+ };
17
+ };
18
+ };
19
+ }
20
+
21
+ export class BlockHeaderTxValidator<T extends HasBlockHeaderData> implements TxValidator<T> {
22
+ #log: Logger;
11
23
  #archiveSource: ArchiveSource;
12
24
 
13
- constructor(archiveSource: ArchiveSource) {
25
+ constructor(archiveSource: ArchiveSource, bindings?: LoggerBindings) {
14
26
  this.#archiveSource = archiveSource;
27
+ this.#log = createLogger('p2p:tx_validator:tx_block_header', bindings);
15
28
  }
16
29
 
17
30
  async validateTx(tx: T): Promise<TxValidationResult> {
18
- const [index] = await this.#archiveSource.getArchiveIndices([
19
- (await tx.data.constants.anchorBlockHeader.hash()).toField(),
20
- ]);
31
+ const [index] = await this.#archiveSource.getArchiveIndices([await tx.data.constants.anchorBlockHeader.hash()]);
21
32
  if (index === undefined) {
22
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for referencing an unknown block header`);
33
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for referencing an unknown block header`);
23
34
  return { result: 'invalid', reason: [TX_ERROR_BLOCK_HEADER] };
24
35
  }
25
36
  return { result: 'valid' };
@@ -1,5 +1,5 @@
1
1
  import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS } from '@aztec/constants';
2
- import { createLogger } from '@aztec/foundation/log';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import { computeCalldataHash } from '@aztec/stdlib/hash';
4
4
  import {
5
5
  TX_ERROR_CALLDATA_COUNT_MISMATCH,
@@ -16,7 +16,11 @@ import {
16
16
  } from '@aztec/stdlib/tx';
17
17
 
18
18
  export class DataTxValidator implements TxValidator<Tx> {
19
- #log = createLogger('p2p:tx_validator:tx_data');
19
+ #log: Logger;
20
+
21
+ constructor(bindings?: LoggerBindings) {
22
+ this.#log = createLogger('p2p:tx_validator:tx_data', bindings);
23
+ }
20
24
 
21
25
  async validateTx(tx: Tx): Promise<TxValidationResult> {
22
26
  const reason =
@@ -1,9 +1,8 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
3
  import {
3
- type AnyTx,
4
4
  TX_ERROR_DUPLICATE_NULLIFIER_IN_TX,
5
5
  TX_ERROR_EXISTING_NULLIFIER,
6
- Tx,
7
6
  type TxValidationResult,
8
7
  type TxValidator,
9
8
  } from '@aztec/stdlib/tx';
@@ -12,26 +11,33 @@ export interface NullifierSource {
12
11
  nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
13
12
  }
14
13
 
15
- export class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
16
- #log = createLogger('p2p:tx_validator:tx_double_spend');
14
+ /** Structural interface for double-spend validation. */
15
+ export interface HasNullifierData {
16
+ txHash: { toString(): string };
17
+ data: { getNonEmptyNullifiers(): Fr[] };
18
+ }
19
+
20
+ export class DoubleSpendTxValidator<T extends HasNullifierData> implements TxValidator<T> {
21
+ #log: Logger;
17
22
  #nullifierSource: NullifierSource;
18
23
 
19
- constructor(nullifierSource: NullifierSource) {
24
+ constructor(nullifierSource: NullifierSource, bindings?: LoggerBindings) {
20
25
  this.#nullifierSource = nullifierSource;
26
+ this.#log = createLogger('p2p:tx_validator:tx_double_spend', bindings);
21
27
  }
22
28
 
23
29
  async validateTx(tx: T): Promise<TxValidationResult> {
24
- const nullifiers = tx instanceof Tx ? tx.data.getNonEmptyNullifiers() : tx.txEffect.nullifiers;
30
+ const nullifiers = tx.data.getNonEmptyNullifiers();
25
31
 
26
32
  // Ditch this tx if it has repeated nullifiers
27
33
  const uniqueNullifiers = new Set(nullifiers.map(n => n.toBigInt()));
28
34
  if (uniqueNullifiers.size !== nullifiers.length) {
29
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for emitting duplicate nullifiers`);
35
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for emitting duplicate nullifiers`);
30
36
  return { result: 'invalid', reason: [TX_ERROR_DUPLICATE_NULLIFIER_IN_TX] };
31
37
  }
32
38
 
33
39
  if ((await this.#nullifierSource.nullifiersExist(nullifiers.map(n => n.toBuffer()))).some(Boolean)) {
34
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for repeating a nullifier`);
40
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for repeating a nullifier`);
35
41
  return { result: 'invalid', reason: [TX_ERROR_EXISTING_NULLIFIER] };
36
42
  }
37
43
 
@@ -1,7 +1,8 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { LoggerBindings } from '@aztec/foundation/log';
3
4
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
4
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
5
+ import { ProtocolContractAddress, protocolContractsHash } from '@aztec/protocol-contracts';
5
6
  import type { ContractDataSource } from '@aztec/stdlib/contract';
6
7
  import type { GasFees } from '@aztec/stdlib/gas';
7
8
  import type {
@@ -11,9 +12,10 @@ import type {
11
12
  } from '@aztec/stdlib/interfaces/server';
12
13
  import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
13
14
  import { DatabasePublicStateSource, MerkleTreeId } from '@aztec/stdlib/trees';
14
- import type { Tx, TxValidationResult } from '@aztec/stdlib/tx';
15
+ import type { Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
15
16
  import type { UInt64 } from '@aztec/stdlib/types';
16
17
 
18
+ import { AggregateTxValidator } from './aggregate_tx_validator.js';
17
19
  import { ArchiveCache } from './archive_cache.js';
18
20
  import { BlockHeaderTxValidator } from './block_header_validator.js';
19
21
  import { DataTxValidator } from './data_validator.js';
@@ -21,6 +23,7 @@ import { DoubleSpendTxValidator } from './double_spend_validator.js';
21
23
  import { GasTxValidator } from './gas_validator.js';
22
24
  import { MetadataTxValidator } from './metadata_validator.js';
23
25
  import { PhasesTxValidator } from './phases_validator.js';
26
+ import { SizeTxValidator } from './size_validator.js';
24
27
  import { TimestampTxValidator } from './timestamp_validator.js';
25
28
  import { TxPermittedValidator } from './tx_permitted_validator.js';
26
29
  import { TxProofValidator } from './tx_proof_validator.js';
@@ -44,43 +47,53 @@ export function createTxMessageValidators(
44
47
  proofVerifier: ClientProtocolCircuitVerifier,
45
48
  txsPermitted: boolean,
46
49
  allowedInSetup: AllowedElement[] = [],
50
+ bindings?: LoggerBindings,
47
51
  ): Record<string, MessageValidator>[] {
48
52
  const merkleTree = worldStateSynchronizer.getCommitted();
49
53
 
50
54
  return [
51
55
  {
52
56
  txsPermittedValidator: {
53
- validator: new TxPermittedValidator(txsPermitted),
57
+ validator: new TxPermittedValidator(txsPermitted, bindings),
54
58
  severity: PeerErrorSeverity.MidToleranceError,
55
59
  },
56
60
  dataValidator: {
57
- validator: new DataTxValidator(),
61
+ validator: new DataTxValidator(bindings),
58
62
  severity: PeerErrorSeverity.HighToleranceError,
59
63
  },
60
64
  metadataValidator: {
61
- validator: new MetadataTxValidator({
62
- l1ChainId: new Fr(l1ChainId),
63
- rollupVersion: new Fr(rollupVersion),
64
- protocolContractsHash,
65
- vkTreeRoot: getVKTreeRoot(),
66
- }),
65
+ validator: new MetadataTxValidator(
66
+ {
67
+ l1ChainId: new Fr(l1ChainId),
68
+ rollupVersion: new Fr(rollupVersion),
69
+ protocolContractsHash,
70
+ vkTreeRoot: getVKTreeRoot(),
71
+ },
72
+ bindings,
73
+ ),
67
74
  severity: PeerErrorSeverity.HighToleranceError,
68
75
  },
69
76
  timestampValidator: {
70
- validator: new TimestampTxValidator<Tx>({
71
- timestamp,
72
- blockNumber,
73
- }),
77
+ validator: new TimestampTxValidator<Tx>(
78
+ {
79
+ timestamp,
80
+ blockNumber,
81
+ },
82
+ bindings,
83
+ ),
74
84
  severity: PeerErrorSeverity.MidToleranceError,
75
85
  },
76
86
  doubleSpendValidator: {
77
- validator: new DoubleSpendTxValidator({
78
- nullifiersExist: async (nullifiers: Buffer[]) => {
79
- const merkleTree = worldStateSynchronizer.getCommitted();
80
- const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
81
- return indices.map(index => index !== undefined);
87
+ validator: new DoubleSpendTxValidator(
88
+ {
89
+ nullifiersExist: async (nullifiers: Buffer[]) => {
90
+ const merkleTree = worldStateSynchronizer.getCommitted();
91
+ const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
92
+ return indices.map(index => index !== undefined);
93
+ },
82
94
  },
83
- }),
95
+ bindings,
96
+ ),
84
97
  severity: PeerErrorSeverity.HighToleranceError,
85
98
  },
86
99
  gasValidator: {
@@ -88,23 +101,51 @@ export function createTxMessageValidators(
88
101
  new DatabasePublicStateSource(merkleTree),
89
102
  ProtocolContractAddress.FeeJuice,
90
103
  gasFees,
104
+ bindings,
91
105
  ),
92
106
  severity: PeerErrorSeverity.HighToleranceError,
93
107
  },
94
108
  phasesValidator: {
95
- validator: new PhasesTxValidator(contractDataSource, allowedInSetup, timestamp),
109
+ validator: new PhasesTxValidator(contractDataSource, allowedInSetup, timestamp, bindings),
96
110
  severity: PeerErrorSeverity.MidToleranceError,
97
111
  },
98
112
  blockHeaderValidator: {
99
- validator: new BlockHeaderTxValidator(new ArchiveCache(merkleTree)),
113
+ validator: new BlockHeaderTxValidator(new ArchiveCache(merkleTree), bindings),
100
114
  severity: PeerErrorSeverity.HighToleranceError,
101
115
  },
102
116
  },
103
117
  {
104
118
  proofValidator: {
105
- validator: new TxProofValidator(proofVerifier),
119
+ validator: new TxProofValidator(proofVerifier, bindings),
106
120
  severity: PeerErrorSeverity.MidToleranceError,
107
121
  },
108
122
  },
109
123
  ];
110
124
  }
125
+
126
+ export function createTxReqRespValidator(
127
+ verifier: ClientProtocolCircuitVerifier,
128
+ {
129
+ l1ChainId,
130
+ rollupVersion,
131
+ }: {
132
+ l1ChainId: number;
133
+ rollupVersion: number;
134
+ },
135
+ bindings?: LoggerBindings,
136
+ ): TxValidator {
137
+ return new AggregateTxValidator(
138
+ new MetadataTxValidator(
139
+ {
140
+ l1ChainId: new Fr(l1ChainId),
141
+ rollupVersion: new Fr(rollupVersion),
142
+ protocolContractsHash,
143
+ vkTreeRoot: getVKTreeRoot(),
144
+ },
145
+ bindings,
146
+ ),
147
+ new SizeTxValidator(bindings),
148
+ new DataTxValidator(bindings),
149
+ new TxProofValidator(verifier, bindings),
150
+ );
151
+ }
@@ -1,5 +1,5 @@
1
1
  import { AVM_MAX_PROCESSABLE_L2_GAS, FIXED_DA_GAS, FIXED_L2_GAS } from '@aztec/constants';
2
- import { createLogger } from '@aztec/foundation/log';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import { computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
4
4
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
5
  import { Gas, GasFees } from '@aztec/stdlib/gas';
@@ -17,12 +17,18 @@ import {
17
17
  import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
18
18
 
19
19
  export class GasTxValidator implements TxValidator<Tx> {
20
- #log = createLogger('sequencer:tx_validator:tx_gas');
20
+ #log: Logger;
21
21
  #publicDataSource: PublicStateSource;
22
22
  #feeJuiceAddress: AztecAddress;
23
23
  #gasFees: GasFees;
24
24
 
25
- constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees) {
25
+ constructor(
26
+ publicDataSource: PublicStateSource,
27
+ feeJuiceAddress: AztecAddress,
28
+ gasFees: GasFees,
29
+ bindings?: LoggerBindings,
30
+ ) {
31
+ this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
26
32
  this.#publicDataSource = publicDataSource;
27
33
  this.#feeJuiceAddress = feeJuiceAddress;
28
34
  this.#gasFees = gasFees;
@@ -1,5 +1,5 @@
1
1
  import type { Fr } from '@aztec/foundation/curves/bn254';
2
- import { createLogger } from '@aztec/foundation/log';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import {
4
4
  type AnyTx,
5
5
  TX_ERROR_INCORRECT_L1_CHAIN_ID,
@@ -11,7 +11,7 @@ import {
11
11
  } from '@aztec/stdlib/tx';
12
12
 
13
13
  export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
14
- #log = createLogger('p2p:tx_validator:tx_metadata');
14
+ #log: Logger;
15
15
 
16
16
  constructor(
17
17
  private values: {
@@ -20,7 +20,10 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
20
20
  vkTreeRoot: Fr;
21
21
  protocolContractsHash: Fr;
22
22
  },
23
- ) {}
23
+ bindings?: LoggerBindings,
24
+ ) {
25
+ this.#log = createLogger('p2p:tx_validator:tx_metadata', bindings);
26
+ }
24
27
 
25
28
  validateTx(tx: T): Promise<TxValidationResult> {
26
29
  const errors = [];
@@ -1,4 +1,4 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import { PublicContractsDB, getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
3
3
  import type { ContractDataSource } from '@aztec/stdlib/contract';
4
4
  import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
@@ -14,15 +14,17 @@ import {
14
14
  import type { UInt64 } from '@aztec/stdlib/types';
15
15
 
16
16
  export class PhasesTxValidator implements TxValidator<Tx> {
17
- #log = createLogger('sequencer:tx_validator:tx_phases');
17
+ #log: Logger;
18
18
  private contractsDB: PublicContractsDB;
19
19
 
20
20
  constructor(
21
21
  contracts: ContractDataSource,
22
22
  private setupAllowList: AllowedElement[],
23
23
  private timestamp: UInt64,
24
+ bindings?: LoggerBindings,
24
25
  ) {
25
- this.contractsDB = new PublicContractsDB(contracts);
26
+ this.#log = createLogger('sequencer:tx_validator:tx_phases', bindings);
27
+ this.contractsDB = new PublicContractsDB(contracts, bindings);
26
28
  }
27
29
 
28
30
  async validateTx(tx: Tx): Promise<TxValidationResult> {
@@ -1,9 +1,13 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
3
3
  import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export class SizeTxValidator implements TxValidator<Tx> {
6
- #log = createLogger('sequencer:tx_validator:tx_size');
6
+ #log: Logger;
7
+
8
+ constructor(bindings?: LoggerBindings) {
9
+ this.#log = createLogger('p2p:tx_validator:tx_size', bindings);
10
+ }
7
11
 
8
12
  validateTx(tx: Tx): Promise<TxValidationResult> {
9
13
  const txSize = tx.getSize();
@@ -1,16 +1,25 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import {
4
- type AnyTx,
5
- TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP,
6
- type TxValidationResult,
7
- type TxValidator,
8
- getTxHash,
9
- } from '@aztec/stdlib/tx';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
+ import { TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
10
4
  import type { UInt64 } from '@aztec/stdlib/types';
11
5
 
12
- export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
13
- #log = createLogger('p2p:tx_validator:timestamp');
6
+ /** Structural interface for timestamp validation. */
7
+ export interface HasTimestampData {
8
+ txHash: { toString(): string };
9
+ data: {
10
+ includeByTimestamp: bigint;
11
+ constants: {
12
+ anchorBlockHeader: {
13
+ globalVariables: {
14
+ blockNumber: BlockNumber;
15
+ };
16
+ };
17
+ };
18
+ };
19
+ }
20
+
21
+ export class TimestampTxValidator<T extends HasTimestampData> implements TxValidator<T> {
22
+ #log: Logger;
14
23
 
15
24
  constructor(
16
25
  private values: {
@@ -20,7 +29,10 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
20
29
  // Block number in which the tx is considered to be included.
21
30
  blockNumber: BlockNumber;
22
31
  },
23
- ) {}
32
+ bindings?: LoggerBindings,
33
+ ) {
34
+ this.#log = createLogger('p2p:tx_validator:timestamp', bindings);
35
+ }
24
36
 
25
37
  validateTx(tx: T): Promise<TxValidationResult> {
26
38
  const includeByTimestamp = tx.data.includeByTimestamp;
@@ -35,11 +47,7 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
35
47
  );
36
48
  }
37
49
  this.#log.verbose(
38
- `Rejecting tx ${getTxHash(
39
- tx,
40
- )} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
41
- this.values.timestamp
42
- }.`,
50
+ `Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${this.values.timestamp}.`,
43
51
  );
44
52
  return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP] });
45
53
  } else {
@@ -1,10 +1,15 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
3
3
 
4
4
  export class TxPermittedValidator implements TxValidator<Tx> {
5
- #log = createLogger('p2p:tx_validator:tx_permitted');
5
+ #log: Logger;
6
6
 
7
- constructor(private permitted: boolean) {}
7
+ constructor(
8
+ private permitted: boolean,
9
+ bindings?: LoggerBindings,
10
+ ) {
11
+ this.#log = createLogger('p2p:tx_validator:tx_permitted', bindings);
12
+ }
8
13
 
9
14
  validateTx(tx: Tx): Promise<TxValidationResult> {
10
15
  if (!this.permitted) {
@@ -1,11 +1,16 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
3
3
  import { TX_ERROR_INVALID_PROOF, Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export class TxProofValidator implements TxValidator<Tx> {
6
- #log = createLogger('p2p:tx_validator:private_proof');
6
+ #log: Logger;
7
7
 
8
- constructor(private verifier: ClientProtocolCircuitVerifier) {}
8
+ constructor(
9
+ private verifier: ClientProtocolCircuitVerifier,
10
+ bindings?: LoggerBindings,
11
+ ) {
12
+ this.#log = createLogger('p2p:tx_validator:proof', bindings);
13
+ }
9
14
 
10
15
  async validateTx(tx: Tx): Promise<TxValidationResult> {
11
16
  const result = await this.verifier.verifyProof(tx);
@@ -24,6 +24,7 @@ class KeyNotFoundError extends Error {
24
24
  }
25
25
 
26
26
  export class AztecDatastore implements Datastore {
27
+ #db: AztecAsyncKVStore;
27
28
  #memoryDatastore: Map<string, MemoryItem>;
28
29
  #dbDatastore: AztecAsyncMap<string, Uint8Array>;
29
30
 
@@ -32,9 +33,9 @@ export class AztecDatastore implements Datastore {
32
33
  private maxMemoryItems: number;
33
34
 
34
35
  constructor(db: AztecAsyncKVStore, { maxMemoryItems } = { maxMemoryItems: 50 }) {
36
+ this.#db = db;
35
37
  this.#memoryDatastore = new Map();
36
38
  this.#dbDatastore = db.openMap('p2p_datastore');
37
-
38
39
  this.maxMemoryItems = maxMemoryItems;
39
40
  }
40
41
 
@@ -106,13 +107,15 @@ export class AztecDatastore implements Datastore {
106
107
  });
107
108
  },
108
109
  commit: async () => {
109
- for (const op of this.#batchOps) {
110
- if (op.type === 'put' && op.value) {
111
- await this.put(op.key, op.value);
112
- } else if (op.type === 'del') {
113
- await this.delete(op.key);
110
+ await this.#db.transactionAsync(async () => {
111
+ for (const op of this.#batchOps) {
112
+ if (op.type === 'put' && op.value) {
113
+ await this.put(op.key, op.value);
114
+ } else if (op.type === 'del') {
115
+ await this.delete(op.key);
116
+ }
114
117
  }
115
- }
118
+ });
116
119
  this.#batchOps = []; // Clear operations after commit
117
120
  },
118
121
  };
@@ -87,7 +87,7 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
87
87
  this.packageVersion,
88
88
  ));
89
89
 
90
- const metricsRegistry = new OtelMetricsAdapter(telemetry);
90
+ const metricsRegistry = new OtelMetricsAdapter(telemetry, this.logger.getBindings());
91
91
  this.discv5 = Discv5.create({
92
92
  enr: this.enr,
93
93
  peerId,