@aztec/p2p 0.0.1-commit.f504929 → 0.0.1-commit.f650c0a5c

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 (308) hide show
  1. package/README.md +129 -3
  2. package/dest/client/factory.d.ts +2 -2
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +25 -11
  5. package/dest/client/interface.d.ts +9 -2
  6. package/dest/client/interface.d.ts.map +1 -1
  7. package/dest/client/p2p_client.d.ts +3 -2
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +37 -36
  10. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +17 -6
  11. package/dest/config.d.ts +24 -2
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +66 -7
  14. package/dest/errors/p2p-service.error.d.ts +9 -0
  15. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  16. package/dest/errors/p2p-service.error.js +10 -0
  17. package/dest/index.d.ts +1 -2
  18. package/dest/index.d.ts.map +1 -1
  19. package/dest/index.js +0 -1
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -4
  21. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  22. package/dest/mem_pools/attestation_pool/attestation_pool.js +6 -5
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +6 -6
  24. package/dest/mem_pools/index.d.ts +1 -2
  25. package/dest/mem_pools/index.d.ts.map +1 -1
  26. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  27. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  28. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +2 -1
  29. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +7 -1
  30. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  31. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +1 -1
  32. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  33. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +8 -6
  34. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +2 -2
  35. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  36. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  37. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +9 -5
  38. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool_v2/interfaces.js +2 -1
  40. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +25 -10
  41. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +38 -11
  43. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
  44. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  45. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -43
  46. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +4 -2
  47. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +3 -0
  49. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
  50. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +21 -6
  52. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
  53. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  54. package/dest/msg_validators/attestation_validator/attestation_validator.js +5 -4
  55. package/dest/msg_validators/clock_tolerance.d.ts +1 -1
  56. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  57. package/dest/msg_validators/clock_tolerance.js +4 -3
  58. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +5 -4
  59. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  60. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  61. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +5 -4
  62. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  63. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  64. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +12 -9
  65. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  66. package/dest/msg_validators/proposal_validator/proposal_validator.js +51 -49
  67. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  68. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  69. package/dest/msg_validators/tx_validator/allowed_public_setup.js +21 -32
  70. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  71. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  72. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  73. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  74. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  75. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  76. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  77. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  78. package/dest/msg_validators/tx_validator/data_validator.js +35 -2
  79. package/dest/msg_validators/tx_validator/factory.d.ts +23 -4
  80. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  81. package/dest/msg_validators/tx_validator/factory.js +36 -10
  82. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  83. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  84. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  85. package/dest/msg_validators/tx_validator/gas_validator.d.ts +13 -4
  86. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  87. package/dest/msg_validators/tx_validator/gas_validator.js +49 -17
  88. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  89. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  90. package/dest/msg_validators/tx_validator/index.js +1 -0
  91. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  92. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  93. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  94. package/dest/msg_validators/tx_validator/phases_validator.d.ts +21 -1
  95. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/tx_validator/phases_validator.js +49 -2
  97. package/dest/services/dummy_service.d.ts +5 -3
  98. package/dest/services/dummy_service.d.ts.map +1 -1
  99. package/dest/services/dummy_service.js +5 -1
  100. package/dest/services/encoding.d.ts +5 -1
  101. package/dest/services/encoding.d.ts.map +1 -1
  102. package/dest/services/encoding.js +7 -1
  103. package/dest/services/libp2p/libp2p_service.d.ts +15 -25
  104. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  105. package/dest/services/libp2p/libp2p_service.js +149 -126
  106. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  107. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  108. package/dest/services/peer-manager/peer_manager.js +22 -8
  109. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  110. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  111. package/dest/services/peer-manager/peer_scoring.js +32 -10
  112. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  113. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  114. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +69 -65
  115. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +3 -2
  116. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  117. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  118. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  119. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  120. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +3 -1
  121. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  122. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +3 -0
  123. package/dest/services/reqresp/interface.d.ts +1 -9
  124. package/dest/services/reqresp/interface.d.ts.map +1 -1
  125. package/dest/services/reqresp/interface.js +0 -11
  126. package/dest/services/reqresp/metrics.d.ts +1 -1
  127. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  128. package/dest/services/reqresp/metrics.js +0 -1
  129. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  130. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  131. package/dest/services/reqresp/protocols/index.js +0 -1
  132. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  133. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  134. package/dest/services/reqresp/protocols/tx.js +1 -3
  135. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  136. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  137. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  138. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  139. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  140. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  141. package/dest/services/reqresp/reqresp.d.ts +1 -1
  142. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  143. package/dest/services/reqresp/reqresp.js +18 -10
  144. package/dest/services/service.d.ts +5 -2
  145. package/dest/services/service.d.ts.map +1 -1
  146. package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -4
  147. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  148. package/dest/services/tx_collection/fast_tx_collection.js +57 -73
  149. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  150. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  151. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  152. package/dest/services/tx_collection/proposal_tx_collector.d.ts +6 -7
  153. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  154. package/dest/services/tx_collection/proposal_tx_collector.js +4 -4
  155. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  156. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  157. package/dest/services/tx_collection/request_tracker.js +84 -0
  158. package/dest/services/tx_collection/slow_tx_collection.js +1 -1
  159. package/dest/services/tx_collection/tx_collection.d.ts +3 -6
  160. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  161. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  162. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  163. package/dest/services/tx_collection/tx_source.js +9 -7
  164. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  165. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  166. package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
  167. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  168. package/dest/test-helpers/reqresp-nodes.js +0 -2
  169. package/dest/test-helpers/testbench-utils.d.ts +1 -1
  170. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  171. package/dest/test-helpers/testbench-utils.js +23 -3
  172. package/dest/testbench/p2p_client_testbench_worker.js +68 -16
  173. package/dest/testbench/worker_client_manager.d.ts +10 -1
  174. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  175. package/dest/testbench/worker_client_manager.js +55 -3
  176. package/dest/util.d.ts +1 -1
  177. package/package.json +14 -14
  178. package/src/client/factory.ts +43 -14
  179. package/src/client/interface.ts +9 -1
  180. package/src/client/p2p_client.ts +39 -36
  181. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +19 -9
  182. package/src/config.ts +92 -4
  183. package/src/errors/p2p-service.error.ts +11 -0
  184. package/src/index.ts +0 -1
  185. package/src/mem_pools/attestation_pool/attestation_pool.ts +7 -5
  186. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +6 -6
  187. package/src/mem_pools/index.ts +0 -3
  188. package/src/mem_pools/tx_pool_v2/README.md +9 -1
  189. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  190. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
  191. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +15 -6
  192. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +2 -1
  193. package/src/mem_pools/tx_pool_v2/interfaces.ts +9 -4
  194. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +59 -13
  195. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
  196. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +13 -1
  197. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +23 -6
  198. package/src/msg_validators/attestation_validator/README.md +49 -0
  199. package/src/msg_validators/attestation_validator/attestation_validator.ts +5 -4
  200. package/src/msg_validators/clock_tolerance.ts +4 -3
  201. package/src/msg_validators/proposal_validator/README.md +123 -0
  202. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +13 -3
  203. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +19 -6
  204. package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -53
  205. package/src/msg_validators/tx_validator/README.md +5 -1
  206. package/src/msg_validators/tx_validator/allowed_public_setup.ts +16 -35
  207. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  208. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  209. package/src/msg_validators/tx_validator/data_validator.ts +42 -1
  210. package/src/msg_validators/tx_validator/factory.ts +43 -3
  211. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  212. package/src/msg_validators/tx_validator/gas_validator.ts +65 -16
  213. package/src/msg_validators/tx_validator/index.ts +1 -0
  214. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  215. package/src/msg_validators/tx_validator/phases_validator.ts +60 -1
  216. package/src/services/dummy_service.ts +7 -2
  217. package/src/services/encoding.ts +9 -1
  218. package/src/services/libp2p/libp2p_service.ts +148 -140
  219. package/src/services/peer-manager/peer_manager.ts +26 -8
  220. package/src/services/peer-manager/peer_scoring.ts +27 -5
  221. package/src/services/reqresp/README.md +229 -0
  222. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  223. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +64 -69
  224. package/src/services/reqresp/batch-tx-requester/interface.ts +2 -1
  225. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  226. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +5 -0
  227. package/src/services/reqresp/interface.ts +0 -11
  228. package/src/services/reqresp/metrics.ts +0 -1
  229. package/src/services/reqresp/protocols/index.ts +0 -1
  230. package/src/services/reqresp/protocols/tx.ts +1 -3
  231. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  232. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  233. package/src/services/reqresp/reqresp.ts +20 -12
  234. package/src/services/service.ts +6 -1
  235. package/src/services/tx_collection/fast_tx_collection.ts +57 -83
  236. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  237. package/src/services/tx_collection/proposal_tx_collector.ts +8 -13
  238. package/src/services/tx_collection/request_tracker.ts +127 -0
  239. package/src/services/tx_collection/slow_tx_collection.ts +1 -1
  240. package/src/services/tx_collection/tx_collection.ts +3 -5
  241. package/src/services/tx_collection/tx_source.ts +8 -7
  242. package/src/test-helpers/make-test-p2p-clients.ts +1 -1
  243. package/src/test-helpers/reqresp-nodes.ts +1 -3
  244. package/src/test-helpers/testbench-utils.ts +30 -3
  245. package/src/testbench/p2p_client_testbench_worker.ts +72 -15
  246. package/src/testbench/worker_client_manager.ts +68 -6
  247. package/src/util.ts +1 -1
  248. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  249. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  250. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  251. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  252. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  253. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  254. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  255. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  256. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  257. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  258. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  259. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  260. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  261. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  262. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  263. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  264. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  265. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  266. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  267. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  268. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  269. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  270. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  271. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  272. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  273. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  274. package/dest/mem_pools/tx_pool/index.js +0 -2
  275. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  276. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  277. package/dest/mem_pools/tx_pool/priority.js +0 -15
  278. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  279. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  280. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  281. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  282. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  283. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  284. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -24
  285. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  286. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -378
  287. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  288. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  289. package/dest/services/reqresp/protocols/block.js +0 -32
  290. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  291. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  292. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  293. package/src/mem_pools/tx_pool/README.md +0 -270
  294. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  295. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  296. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  297. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  298. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  299. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  300. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  301. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  302. package/src/mem_pools/tx_pool/index.ts +0 -2
  303. package/src/mem_pools/tx_pool/priority.ts +0 -20
  304. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  305. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  306. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -373
  307. package/src/services/reqresp/protocols/block.ts +0 -37
  308. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"tx_pool_v2_impl.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tx_pool_v2_impl.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ import { TxPoolIndices } from './tx_pool_indices.js';
