@aztec/p2p 0.0.1-commit.85d7d01 → 0.0.1-commit.8655d4a

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 (447) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +9 -1
  5. package/dest/client/factory.d.ts +5 -4
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +33 -15
  8. package/dest/client/interface.d.ts +14 -5
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +13 -9
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +93 -49
  13. package/dest/config.d.ts +153 -102
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +134 -35
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +1 -20
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +0 -21
  22. package/dest/index.d.ts +1 -2
  23. package/dest/index.d.ts.map +1 -1
  24. package/dest/index.js +0 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +99 -59
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/attestation_pool.js +267 -197
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +181 -65
  31. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/mocks.js +6 -4
  34. package/dest/mem_pools/index.d.ts +1 -2
  35. package/dest/mem_pools/index.d.ts.map +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts +4 -2
  37. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  38. package/dest/mem_pools/instrumentation.js +33 -15
  39. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  40. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +2 -1
  42. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +7 -1
  49. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  51. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +1 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +8 -6
  54. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +2 -2
  55. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  57. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +12 -5
  58. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool_v2/interfaces.js +2 -1
  60. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +29 -11
  61. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  62. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +46 -16
  63. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
  64. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  65. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -43
  66. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +4 -2
  67. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  68. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +6 -0
  69. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +2 -1
  70. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  71. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +97 -88
  72. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  73. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  74. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  75. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  76. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  77. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  78. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  79. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  80. package/dest/msg_validators/clock_tolerance.js +61 -3
  81. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -4
  82. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  83. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  84. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +10 -4
  85. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  86. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  87. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +21 -8
  88. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  89. package/dest/msg_validators/proposal_validator/proposal_validator.js +90 -44
  90. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  91. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  92. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +8 -15
  93. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  94. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  96. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  97. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  98. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  99. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  100. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  101. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  102. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  103. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  104. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  105. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  106. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  107. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  108. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  109. package/dest/msg_validators/tx_validator/factory.d.ts +27 -7
  110. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  111. package/dest/msg_validators/tx_validator/factory.js +47 -17
  112. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  113. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  114. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  115. package/dest/msg_validators/tx_validator/gas_validator.d.ts +48 -7
  116. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  117. package/dest/msg_validators/tx_validator/gas_validator.js +88 -41
  118. package/dest/msg_validators/tx_validator/index.d.ts +4 -1
  119. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  120. package/dest/msg_validators/tx_validator/index.js +3 -0
  121. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  122. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  124. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  125. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  127. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  128. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  130. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  131. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  132. package/dest/msg_validators/tx_validator/tx_validation_cache.js +69 -0
  133. package/dest/services/data_store.d.ts +1 -1
  134. package/dest/services/data_store.d.ts.map +1 -1
  135. package/dest/services/data_store.js +5 -5
  136. package/dest/services/discv5/discV5_service.d.ts +2 -1
  137. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  138. package/dest/services/discv5/discV5_service.js +35 -8
  139. package/dest/services/dummy_service.d.ts +11 -15
  140. package/dest/services/dummy_service.d.ts.map +1 -1
  141. package/dest/services/dummy_service.js +12 -16
  142. package/dest/services/encoding.d.ts +5 -1
  143. package/dest/services/encoding.d.ts.map +1 -1
  144. package/dest/services/encoding.js +7 -1
  145. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  146. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  147. package/dest/services/gossipsub/topic_score_params.js +21 -4
  148. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  149. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  150. package/dest/services/libp2p/instrumentation.js +14 -0
  151. package/dest/services/libp2p/libp2p_service.d.ts +36 -46
  152. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  153. package/dest/services/libp2p/libp2p_service.js +296 -244
  154. package/dest/services/peer-manager/metrics.d.ts +3 -1
  155. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  156. package/dest/services/peer-manager/metrics.js +6 -0
  157. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  158. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  159. package/dest/services/peer-manager/peer_manager.js +40 -11
  160. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  161. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  162. package/dest/services/peer-manager/peer_scoring.js +32 -10
  163. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  164. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  165. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +84 -71
  166. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +10 -6
  167. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  168. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  169. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  170. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  171. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +3 -1
  172. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  173. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +3 -0
  174. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  175. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  176. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  177. package/dest/services/reqresp/config.d.ts +3 -3
  178. package/dest/services/reqresp/config.d.ts.map +1 -1
  179. package/dest/services/reqresp/interface.d.ts +16 -18
  180. package/dest/services/reqresp/interface.d.ts.map +1 -1
  181. package/dest/services/reqresp/interface.js +10 -20
  182. package/dest/services/reqresp/metrics.d.ts +1 -1
  183. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  184. package/dest/services/reqresp/metrics.js +0 -1
  185. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  186. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  187. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +4 -2
  188. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  189. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  190. package/dest/services/reqresp/protocols/index.js +0 -1
  191. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  192. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  193. package/dest/services/reqresp/protocols/tx.js +1 -3
  194. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  195. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  196. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  197. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  198. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  199. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  200. package/dest/services/reqresp/reqresp.d.ts +7 -29
  201. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  202. package/dest/services/reqresp/reqresp.js +41 -214
  203. package/dest/services/service.d.ts +9 -12
  204. package/dest/services/service.d.ts.map +1 -1
  205. package/dest/services/tx_collection/config.d.ts +2 -23
  206. package/dest/services/tx_collection/config.d.ts.map +1 -1
  207. package/dest/services/tx_collection/config.js +2 -55
  208. package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
  209. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  210. package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
  211. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  212. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  213. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  214. package/dest/services/tx_collection/index.d.ts +2 -3
  215. package/dest/services/tx_collection/index.d.ts.map +1 -1
  216. package/dest/services/tx_collection/index.js +0 -1
  217. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  218. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  219. package/dest/services/tx_collection/instrumentation.js +0 -2
  220. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  221. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  222. package/dest/services/tx_collection/request_tracker.js +84 -0
  223. package/dest/services/tx_collection/tx_collection.d.ts +36 -55
  224. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  225. package/dest/services/tx_collection/tx_collection.js +275 -119
  226. package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
  227. package/dest/services/tx_collection/tx_collection_sink.js +2 -2
  228. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  229. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  230. package/dest/services/tx_collection/tx_source.js +9 -7
  231. package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
  232. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  233. package/dest/services/tx_file_store/tx_file_store.js +4 -14
  234. package/dest/services/tx_provider.d.ts +3 -1
  235. package/dest/services/tx_provider.d.ts.map +1 -1
  236. package/dest/services/tx_provider.js +3 -0
  237. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  238. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  239. package/dest/test-helpers/make-test-p2p-clients.js +5 -2
  240. package/dest/test-helpers/mock-pubsub.d.ts +23 -9
  241. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  242. package/dest/test-helpers/mock-pubsub.js +44 -44
  243. package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
  244. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  245. package/dest/test-helpers/reqresp-nodes.js +16 -18
  246. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  247. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  248. package/dest/test-helpers/test_tx_provider.js +3 -0
  249. package/dest/test-helpers/testbench-utils.d.ts +12 -14
  250. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  251. package/dest/test-helpers/testbench-utils.js +42 -15
  252. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  253. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  254. package/dest/testbench/p2p_client_testbench_worker.js +85 -39
  255. package/dest/testbench/worker_client_manager.d.ts +12 -6
  256. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  257. package/dest/testbench/worker_client_manager.js +57 -11
  258. package/dest/util.d.ts +12 -7
  259. package/dest/util.d.ts.map +1 -1
  260. package/dest/util.js +35 -14
  261. package/dest/versioning.d.ts +3 -6
  262. package/dest/versioning.d.ts.map +1 -1
  263. package/dest/versioning.js +3 -24
  264. package/package.json +15 -14
  265. package/src/bootstrap/bootstrap.ts +9 -1
  266. package/src/client/factory.ts +57 -8
  267. package/src/client/interface.ts +15 -11
  268. package/src/client/p2p_client.ts +106 -70
  269. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  270. package/src/config.ts +226 -36
  271. package/src/errors/p2p-service.error.ts +11 -0
  272. package/src/errors/reqresp.error.ts +0 -25
  273. package/src/index.ts +0 -1
  274. package/src/mem_pools/attestation_pool/attestation_pool.ts +318 -242
  275. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +204 -68
  276. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  277. package/src/mem_pools/index.ts +0 -3
  278. package/src/mem_pools/instrumentation.ts +22 -14
  279. package/src/mem_pools/tx_pool_v2/README.md +9 -1
  280. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  281. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  282. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  283. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
  284. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  285. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +15 -6
  286. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +2 -1
  287. package/src/mem_pools/tx_pool_v2/interfaces.ts +12 -4
  288. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +72 -20
  289. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
  290. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +16 -1
  291. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +101 -94
  292. package/src/msg_validators/attestation_validator/README.md +49 -0
  293. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  294. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -7
  295. package/src/msg_validators/clock_tolerance.ts +79 -3
  296. package/src/msg_validators/proposal_validator/README.md +123 -0
  297. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
  298. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
  299. package/src/msg_validators/proposal_validator/proposal_validator.ts +114 -47
  300. package/src/msg_validators/tx_validator/README.md +15 -3
  301. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
  302. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  303. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  304. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  305. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  306. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  307. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  308. package/src/msg_validators/tx_validator/factory.ts +61 -10
  309. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  310. package/src/msg_validators/tx_validator/gas_validator.ts +121 -39
  311. package/src/msg_validators/tx_validator/index.ts +3 -0
  312. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  313. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  314. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  315. package/src/msg_validators/tx_validator/tx_validation_cache.ts +102 -0
  316. package/src/services/data_store.ts +5 -13
  317. package/src/services/discv5/discV5_service.ts +38 -5
  318. package/src/services/dummy_service.ts +14 -39
  319. package/src/services/encoding.ts +9 -1
  320. package/src/services/gossipsub/topic_score_params.ts +36 -4
  321. package/src/services/libp2p/instrumentation.ts +14 -0
  322. package/src/services/libp2p/libp2p_service.ts +321 -276
  323. package/src/services/peer-manager/metrics.ts +7 -0
  324. package/src/services/peer-manager/peer_manager.ts +46 -11
  325. package/src/services/peer-manager/peer_scoring.ts +27 -5
  326. package/src/services/reqresp/README.md +215 -0
  327. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  328. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +83 -77
  329. package/src/services/reqresp/batch-tx-requester/interface.ts +13 -5
  330. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  331. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +5 -0
  332. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  333. package/src/services/reqresp/config.ts +2 -2
  334. package/src/services/reqresp/interface.ts +21 -47
  335. package/src/services/reqresp/metrics.ts +0 -1
  336. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +4 -2
  337. package/src/services/reqresp/protocols/index.ts +0 -1
  338. package/src/services/reqresp/protocols/tx.ts +1 -3
  339. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  340. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  341. package/src/services/reqresp/reqresp.ts +45 -260
  342. package/src/services/service.ts +12 -28
  343. package/src/services/tx_collection/config.ts +3 -80
  344. package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
  345. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  346. package/src/services/tx_collection/index.ts +1 -6
  347. package/src/services/tx_collection/instrumentation.ts +1 -7
  348. package/src/services/tx_collection/request_tracker.ts +127 -0
  349. package/src/services/tx_collection/tx_collection.ts +331 -176
  350. package/src/services/tx_collection/tx_collection_sink.ts +2 -2
  351. package/src/services/tx_collection/tx_source.ts +8 -7
  352. package/src/services/tx_file_store/tx_file_store.ts +5 -17
  353. package/src/services/tx_provider.ts +5 -0
  354. package/src/test-helpers/make-test-p2p-clients.ts +4 -1
  355. package/src/test-helpers/mock-pubsub.ts +46 -60
  356. package/src/test-helpers/reqresp-nodes.ts +13 -23
  357. package/src/test-helpers/test_tx_provider.ts +5 -0
  358. package/src/test-helpers/testbench-utils.ts +53 -28
  359. package/src/testbench/p2p_client_testbench_worker.ts +89 -55
  360. package/src/testbench/worker_client_manager.ts +72 -25
  361. package/src/util.ts +33 -18
  362. package/src/versioning.ts +3 -33
  363. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  364. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  365. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -304
  366. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  367. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  368. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  369. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  370. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  371. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  372. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  373. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  374. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  375. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  376. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  377. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  378. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  379. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  380. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  381. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  382. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  383. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  384. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  385. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  386. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  387. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  388. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  389. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  390. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  391. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  392. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  393. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  394. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  395. package/dest/mem_pools/tx_pool/index.js +0 -2
  396. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  397. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  398. package/dest/mem_pools/tx_pool/priority.js +0 -15
  399. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  400. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  401. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  402. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  403. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  404. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  405. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  406. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  407. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  408. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  409. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  410. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  411. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  412. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  413. package/dest/services/reqresp/protocols/block.js +0 -32
  414. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -54
  415. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  416. package/dest/services/tx_collection/fast_tx_collection.js +0 -327
  417. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  418. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  419. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  420. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -49
  421. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  422. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  423. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
  424. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  425. package/dest/services/tx_collection/slow_tx_collection.js +0 -211
  426. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -345
  427. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  428. package/src/mem_pools/tx_pool/README.md +0 -270
  429. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  430. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  431. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  432. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  433. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  434. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  435. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  436. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  437. package/src/mem_pools/tx_pool/index.ts +0 -2
  438. package/src/mem_pools/tx_pool/priority.ts +0 -20
  439. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  440. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  441. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  442. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  443. package/src/services/reqresp/protocols/block.ts +0 -37
  444. package/src/services/tx_collection/fast_tx_collection.ts +0 -387
  445. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
  446. package/src/services/tx_collection/proposal_tx_collector.ts +0 -113
  447. package/src/services/tx_collection/slow_tx_collection.ts +0 -266
