@aztec/p2p 0.0.1-commit.8afd444 → 0.0.1-commit.8f9871590

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 (277) hide show
  1. package/dest/client/factory.d.ts +5 -5
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +44 -10
  4. package/dest/client/interface.d.ts +37 -15
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +35 -36
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +114 -138
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +1 -1
  10. package/dest/config.d.ts +23 -5
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +16 -1
  13. package/dest/index.d.ts +2 -1
  14. package/dest/index.d.ts.map +1 -1
  15. package/dest/index.js +1 -0
  16. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  17. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  18. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  19. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  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 +353 -87
  22. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  23. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/index.js +1 -2
  25. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  26. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  28. package/dest/mem_pools/index.d.ts +3 -2
  29. package/dest/mem_pools/index.d.ts.map +1 -1
  30. package/dest/mem_pools/index.js +1 -1
  31. package/dest/mem_pools/interface.d.ts +5 -5
  32. package/dest/mem_pools/interface.d.ts.map +1 -1
  33. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  34. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  35. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  36. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  37. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  38. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  39. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  40. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +102 -0
  41. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  42. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +242 -0
  43. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  44. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +119 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +89 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +131 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +17 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +72 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +63 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  73. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  74. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  76. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +201 -0
  77. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/interfaces.js +7 -0
  79. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +95 -0
  80. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +128 -0
  82. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  83. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  85. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +105 -0
  86. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +345 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +57 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +160 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +71 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +780 -0
  94. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  95. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  97. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  99. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  100. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  101. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  102. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  103. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  104. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  105. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  106. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  107. package/dest/services/dummy_service.d.ts +10 -2
  108. package/dest/services/dummy_service.d.ts.map +1 -1
  109. package/dest/services/dummy_service.js +6 -0
  110. package/dest/services/encoding.d.ts +2 -2
  111. package/dest/services/encoding.d.ts.map +1 -1
  112. package/dest/services/encoding.js +2 -2
  113. package/dest/services/gossipsub/index.d.ts +3 -0
  114. package/dest/services/gossipsub/index.d.ts.map +1 -0
  115. package/dest/services/gossipsub/index.js +2 -0
  116. package/dest/services/gossipsub/scoring.d.ts +21 -3
  117. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  118. package/dest/services/gossipsub/scoring.js +24 -7
  119. package/dest/services/gossipsub/topic_score_params.d.ts +161 -0
  120. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  121. package/dest/services/gossipsub/topic_score_params.js +324 -0
  122. package/dest/services/libp2p/libp2p_service.d.ts +84 -35
  123. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  124. package/dest/services/libp2p/libp2p_service.js +370 -275
  125. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  126. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  127. package/dest/services/peer-manager/peer_scoring.js +25 -2
  128. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -4
  129. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  130. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +8 -8
  131. package/dest/services/reqresp/interface.d.ts +10 -1
  132. package/dest/services/reqresp/interface.d.ts.map +1 -1
  133. package/dest/services/reqresp/interface.js +15 -1
  134. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  135. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  136. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  137. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  138. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  139. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  140. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  141. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  142. package/dest/services/reqresp/protocols/tx.js +20 -0
  143. package/dest/services/reqresp/reqresp.d.ts +1 -1
  144. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  145. package/dest/services/reqresp/reqresp.js +11 -4
  146. package/dest/services/service.d.ts +35 -1
  147. package/dest/services/service.d.ts.map +1 -1
  148. package/dest/services/tx_collection/config.d.ts +22 -4
  149. package/dest/services/tx_collection/config.d.ts.map +1 -1
  150. package/dest/services/tx_collection/config.js +49 -3
  151. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  152. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  153. package/dest/services/tx_collection/fast_tx_collection.js +27 -17
  154. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  155. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  156. package/dest/services/tx_collection/file_store_tx_collection.js +165 -0
  157. package/dest/services/tx_collection/file_store_tx_source.d.ts +28 -0
  158. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  159. package/dest/services/tx_collection/file_store_tx_source.js +59 -0
  160. package/dest/services/tx_collection/index.d.ts +3 -2
  161. package/dest/services/tx_collection/index.d.ts.map +1 -1
  162. package/dest/services/tx_collection/index.js +1 -0
  163. package/dest/services/tx_collection/proposal_tx_collector.d.ts +12 -12
  164. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  165. package/dest/services/tx_collection/proposal_tx_collector.js +4 -5
  166. package/dest/services/tx_collection/slow_tx_collection.d.ts +6 -2
  167. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  168. package/dest/services/tx_collection/slow_tx_collection.js +55 -23
  169. package/dest/services/tx_collection/tx_collection.d.ts +19 -7
  170. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  171. package/dest/services/tx_collection/tx_collection.js +75 -3
  172. package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
  173. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  174. package/dest/services/tx_collection/tx_collection_sink.js +13 -7
  175. package/dest/services/tx_file_store/config.d.ts +1 -3
  176. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  177. package/dest/services/tx_file_store/config.js +0 -4
  178. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  179. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  180. package/dest/services/tx_file_store/tx_file_store.js +8 -5
  181. package/dest/services/tx_provider.d.ts +3 -3
  182. package/dest/services/tx_provider.d.ts.map +1 -1
  183. package/dest/services/tx_provider.js +5 -4
  184. package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
  185. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  186. package/dest/test-helpers/mock-pubsub.d.ts +27 -1
  187. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  188. package/dest/test-helpers/mock-pubsub.js +97 -2
  189. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  190. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  191. package/dest/test-helpers/reqresp-nodes.js +2 -1
  192. package/dest/test-helpers/testbench-utils.d.ts +40 -38
  193. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  194. package/dest/test-helpers/testbench-utils.js +128 -59
  195. package/dest/testbench/p2p_client_testbench_worker.js +4 -4
  196. package/package.json +14 -14
  197. package/src/client/factory.ts +81 -13
  198. package/src/client/interface.ts +45 -14
  199. package/src/client/p2p_client.ts +151 -161
  200. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +1 -1
  201. package/src/config.ts +34 -2
  202. package/src/index.ts +1 -0
  203. package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
  204. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  205. package/src/mem_pools/attestation_pool/index.ts +9 -2
  206. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  207. package/src/mem_pools/index.ts +4 -1
  208. package/src/mem_pools/interface.ts +4 -4
  209. package/src/mem_pools/tx_pool/README.md +1 -1
  210. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  211. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  212. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  213. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  214. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +310 -0
  215. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +147 -0
  216. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  217. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +111 -0
  218. package/src/mem_pools/tx_pool_v2/eviction/index.ts +23 -0
  219. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +164 -0
  220. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  221. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  222. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +88 -0
  223. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +72 -0
  224. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  225. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  226. package/src/mem_pools/tx_pool_v2/interfaces.ts +233 -0
  227. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +211 -0
  228. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  229. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +433 -0
  230. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +218 -0
  231. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +924 -0
  232. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  233. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  234. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  235. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  236. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  237. package/src/services/dummy_service.ts +12 -0
  238. package/src/services/encoding.ts +2 -2
  239. package/src/services/gossipsub/README.md +626 -0
  240. package/src/services/gossipsub/index.ts +2 -0
  241. package/src/services/gossipsub/scoring.ts +29 -5
  242. package/src/services/gossipsub/topic_score_params.ts +451 -0
  243. package/src/services/libp2p/libp2p_service.ts +372 -277
  244. package/src/services/peer-manager/peer_scoring.ts +25 -0
  245. package/src/services/reqresp/batch-tx-requester/README.md +7 -7
  246. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +11 -11
  247. package/src/services/reqresp/interface.ts +26 -1
  248. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  249. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  250. package/src/services/reqresp/protocols/tx.ts +22 -0
  251. package/src/services/reqresp/reqresp.ts +13 -3
  252. package/src/services/service.ts +40 -0
  253. package/src/services/tx_collection/config.ts +74 -6
  254. package/src/services/tx_collection/fast_tx_collection.ts +28 -26
  255. package/src/services/tx_collection/file_store_tx_collection.ts +198 -0
  256. package/src/services/tx_collection/file_store_tx_source.ts +73 -0
  257. package/src/services/tx_collection/index.ts +2 -1
  258. package/src/services/tx_collection/proposal_tx_collector.ts +12 -14
  259. package/src/services/tx_collection/slow_tx_collection.ts +64 -30
  260. package/src/services/tx_collection/tx_collection.ts +109 -13
  261. package/src/services/tx_collection/tx_collection_sink.ts +17 -7
  262. package/src/services/tx_file_store/config.ts +0 -6
  263. package/src/services/tx_file_store/tx_file_store.ts +9 -7
  264. package/src/services/tx_provider.ts +8 -7
  265. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  266. package/src/test-helpers/mock-pubsub.ts +133 -3
  267. package/src/test-helpers/reqresp-nodes.ts +2 -1
  268. package/src/test-helpers/testbench-utils.ts +127 -71
  269. package/src/testbench/p2p_client_testbench_worker.ts +4 -4
  270. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  271. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  272. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  273. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  274. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  275. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  276. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  277. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -2,7 +2,7 @@ import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
