@aztec/p2p 0.0.1-commit.6d63667d → 0.0.1-commit.7035c9bd6

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 (393) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +11 -11
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +52 -15
  5. package/dest/client/interface.d.ts +46 -33
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +39 -51
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +157 -224
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +9 -9
  11. package/dest/config.d.ts +54 -17
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +102 -38
  14. package/dest/errors/tx-pool.error.d.ts +8 -0
  15. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  16. package/dest/errors/tx-pool.error.js +9 -0
  17. package/dest/index.d.ts +2 -1
  18. package/dest/index.d.ts.map +1 -1
  19. package/dest/index.js +1 -0
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  21. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  22. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  26. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  27. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/index.js +1 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  30. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  32. package/dest/mem_pools/index.d.ts +3 -2
  33. package/dest/mem_pools/index.d.ts.map +1 -1
  34. package/dest/mem_pools/index.js +1 -1
  35. package/dest/mem_pools/instrumentation.d.ts +4 -2
  36. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  37. package/dest/mem_pools/instrumentation.js +16 -14
  38. package/dest/mem_pools/interface.d.ts +5 -5
  39. package/dest/mem_pools/interface.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  41. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +2 -1
  43. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  44. package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
  45. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool/priority.js +4 -4
  47. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  48. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  50. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  51. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
  54. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +7 -3
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +12 -4
  62. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
  63. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  64. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
  65. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +54 -5
  66. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  67. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
  69. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +7 -5
  70. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  71. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  72. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +14 -6
  73. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
  74. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  75. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +16 -4
  76. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
  77. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +3 -3
  79. package/dest/mem_pools/tx_pool_v2/index.d.ts +3 -2
  80. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool_v2/index.js +2 -1
  82. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  83. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  85. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +30 -12
  86. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  87. package/dest/mem_pools/tx_pool_v2/interfaces.js +5 -1
  88. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +78 -15
  89. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  90. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +139 -18
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +50 -45
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +12 -5
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +17 -6
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +14 -5
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +364 -189
  100. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
  101. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  102. package/dest/msg_validators/attestation_validator/attestation_validator.js +5 -4
  103. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  104. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  105. package/dest/msg_validators/clock_tolerance.d.ts +1 -1
  106. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  107. package/dest/msg_validators/clock_tolerance.js +4 -3
  108. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  109. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  110. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  111. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  112. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  113. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  114. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  115. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/proposal_validator/proposal_validator.js +53 -41
  117. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  118. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  120. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  121. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  122. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  123. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  124. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  125. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  126. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  127. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  129. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  130. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  132. package/dest/msg_validators/tx_validator/factory.d.ts +133 -6
  133. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/factory.js +240 -59
  135. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  136. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  138. package/dest/msg_validators/tx_validator/gas_validator.d.ts +67 -3
  139. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  140. package/dest/msg_validators/tx_validator/gas_validator.js +104 -37
  141. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  142. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/index.js +2 -0
  144. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  145. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  146. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  147. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  148. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  149. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  150. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  151. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  152. package/dest/msg_validators/tx_validator/phases_validator.js +71 -23
  153. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  154. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  155. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  156. package/dest/services/dummy_service.d.ts +13 -5
  157. package/dest/services/dummy_service.d.ts.map +1 -1
  158. package/dest/services/dummy_service.js +10 -4
  159. package/dest/services/encoding.d.ts +7 -3
  160. package/dest/services/encoding.d.ts.map +1 -1
  161. package/dest/services/encoding.js +18 -11
  162. package/dest/services/gossipsub/index.d.ts +3 -0
  163. package/dest/services/gossipsub/index.d.ts.map +1 -0
  164. package/dest/services/gossipsub/index.js +2 -0
  165. package/dest/services/gossipsub/scoring.d.ts +21 -3
  166. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  167. package/dest/services/gossipsub/scoring.js +24 -7
  168. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  169. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  170. package/dest/services/gossipsub/topic_score_params.js +346 -0
  171. package/dest/services/libp2p/libp2p_service.d.ts +95 -50
  172. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  173. package/dest/services/libp2p/libp2p_service.js +464 -364
  174. package/dest/services/peer-manager/metrics.d.ts +3 -1
  175. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  176. package/dest/services/peer-manager/metrics.js +6 -0
  177. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  178. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  179. package/dest/services/peer-manager/peer_manager.js +4 -3
  180. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  181. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  182. package/dest/services/peer-manager/peer_scoring.js +25 -2
  183. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +12 -8
  184. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  185. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +80 -106
  186. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  187. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  188. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  189. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  190. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  191. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  192. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  193. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  194. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  195. package/dest/services/reqresp/interface.d.ts +10 -1
  196. package/dest/services/reqresp/interface.d.ts.map +1 -1
  197. package/dest/services/reqresp/interface.js +15 -1
  198. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +4 -3
  199. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  200. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +7 -1
  201. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  202. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +15 -0
  203. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  204. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  205. package/dest/services/reqresp/protocols/tx.js +20 -0
  206. package/dest/services/reqresp/reqresp.d.ts +1 -1
  207. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  208. package/dest/services/reqresp/reqresp.js +30 -14
  209. package/dest/services/service.d.ts +39 -3
  210. package/dest/services/service.d.ts.map +1 -1
  211. package/dest/services/tx_collection/config.d.ts +19 -1
  212. package/dest/services/tx_collection/config.d.ts.map +1 -1
  213. package/dest/services/tx_collection/config.js +46 -0
  214. package/dest/services/tx_collection/fast_tx_collection.d.ts +3 -4
  215. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  216. package/dest/services/tx_collection/fast_tx_collection.js +80 -76
  217. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  218. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  219. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  220. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  221. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  222. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  223. package/dest/services/tx_collection/index.d.ts +2 -1
  224. package/dest/services/tx_collection/index.d.ts.map +1 -1
  225. package/dest/services/tx_collection/index.js +1 -0
  226. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  227. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  228. package/dest/services/tx_collection/instrumentation.js +2 -1
  229. package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -7
  230. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  231. package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
  232. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  233. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  234. package/dest/services/tx_collection/request_tracker.js +84 -0
  235. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  236. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  237. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  238. package/dest/services/tx_collection/tx_collection.d.ts +23 -13
  239. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  240. package/dest/services/tx_collection/tx_collection.js +75 -3
  241. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  242. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  243. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  244. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  245. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  246. package/dest/services/tx_collection/tx_source.js +19 -2
  247. package/dest/services/tx_file_store/config.d.ts +1 -3
  248. package/dest/services/tx_file_store/config.d.ts.map +1 -1
  249. package/dest/services/tx_file_store/config.js +0 -4
  250. package/dest/services/tx_file_store/tx_file_store.d.ts +4 -3
  251. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  252. package/dest/services/tx_file_store/tx_file_store.js +9 -6
  253. package/dest/services/tx_provider.d.ts +4 -4
  254. package/dest/services/tx_provider.d.ts.map +1 -1
  255. package/dest/services/tx_provider.js +9 -8
  256. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  257. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  258. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  259. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  260. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  261. package/dest/test-helpers/mock-pubsub.js +105 -4
  262. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  263. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  264. package/dest/test-helpers/reqresp-nodes.js +4 -3
  265. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  266. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  267. package/dest/test-helpers/testbench-utils.js +149 -61
  268. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  269. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  270. package/dest/testbench/p2p_client_testbench_worker.js +19 -17
  271. package/dest/testbench/worker_client_manager.d.ts +3 -1
  272. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  273. package/dest/testbench/worker_client_manager.js +6 -2
  274. package/dest/util.d.ts +3 -3
  275. package/dest/util.d.ts.map +1 -1
  276. package/package.json +14 -14
  277. package/src/client/factory.ts +99 -28
  278. package/src/client/interface.ts +56 -34
  279. package/src/client/p2p_client.ts +190 -269
  280. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +22 -14
  281. package/src/config.ts +158 -44
  282. package/src/errors/tx-pool.error.ts +12 -0
  283. package/src/index.ts +1 -0
  284. package/src/mem_pools/attestation_pool/attestation_pool.ts +497 -91
  285. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  286. package/src/mem_pools/attestation_pool/index.ts +9 -2
  287. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  288. package/src/mem_pools/index.ts +4 -1
  289. package/src/mem_pools/instrumentation.ts +17 -13
  290. package/src/mem_pools/interface.ts +4 -4
  291. package/src/mem_pools/tx_pool/README.md +1 -1
  292. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  293. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  294. package/src/mem_pools/tx_pool/priority.ts +4 -4
  295. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  296. package/src/mem_pools/tx_pool_v2/README.md +85 -11
  297. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  298. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
  299. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +7 -3
  300. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +18 -4
  301. package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
  302. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +59 -4
  303. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
  304. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  305. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +14 -9
  306. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +33 -6
  307. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +4 -3
  308. package/src/mem_pools/tx_pool_v2/index.ts +2 -1
  309. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  310. package/src/mem_pools/tx_pool_v2/interfaces.ts +32 -12
  311. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +202 -26
  312. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +58 -45
  313. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +34 -8
  314. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +410 -187
  315. package/src/msg_validators/attestation_validator/README.md +49 -0
  316. package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
  317. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  318. package/src/msg_validators/clock_tolerance.ts +4 -3
  319. package/src/msg_validators/proposal_validator/README.md +123 -0
  320. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  321. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  322. package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -45
  323. package/src/msg_validators/tx_validator/README.md +119 -0
  324. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  325. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  326. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  327. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  328. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  329. package/src/msg_validators/tx_validator/factory.ts +387 -78
  330. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  331. package/src/msg_validators/tx_validator/gas_validator.ts +123 -27
  332. package/src/msg_validators/tx_validator/index.ts +2 -0
  333. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  334. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  335. package/src/msg_validators/tx_validator/phases_validator.ts +81 -26
  336. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  337. package/src/services/dummy_service.ts +18 -6
  338. package/src/services/encoding.ts +18 -10
  339. package/src/services/gossipsub/README.md +641 -0
  340. package/src/services/gossipsub/index.ts +2 -0
  341. package/src/services/gossipsub/scoring.ts +29 -5
  342. package/src/services/gossipsub/topic_score_params.ts +487 -0
  343. package/src/services/libp2p/libp2p_service.ts +483 -392
  344. package/src/services/peer-manager/metrics.ts +7 -0
  345. package/src/services/peer-manager/peer_manager.ts +5 -3
  346. package/src/services/peer-manager/peer_scoring.ts +25 -0
  347. package/src/services/reqresp/README.md +229 -0
  348. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  349. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +76 -112
  350. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  351. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  352. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  353. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  354. package/src/services/reqresp/interface.ts +26 -1
  355. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +4 -3
  356. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +17 -0
  357. package/src/services/reqresp/protocols/tx.ts +22 -0
  358. package/src/services/reqresp/reqresp.ts +35 -15
  359. package/src/services/service.ts +51 -2
  360. package/src/services/tx_collection/config.ts +68 -0
  361. package/src/services/tx_collection/fast_tx_collection.ts +83 -76
  362. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  363. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  364. package/src/services/tx_collection/index.ts +1 -0
  365. package/src/services/tx_collection/instrumentation.ts +7 -1
  366. package/src/services/tx_collection/proposal_tx_collector.ts +9 -13
  367. package/src/services/tx_collection/request_tracker.ts +127 -0
  368. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  369. package/src/services/tx_collection/tx_collection.ts +114 -19
  370. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  371. package/src/services/tx_collection/tx_source.ts +22 -3
  372. package/src/services/tx_file_store/config.ts +0 -6
  373. package/src/services/tx_file_store/tx_file_store.ts +10 -8
  374. package/src/services/tx_provider.ts +10 -9
  375. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  376. package/src/test-helpers/mock-pubsub.ts +146 -9
  377. package/src/test-helpers/reqresp-nodes.ts +5 -7
  378. package/src/test-helpers/testbench-utils.ts +156 -74
  379. package/src/testbench/p2p_client_testbench_worker.ts +27 -25
  380. package/src/testbench/worker_client_manager.ts +13 -5
  381. package/src/util.ts +8 -2
  382. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  383. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  384. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  385. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  386. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  387. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  388. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  389. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  390. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  391. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  392. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  393. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -7,4 +7,4 @@ export declare class CheckpointAttestationValidator implements P2PValidator<Chec