@@ -1,14 +1,17 @@
1
1
  import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS } from '@aztec/constants';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
+ import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
4
+ import { computeContractClassId } from '@aztec/stdlib/contract';
3
5
  import { computeCalldataHash } from '@aztec/stdlib/hash';
4
- import { TX_ERROR_CALLDATA_COUNT_MISMATCH, TX_ERROR_CALLDATA_COUNT_TOO_LARGE, TX_ERROR_CONTRACT_CLASS_LOGS, TX_ERROR_CONTRACT_CLASS_LOG_COUNT, TX_ERROR_CONTRACT_CLASS_LOG_LENGTH, TX_ERROR_CONTRACT_CLASS_LOG_SORTING, TX_ERROR_INCORRECT_CALLDATA, TX_ERROR_INCORRECT_HASH, Tx } from '@aztec/stdlib/tx';
6
+ import { TX_ERROR_CALLDATA_COUNT_MISMATCH, TX_ERROR_CALLDATA_COUNT_TOO_LARGE, TX_ERROR_CONTRACT_CLASS_LOGS, TX_ERROR_CONTRACT_CLASS_LOG_COUNT, TX_ERROR_CONTRACT_CLASS_LOG_LENGTH, TX_ERROR_CONTRACT_CLASS_LOG_SORTING, TX_ERROR_INCORRECT_CALLDATA, TX_ERROR_INCORRECT_CONTRACT_CLASS_ID, TX_ERROR_INCORRECT_HASH, TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG, Tx } from '@aztec/stdlib/tx';
5
7
  export class DataTxValidator {
8
+ identifier = Symbol('DataTxValidator');
6
9
  #log;
7
10
  constructor(bindings){
8
11
  this.#log = createLogger('p2p:tx_validator:tx_data', bindings);
9
12
  }
10
13
  async validateTx(tx) {
11
- const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx);
14
+ const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx) ?? await this.#hasCorrectContractClassIds(tx);
12
15
  return reason ? {
13
16
  result: 'invalid',
14
17
  reason: [
@@ -77,4 +80,35 @@ export class DataTxValidator {
77
80
  }
78
81
  return undefined;
79
82
  }
83
+ async #hasCorrectContractClassIds(tx) {
84
+ const contractClassLogs = tx.getContractClassLogs();
85
+ for (const log of contractClassLogs){
86
+ if (!ContractClassPublishedEvent.isContractClassPublishedEvent(log)) {
87
+ continue;
88
+ }
89
+ let event;
90
+ try {
91
+ event = ContractClassPublishedEvent.fromLog(log);
92
+ } catch (e) {
93
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to parse contract class event: ${e}`);
94
+ return TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG;
95
+ }
96
+ try {
97
+ const { publicBytecodeCommitment } = await event.toContractClassPublicWithBytecodeCommitment();
98
+ const computedClassId = await computeContractClassId({
99
+ artifactHash: event.artifactHash,
100
+ privateFunctionsRoot: event.privateFunctionsRoot,
101
+ publicBytecodeCommitment
102
+ });
103
+ if (!computedClassId.equals(event.contractClassId)) {
104
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: contract class id mismatch. Claimed ${event.contractClassId}, computed ${computedClassId}`);
105
+ return TX_ERROR_INCORRECT_CONTRACT_CLASS_ID;
106
+ }
107
+ } catch (e) {
108
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to compute contract class id: ${e}`);
109
+ return TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG;
110
+ }
111
+ }
112
+ return undefined;
113
+ }
80
114
  }
@@ -39,6 +39,7 @@ import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
39
39
  import type { GlobalVariables, Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
40
40
  import type { UInt64 } from '@aztec/stdlib/types';
41
41
  import type { TxMetaData } from '../../mem_pools/tx_pool_v2/tx_metadata.js';
42
+ import { TxValidationCache } from './tx_validation_cache.js';
42
43
  /**
43
44
  * A validator paired with a peer penalty severity.
44
45
  * Used for gossip validation where each validator's failure triggers a peer penalization
@@ -59,7 +60,11 @@ export interface TransactionValidator {
59
60
  * The `doubleSpendValidator` failure is special-cased by the caller (`handleGossipedTx`)
60
61
  * to determine severity based on how recently the nullifier appeared.
61
62
  */
62
- export declare function createFirstStageTxValidationsForGossipedTransactions(timestamp: UInt64, blockNumber: BlockNumber, worldStateSynchronizer: WorldStateSynchronizer, gasFees: GasFees, l1ChainId: number, rollupVersion: number, protocolContractsHash: Fr, contractDataSource: ContractDataSource, txsPermitted: boolean, allowedInSetup?: AllowedElement[], bindings?: LoggerBindings): Record<string, TransactionValidator>;
63
+ export declare function createFirstStageTxValidationsForGossipedTransactions(timestamp: UInt64, blockNumber: BlockNumber, worldStateSynchronizer: WorldStateSynchronizer, gasFees: GasFees, l1ChainId: number, rollupVersion: number, protocolContractsHash: Fr, contractDataSource: ContractDataSource, txsPermitted: boolean, allowedInSetup?: AllowedElement[], bindings?: LoggerBindings, gasLimitOpts?: {
64
+ rollupManaLimit?: number;
65
+ maxBlockL2Gas?: number;
66
+ maxBlockDAGas?: number;
67
+ }): Record<string, TransactionValidator>;
63
68
  /**
64
69
  * Second stage of gossip validation — expensive proof verification.
65
70
  *
@@ -74,10 +79,10 @@ export declare function createSecondStageTxValidationsForGossipedTransactions(pr
74
79
  * are invalid against current state. State-dependent checks happen when the tx
75
80
  * enters the pending pool or during block building.
76
81
  */
77
- export declare function createTxValidatorForReqResponseReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
82
+ export declare function createTxValidatorForOnDemandReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
78
83
  l1ChainId: number;
79
84
  rollupVersion: number;
80
- }, bindings?: LoggerBindings): TxValidator;
85
+ }, bindings?: LoggerBindings, cache?: TxValidationCache): TxValidator;
81
86
  /**
82
87
  * Validators for txs received in block proposals.
83
88
  * Same as req/resp — well-formedness only. We must store these for block
@@ -86,14 +91,14 @@ export declare function createTxValidatorForReqResponseReceivedTxs(verifier: Cli
86
91
  export declare function createTxValidatorForBlockProposalReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
87
92
  l1ChainId: number;
88
93
  rollupVersion: number;
89
- }, bindings?: LoggerBindings): TxValidator;
94
+ }, bindings?: LoggerBindings, cache?: TxValidationCache): TxValidator;
90
95
  /**
91
96
  * Validators for unsolicited txs received over JSON-RPC (from a local wallet/PXE).
92
97
  * Full validation — all state-dependent checks are run. Proof verification is optional
93
98
  * (can be skipped for testing purposes). Fee enforcement is also optional (skipped for testing/dev).
94
99
  * Called from `AztecNodeService.isValidTx()`.
95
100
  */
96
- export declare function createTxValidatorForAcceptingTxsOverRPC(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted }: {
101
+ export declare function createTxValidatorForAcceptingTxsOverRPC(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted, rollupManaLimit, maxBlockL2Gas, maxBlockDAGas }: {
97
102
  l1ChainId: number;
98
103
  rollupVersion: number;
99
104
  setupAllowList: AllowedElement[];
@@ -102,6 +107,9 @@ export declare function createTxValidatorForAcceptingTxsOverRPC(db: MerkleTreeRe
102
107
  timestamp: UInt64;
103
108
  blockNumber: BlockNumber;
104
109
  txsPermitted: boolean;
110
+ rollupManaLimit: number;
111
+ maxBlockL2Gas?: number;
112
+ maxBlockDAGas?: number;
105
113
  }, bindings?: LoggerBindings): TxValidator<Tx>;
106
114
  /**
107
115
  * Validators for txs about to be included in a block by the sequencer.
@@ -125,5 +133,17 @@ export declare function createTxValidatorForBlockBuilding(db: MerkleTreeReadOper
125
133
  * Operates on `TxMetaData` rather than full `Tx` since metadata is pre-built by the pool.
126
134
  * Injected into `TxPoolV2` as the `createTxValidator` factory in `TxPoolV2Dependencies`.
127
135
  */
128
- export declare function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer: WorldStateSynchronizer, timestamp: bigint, blockNumber: BlockNumber, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTVELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFlNUU7Ozs7R0FJRztBQUNILE1BQU0sV0FBVyxvQkFBb0I7SUFDbkMsU0FBUyxFQUFFO1FBQ1QsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDakQsQ0FBQztJQUNGLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQztDQUM3QjtBQUVEOzs7Ozs7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
136
+ export declare function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer: WorldStateSynchronizer, timestamp: bigint, blockNumber: BlockNumber, gasLimitOpts: {
137
+ rollupManaLimit?: number;
138
+ maxBlockL2Gas?: number;
139
+ maxBlockDAGas?: number;
140
+ }, gasFees: GasFees, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
141
+ /**
142
+ * Creates a function that checks whether a tx's setup-phase calls are on the allow list.
143
+ *
144
+ * Uses the `PhasesTxValidator` on the full Tx. The result is stored as a boolean
145
+ * flag in `TxMetaData.allowedSetupCalls` at receipt time, so the pending pool
146
+ * migration validator can check it without needing the full Tx or its dependencies.
147
+ */
148
+ export declare function createCheckAllowedSetupCalls(contractDataSource: ContractDataSource, setupAllowList: AllowedElement[], getTimestamp: () => UInt64): (tx: Tx) => Promise<boolean>;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTVELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFnQjVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdEOzs7O0dBSUc7QUFDSCxNQUFNLFdBQVcsb0JBQW9CO0lBQ25DLFNBQVMsRUFBRTtRQUNULFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQ2pELENB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
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/factory.ts"],"names":[],"mappings":"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"}
@@ -36,12 +36,14 @@ import { DatabasePublicStateSource, MerkleTreeId } from '@aztec/stdlib/trees';
36
36
  import { AggregateTxValidator } from './aggregate_tx_validator.js';
37
37
  import { ArchiveCache } from './archive_cache.js';
38
38
  import { BlockHeaderTxValidator } from './block_header_validator.js';
39
+ import { CachedTxValidator } from './cached_tx_validator.js';
40
+ import { ContractInstanceTxValidator } from './contract_instance_validator.js';
39
41
  import { DataTxValidator } from './data_validator.js';
40
42
  import { DoubleSpendTxValidator } from './double_spend_validator.js';
41
- import { GasLimitsValidator, GasTxValidator } from './gas_validator.js';
43
+ import { GasLimitsValidator, GasTxValidator, MaxFeePerGasValidator } from './gas_validator.js';
42
44
  import { MetadataTxValidator } from './metadata_validator.js';
43
45
  import { NullifierCache } from './nullifier_cache.js';
44
- import { PhasesTxValidator } from './phases_validator.js';
46
+ import { AllowedSetupCallsMetaValidator, PhasesTxValidator } from './phases_validator.js';
45
47
  import { SizeTxValidator } from './size_validator.js';
46
48
  import { TimestampTxValidator } from './timestamp_validator.js';
47
49
  import { TxPermittedValidator } from './tx_permitted_validator.js';
@@ -54,7 +56,7 @@ import { TxProofValidator } from './tx_proof_validator.js';
54
56
  *
55
57
  * The `doubleSpendValidator` failure is special-cased by the caller (`handleGossipedTx`)
56
58
  * to determine severity based on how recently the nullifier appeared.
57
- */ export function createFirstStageTxValidationsForGossipedTransactions(timestamp, blockNumber, worldStateSynchronizer, gasFees, l1ChainId, rollupVersion, protocolContractsHash, contractDataSource, txsPermitted, allowedInSetup = [], bindings) {
59
+ */ export function createFirstStageTxValidationsForGossipedTransactions(timestamp, blockNumber, worldStateSynchronizer, gasFees, l1ChainId, rollupVersion, protocolContractsHash, contractDataSource, txsPermitted, allowedInSetup = [], bindings, gasLimitOpts) {
58
60
  const merkleTree = worldStateSynchronizer.getCommitted();
59
61
  return {
60
62
  timestampValidator: {
@@ -100,12 +102,16 @@ import { TxProofValidator } from './tx_proof_validator.js';
100
102
  severity: PeerErrorSeverity.MidToleranceError
101
103
  },
102
104
  gasValidator: {
103
- validator: new GasTxValidator(new DatabasePublicStateSource(merkleTree), ProtocolContractAddress.FeeJuice, gasFees, bindings),
105
+ validator: new GasTxValidator(new DatabasePublicStateSource(merkleTree), ProtocolContractAddress.FeeJuice, gasFees, bindings, gasLimitOpts),
104
106
  severity: PeerErrorSeverity.MidToleranceError
105
107
  },
106
108
  dataValidator: {
107
109
  validator: new DataTxValidator(bindings),
108
110
  severity: PeerErrorSeverity.MidToleranceError
111
+ },
112
+ contractInstanceValidator: {
113
+ validator: new ContractInstanceTxValidator(bindings),
114
+ severity: PeerErrorSeverity.MidToleranceError
109
115
  }
110
116
  };
111
117
  }
@@ -128,41 +134,44 @@ import { TxProofValidator } from './tx_proof_validator.js';
128
134
  * Used for req/resp and block proposal txs. These txs must be accepted for block
129
135
  * re-execution even though they may be invalid against current state — that is
130
136
  * caught later by the block building validator.
131
- */ function createTxValidatorForMinimumTxIntegrityChecks(verifier, { l1ChainId, rollupVersion }, bindings) {
132
- return new AggregateTxValidator(new MetadataTxValidator({
137
+ */ function createTxValidatorForMinimumTxIntegrityChecks(verifier, { l1ChainId, rollupVersion }, bindings, cache) {
138
+ const aggregate = new AggregateTxValidator(new MetadataTxValidator({
133
139
  l1ChainId: new Fr(l1ChainId),
134
140
  rollupVersion: new Fr(rollupVersion),
135
141
  protocolContractsHash,
136
142
  vkTreeRoot: getVKTreeRoot()
137
- }, bindings), new SizeTxValidator(bindings), new DataTxValidator(bindings), new TxProofValidator(verifier, bindings));
143
+ }, bindings), new SizeTxValidator(bindings), CachedTxValidator.new(new DataTxValidator(bindings), cache), new ContractInstanceTxValidator(bindings), CachedTxValidator.new(new TxProofValidator(verifier, bindings), cache));
144
+ // This validator is not state-dependent so we can cache it.
145
+ const identifier = Symbol('TxValidatorForMinimumTxIntegrityChecks');
146
+ return CachedTxValidator.newWithIdentifier(aggregate, identifier, cache);
138
147
  }
139
148
  /**
140
149
  * Validators for txs received via req/resp or filestores.
141
150
  * Checks well-formedness only — we must accept these for re-execution even if they
142
151
  * are invalid against current state. State-dependent checks happen when the tx
143
152
  * enters the pending pool or during block building.
144
- */ export function createTxValidatorForReqResponseReceivedTxs(verifier, { l1ChainId, rollupVersion }, bindings) {
153
+ */ export function createTxValidatorForOnDemandReceivedTxs(verifier, { l1ChainId, rollupVersion }, bindings, cache) {
145
154
  return createTxValidatorForMinimumTxIntegrityChecks(verifier, {
146
155
  l1ChainId,
147
156
  rollupVersion
148
- }, bindings);
157
+ }, bindings, cache);
149
158
  }
150
159
  /**
151
160
  * Validators for txs received in block proposals.
152
161
  * Same as req/resp — well-formedness only. We must store these for block
153
162
  * re-execution; their validity against state is checked during block building.
154
- */ export function createTxValidatorForBlockProposalReceivedTxs(verifier, { l1ChainId, rollupVersion }, bindings) {
163
+ */ export function createTxValidatorForBlockProposalReceivedTxs(verifier, { l1ChainId, rollupVersion }, bindings, cache) {
155
164
  return createTxValidatorForMinimumTxIntegrityChecks(verifier, {
156
165
  l1ChainId,
157
166
  rollupVersion
158
- }, bindings);
167
+ }, bindings, cache);
159
168
  }
160
169
  /**
161
170
  * Validators for unsolicited txs received over JSON-RPC (from a local wallet/PXE).
162
171
  * Full validation — all state-dependent checks are run. Proof verification is optional
163
172
  * (can be skipped for testing purposes). Fee enforcement is also optional (skipped for testing/dev).
164
173
  * Called from `AztecNodeService.isValidTx()`.
165
- */ export function createTxValidatorForAcceptingTxsOverRPC(db, contractDataSource, verifier, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted }, bindings) {
174
+ */ export function createTxValidatorForAcceptingTxsOverRPC(db, contractDataSource, verifier, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted, rollupManaLimit, maxBlockL2Gas, maxBlockDAGas }, bindings) {
166
175
  const validators = [
167
176
  new TxPermittedValidator(txsPermitted, bindings),
168
177
  new TimestampTxValidator({
@@ -179,10 +188,15 @@ import { TxProofValidator } from './tx_proof_validator.js';
179
188
  new PhasesTxValidator(contractDataSource, setupAllowList, timestamp, bindings),
180
189
  new BlockHeaderTxValidator(new ArchiveCache(db), bindings),
181
190
  new DoubleSpendTxValidator(new NullifierCache(db), bindings),
182
- new DataTxValidator(bindings)
191
+ new DataTxValidator(bindings),
192
+ new ContractInstanceTxValidator(bindings)
183
193
  ];
184
194
  if (!skipFeeEnforcement) {
185
- validators.push(new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, gasFees, bindings));
195
+ validators.push(new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, gasFees, bindings, {
196
+ rollupManaLimit,
197
+ maxBlockL2Gas,
198
+ maxBlockDAGas
199
+ }));
186
200
  }
187
201
  if (verifier) {
188
202
  validators.push(new TxProofValidator(verifier, bindings));
@@ -224,7 +238,7 @@ function createTxValidatorForValidatingAgainstCurrentState(nullifierSource, arch
224
238
  *
225
239
  * Operates on `TxMetaData` rather than full `Tx` since metadata is pre-built by the pool.
226
240
  * Injected into `TxPoolV2` as the `createTxValidator` factory in `TxPoolV2Dependencies`.
227
- */ export async function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, timestamp, blockNumber, bindings) {
241
+ */ export async function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, timestamp, blockNumber, gasLimitOpts, gasFees, bindings) {
228
242
  await worldStateSynchronizer.syncImmediate();
229
243
  const merkleTree = worldStateSynchronizer.getCommitted();
230
244
  const nullifierSource = {
@@ -238,8 +252,24 @@ function createTxValidatorForValidatingAgainstCurrentState(nullifierSource, arch
238
252
  return merkleTree.findLeafIndices(MerkleTreeId.ARCHIVE, archives);
239
253
  }
240
254
  };
241
- return new AggregateTxValidator(new GasLimitsValidator(bindings), new TimestampTxValidator({
255
+ return new AggregateTxValidator(new GasLimitsValidator({
256
+ ...gasLimitOpts,
257
+ bindings
258
+ }), new MaxFeePerGasValidator(gasFees, bindings), new TimestampTxValidator({
242
259
  timestamp,
243
260
  blockNumber
244
- }, bindings), new DoubleSpendTxValidator(nullifierSource, bindings), new BlockHeaderTxValidator(archiveSource, bindings));
261
+ }, bindings), new DoubleSpendTxValidator(nullifierSource, bindings), new BlockHeaderTxValidator(archiveSource, bindings), new AllowedSetupCallsMetaValidator(bindings));
262
+ }
263
+ /**
264
+ * Creates a function that checks whether a tx's setup-phase calls are on the allow list.
265
+ *
266
+ * Uses the `PhasesTxValidator` on the full Tx. The result is stored as a boolean
267
+ * flag in `TxMetaData.allowedSetupCalls` at receipt time, so the pending pool
268
+ * migration validator can check it without needing the full Tx or its dependencies.
269
+ */ export function createCheckAllowedSetupCalls(contractDataSource, setupAllowList, getTimestamp) {
270
+ return async (tx)=>{
271
+ const validator = new PhasesTxValidator(contractDataSource, setupAllowList, getTimestamp());
272
+ const result = await validator.validateTx(tx);
273
+ return result.result === 'valid';
274
+ };
245
275
  }
@@ -7,4 +7,4 @@ export type FeePayerBalanceDelta = {
7
7
  export declare function getTxFeeLimit(tx: Tx): bigint;
8
8
  export declare function getFeePayerClaimAmount(tx: Tx, feeJuiceAddress: AztecAddress): Promise<bigint>;
9
9
  export declare function getFeePayerBalanceDelta(tx: Tx, feeJuiceAddress: AztecAddress): Promise<FeePayerBalanceDelta>;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZmVlX3BheWVyX2JhbGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBRTdELE1BQU0sTUFBTSxvQkFBb0IsR0FBRztJQUNqQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFdBQVcsRUFBRSxNQUFNLENBQUM7Q0FDckIsQ0FBQztBQUlGLHdCQUFnQixhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRTVDO0FBRUQsd0JBQXNCLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBZ0JuRztBQUVELHdCQUFzQix1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBS2xIIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZmVlX3BheWVyX2JhbGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBRTdELE1BQU0sTUFBTSxvQkFBb0IsR0FBRztJQUNqQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFdBQVcsRUFBRSxNQUFNLENBQUM7Q0FDckIsQ0FBQztBQU9GLHdCQUFnQixhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRTVDO0FBRUQsd0JBQXNCLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBZ0JuRztBQUVELHdCQUFzQix1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBS2xIIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"fee_payer_balance.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/fee_payer_balance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAE5C;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnG;AAED,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAKlH"}
1
+ {"version":3,"file":"fee_payer_balance.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/fee_payer_balance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAOF,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAE5C;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnG;AAED,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAKlH"}
@@ -1,7 +1,11 @@
1
+ import { FeeJuiceArtifact } from '@aztec/protocol-contracts/fee-juice';
1
2
  import { getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
2
- import { FunctionSelector } from '@aztec/stdlib/abi';
3
+ import { FunctionSelector, getAllFunctionAbis } from '@aztec/stdlib/abi';
3
4
  import { TxExecutionPhase } from '@aztec/stdlib/tx';
4
- const increasePublicBalanceSelectorPromise = FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
5
+ const increasePublicBalanceSelectorPromise = (()=>{
6
+ const fn = getAllFunctionAbis(FeeJuiceArtifact).find((f)=>f.name === '_increase_public_balance');
7
+ return FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
8
+ })();
5
9
  export function getTxFeeLimit(tx) {
6
10
  return tx.data.constants.txContext.gasSettings.getFeeLimit().toBigInt();
7
11
  }
@@ -19,6 +19,21 @@ export interface HasGasLimitData {
19
19
  };
20
20
  };
21
21
  }
22
+ /** Structural interface for types that carry max fee per gas data, used by {@link MaxFeePerGasValidator}. */
23
+ export interface HasMaxFeePerGasData {
24
+ txHash: {
25
+ toString(): string;
26
+ };
27
+ data: {
28
+ constants: {
29
+ txContext: {
30
+ gasSettings: {
31
+ maxFeesPerGas: GasFees;
32
+ };
33
+ };
34
+ };
35
+ };
36
+ }
22
37
  /**
23
38
  * Validates that a transaction's gas limits are within acceptable bounds.
24
39
  *
@@ -33,20 +48,42 @@ export interface HasGasLimitData {
33
48
  */
34
49
  export declare class GasLimitsValidator<T extends HasGasLimitData> implements TxValidator<T> {
35
50
  #private;
36
- constructor(bindings?: LoggerBindings);
51
+ constructor(opts?: {
52
+ rollupManaLimit?: number;
53
+ maxBlockL2Gas?: number;
54
+ maxBlockDAGas?: number;
55
+ bindings?: LoggerBindings;
56
+ });
37
57
  validateTx(tx: T): Promise<TxValidationResult>;
38
- /** Checks gas limits are >= fixed minimums and <= AVM max processable L2 gas. */
58
+ /** Checks gas limits are >= fixed minimums and <= effective max gas (L2 and DA). */
39
59
  validateGasLimit(tx: T): TxValidationResult;
40
60
  }
61
+ /**
62
+ * Validates that a transaction's max fee per gas meets the current block's gas fees.
63
+ *
64
+ * Rejects transactions whose maxFeesPerGas is below the current block's gas fees
65
+ * on either dimension (DA or L2). This is a cheap, stateless check.
66
+ *
67
+ * Generic over T so it can validate both full {@link Tx} objects and {@link TxMetaData}
68
+ * (used during pending pool migration).
69
+ *
70
+ * Used by: pending pool migration (via factory), and indirectly by {@link GasTxValidator}.
71
+ */
72
+ export declare class MaxFeePerGasValidator<T extends HasMaxFeePerGasData> implements TxValidator<T> {
73
+ #private;
74
+ constructor(gasFees: GasFees, bindings?: LoggerBindings);
75
+ validateTx(tx: T): Promise<TxValidationResult>;
76
+ /** Checks maxFeesPerGas >= current block gas fees on both dimensions. */
77
+ validateMaxFeePerGas(tx: T): TxValidationResult;
78
+ }
41
79
  /**
42
80
  * Validates that a transaction can pay its gas fees.
43
81
  *
44
82
  * Runs three checks in order:
45
83
  * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
46
84
  * out of bounds.
47
- * 2. **Max fee per gas** — skips (not rejects) the tx if its maxFeesPerGas is below
48
- * the current block's gas fees. We skip rather than reject because the tx may
49
- * become eligible in a later block with lower fees.
85
+ * 2. **Max fee per gas** — rejects the tx if its maxFeesPerGas is below
86
+ * the current block's gas fees.
50
87
  * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
51
88
  * adds any pending claim from a setup-phase `_increase_public_balance` call, and
52
89
  * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
@@ -56,7 +93,11 @@ export declare class GasLimitsValidator<T extends HasGasLimitData> implements Tx
56
93
  export declare class GasTxValidator implements TxValidator<Tx> {
57
94
  #private;
58
95
  private bindings?;
59
- constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees, bindings?: LoggerBindings | undefined);
96
+ constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees, bindings?: LoggerBindings | undefined, opts?: {
97
+ rollupManaLimit?: number;
98
+ maxBlockL2Gas?: number;
99
+ maxBlockDAGas?: number;
100
+ });
60
101
  validateTx(tx: Tx): Promise<TxValidationResult>;
61
102
  /**
62
103
  * Checks the fee payer has enough FeeJuice balance to cover the tx's fee limit.
@@ -64,4 +105,4 @@ export declare class GasTxValidator implements TxValidator<Tx> {
64
105
  */
65
106
  validateTxFee(tx: Tx): Promise<TxValidationResult>;
66
107
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUtMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBSTFCLG9HQUFvRztBQUNwRyxNQUFNLFdBQVcsZUFBZTtJQUM5QixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFFSixTQUFTLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDcEIsU0FBUyxFQUFFO1lBQ1QsU0FBUyxFQUFFO2dCQUNULFdBQVcsRUFBRTtvQkFBRSxTQUFTLEVBQUUsR0FBRyxDQUFBO2lCQUFFLENBQUM7YUFDakMsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHFCQUFhLGtCQUFrQixDQUFDLENBQUMsU0FBUyxlQUFlLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUdsRixZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FFN0M7SUFFRCxpRkFBaUY7SUFDakYsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0F3QjFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILHFCQUFhLGNBQWUsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQVVsRCxPQUFPLENBQUMsUUFBUSxDQUFDO0lBSm5CLFlBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQ25DLGVBQWUsRUFBRSxZQUFZLEVBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQ1IsUUFBUSxDQUFDLDRCQUFnQixFQU1sQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQVNwRDtJQXlCRDs7O09BR0c7SUFDVSxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0F5QjlEO0NBQ0YifQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUtMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBSTFCLG9HQUFvRztBQUNwRyxNQUFNLFdBQVcsZUFBZTtJQUM5QixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFFSixTQUFTLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDcEIsU0FBUyxFQUFFO1lBQ1QsU0FBUyxFQUFFO2dCQUNULFdBQVcsRUFBRTtvQkFBRSxTQUFTLEVBQUUsR0FBRyxDQUFBO2lCQUFFLENBQUM7YUFDakMsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCw2R0FBNkc7QUFDN0csTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyxNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFDSixTQUFTLEVBQUU7WUFDVCxTQUFTLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFO29CQUFFLGFBQWEsRUFBRSxPQUFPLENBQUE7aUJBQUUsQ0FBQzthQUN6QyxDQUFDO1NBQ0gsQ0FBQztLQUNILENBQUM7Q0FDSDtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gscUJBQWEsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLGVBQWUsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7O0lBUWxGLFlBQVksSUFBSSxDQUFDLEVBQUU7UUFDakIsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3pCLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN2QixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDdkIsUUFBUSxDQUFDLEVBQUUsY0FBYyxDQUFDO0tBQzNCLEVBT0E7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FFN0M7SUFFRCxvRkFBb0Y7SUFDcEYsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0E4QzFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gscUJBQWEscUJBQXFCLENBQUMsQ0FBQyxTQUFTLG1CQUFtQixDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQzs7SUFJekYsWUFBWSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHdEQ7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FFN0M7SUFFRCx5RUFBeUU7SUFDekUsb0JBQW9CLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FrQjlDO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLFdBQVcsQ0FBQyxFQUFFLENBQUM7O0lBV2xELE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFKbkIsWUFDRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFDbkMsZUFBZSxFQUFFLFlBQVksRUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFDUixRQUFRLENBQUMsNEJBQWdCLEVBQ2pDLElBQUksQ0FBQyxFQUFFO1FBQUUsZUFBZSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFPcEY7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FhcEQ7SUFFRDs7O09BR0c7SUFDVSxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0E0QjlEO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"gas_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/gas_validator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAKL,KAAK,EAAE,EACP,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAI1B,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QAEJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE;YACT,SAAS,EAAE;gBACT,WAAW,EAAE;oBAAE,SAAS,EAAE,GAAG,CAAA;iBAAE,CAAC;aACjC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,eAAe,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAGlF,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7C;IAED,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAwB1C;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,YAAW,WAAW,CAAC,EAAE,CAAC;;IAUlD,OAAO,CAAC,QAAQ,CAAC;IAJnB,YACE,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,OAAO,EACR,QAAQ,CAAC,4BAAgB,EAMlC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CASpD;IAyBD;;;OAGG;IACU,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyB9D;CACF"}
1
+ {"version":3,"file":"gas_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/gas_validator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAKL,KAAK,EAAE,EACP,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAI1B,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QAEJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE;YACT,SAAS,EAAE;gBACT,WAAW,EAAE;oBAAE,SAAS,EAAE,GAAG,CAAA;iBAAE,CAAC;aACjC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,6GAA6G;AAC7G,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,SAAS,EAAE;gBACT,WAAW,EAAE;oBAAE,aAAa,EAAE,OAAO,CAAA;iBAAE,CAAC;aACzC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,eAAe,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAQlF,YAAY,IAAI,CAAC,EAAE;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;KAC3B,EAOA;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7C;IAED,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CA8C1C;CACF;AAED;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB,CAAC,CAAC,SAAS,mBAAmB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIzF,YAAY,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGtD;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7C;IAED,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAkB9C;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,YAAW,WAAW,CAAC,EAAE,CAAC;;IAWlD,OAAO,CAAC,QAAQ,CAAC;IAJnB,YACE,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,OAAO,EACR,QAAQ,CAAC,4BAAgB,EACjC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAOpF;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAapD;IAED;;;OAGG;IACU,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4B9D;CACF"}