2
  import { type CheckpointAttestation, PeerErrorSeverity, type ValidationResult } from '@aztec/stdlib/p2p';
3
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,7 +18,7 @@ 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);
@@ -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,12 +1,24 @@
1
1
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { BlockHash } from '@aztec/stdlib/block';
3
- import { type AnyTx, TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
+ import { TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export interface ArchiveSource {
6
6
  getArchiveIndices: (archives: BlockHash[]) => Promise<(bigint | undefined)[]>;
7
7
  }
8
8
 
9
- export class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
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> {
10
22
  #log: Logger;
11
23
  #archiveSource: ArchiveSource;
12
24
 
@@ -18,7 +30,7 @@ export class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
18
30
  async validateTx(tx: T): Promise<TxValidationResult> {
19
31
  const [index] = await this.#archiveSource.getArchiveIndices([await tx.data.constants.anchorBlockHeader.hash()]);
20
32
  if (index === undefined) {
21
- 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`);
22
34
  return { result: 'invalid', reason: [TX_ERROR_BLOCK_HEADER] };
23
35
  }
24
36
  return { result: 'valid' };
@@ -1,9 +1,8 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
1
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,7 +11,13 @@ export interface NullifierSource {
12
11
  nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
13
12
  }
14
13
 
15
- export class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
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> {
16
21
  #log: Logger;
17
22
  #nullifierSource: NullifierSource;
18
23
 
@@ -22,17 +27,17 @@ export class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
22
27
  }
23
28
 
24
29
  async validateTx(tx: T): Promise<TxValidationResult> {
25
- const nullifiers = tx instanceof Tx ? tx.data.getNonEmptyNullifiers() : tx.txEffect.nullifiers;
30
+ const nullifiers = tx.data.getNonEmptyNullifiers();
26
31
 
27
32
  // Ditch this tx if it has repeated nullifiers
28
33
  const uniqueNullifiers = new Set(nullifiers.map(n => n.toBigInt()));
29
34
  if (uniqueNullifiers.size !== nullifiers.length) {
30
- 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`);
31
36
  return { result: 'invalid', reason: [TX_ERROR_DUPLICATE_NULLIFIER_IN_TX] };
32
37
  }
33
38
 
34
39
  if ((await this.#nullifierSource.nullifiersExist(nullifiers.map(n => n.toBuffer()))).some(Boolean)) {
35
- 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`);
36
41
  return { result: 'invalid', reason: [TX_ERROR_EXISTING_NULLIFIER] };
37
42
  }
38
43
 
@@ -1,15 +1,24 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger, type LoggerBindings, 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';
3
+ import { TX_ERROR_INVALID_EXPIRATION_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> {
6
+ /** Structural interface for timestamp validation. */
7
+ export interface HasTimestampData {
8
+ txHash: { toString(): string };
9
+ data: {
10
+ expirationTimestamp: 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> {
13
22
  #log: Logger;
14
23
 
15
24
  constructor(
@@ -26,25 +35,21 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
26
35
  }
27
36
 
28
37
  validateTx(tx: T): Promise<TxValidationResult> {
29
- const includeByTimestamp = tx.data.includeByTimestamp;
30
- // If building block 1, we skip the expiration check. For details on why see the `validate_include_by_timestamp`
38
+ const expirationTimestamp = tx.data.expirationTimestamp;
39
+ // If building block 1, we skip the expiration check. For details on why see the `validate_expiration_timestamp`
31
40
  // function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
32
41
  const buildingBlock1 = this.values.blockNumber === 1;
33
42
 
34
- if (!buildingBlock1 && includeByTimestamp < this.values.timestamp) {
43
+ if (!buildingBlock1 && expirationTimestamp < this.values.timestamp) {
35
44
  if (tx.data.constants.anchorBlockHeader.globalVariables.blockNumber === 0) {
36
45
  this.#log.warn(
37
46
  `A tx built against a genesis block failed to be included in block 1 which is the only block in which txs built against a genesis block are allowed to be included.`,
38
47
  );
39
48
  }
40
49
  this.#log.verbose(
41
- `Rejecting tx ${getTxHash(
42
- tx,
43
- )} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
44
- this.values.timestamp
45
- }.`,
50
+ `Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${expirationTimestamp}, timestamp: ${this.values.timestamp}.`,
46
51
  );
47
- return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP] });
52
+ return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_EXPIRATION_TIMESTAMP] });
48
53
  } else {
49
54
  return Promise.resolve({ result: 'valid' });
50
55
  }
@@ -26,6 +26,8 @@ import { ReqRespStatus } from './reqresp/status.js';
26
26
  import {
27
27
  type P2PBlockReceivedCallback,
28
28
  type P2PCheckpointReceivedCallback,
29
+ type P2PDuplicateAttestationCallback,
30
+ type P2PDuplicateProposalCallback,
29
31
  type P2PService,
30
32
  type PeerDiscoveryService,
31
33
  PeerDiscoveryState,
@@ -82,6 +84,16 @@ export class DummyP2PService implements P2PService {
82
84
  */
83
85
  public registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
84
86
 
87
+ /**
88
+ * Register a callback for when a duplicate proposal is detected
89
+ */
90
+ public registerDuplicateProposalCallback(_callback: P2PDuplicateProposalCallback): void {}
91
+
92
+ /**
93
+ * Register a callback for when a duplicate attestation is detected
94
+ */
95
+ public registerDuplicateAttestationCallback(_callback: P2PDuplicateAttestationCallback): void {}
96
+
85
97
  /**
86
98
  * Sends a request to a peer.
87
99
  * @param _protocol - The protocol to send the request on.
@@ -78,11 +78,11 @@ export class SnappyTransform implements DataTransform {
78
78
  return this.inboundTransformData(Buffer.from(data), topic);
79
79
  }
80
80
 
81
- public inboundTransformData(data: Buffer, topic?: TopicType): Buffer {
81
+ public inboundTransformData(data: Buffer, topic?: TopicType, maxSizeKbOverride?: number): Buffer {
82
82
  if (data.length === 0) {
83
83
  return data;
84
84
  }
85
- const maxSizeKb = this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
85
+ const maxSizeKb = maxSizeKbOverride ?? this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
86
86
  const { decompressedSize } = readSnappyPreamble(data);
87
87
  if (decompressedSize > maxSizeKb * 1024) {
88
88
  this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);