23
23
  #l2BlockSource;
24
24
  #worldStateSynchronizer;
25
25
  #createTxValidator;
26
+ #checkAllowedSetupCalls;
26
27
  // === In-Memory Indices ===
27
28
  #indices = new TxPoolIndices();
28
29
  // === Config & Services ===
@@ -41,6 +42,7 @@ import { TxPoolIndices } from './tx_pool_indices.js';
41
42
  this.#l2BlockSource = deps.l2BlockSource;
42
43
  this.#worldStateSynchronizer = deps.worldStateSynchronizer;
43
44
  this.#createTxValidator = deps.createTxValidator;
45
+ this.#checkAllowedSetupCalls = deps.checkAllowedSetupCalls;
44
46
  this.#config = {
45
47
  ...DEFAULT_TX_POOL_V2_CONFIG,
46
48
  ...config
@@ -152,7 +154,8 @@ import { TxPoolIndices } from './tx_pool_indices.js';
152
154
  // in-memory reads, and buffered DB writes. Nothing here can throw an unhandled exception.
153
155
  const poolAccess = this.#createPreAddPoolAccess();
154
156
  const preAddContext = opts.feeComparisonOnly !== undefined ? {
155
- feeComparisonOnly: opts.feeComparisonOnly
157
+ feeComparisonOnly: opts.feeComparisonOnly,
158
+ priceBumpPercentage: this.#config.priceBumpPercentage
156
159
  } : undefined;