7
7
  constructor(epochCache: EpochCacheInterface);
8
8
  validate(message: CheckpointAttestation): Promise<ValidationResult>;
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvYXR0ZXN0YXRpb25fdmFsaWRhdG9yL2F0dGVzdGF0aW9uX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxZQUFZLEVBRWpCLEtBQUssZ0JBQWdCLEVBQ3RCLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IscUJBQWEsOEJBQStCLFlBQVcsWUFBWSxDQUFDLHFCQUFxQixDQUFDO0lBQ3hGLFNBQVMsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDMUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFekIsWUFBWSxVQUFVLEVBQUUsbUJBQW1CLEVBRzFDO0lBRUssUUFBUSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0E2RHhFO0NBQ0YifQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvYXR0ZXN0YXRpb25fdmFsaWRhdG9yL2F0dGVzdGF0aW9uX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxZQUFZLEVBRWpCLEtBQUssZ0JBQWdCLEVBQ3RCLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IscUJBQWEsOEJBQStCLFlBQVcsWUFBWSxDQUFDLHFCQUFxQixDQUFDO0lBQ3hGLFNBQVMsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDMUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFekIsWUFBWSxVQUFVLEVBQUUsbUJBQW1CLEVBRzFDO0lBRUssUUFBUSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0E4RHhFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"attestation_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/attestation_validator/attestation_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,8BAA+B,YAAW,YAAY,CAAC,qBAAqB,CAAC;IACxF,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,YAAY,UAAU,EAAE,mBAAmB,EAG1C;IAEK,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6DxE;CACF"}
1
+ {"version":3,"file":"attestation_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/attestation_validator/attestation_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,8BAA+B,YAAW,YAAY,CAAC,qBAAqB,CAAC;IACxF,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,YAAY,UAAU,EAAE,mBAAmB,EAG1C;IAEK,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8DxE;CACF"}
@@ -12,11 +12,12 @@ export class CheckpointAttestationValidator {
12
12
  async validate(message) {
13
13
  const slotNumber = message.payload.header.slotNumber;
14
14
  try {
15
- const { currentSlot, nextSlot } = this.epochCache.getCurrentAndNextSlot();
16
- if (slotNumber !== currentSlot && slotNumber !== nextSlot) {
15
+ // Use target slots since proposals target pipeline slots (slot + 1 when pipelining)
16
+ const { targetSlot, nextSlot } = this.epochCache.getTargetAndNextSlot();
17
+ if (slotNumber !== targetSlot && slotNumber !== nextSlot) {
17
18
  // Check if message is for previous slot and within clock tolerance
18
- if (!isWithinClockTolerance(slotNumber, currentSlot, this.epochCache)) {
19
- this.logger.warn(`Checkpoint attestation slot ${slotNumber} is not current (${currentSlot}) or next (${nextSlot}) slot`);
19
+ if (!isWithinClockTolerance(slotNumber, targetSlot, this.epochCache)) {
20
+ this.logger.warn(`Checkpoint attestation slot ${slotNumber} is not current (${targetSlot}) or next (${nextSlot}) slot`);
20
21
  return {
21
22
  result: 'reject',
22
23
  severity: PeerErrorSeverity.HighToleranceError
@@ -1,7 +1,7 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
2
  import { type CheckpointAttestation, type ValidationResult } from '@aztec/stdlib/p2p';
3
3
  import { type TelemetryClient } from '@aztec/telemetry-client';
4
- import type { AttestationPool } from '../../mem_pools/attestation_pool/attestation_pool.js';
4
+ import type { AttestationPoolApi } from '../../mem_pools/attestation_pool/attestation_pool.js';
5
5
  import { CheckpointAttestationValidator } from './attestation_validator.js';
6
6
  /**
7
7
  * FishermanAttestationValidator extends the base AttestationValidator to add
@@ -14,7 +14,7 @@ import { CheckpointAttestationValidator } from './attestation_validator.js';
14
14
  export declare class FishermanAttestationValidator extends CheckpointAttestationValidator {
15
15
  private attestationPool;
16
16
  private invalidAttestationCounter;
17
- constructor(epochCache: EpochCacheInterface, attestationPool: AttestationPool, telemetryClient: TelemetryClient);
17
+ constructor(epochCache: EpochCacheInterface, attestationPool: AttestationPoolApi, telemetryClient: TelemetryClient);
18
18
  validate(message: CheckpointAttestation): Promise<ValidationResult>;
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzaGVybWFuX2F0dGVzdGF0aW9uX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL2F0dGVzdGF0aW9uX3ZhbGlkYXRvci9maXNoZXJtYW5fYXR0ZXN0YXRpb25fdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQXFCLEtBQUssZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RyxPQUFPLEVBQXVCLEtBQUssZUFBZSxFQUFrQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBILE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSw4QkFBOEI7SUFLN0UsT0FBTyxDQUFDLGVBQWU7SUFKekIsT0FBTyxDQUFDLHlCQUF5QixDQUFDO0lBRWxDLFlBQ0UsVUFBVSxFQUFFLG1CQUFtQixFQUN2QixlQUFlLEVBQUUsZUFBZSxFQUN4QyxlQUFlLEVBQUUsZUFBZSxFQWFqQztJQUVjLFFBQVEsQ0FBQyxPQUFPLEVBQUUscUJBQXFCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBd0RqRjtDQUNGIn0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzaGVybWFuX2F0dGVzdGF0aW9uX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL2F0dGVzdGF0aW9uX3ZhbGlkYXRvci9maXNoZXJtYW5fYXR0ZXN0YXRpb25fdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQXFCLEtBQUssZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RyxPQUFPLEVBQXVCLEtBQUssZUFBZSxFQUFrQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBILE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUU7Ozs7Ozs7R0FPRztBQUNILHFCQUFhLDZCQUE4QixTQUFRLDhCQUE4QjtJQUs3RSxPQUFPLENBQUMsZUFBZTtJQUp6QixPQUFPLENBQUMseUJBQXlCLENBQUM7SUFFbEMsWUFDRSxVQUFVLEVBQUUsbUJBQW1CLEVBQ3ZCLGVBQWUsRUFBRSxrQkFBa0IsRUFDM0MsZUFBZSxFQUFFLGVBQWUsRUFhakM7SUFFYyxRQUFRLENBQUMsT0FBTyxFQUFFLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQXdEakY7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"fisherman_attestation_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/attestation_validator/fisherman_attestation_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,qBAAqB,EAAqB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAuB,KAAK,eAAe,EAAkC,MAAM,yBAAyB,CAAC;AAEpH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E;;;;;;;GAOG;AACH,qBAAa,6BAA8B,SAAQ,8BAA8B;IAK7E,OAAO,CAAC,eAAe;IAJzB,OAAO,CAAC,yBAAyB,CAAC;IAElC,YACE,UAAU,EAAE,mBAAmB,EACvB,eAAe,EAAE,eAAe,EACxC,eAAe,EAAE,eAAe,EAajC;IAEc,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwDjF;CACF"}
1
+ {"version":3,"file":"fisherman_attestation_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/attestation_validator/fisherman_attestation_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,qBAAqB,EAAqB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAuB,KAAK,eAAe,EAAkC,MAAM,yBAAyB,CAAC;AAEpH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E;;;;;;;GAOG;AACH,qBAAa,6BAA8B,SAAQ,8BAA8B;IAK7E,OAAO,CAAC,eAAe;IAJzB,OAAO,CAAC,yBAAyB,CAAC;IAElC,YACE,UAAU,EAAE,mBAAmB,EACvB,eAAe,EAAE,kBAAkB,EAC3C,eAAe,EAAE,eAAe,EAajC;IAEc,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwDjF;CACF"}
@@ -18,4 +18,4 @@ export declare const MAXIMUM_GOSSIP_CLOCK_DISPARITY_MS = 500;
18
18
  * @returns true if the message is for the previous slot AND we're within the clock tolerance window
19
19
  */
20
20
  export declare function isWithinClockTolerance(messageSlot: SlotNumber, currentSlot: SlotNumber, epochCache: EpochCacheInterface): boolean;
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2tfdG9sZXJhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvY2xvY2tfdG9sZXJhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdEOzs7Ozs7O0dBT0c7QUFDSCxlQUFPLE1BQU0saUNBQWlDLE1BQU0sQ0FBQztBQUVyRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLHNCQUFzQixDQUNwQyxXQUFXLEVBQUUsVUFBVSxFQUN2QixXQUFXLEVBQUUsVUFBVSxFQUN2QixVQUFVLEVBQUUsbUJBQW1CLEdBQzlCLE9BQU8sQ0F5QlQifQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2tfdG9sZXJhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvY2xvY2tfdG9sZXJhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdEOzs7Ozs7O0dBT0c7QUFDSCxlQUFPLE1BQU0saUNBQWlDLE1BQU0sQ0FBQztBQUVyRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLHNCQUFzQixDQUNwQyxXQUFXLEVBQUUsVUFBVSxFQUN2QixXQUFXLEVBQUUsVUFBVSxFQUN2QixVQUFVLEVBQUUsbUJBQW1CLEdBQzlCLE9BQU8sQ0EwQlQifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"clock_tolerance.d.ts","sourceRoot":"","sources":["../../src/msg_validators/clock_tolerance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,UAAU,EACvB,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAyBT"}
1
+ {"version":3,"file":"clock_tolerance.d.ts","sourceRoot":"","sources":["../../src/msg_validators/clock_tolerance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,UAAU,EACvB,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CA0BT"}
@@ -25,9 +25,10 @@ import { SlotNumber } from '@aztec/foundation/branded-types';
25
25
  return false;
26
26
  }
27
27
  // Check how far we are into the current slot (in milliseconds)
28
- const { ts: slotStartTs, nowMs, slot } = epochCache.getEpochAndSlotNow();
29
- // Sanity check: ensure the epoch cache's current slot matches the expected current slot
30
- if (slot !== currentSlot) {
28
+ const { ts: slotStartTs, nowMs } = epochCache.getEpochAndSlotNow();
29
+ const targetSlot = epochCache.getTargetSlot();
30
+ // Sanity check: ensure the epoch cache's target slot matches the expected current slot
31
+ if (targetSlot !== currentSlot) {
31
32
  return false;
32
33
  }
33
34
  // ts is in seconds, convert to ms; nowMs is already in milliseconds
@@ -1,9 +1,11 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import type { BlockProposal, P2PValidator } from '@aztec/stdlib/p2p';
3
- import { ProposalValidator } from '../proposal_validator/proposal_validator.js';
4
- export declare class BlockProposalValidator extends ProposalValidator<BlockProposal> implements P2PValidator<BlockProposal> {
2
+ import type { BlockProposal, P2PValidator, ValidationResult } from '@aztec/stdlib/p2p';
3
+ export declare class BlockProposalValidator implements P2PValidator<BlockProposal> {
4
+ private proposalValidator;
5
5
  constructor(epochCache: EpochCacheInterface, opts: {
6
6
  txsPermitted: boolean;
7
+ maxTxsPerBlock?: number;
7
8
  });
9
+ validate(proposal: BlockProposal): Promise<ValidationResult>;
8
10
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL2Jsb2NrX3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVoRixxQkFBYSxzQkFBdUIsU0FBUSxpQkFBaUIsQ0FBQyxhQUFhLENBQUUsWUFBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQ2pILFlBQVksVUFBVSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRTtRQUFFLFlBQVksRUFBRSxPQUFPLENBQUE7S0FBRSxFQUUzRTtDQUNGIn0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL2Jsb2NrX3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUl2RixxQkFBYSxzQkFBdUIsWUFBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQ3hFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBb0I7SUFFN0MsWUFBWSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFO1FBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztRQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBRXBHO0lBRUssUUFBUSxDQUFDLFFBQVEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBTWpFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"block_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/block_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,qBAAa,sBAAuB,SAAQ,iBAAiB,CAAC,aAAa,CAAE,YAAW,YAAY,CAAC,aAAa,CAAC;IACjH,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,EAE3E;CACF"}
1
+ {"version":3,"file":"block_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/block_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIvF,qBAAa,sBAAuB,YAAW,YAAY,CAAC,aAAa,CAAC;IACxE,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAEpG;IAEK,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAMjE;CACF"}
@@ -1,6 +1,14 @@
1
1
  import { ProposalValidator } from '../proposal_validator/proposal_validator.js';
2
- export class BlockProposalValidator extends ProposalValidator {
2
+ export class BlockProposalValidator {
3
+ proposalValidator;
3
4
  constructor(epochCache, opts){
4
- super(epochCache, opts, 'p2p:block_proposal_validator');
5
+ this.proposalValidator = new ProposalValidator(epochCache, opts, 'p2p:block_proposal_validator');
6
+ }
7
+ async validate(proposal) {
8
+ const headerResult = await this.proposalValidator.validate(proposal);
9
+ if (headerResult.result !== 'accept') {
10
+ return headerResult;
11
+ }
12
+ return this.proposalValidator.validateTxs(proposal);
5
13
  }
6
14
  }
@@ -1,9 +1,11 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import type { CheckpointProposal, P2PValidator } from '@aztec/stdlib/p2p';
3
- import { ProposalValidator } from '../proposal_validator/proposal_validator.js';
4
- export declare class CheckpointProposalValidator extends ProposalValidator<CheckpointProposal> implements P2PValidator<CheckpointProposal> {
2
+ import type { CheckpointProposal, P2PValidator, ValidationResult } from '@aztec/stdlib/p2p';
3
+ export declare class CheckpointProposalValidator implements P2PValidator<CheckpointProposal> {
4
+ private proposalValidator;
5
5
  constructor(epochCache: EpochCacheInterface, opts: {
6
6
  txsPermitted: boolean;
7
+ maxTxsPerBlock?: number;
7
8
  });
9
+ validate(proposal: CheckpointProposal): Promise<ValidationResult>;
8
10
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy9wcm9wb3NhbF92YWxpZGF0b3IvY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVoRixxQkFBYSwyQkFDWCxTQUFRLGlCQUFpQixDQUFDLGtCQUFrQixDQUM1QyxZQUFXLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztJQUUzQyxZQUFZLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUU7UUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFBO0tBQUUsRUFFM0U7Q0FDRiJ9
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy9wcm9wb3NhbF92YWxpZGF0b3IvY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk1RixxQkFBYSwyQkFBNEIsWUFBVyxZQUFZLENBQUMsa0JBQWtCLENBQUM7SUFDbEYsT0FBTyxDQUFDLGlCQUFpQixDQUFvQjtJQUU3QyxZQUFZLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUU7UUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFFcEc7SUFFSyxRQUFRLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQVl0RTtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,qBAAa,2BACX,SAAQ,iBAAiB,CAAC,kBAAkB,CAC5C,YAAW,YAAY,CAAC,kBAAkB,CAAC;IAE3C,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,EAE3E;CACF"}
1
+ {"version":3,"file":"checkpoint_proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5F,qBAAa,2BAA4B,YAAW,YAAY,CAAC,kBAAkB,CAAC;IAClF,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAEpG;IAEK,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYtE;CACF"}
@@ -1,6 +1,20 @@
1
1
  import { ProposalValidator } from '../proposal_validator/proposal_validator.js';
2
- export class CheckpointProposalValidator extends ProposalValidator {
2
+ export class CheckpointProposalValidator {
3
+ proposalValidator;
3
4
  constructor(epochCache, opts){
4
- super(epochCache, opts, 'p2p:checkpoint_proposal_validator');
5
+ this.proposalValidator = new ProposalValidator(epochCache, opts, 'p2p:checkpoint_proposal_validator');
6
+ }
7
+ async validate(proposal) {
8
+ const headerResult = await this.proposalValidator.validate(proposal);
9
+ if (headerResult.result !== 'accept') {
10
+ return headerResult;
11
+ }
12
+ const blockProposal = proposal.getBlockProposal();
13
+ if (blockProposal) {
14
+ return this.proposalValidator.validateTxs(blockProposal);
15
+ }
16
+ return {
17
+ result: 'accept'
18
+ };
5
19
  }
6
20
  }
@@ -1,13 +1,18 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { type Logger } from '@aztec/foundation/log';
3
- import { BlockProposal, CheckpointProposal, type ValidationResult } from '@aztec/stdlib/p2p';
4
- export declare abstract class ProposalValidator<TProposal extends BlockProposal | CheckpointProposal> {
5
- protected epochCache: EpochCacheInterface;
6
- protected logger: Logger;
7
- protected txsPermitted: boolean;
2
+ import { type BlockProposal, type CheckpointProposalCore, type ValidationResult } from '@aztec/stdlib/p2p';
3
+ /** Validates header-level and tx-level fields of block and checkpoint proposals. */
4
+ export declare class ProposalValidator {
5
+ private epochCache;
6
+ private logger;
7
+ private txsPermitted;
8
+ private maxTxsPerBlock?;
8
9
  constructor(epochCache: EpochCacheInterface, opts: {
9
10
  txsPermitted: boolean;
11
+ maxTxsPerBlock?: number;
10
12
  }, loggerName: string);
11
- validate(proposal: TProposal): Promise<ValidationResult>;
13
+ /** Validates header-level fields: slot, signature, and proposer. */
14
+ validate(proposal: BlockProposal | CheckpointProposalCore): Promise<ValidationResult>;
15
+ /** Validates transaction-related fields of a block proposal. */
16
+ validateTxs(proposal: BlockProposal): Promise<ValidationResult>;
12
17
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFxQixLQUFLLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJaEgsOEJBQXNCLGlCQUFpQixDQUFDLFNBQVMsU0FBUyxhQUFhLEdBQUcsa0JBQWtCO0lBQzFGLFNBQVMsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDMUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDekIsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7SUFFaEMsWUFBWSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFO1FBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFJL0Y7SUFFWSxRQUFRLENBQUMsUUFBUSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0F3RXBFO0NBQ0YifQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxzQkFBc0IsRUFFM0IsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixvRkFBb0Y7QUFDcEYscUJBQWEsaUJBQWlCO0lBQzVCLE9BQU8sQ0FBQyxVQUFVLENBQXNCO0lBQ3hDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLFlBQVksQ0FBVTtJQUM5QixPQUFPLENBQUMsY0FBYyxDQUFDLENBQVM7SUFFaEMsWUFDRSxVQUFVLEVBQUUsbUJBQW1CLEVBQy9CLElBQUksRUFBRTtRQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7UUFBQyxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQUN4RCxVQUFVLEVBQUUsTUFBTSxFQU1uQjtJQUVELG9FQUFvRTtJQUN2RCxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQWEsR0FBRyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0F3Q2pHO0lBRUQsZ0VBQWdFO0lBQ25ELFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQXdDM0U7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAqB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIhH,8BAAsB,iBAAiB,CAAC,SAAS,SAAS,aAAa,GAAG,kBAAkB;IAC1F,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;IAEhC,YAAY,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,EAAE,UAAU,EAAE,MAAM,EAI/F;IAEY,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwEpE;CACF"}
1
+ {"version":3,"file":"proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAE3B,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,oFAAoF;AACpF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,YACE,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EACxD,UAAU,EAAE,MAAM,EAMnB;IAED,oEAAoE;IACvD,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwCjG;IAED,gEAAgE;IACnD,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC3E;CACF"}
@@ -2,25 +2,27 @@ import { NoCommitteeError } from '@aztec/ethereum/contracts';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
3
  import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
4
4
  import { isWithinClockTolerance } from '../clock_tolerance.js';
5
- export class ProposalValidator {
5
+ /** Validates header-level and tx-level fields of block and checkpoint proposals. */ export class ProposalValidator {
6
6
  epochCache;
7
7
  logger;
8
8
  txsPermitted;
9
+ maxTxsPerBlock;
9
10
  constructor(epochCache, opts, loggerName){
10
11
  this.epochCache = epochCache;
11
12
  this.txsPermitted = opts.txsPermitted;
13
+ this.maxTxsPerBlock = opts.maxTxsPerBlock;
12
14
  this.logger = createLogger(loggerName);
13
15
  }
14
- async validate(proposal) {
16
+ /** Validates header-level fields: slot, signature, and proposer. */ async validate(proposal) {
15
17
  try {
16
- // Slot check
17
- const { currentSlot, nextSlot } = this.epochCache.getCurrentAndNextSlot();
18
+ // Slot check: use target slots since proposals target pipeline slots (slot + 1 when pipelining)
19
+ const { targetSlot, nextSlot } = this.epochCache.getTargetAndNextSlot();
18
20
  const slotNumber = proposal.slotNumber;
19
- if (slotNumber !== currentSlot && slotNumber !== nextSlot) {
21
+ if (slotNumber !== targetSlot && slotNumber !== nextSlot) {
20
22
  // Check if message is for previous slot and within clock tolerance
21
- if (!isWithinClockTolerance(slotNumber, currentSlot, this.epochCache)) {
23
+ if (!isWithinClockTolerance(slotNumber, targetSlot, this.epochCache)) {
22
24
  this.logger.warn(`Penalizing peer for invalid slot number ${slotNumber}`, {
23
- currentSlot,
25
+ targetSlot,
24
26
  nextSlot
25
27
  });
26
28
  return {
@@ -42,29 +44,6 @@ export class ProposalValidator {
42
44
  severity: PeerErrorSeverity.MidToleranceError
43
45
  };
44
46
  }
45
- // Transactions permitted check
46
- const embeddedTxCount = proposal.txs?.length ?? 0;
47
- if (!this.txsPermitted && (proposal.txHashes.length > 0 || embeddedTxCount > 0)) {
48
- this.logger.warn(`Penalizing peer for proposal with ${proposal.txHashes.length} transaction(s) when transactions are not permitted`);
49
- return {
50
- result: 'reject',
51
- severity: PeerErrorSeverity.MidToleranceError
52
- };
53
- }
54
- // Embedded txs must be listed in txHashes
55
- const hashSet = new Set(proposal.txHashes.map((h)=>h.toString()));
56
- const missingTxHashes = embeddedTxCount > 0 ? proposal.txs.filter((tx)=>!hashSet.has(tx.getTxHash().toString())).map((tx)=>tx.getTxHash().toString()) : [];
57
- if (embeddedTxCount > 0 && missingTxHashes.length > 0) {
58
- this.logger.warn('Penalizing peer for embedded transaction(s) not included in txHashes', {
59
- embeddedTxCount,
60
- txHashesLength: proposal.txHashes.length,
61
- missingTxHashes
62
- });
63
- return {
64
- result: 'reject',
65
- severity: PeerErrorSeverity.MidToleranceError
66
- };
67
- }
68
47
  // Proposer check
69
48
  const expectedProposer = await this.epochCache.getProposerAttesterAddressInSlot(slotNumber);
70
49
  if (expectedProposer !== undefined && !proposer.equals(expectedProposer)) {
@@ -77,17 +56,6 @@ export class ProposalValidator {
77
56
  severity: PeerErrorSeverity.MidToleranceError
78
57
  };
79
58
  }
80
- // Validate tx hashes for all txs embedded in the proposal
81
- if (!(await Promise.all(proposal.txs?.map((tx)=>tx.validateTxHash()) ?? [])).every((v)=>v)) {
82
- this.logger.warn(`Penalizing peer for invalid tx hashes in proposal`, {
83
- proposer,
84
- slotNumber
85
- });
86
- return {
87
- result: 'reject',
88
- severity: PeerErrorSeverity.LowToleranceError
89
- };
90
- }
91
59
  return {
92
60
  result: 'accept'
93
61
  };
@@ -101,4 +69,48 @@ export class ProposalValidator {
101
69
  throw e;
102
70
  }
103
71
  }
72
+ /** Validates transaction-related fields of a block proposal. */ async validateTxs(proposal) {
73
+ // Transactions permitted check
74
+ const embeddedTxCount = proposal.txs?.length ?? 0;
75
+ if (!this.txsPermitted && (proposal.txHashes.length > 0 || embeddedTxCount > 0)) {
76
+ this.logger.warn(`Penalizing peer for proposal with ${proposal.txHashes.length} transaction(s) when transactions are not permitted`);
77
+ return {
78
+ result: 'reject',
79
+ severity: PeerErrorSeverity.MidToleranceError
80
+ };
81
+ }
82
+ // Max txs per block check
83
+ if (this.maxTxsPerBlock !== undefined && proposal.txHashes.length > this.maxTxsPerBlock) {
84
+ this.logger.warn(`Penalizing peer for proposal with ${proposal.txHashes.length} transaction(s) when max is ${this.maxTxsPerBlock}`);
85
+ return {
86
+ result: 'reject',
87
+ severity: PeerErrorSeverity.MidToleranceError
88
+ };
89
+ }
90
+ // Embedded txs must be listed in txHashes
91
+ const hashSet = new Set(proposal.txHashes.map((h)=>h.toString()));
92
+ const missingTxHashes = embeddedTxCount > 0 ? proposal.txs.filter((tx)=>!hashSet.has(tx.getTxHash().toString())).map((tx)=>tx.getTxHash().toString()) : [];
93
+ if (embeddedTxCount > 0 && missingTxHashes.length > 0) {
94
+ this.logger.warn('Penalizing peer for embedded transaction(s) not included in txHashes', {
95
+ embeddedTxCount,
96
+ txHashesLength: proposal.txHashes.length,
97
+ missingTxHashes
98
+ });
99
+ return {
100
+ result: 'reject',
101
+ severity: PeerErrorSeverity.MidToleranceError
102
+ };
103
+ }
104
+ // Validate tx hashes for all txs embedded in the proposal
105
+ if (!(await Promise.all(proposal.txs?.map((tx)=>tx.validateTxHash()) ?? [])).every((v)=>v)) {
106
+ this.logger.warn(`Penalizing peer for invalid tx hashes in proposal`);
107
+ return {
108
+ result: 'reject',
109
+ severity: PeerErrorSeverity.LowToleranceError
110
+ };
111
+ }
112
+ return {
113
+ result: 'accept'
114
+ };
115
+ }
104
116
  }
@@ -1,7 +1,7 @@
1
- import type { ProcessedTx, Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
2
- export declare class AggregateTxValidator<T extends Tx | ProcessedTx> implements TxValidator<T> {
3
- #private;
1
+ import type { TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
2
+ export declare class AggregateTxValidator<T> implements TxValidator<T> {
3
+ readonly validators: TxValidator<T>[];
4
4
  constructor(...validators: TxValidator<T>[]);
5
5
  validateTx(tx: T): Promise<TxValidationResult>;
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hZ2dyZWdhdGVfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekYscUJBQWEsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUVyRixZQUFZLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQU0xQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWtCbkQ7Q0FDRiJ9
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hZ2dyZWdhdGVfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhFLHFCQUFhLG9CQUFvQixDQUFDLENBQUMsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQU0xQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWtCbkQ7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate_tx_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/aggregate_tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzF,qBAAa,oBAAoB,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAErF,YAAY,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAM1C;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkBnD;CACF"}
1
+ {"version":3,"file":"aggregate_tx_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/aggregate_tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAExE,qBAAa,oBAAoB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,YAAY,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAM1C;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkBnD;CACF"}
@@ -1,17 +1,17 @@
1
1
  export class AggregateTxValidator {
2
- #validators;
2
+ validators;
3
3
  constructor(...validators){
4
4
  if (validators.length === 0) {
5
5
  throw new Error('At least one validator must be provided');
6
6
  }
7
- this.#validators = validators;
7
+ this.validators = validators;
8
8
  }
9
9
  async validateTx(tx) {
10
10
  const aggregate = {
11
11
  result: 'valid',
12
12
  reason: []
13
13
  };
14
- for (const validator of this.#validators){
14
+ for (const validator of this.validators){
15
15
  const result = await validator.validateTx(tx);
16
16
  if (result.result === 'invalid') {
17
17
  aggregate.result = 'invalid';
@@ -1,3 +1,4 @@
1
1
  import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
2
+ /** Returns the default list of functions allowed to run in the setup phase of a transaction. */
2
3
  export declare function getDefaultAllowedSetupFunctions(): Promise<AllowedElement[]>;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZF9wdWJsaWNfc2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvYWxsb3dlZF9wdWJsaWNfc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHdEUsd0JBQXNCLCtCQUErQixJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQTJCakYifQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZF9wdWJsaWNfc2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvYWxsb3dlZF9wdWJsaWNfc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNdEUsZ0dBQWdHO0FBQ2hHLHdCQUFzQiwrQkFBK0IsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FtQmpGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"allowed_public_setup.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/allowed_public_setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CA2BjF"}
1
+ {"version":3,"file":"allowed_public_setup.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/allowed_public_setup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,gGAAgG;AAChG,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAmBjF"}
@@ -1,27 +1,31 @@
1
- import { FPCContract } from '@aztec/noir-contracts.js/FPC';
2
- import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
3
1
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
- import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
5
- let defaultAllowedSetupFunctions = undefined;
6
- export async function getDefaultAllowedSetupFunctions() {
2
+ import { AuthRegistryArtifact } from '@aztec/protocol-contracts/auth-registry';
3
+ import { FeeJuiceArtifact } from '@aztec/protocol-contracts/fee-juice';
4
+ import { buildAllowedElement } from './allowed_setup_helpers.js';
5
+ let defaultAllowedSetupFunctions;
6
+ /** Returns the default list of functions allowed to run in the setup phase of a transaction. */ export async function getDefaultAllowedSetupFunctions() {
7
7
  if (defaultAllowedSetupFunctions === undefined) {
8
- defaultAllowedSetupFunctions = [
9
- // needed for authwit support
10
- {
8
+ defaultAllowedSetupFunctions = await Promise.all([
9
+ // AuthRegistry: needed for authwit support via private path (set_authorized_private enqueues _set_authorized)
10
+ buildAllowedElement(AuthRegistryArtifact, {
11
11
  address: ProtocolContractAddress.AuthRegistry
12
- },
13
- // needed for claiming on the same tx as a spend
14
- {
12
+ }, '_set_authorized', {
13
+ onlySelf: true,
14
+ rejectNullMsgSender: true
15
+ }),
16
+ // AuthRegistry: needed for authwit support via public path (PublicFeePaymentMethod calls set_authorized directly)
17
+ buildAllowedElement(AuthRegistryArtifact, {
18
+ address: ProtocolContractAddress.AuthRegistry
19
+ }, 'set_authorized', {
20
+ rejectNullMsgSender: true
21
+ }),
22
+ // FeeJuice: needed for claiming on the same tx as a spend (claim_and_end_setup enqueues this)
23
+ buildAllowedElement(FeeJuiceArtifact, {
15
24
  address: ProtocolContractAddress.FeeJuice
16
- },
17
- // needed for private transfers via FPC
18
- {
19
- classId: (await getContractClassFromArtifact(TokenContractArtifact)).id
20
- },
21
- {
22
- classId: (await getContractClassFromArtifact(FPCContract.artifact)).id
23
- }
24
- ];
25
+ }, '_increase_public_balance', {
26
+ onlySelf: true
27
+ })
28
+ ]);
25
29
  }
26
30
  return defaultAllowedSetupFunctions;
27
31
  }
@@ -0,0 +1,17 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { ContractArtifact } from '@aztec/stdlib/abi';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
5
+ /**
6
+ * Builds an AllowedElement from a contract artifact, deriving both the function selector
7
+ * and calldata length from the artifact instead of hardcoding signature strings.
8
+ */
9
+ export declare function buildAllowedElement(artifact: ContractArtifact, target: {
10
+ address: AztecAddress;
11
+ } | {
12
+ classId: Fr;
13
+ }, functionName: string, opts?: {
14
+ onlySelf?: boolean;
15
+ rejectNullMsgSender?: boolean;
16
+ }): Promise<AllowedElement>;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZF9zZXR1cF9oZWxwZXJzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL2FsbG93ZWRfc2V0dXBfaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFOzs7R0FHRztBQUNILHdCQUFzQixtQkFBbUIsQ0FDdkMsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixNQUFNLEVBQUU7SUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFBO0NBQUUsR0FBRztJQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7Q0FBRSxFQUNuRCxZQUFZLEVBQUUsTUFBTSxFQUNwQixJQUFJLENBQUMsRUFBRTtJQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUFDLG1CQUFtQixDQUFDLEVBQUUsT0FBTyxDQUFBO0NBQUUsR0FDM0QsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQWV6QiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allowed_setup_helpers.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/allowed_setup_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,EAAE,CAAA;CAAE,EACnD,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3D,OAAO,CAAC,cAAc,CAAC,CAezB"}
@@ -0,0 +1,24 @@
1
+ import { FunctionSelector, countArgumentsSize, getAllFunctionAbis } from '@aztec/stdlib/abi';
2
+ /**
3
+ * Builds an AllowedElement from a contract artifact, deriving both the function selector
4
+ * and calldata length from the artifact instead of hardcoding signature strings.
5
+ */ export async function buildAllowedElement(artifact, target, functionName, opts) {
6
+ const allFunctions = getAllFunctionAbis(artifact);
7
+ const fn = allFunctions.find((f)=>f.name === functionName);
8
+ if (!fn) {
9
+ throw new Error(`Unknown function ${functionName} in artifact ${artifact.name}`);
10
+ }
11
+ const selector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
12
+ const calldataLength = 1 + countArgumentsSize(fn);
13
+ return {
14
+ ...target,
15
+ selector,
16
+ calldataLength,
17
+ ...opts?.onlySelf ? {
18
+ onlySelf: true
19
+ } : {},
20
+ ...opts?.rejectNullMsgSender ? {
21
+ rejectNullMsgSender: true
22
+ } : {}
23
+ };
24
+ }
@@ -1,12 +1,25 @@
1
1
  import { type LoggerBindings } from '@aztec/foundation/log';
2
2
  import type { BlockHash } from '@aztec/stdlib/block';
3
- import { type AnyTx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
+ import { type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
  export interface ArchiveSource {
5
5
  getArchiveIndices: (archives: BlockHash[]) => Promise<(bigint | undefined)[]>;
6
6
  }
7
- export declare class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
7
+ /** Structural interface for block header validation. */
8
+ export interface HasBlockHeaderData {
9
+ txHash: {
10
+ toString(): string;
11
+ };
12
+ data: {
13
+ constants: {
14
+ anchorBlockHeader: {
15
+ hash(): Promise<BlockHash>;
16
+ };
17
+ };
18
+ };
19
+ }
20
+ export declare class BlockHeaderTxValidator<T extends HasBlockHeaderData> implements TxValidator<T> {
8
21
  #private;
9
22
  constructor(archiveSource: ArchiveSource, bindings?: LoggerBindings);
10
23
  validateTx(tx: T): Promise<TxValidationResult>;
11
24
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfaGVhZGVyX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9ibG9ja19oZWFkZXJfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxLQUFLLEVBQXlCLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoSCxNQUFNLFdBQVcsYUFBYTtJQUM1QixpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQy9FO0FBRUQscUJBQWEsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7O0lBSTVFLFlBQVksYUFBYSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxjQUFjLEVBR2xFO0lBRUssVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBT25EO0NBQ0YifQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfaGVhZGVyX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9ibG9ja19oZWFkZXJfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQXlCLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRyxNQUFNLFdBQVcsYUFBYTtJQUM1QixpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQy9FO0FBRUQsd0RBQXdEO0FBQ3hELE1BQU0sV0FBVyxrQkFBa0I7SUFDakMsTUFBTSxFQUFFO1FBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDL0IsSUFBSSxFQUFFO1FBQ0osU0FBUyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUU7Z0JBQ2pCLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCxxQkFBYSxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsa0JBQWtCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUl6RixZQUFZLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUdsRTtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQU9uRDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"block_header_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/block_header_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,KAAK,KAAK,EAAyB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhH,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAI5E,YAAY,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGlE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOnD;CACF"}
1
+ {"version":3,"file":"block_header_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/block_header_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAyB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,iBAAiB,EAAE;gBACjB,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;aAC5B,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIzF,YAAY,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGlE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOnD;CACF"}
@@ -12,7 +12,7 @@ export class BlockHeaderTxValidator {
12
12
  await tx.data.constants.anchorBlockHeader.hash()
13
13
  ]);
14
14
  if (index === undefined) {
15
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for referencing an unknown block header`);
15
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for referencing an unknown block header`);
16
16
  return {
17
17
  result: 'invalid',
18
18
  reason: [
@@ -1,11 +1,21 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
1
2
  import { type LoggerBindings } from '@aztec/foundation/log';
2
- import { type AnyTx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
+ import { type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
4
  export interface NullifierSource {
4
5
  nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
5
6
  }
6
- export declare class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
7
+ /** Structural interface for double-spend validation. */
8
+ export interface HasNullifierData {
9
+ txHash: {
10
+ toString(): string;
11
+ };
12
+ data: {
13
+ getNonEmptyNullifiers(): Fr[];
14
+ };
15
+ }
16
+ export declare class DoubleSpendTxValidator<T extends HasNullifierData> implements TxValidator<T> {
7
17
  #private;
8
18
  constructor(nullifierSource: NullifierSource, bindings?: LoggerBindings);
9
19
  validateTx(tx: T): Promise<TxValidationResult>;
10
20
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlX3NwZW5kX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9kb3VibGVfc3BlbmRfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBQ0wsS0FBSyxLQUFLLEVBSVYsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsTUFBTSxXQUFXLGVBQWU7SUFDOUIsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0NBQy9EO0FBRUQscUJBQWEsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7O0lBSTVFLFlBQVksZUFBZSxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMsRUFBRSxjQUFjLEVBR3RFO0lBRUssVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBZ0JuRDtDQUNGIn0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlX3NwZW5kX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9kb3VibGVfc3BlbmRfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBR0wsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsTUFBTSxXQUFXLGVBQWU7SUFDOUIsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0NBQy9EO0FBRUQsd0RBQXdEO0FBQ3hELE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsTUFBTSxFQUFFO1FBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDL0IsSUFBSSxFQUFFO1FBQUUscUJBQXFCLElBQUksRUFBRSxFQUFFLENBQUE7S0FBRSxDQUFDO0NBQ3pDO0FBRUQscUJBQWEsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLGdCQUFnQixDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQzs7SUFJdkYsWUFBWSxlQUFlLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHdEU7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FnQm5EO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EACL,KAAK,KAAK,EAIV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAI5E,YAAY,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGtE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgBnD;CACF"}
1
+ {"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QAAE,qBAAqB,IAAI,EAAE,EAAE,CAAA;KAAE,CAAC;CACzC;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,gBAAgB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIvF,YAAY,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGtE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgBnD;CACF"}