157
160
  await this.#store.transactionAsync(async ()=>{
158
161
  for (const tx of txs){
@@ -277,33 +280,44 @@ import { TxPoolIndices } from './tx_pool_indices.js';
277
280
  const txHashStr = tx.getTxHash().toString();
278
281
  // Check if already in pool
279
282
  if (this.#indices.has(txHashStr)) {
283
+ this.#log.verbose(`canAddPendingTx: tx ${txHashStr} already in pool`);
280
284
  return 'ignored';
281
285
  }
282
286
  // Build metadata and check pre-add rules
283
287
  const meta = await buildTxMetaData(tx);
284
288
  const poolAccess = this.#createPreAddPoolAccess();
285
289
  const preAddResult = await this.#evictionManager.runPreAddRules(meta, poolAccess);
286
- return preAddResult.shouldIgnore ? 'ignored' : 'accepted';
290
+ if (preAddResult.shouldIgnore) {
291
+ this.#log.verbose(`canAddPendingTx: tx ${txHashStr} ignored by pre-add rule`, {
292
+ reason: preAddResult.reason?.message ?? 'no reason provided'
293
+ });
294
+ return 'ignored';
295
+ }
296
+ return 'accepted';
287
297
  }
288
298
  async addProtectedTxs(txs, block, opts) {
289
299
  const slotNumber = block.globalVariables.slotNumber;
300
+ // Precompute setup-call allow-list flags outside the store transaction
301
+ const allowedFlags = await Promise.all(txs.map((tx)=>this.#checkAllowedSetupCalls(tx)));
290
302
  await this.#store.transactionAsync(async ()=>{
291
- for (const tx of txs){
303
+ for(let i = 0; i < txs.length; i++){
304
+ const tx = txs[i];
292
305
  const txHash = tx.getTxHash();
293
306
  const txHashStr = txHash.toString();
294
307
  const isNew = !this.#indices.has(txHashStr);
295
308
  const minedBlockId = await this.#getMinedBlockId(txHash);
296
309
  if (isNew) {
310
+ const meta = await buildTxMetaData(tx, allowedFlags[i]);
297
311
  // New tx - add as mined or protected (callback emitted by #addTx)
298
312
  if (minedBlockId) {
299
313
  await this.#addTx(tx, {
300
314
  mined: minedBlockId
301
- }, opts);
315
+ }, opts, meta);
302
316
  this.#indices.setProtection(txHashStr, slotNumber);
303
317
  } else {
304
318
  await this.#addTx(tx, {
305
319
  protected: slotNumber
306
- }, opts);
320
+ }, opts, meta);
307
321
  }
308
322
  } else {
309
323
  // Existing tx - update protection and mined status
@@ -797,7 +811,8 @@ import { TxPoolIndices } from './tx_pool_indices.js';
797
811
  }
798
812
  try {
799
813
  const tx = Tx.fromBuffer(buffer);
800
- const meta = await buildTxMetaData(tx);
814
+ const allowedSetupCalls = await this.#checkAllowedSetupCalls(tx);
815
+ const meta = await buildTxMetaData(tx, allowedSetupCalls);
801
816
  loaded.push({
802
817
  tx,
803
818
  meta
@@ -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
@@ -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,10 +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
7
  maxTxsPerBlock?: number;
8
8
  });
9
+ validate(proposal: BlockProposal): Promise<ValidationResult>;
9
10
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL2Jsb2NrX3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVoRixxQkFBYSxzQkFBdUIsU0FBUSxpQkFBaUIsQ0FBQyxhQUFhLENBQUUsWUFBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQ2pILFlBQVksVUFBVSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRTtRQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7UUFBQyxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQUVwRztDQUNGIn0=
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,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAEpG;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,10 +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
7
  maxTxsPerBlock?: number;
8
8
  });
9
+ validate(proposal: CheckpointProposal): Promise<ValidationResult>;
9
10
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy9wcm9wb3NhbF92YWxpZGF0b3IvY2hlY2twb2ludF9wcm9wb3NhbF92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVoRixxQkFBYSwyQkFDWCxTQUFRLGlCQUFpQixDQUFDLGtCQUFrQixDQUM1QyxZQUFXLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztJQUUzQyxZQUFZLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUU7UUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFFcEc7Q0FDRiJ9
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,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAEpG;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,15 +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;
8
- protected maxTxsPerBlock?: number;
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?;
9
9
  constructor(epochCache: EpochCacheInterface, opts: {
10
10
  txsPermitted: boolean;
11
11
  maxTxsPerBlock?: number;
12
12
  }, loggerName: string);
13
- 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>;
14
17
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFxQixLQUFLLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJaEgsOEJBQXNCLGlCQUFpQixDQUFDLFNBQVMsU0FBUyxhQUFhLEdBQUcsa0JBQWtCO0lBQzFGLFNBQVMsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDMUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDekIsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7SUFDaEMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUVsQyxZQUNFLFVBQVUsRUFBRSxtQkFBbUIsRUFDL0IsSUFBSSxFQUFFO1FBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztRQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQ3hELFVBQVUsRUFBRSxNQUFNLEVBTW5CO0lBRVksUUFBUSxDQUFDLFFBQVEsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBZ0ZwRTtDQUNGIn0=
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;IAChC,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAElC,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;IAEY,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgFpE;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,7 +2,7 @@ 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;
@@ -13,16 +13,16 @@ export class ProposalValidator {
13
13
  this.maxTxsPerBlock = opts.maxTxsPerBlock;
14
14
  this.logger = createLogger(loggerName);
15
15
  }
16
- async validate(proposal) {
16
+ /** Validates header-level fields: slot, signature, and proposer. */ async validate(proposal) {
17
17
  try {
18
- // Slot check
19
- 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();
20
20
  const slotNumber = proposal.slotNumber;
21
- if (slotNumber !== currentSlot && slotNumber !== nextSlot) {
21
+ if (slotNumber !== targetSlot && slotNumber !== nextSlot) {
22
22
  // Check if message is for previous slot and within clock tolerance
23
- if (!isWithinClockTolerance(slotNumber, currentSlot, this.epochCache)) {
23
+ if (!isWithinClockTolerance(slotNumber, targetSlot, this.epochCache)) {
24
24
  this.logger.warn(`Penalizing peer for invalid slot number ${slotNumber}`, {
25
- currentSlot,
25
+ targetSlot,
26
26
  nextSlot
27
27
  });
28
28
  return {
@@ -44,37 +44,6 @@ export class ProposalValidator {
44
44
  severity: PeerErrorSeverity.MidToleranceError
45
45
  };
46
46
  }
47
- // Transactions permitted check
48
- const embeddedTxCount = proposal.txs?.length ?? 0;
49
- if (!this.txsPermitted && (proposal.txHashes.length > 0 || embeddedTxCount > 0)) {
50
- this.logger.warn(`Penalizing peer for proposal with ${proposal.txHashes.length} transaction(s) when transactions are not permitted`);
51
- return {
52
- result: 'reject',
53
- severity: PeerErrorSeverity.MidToleranceError
54
- };
55
- }
56
- // Max txs per block check
57
- if (this.maxTxsPerBlock !== undefined && proposal.txHashes.length > this.maxTxsPerBlock) {
58
- this.logger.warn(`Penalizing peer for proposal with ${proposal.txHashes.length} transaction(s) when max is ${this.maxTxsPerBlock}`);
59
- return {
60
- result: 'reject',
61
- severity: PeerErrorSeverity.MidToleranceError
62
- };
63
- }
64
- // Embedded txs must be listed in txHashes
65
- const hashSet = new Set(proposal.txHashes.map((h)=>h.toString()));
66
- const missingTxHashes = embeddedTxCount > 0 ? proposal.txs.filter((tx)=>!hashSet.has(tx.getTxHash().toString())).map((tx)=>tx.getTxHash().toString()) : [];
67
- if (embeddedTxCount > 0 && missingTxHashes.length > 0) {
68
- this.logger.warn('Penalizing peer for embedded transaction(s) not included in txHashes', {
69
- embeddedTxCount,
70
- txHashesLength: proposal.txHashes.length,
71
- missingTxHashes
72
- });
73
- return {
74
- result: 'reject',
75
- severity: PeerErrorSeverity.MidToleranceError
76
- };
77
- }
78
47
  // Proposer check
79
48
  const expectedProposer = await this.epochCache.getProposerAttesterAddressInSlot(slotNumber);
80
49
  if (expectedProposer !== undefined && !proposer.equals(expectedProposer)) {
@@ -87,17 +56,6 @@ export class ProposalValidator {
87
56
  severity: PeerErrorSeverity.MidToleranceError
88
57
  };
89
58
  }
90
- // Validate tx hashes for all txs embedded in the proposal
91
- if (!(await Promise.all(proposal.txs?.map((tx)=>tx.validateTxHash()) ?? [])).every((v)=>v)) {
92
- this.logger.warn(`Penalizing peer for invalid tx hashes in proposal`, {
93
- proposer,
94
- slotNumber
95
- });
96
- return {
97
- result: 'reject',
98
- severity: PeerErrorSeverity.LowToleranceError
99
- };
100
- }
101
59
  return {
102
60
  result: 'accept'
103
61
  };
@@ -111,4 +69,48 @@ export class ProposalValidator {
111
69
  throw e;
112
70
  }
113
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
+ }
114
116
  }
@@ -1,4 +1,4 @@
1
1
  import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
2
2
  /** Returns the default list of functions allowed to run in the setup phase of a transaction. */
3
3
  export declare function getDefaultAllowedSetupFunctions(): Promise<AllowedElement[]>;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZF9wdWJsaWNfc2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvYWxsb3dlZF9wdWJsaWNfc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJdEUsZ0dBQWdHO0FBQ2hHLHdCQUFzQiwrQkFBK0IsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0F1Q2pGIn0=
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;AAItE,gGAAgG;AAChG,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAuCjF"}
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,42 +1,31 @@
1
- import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
2
1
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
3
- import { FunctionSelector } from '@aztec/stdlib/abi';
4
- import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
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
5
  let defaultAllowedSetupFunctions;
6
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
- const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
9
- const setAuthorizedInternalSelector = await FunctionSelector.fromSignature('_set_authorized((Field),Field,bool)');
10
- const setAuthorizedSelector = await FunctionSelector.fromSignature('set_authorized(Field,bool)');
11
- const increaseBalanceSelector = await FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
12
- const transferInPublicSelector = await FunctionSelector.fromSignature('transfer_in_public((Field),(Field),u128,Field)');
13
- defaultAllowedSetupFunctions = [
8
+ defaultAllowedSetupFunctions = await Promise.all([
14
9
  // AuthRegistry: needed for authwit support via private path (set_authorized_private enqueues _set_authorized)
15
- {
16
- address: ProtocolContractAddress.AuthRegistry,
17
- selector: setAuthorizedInternalSelector
18
- },
10
+ buildAllowedElement(AuthRegistryArtifact, {
11
+ address: ProtocolContractAddress.AuthRegistry
12
+ }, '_set_authorized', {
13
+ onlySelf: true,
14
+ rejectNullMsgSender: true
15
+ }),
19
16
  // AuthRegistry: needed for authwit support via public path (PublicFeePaymentMethod calls set_authorized directly)
20
- {
21
- address: ProtocolContractAddress.AuthRegistry,
22
- selector: setAuthorizedSelector
23
- },
17
+ buildAllowedElement(AuthRegistryArtifact, {
18
+ address: ProtocolContractAddress.AuthRegistry
19
+ }, 'set_authorized', {
20
+ rejectNullMsgSender: true
21
+ }),
24
22
  // FeeJuice: needed for claiming on the same tx as a spend (claim_and_end_setup enqueues this)
25
- {
26
- address: ProtocolContractAddress.FeeJuice,
27
- selector: increaseBalanceSelector
28
- },
29
- // Token: needed for private transfers via FPC (transfer_to_public enqueues this)
30
- {
31
- classId: tokenClassId,
32
- selector: increaseBalanceSelector
33
- },
34
- // Token: needed for public transfers via FPC (fee_entrypoint_public enqueues this)
35
- {
36
- classId: tokenClassId,
37
- selector: transferInPublicSelector
38
- }
39
- ];
23
+ buildAllowedElement(FeeJuiceArtifact, {
24
+ address: ProtocolContractAddress.FeeJuice
25
+ }, '_increase_public_balance', {
26
+ onlySelf: true
27
+ })
28
+ ]);
40
29
  }
41
30
  return defaultAllowedSetupFunctions;
42
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
+ }
@@ -0,0 +1,9 @@
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
2
+ import { type Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
+ /** Validates that contract instance deployment logs contain correct addresses. */
4
+ export declare class ContractInstanceTxValidator implements TxValidator<Tx> {
5
+ #private;
6
+ constructor(bindings?: LoggerBindings);
7
+ validateTx(tx: Tx): Promise<TxValidationResult>;
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2VfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL2NvbnRyYWN0X2luc3RhbmNlX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHdkYsT0FBTyxFQUdMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLGtGQUFrRjtBQUNsRixxQkFBYSwyQkFBNEIsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdqRSxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FHcEQ7Q0FpQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_instance_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/contract_instance_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,EAGL,KAAK,EAAE,EACP,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,kFAAkF;AAClF,qBAAa,2BAA4B,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGjE,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGpD;CAiCF"}