@aztec/p2p 0.0.1-commit.b6e433891 → 0.0.1-commit.b9865e97

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 (385) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +1 -1
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +9 -1
  4. package/dest/client/factory.d.ts +4 -3
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +28 -23
  7. package/dest/client/interface.d.ts +14 -5
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +13 -9
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +78 -22
  12. package/dest/config.d.ts +131 -101
  13. package/dest/config.d.ts.map +1 -1
  14. package/dest/config.js +53 -8
  15. package/dest/errors/p2p-service.error.d.ts +9 -0
  16. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  17. package/dest/errors/p2p-service.error.js +10 -0
  18. package/dest/errors/reqresp.error.d.ts +1 -20
  19. package/dest/errors/reqresp.error.d.ts.map +1 -1
  20. package/dest/errors/reqresp.error.js +0 -21
  21. package/dest/index.d.ts +1 -2
  22. package/dest/index.d.ts.map +1 -1
  23. package/dest/index.js +0 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +96 -56
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.js +262 -196
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +175 -59
  30. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  31. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/mocks.js +6 -4
  33. package/dest/mem_pools/index.d.ts +1 -2
  34. package/dest/mem_pools/index.d.ts.map +1 -1
  35. package/dest/mem_pools/instrumentation.d.ts +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  37. package/dest/mem_pools/instrumentation.js +17 -1
  38. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +1 -5
  39. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +1 -7
  41. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  42. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  44. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  48. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +4 -1
  49. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +5 -2
  51. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +13 -6
  53. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
  54. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +75 -84
  56. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  57. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/attestation_validator/attestation_validator.js +34 -10
  59. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  60. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  61. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  62. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  63. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  64. package/dest/msg_validators/clock_tolerance.js +52 -0
  65. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -2
  66. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  67. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -2
  68. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  69. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +10 -2
  70. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  71. package/dest/msg_validators/proposal_validator/proposal_validator.js +44 -10
  72. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  73. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  74. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +8 -15
  75. package/dest/msg_validators/tx_validator/allowed_public_setup.js +3 -3
  76. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  77. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  78. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  79. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  80. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  81. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  82. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  83. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  84. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  86. package/dest/msg_validators/tx_validator/factory.d.ts +6 -5
  87. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  88. package/dest/msg_validators/tx_validator/factory.js +21 -11
  89. package/dest/msg_validators/tx_validator/gas_validator.d.ts +36 -4
  90. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  91. package/dest/msg_validators/tx_validator/gas_validator.js +50 -33
  92. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  93. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  94. package/dest/msg_validators/tx_validator/index.js +2 -0
  95. package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
  96. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  97. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  99. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  100. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  101. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  102. package/dest/services/data_store.d.ts +1 -1
  103. package/dest/services/data_store.d.ts.map +1 -1
  104. package/dest/services/data_store.js +5 -5
  105. package/dest/services/discv5/discV5_service.d.ts +2 -1
  106. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  107. package/dest/services/discv5/discV5_service.js +35 -8
  108. package/dest/services/dummy_service.d.ts +11 -15
  109. package/dest/services/dummy_service.d.ts.map +1 -1
  110. package/dest/services/dummy_service.js +12 -16
  111. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  112. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  113. package/dest/services/gossipsub/topic_score_params.js +21 -4
  114. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  115. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  116. package/dest/services/libp2p/instrumentation.js +14 -0
  117. package/dest/services/libp2p/libp2p_service.d.ts +36 -39
  118. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  119. package/dest/services/libp2p/libp2p_service.js +268 -241
  120. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  121. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  122. package/dest/services/peer-manager/peer_manager.js +36 -8
  123. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  124. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  125. package/dest/services/peer-manager/peer_scoring.js +32 -10
  126. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +1 -8
  127. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  128. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +38 -44
  129. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +8 -5
  130. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  131. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  132. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  133. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  134. package/dest/services/reqresp/config.d.ts +3 -3
  135. package/dest/services/reqresp/config.d.ts.map +1 -1
  136. package/dest/services/reqresp/interface.d.ts +16 -18
  137. package/dest/services/reqresp/interface.d.ts.map +1 -1
  138. package/dest/services/reqresp/interface.js +10 -20
  139. package/dest/services/reqresp/metrics.d.ts +1 -1
  140. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  141. package/dest/services/reqresp/metrics.js +0 -1
  142. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
  143. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  144. package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
  145. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  146. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  147. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +31 -28
  148. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +12 -7
  149. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  150. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +42 -24
  151. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  152. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  153. package/dest/services/reqresp/protocols/index.js +0 -1
  154. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  155. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  156. package/dest/services/reqresp/protocols/tx.js +1 -3
  157. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  158. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  159. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  160. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  161. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  162. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  163. package/dest/services/reqresp/reqresp.d.ts +7 -29
  164. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  165. package/dest/services/reqresp/reqresp.js +26 -207
  166. package/dest/services/service.d.ts +9 -12
  167. package/dest/services/service.d.ts.map +1 -1
  168. package/dest/services/tx_collection/config.d.ts +2 -23
  169. package/dest/services/tx_collection/config.d.ts.map +1 -1
  170. package/dest/services/tx_collection/config.js +2 -55
  171. package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
  172. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  173. package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
  174. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  175. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  176. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  177. package/dest/services/tx_collection/index.d.ts +2 -3
  178. package/dest/services/tx_collection/index.d.ts.map +1 -1
  179. package/dest/services/tx_collection/index.js +0 -1
  180. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  181. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  182. package/dest/services/tx_collection/instrumentation.js +0 -2
  183. package/dest/services/tx_collection/tx_collection.d.ts +35 -51
  184. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  185. package/dest/services/tx_collection/tx_collection.js +275 -119
  186. package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
  187. package/dest/services/tx_collection/tx_collection_sink.js +2 -2
  188. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  189. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  190. package/dest/services/tx_collection/tx_source.js +9 -7
  191. package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
  192. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  193. package/dest/services/tx_file_store/tx_file_store.js +4 -14
  194. package/dest/services/tx_provider.d.ts +3 -1
  195. package/dest/services/tx_provider.d.ts.map +1 -1
  196. package/dest/services/tx_provider.js +3 -0
  197. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  198. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  199. package/dest/test-helpers/make-test-p2p-clients.js +5 -2
  200. package/dest/test-helpers/mock-pubsub.d.ts +23 -9
  201. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  202. package/dest/test-helpers/mock-pubsub.js +44 -44
  203. package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
  204. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  205. package/dest/test-helpers/reqresp-nodes.js +16 -18
  206. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  207. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  208. package/dest/test-helpers/test_tx_provider.js +3 -0
  209. package/dest/test-helpers/testbench-utils.d.ts +12 -14
  210. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  211. package/dest/test-helpers/testbench-utils.js +19 -13
  212. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  213. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  214. package/dest/testbench/p2p_client_testbench_worker.js +84 -40
  215. package/dest/testbench/worker_client_manager.d.ts +10 -6
  216. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  217. package/dest/testbench/worker_client_manager.js +51 -9
  218. package/dest/util.d.ts +11 -6
  219. package/dest/util.d.ts.map +1 -1
  220. package/dest/util.js +35 -14
  221. package/dest/versioning.d.ts +3 -6
  222. package/dest/versioning.d.ts.map +1 -1
  223. package/dest/versioning.js +3 -24
  224. package/package.json +15 -14
  225. package/src/bootstrap/bootstrap.ts +9 -1
  226. package/src/client/factory.ts +48 -23
  227. package/src/client/interface.ts +15 -11
  228. package/src/client/p2p_client.ts +91 -43
  229. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  230. package/src/config.ts +107 -7
  231. package/src/errors/p2p-service.error.ts +11 -0
  232. package/src/errors/reqresp.error.ts +0 -25
  233. package/src/index.ts +0 -1
  234. package/src/mem_pools/attestation_pool/attestation_pool.ts +313 -238
  235. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +198 -62
  236. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  237. package/src/mem_pools/index.ts +0 -3
  238. package/src/mem_pools/instrumentation.ts +5 -1
  239. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +1 -9
  240. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  241. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  242. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  243. package/src/mem_pools/tx_pool_v2/interfaces.ts +3 -0
  244. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +20 -8
  245. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +75 -90
  246. package/src/msg_validators/attestation_validator/attestation_validator.ts +38 -7
  247. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -7
  248. package/src/msg_validators/clock_tolerance.ts +69 -0
  249. package/src/msg_validators/proposal_validator/README.md +1 -1
  250. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +12 -2
  251. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +17 -2
  252. package/src/msg_validators/proposal_validator/proposal_validator.ts +51 -8
  253. package/src/msg_validators/tx_validator/README.md +11 -3
  254. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
  255. package/src/msg_validators/tx_validator/allowed_public_setup.ts +3 -3
  256. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  257. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  258. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  259. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  260. package/src/msg_validators/tx_validator/factory.ts +25 -7
  261. package/src/msg_validators/tx_validator/gas_validator.ts +82 -33
  262. package/src/msg_validators/tx_validator/index.ts +2 -0
  263. package/src/msg_validators/tx_validator/phases_validator.ts +1 -1
  264. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  265. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  266. package/src/services/data_store.ts +5 -13
  267. package/src/services/discv5/discV5_service.ts +38 -5
  268. package/src/services/dummy_service.ts +14 -39
  269. package/src/services/gossipsub/topic_score_params.ts +36 -4
  270. package/src/services/libp2p/instrumentation.ts +14 -0
  271. package/src/services/libp2p/libp2p_service.ts +297 -274
  272. package/src/services/peer-manager/peer_manager.ts +41 -8
  273. package/src/services/peer-manager/peer_scoring.ts +27 -5
  274. package/src/services/reqresp/README.md +0 -14
  275. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +42 -52
  276. package/src/services/reqresp/batch-tx-requester/interface.ts +11 -4
  277. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  278. package/src/services/reqresp/config.ts +2 -2
  279. package/src/services/reqresp/interface.ts +21 -47
  280. package/src/services/reqresp/metrics.ts +0 -1
  281. package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
  282. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +34 -30
  283. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -20
  284. package/src/services/reqresp/protocols/index.ts +0 -1
  285. package/src/services/reqresp/protocols/tx.ts +1 -3
  286. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  287. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  288. package/src/services/reqresp/reqresp.ts +29 -252
  289. package/src/services/service.ts +12 -28
  290. package/src/services/tx_collection/config.ts +3 -80
  291. package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
  292. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  293. package/src/services/tx_collection/index.ts +1 -6
  294. package/src/services/tx_collection/instrumentation.ts +1 -7
  295. package/src/services/tx_collection/tx_collection.ts +330 -173
  296. package/src/services/tx_collection/tx_collection_sink.ts +2 -2
  297. package/src/services/tx_collection/tx_source.ts +8 -7
  298. package/src/services/tx_file_store/tx_file_store.ts +5 -17
  299. package/src/services/tx_provider.ts +5 -0
  300. package/src/test-helpers/make-test-p2p-clients.ts +3 -0
  301. package/src/test-helpers/mock-pubsub.ts +46 -60
  302. package/src/test-helpers/reqresp-nodes.ts +12 -22
  303. package/src/test-helpers/test_tx_provider.ts +5 -0
  304. package/src/test-helpers/testbench-utils.ts +23 -26
  305. package/src/testbench/p2p_client_testbench_worker.ts +89 -54
  306. package/src/testbench/worker_client_manager.ts +59 -20
  307. package/src/util.ts +32 -17
  308. package/src/versioning.ts +3 -33
  309. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  310. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  311. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  312. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  313. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  314. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  315. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  316. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  317. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  318. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  319. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  320. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  321. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  322. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  323. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  324. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  325. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  326. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -123
  327. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  328. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  329. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  330. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  331. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  332. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  333. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  334. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  335. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  336. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  337. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  338. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  339. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  340. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  341. package/dest/mem_pools/tx_pool/index.js +0 -2
  342. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  343. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  344. package/dest/mem_pools/tx_pool/priority.js +0 -15
  345. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  346. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  347. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  348. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  349. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  350. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -402
  351. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  352. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  353. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  354. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  355. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  356. package/dest/services/reqresp/protocols/block.js +0 -32
  357. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -51
  358. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  359. package/dest/services/tx_collection/fast_tx_collection.js +0 -311
  360. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  361. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  362. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  363. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
  364. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  365. package/dest/services/tx_collection/slow_tx_collection.js +0 -211
  366. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -344
  367. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  368. package/src/mem_pools/tx_pool/README.md +0 -270
  369. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  370. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  371. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  372. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -163
  373. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  374. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  375. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  376. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  377. package/src/mem_pools/tx_pool/index.ts +0 -2
  378. package/src/mem_pools/tx_pool/priority.ts +0 -20
  379. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  380. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -321
  381. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  382. package/src/services/reqresp/protocols/block.ts +0 -37
  383. package/src/services/tx_collection/fast_tx_collection.ts +0 -361
  384. package/src/services/tx_collection/proposal_tx_collector.ts +0 -108
  385. package/src/services/tx_collection/slow_tx_collection.ts +0 -266
@@ -1 +1 @@
1
- {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EASL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGrD,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAMpD;CAmGF"}
1
+ {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAIvF,OAAO,EAWL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IACrD,SAAgB,UAAU,EAAE,MAAM,CAA6B;IAI/D,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOpD;CAuIF"}
@@ -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
@@ -78,10 +79,10 @@ export declare function createSecondStageTxValidationsForGossipedTransactions(pr
78
79
  * are invalid against current state. State-dependent checks happen when the tx
79
80
  * enters the pending pool or during block building.
80
81
  */
81
- export declare function createTxValidatorForReqResponseReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
82
+ export declare function createTxValidatorForOnDemandReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
82
83
  l1ChainId: number;
83
84
  rollupVersion: number;
84
- }, bindings?: LoggerBindings): TxValidator;
85
+ }, bindings?: LoggerBindings, cache?: TxValidationCache): TxValidator;
85
86
  /**
86
87
  * Validators for txs received in block proposals.
87
88
  * Same as req/resp — well-formedness only. We must store these for block
@@ -90,7 +91,7 @@ export declare function createTxValidatorForReqResponseReceivedTxs(verifier: Cli
90
91
  export declare function createTxValidatorForBlockProposalReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
91
92
  l1ChainId: number;
92
93
  rollupVersion: number;
93
- }, bindings?: LoggerBindings): TxValidator;
94
+ }, bindings?: LoggerBindings, cache?: TxValidationCache): TxValidator;
94
95
  /**
95
96
  * Validators for unsolicited txs received over JSON-RPC (from a local wallet/PXE).
96
97
  * Full validation — all state-dependent checks are run. Proof verification is optional
@@ -136,7 +137,7 @@ export declare function createTxValidatorForTransactionsEnteringPendingTxPool(wo
136
137
  rollupManaLimit?: number;
137
138
  maxBlockL2Gas?: number;
138
139
  maxBlockDAGas?: number;
139
- }, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
140
+ }, gasFees: GasFees, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
140
141
  /**
141
142
  * Creates a function that checks whether a tx's setup-phase calls are on the allow list.
142
143
  *
@@ -145,4 +146,4 @@ export declare function createTxValidatorForTransactionsEnteringPendingTxPool(wo
145
146
  * migration validator can check it without needing the full Tx or its dependencies.
146
147
  */
147
148
  export declare function createCheckAllowedSetupCalls(contractDataSource: ContractDataSource, setupAllowList: AllowedElement[], getTimestamp: () => UInt64): (tx: Tx) => Promise<boolean>;
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTVELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFlNUU7Ozs7R0FJRztBQUNILE1BQU0sV0FBVyxvQkFBb0I7SUFDbkMsU0FBUyxFQUFFO1FBQ1QsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDakQsQ0FBQztJQUNGLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQztDQUM3QjtBQUVEOzs7Ozs7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
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,9 +36,11 @@ 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
46
  import { AllowedSetupCallsMetaValidator, PhasesTxValidator } from './phases_validator.js';
@@ -106,6 +108,10 @@ import { TxProofValidator } from './tx_proof_validator.js';
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,34 +134,37 @@ 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).
@@ -179,7 +188,8 @@ 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
195
  validators.push(new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, gasFees, bindings, {
@@ -228,7 +238,7 @@ function createTxValidatorForValidatingAgainstCurrentState(nullifierSource, arch
228
238
  *
229
239
  * Operates on `TxMetaData` rather than full `Tx` since metadata is pre-built by the pool.
230
240
  * Injected into `TxPoolV2` as the `createTxValidator` factory in `TxPoolV2Dependencies`.
231
- */ export async function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, timestamp, blockNumber, gasLimitOpts, bindings) {
241
+ */ export async function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, timestamp, blockNumber, gasLimitOpts, gasFees, bindings) {
232
242
  await worldStateSynchronizer.syncImmediate();
233
243
  const merkleTree = worldStateSynchronizer.getCommitted();
234
244
  const nullifierSource = {
@@ -245,7 +255,7 @@ function createTxValidatorForValidatingAgainstCurrentState(nullifierSource, arch
245
255
  return new AggregateTxValidator(new GasLimitsValidator({
246
256
  ...gasLimitOpts,
247
257
  bindings
248
- }), new TimestampTxValidator({
258
+ }), new MaxFeePerGasValidator(gasFees, bindings), new TimestampTxValidator({
249
259
  timestamp,
250
260
  blockNumber
251
261
  }, bindings), new DoubleSpendTxValidator(nullifierSource, bindings), new BlockHeaderTxValidator(archiveSource, bindings), new AllowedSetupCallsMetaValidator(bindings));
@@ -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
  *
@@ -43,15 +58,32 @@ export declare class GasLimitsValidator<T extends HasGasLimitData> implements Tx
43
58
  /** Checks gas limits are >= fixed minimums and <= effective max gas (L2 and DA). */
44
59
  validateGasLimit(tx: T): TxValidationResult;
45
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
+ }
46
79
  /**
47
80
  * Validates that a transaction can pay its gas fees.
48
81
  *
49
82
  * Runs three checks in order:
50
83
  * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
51
84
  * out of bounds.
52
- * 2. **Max fee per gas** — skips (not rejects) the tx if its maxFeesPerGas is below
53
- * the current block's gas fees. We skip rather than reject because the tx may
54
- * 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.
55
87
  * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
56
88
  * adds any pending claim from a setup-phase `_increase_public_balance` call, and
57
89
  * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
@@ -73,4 +105,4 @@ export declare class GasTxValidator implements TxValidator<Tx> {
73
105
  */
74
106
  validateTxFee(tx: Tx): Promise<TxValidationResult>;
75
107
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUtMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBSTFCLG9HQUFvRztBQUNwRyxNQUFNLFdBQVcsZUFBZTtJQUM5QixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFFSixTQUFTLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDcEIsU0FBUyxFQUFFO1lBQ1QsU0FBUyxFQUFFO2dCQUNULFdBQVcsRUFBRTtvQkFBRSxTQUFTLEVBQUUsR0FBRyxDQUFBO2lCQUFFLENBQUM7YUFDakMsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHFCQUFhLGtCQUFrQixDQUFDLENBQUMsU0FBUyxlQUFlLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQVFsRixZQUFZLElBQUksQ0FBQyxFQUFFO1FBQ2pCLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN6QixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDdkIsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQztLQUMzQixFQU9BO0lBRUQsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBRTdDO0lBRUQsb0ZBQW9GO0lBQ3BGLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBbUMxQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxxQkFBYSxjQUFlLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFXbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUpuQixZQUNFLGdCQUFnQixFQUFFLGlCQUFpQixFQUNuQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixPQUFPLEVBQUUsT0FBTyxFQUNSLFFBQVEsQ0FBQyw0QkFBZ0IsRUFDakMsSUFBSSxDQUFDLEVBQUU7UUFBRSxlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxhQUFhLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQU9wRjtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQVlwRDtJQXlCRDs7O09BR0c7SUFDVSxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0F5QjlEO0NBQ0YifQ==
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":"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;;;;;;;;;;;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,CAmC1C;CACF;AAED;;;;;;;;;;;;;;GAcG;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,CAYpD;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"}
@@ -44,7 +44,7 @@ import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
44
44
  return {
45
45
  result: 'invalid',
46
46
  reason: [
47
- TX_ERROR_INSUFFICIENT_GAS_LIMIT
47
+ `${TX_ERROR_INSUFFICIENT_GAS_LIMIT} (required=da:${minGasLimits.daGas},l2:${minGasLimits.l2Gas} got=da:${gasLimits.daGas},l2:${gasLimits.l2Gas})`
48
48
  ]
49
49
  };
50
50
  }
@@ -58,7 +58,7 @@ import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
58
58
  return {
59
59
  result: 'invalid',
60
60
  reason: [
61
- TX_ERROR_GAS_LIMIT_TOO_HIGH
61
+ `${TX_ERROR_GAS_LIMIT_TOO_HIGH} (l2Gas=${gasLimits.l2Gas}, max=${this.#effectiveMaxL2Gas})`
62
62
  ]
63
63
  };
64
64
  }
@@ -71,7 +71,47 @@ import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
71
71
  return {
72
72
  result: 'invalid',
73
73
  reason: [
74
- TX_ERROR_GAS_LIMIT_TOO_HIGH
74
+ `${TX_ERROR_GAS_LIMIT_TOO_HIGH} (daGas=${gasLimits.daGas}, max=${this.#effectiveMaxDAGas})`
75
+ ]
76
+ };
77
+ }
78
+ return {
79
+ result: 'valid'
80
+ };
81
+ }
82
+ }
83
+ /**
84
+ * Validates that a transaction's max fee per gas meets the current block's gas fees.
85
+ *
86
+ * Rejects transactions whose maxFeesPerGas is below the current block's gas fees
87
+ * on either dimension (DA or L2). This is a cheap, stateless check.
88
+ *
89
+ * Generic over T so it can validate both full {@link Tx} objects and {@link TxMetaData}
90
+ * (used during pending pool migration).
91
+ *
92
+ * Used by: pending pool migration (via factory), and indirectly by {@link GasTxValidator}.
93
+ */ export class MaxFeePerGasValidator {
94
+ #log;
95
+ #gasFees;
96
+ constructor(gasFees, bindings){
97
+ this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
98
+ this.#gasFees = gasFees;
99
+ }
100
+ validateTx(tx) {
101
+ return Promise.resolve(this.validateMaxFeePerGas(tx));
102
+ }
103
+ /** Checks maxFeesPerGas >= current block gas fees on both dimensions. */ validateMaxFeePerGas(tx) {
104
+ const maxFeesPerGas = tx.data.constants.txContext.gasSettings.maxFeesPerGas;
105
+ const notEnoughMaxFees = maxFeesPerGas.feePerDaGas < this.#gasFees.feePerDaGas || maxFeesPerGas.feePerL2Gas < this.#gasFees.feePerL2Gas;
106
+ if (notEnoughMaxFees) {
107
+ this.#log.verbose(`Rejecting transaction ${tx.txHash.toString()} due to insufficient fee per gas`, {
108
+ txMaxFeesPerGas: maxFeesPerGas.toInspect(),
109
+ currentGasFees: this.#gasFees.toInspect()
110
+ });
111
+ return {
112
+ result: 'invalid',
113
+ reason: [
114
+ `${TX_ERROR_INSUFFICIENT_FEE_PER_GAS} (maxFee=da:${maxFeesPerGas.feePerDaGas},l2:${maxFeesPerGas.feePerL2Gas} required=da:${this.#gasFees.feePerDaGas},l2:${this.#gasFees.feePerL2Gas})`
75
115
  ]
76
116
  };
77
117
  }
@@ -86,9 +126,8 @@ import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
86
126
  * Runs three checks in order:
87
127
  * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
88
128
  * out of bounds.
89
- * 2. **Max fee per gas** — skips (not rejects) the tx if its maxFeesPerGas is below
90
- * the current block's gas fees. We skip rather than reject because the tx may
91
- * become eligible in a later block with lower fees.
129
+ * 2. **Max fee per gas** — rejects the tx if its maxFeesPerGas is below
130
+ * the current block's gas fees.
92
131
  * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
93
132
  * adds any pending claim from a setup-phase `_increase_public_balance` call, and
94
133
  * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
@@ -115,37 +154,15 @@ import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
115
154
  bindings: this.bindings
116
155
  }).validateGasLimit(tx);
117
156
  if (gasLimitValidation.result === 'invalid') {
118
- return Promise.resolve(gasLimitValidation);
157
+ return gasLimitValidation;
119
158
  }
120
- if (this.#shouldSkip(tx)) {
121
- return Promise.resolve({
122
- result: 'skipped',
123
- reason: [
124
- TX_ERROR_INSUFFICIENT_FEE_PER_GAS
125
- ]
126
- });
159
+ const maxFeeValidation = new MaxFeePerGasValidator(this.#gasFees, this.bindings).validateMaxFeePerGas(tx);
160
+ if (maxFeeValidation.result === 'invalid') {
161
+ return maxFeeValidation;
127
162
  }
128
163
  return await this.validateTxFee(tx);
129
164
  }
130
165
  /**
131
- * Check whether the tx's max fees are valid for the current block, and skip if not.
132
- * We skip instead of invalidating since the tx may become eligible later.
133
- * Note that circuits check max fees even if fee payer is unset, so we
134
- * keep this validation even if the tx does not pay fees.
135
- */ #shouldSkip(tx) {
136
- const gasSettings = tx.data.constants.txContext.gasSettings;
137
- // Skip the tx if its max fees are not enough for the current block's gas fees.
138
- const maxFeesPerGas = gasSettings.maxFeesPerGas;
139
- const notEnoughMaxFees = maxFeesPerGas.feePerDaGas < this.#gasFees.feePerDaGas || maxFeesPerGas.feePerL2Gas < this.#gasFees.feePerL2Gas;
140
- if (notEnoughMaxFees) {
141
- this.#log.verbose(`Skipping transaction ${tx.getTxHash().toString()} due to insufficient fee per gas`, {
142
- txMaxFeesPerGas: maxFeesPerGas.toInspect(),
143
- currentGasFees: this.#gasFees.toInspect()
144
- });
145
- }
146
- return notEnoughMaxFees;
147
- }
148
- /**
149
166
  * Checks the fee payer has enough FeeJuice balance to cover the tx's fee limit.
150
167
  * Accounts for any pending claim from a setup-phase `_increase_public_balance` call.
151
168
  */ async validateTxFee(tx) {
@@ -166,7 +183,7 @@ import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
166
183
  return {
167
184
  result: 'invalid',
168
185
  reason: [
169
- TX_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE
186
+ `${TX_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE} (required=${feeLimit}, available=${balance})`
170
187
  ]
171
188
  };
172
189
  }
@@ -14,4 +14,6 @@ export * from './tx_permitted_validator.js';
14
14
  export * from './timestamp_validator.js';
15
15
  export * from './size_validator.js';
16
16
  export * from './factory.js';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUMifQ==
17
+ export * from './tx_validation_cache.js';
18
+ export * from './cached_tx_validator.js';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
@@ -14,3 +14,5 @@ export * from './tx_permitted_validator.js';
14
14
  export * from './timestamp_validator.js';
15
15
  export * from './size_validator.js';
16
16
  export * from './factory.js';
17
+ export * from './tx_validation_cache.js';
18
+ export * from './cached_tx_validator.js';
@@ -21,7 +21,7 @@ export class PhasesTxValidator {
21
21
  // which are needed for public FPC flows, but fail if the account contract hasnt been deployed yet,
22
22
  // which is what we're trying to do as part of the current txs.
23
23
  // We only need to create/revert checkpoint here because of this addNewContracts call.
24
- await this.contractsDB.addNewContracts(tx);
24
+ this.contractsDB.addNewContracts(tx);
25
25
  if (!tx.data.forPublic) {
26
26
  this.#log.debug(`Tx ${tx.getTxHash().toString()} does not contain enqueued public functions. Skipping phases validation.`);
27
27
  return {
@@ -4,7 +4,8 @@ import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx'
4
4
  export declare class TxProofValidator implements TxValidator<Tx> {
5
5
  #private;
6
6
  private verifier;
7
+ readonly identifier: symbol;
7
8
  constructor(verifier: ClientProtocolCircuitVerifier, bindings?: LoggerBindings);
8
9
  validateTx(tx: Tx): Promise<TxValidationResult>;
9
10
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvb2ZfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL3R4X3Byb29mX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQTBCLEVBQUUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekcscUJBQWEsZ0JBQWlCLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFJcEQsT0FBTyxDQUFDLFFBQVE7SUFEbEIsWUFDVSxRQUFRLEVBQUUsNkJBQTZCLEVBQy9DLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FRcEQ7Q0FDRiJ9
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvb2ZfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL3R4X3Byb29mX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQTBCLEVBQUUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekcscUJBQWEsZ0JBQWlCLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFNcEQsT0FBTyxDQUFDLFFBQVE7SUFMbEIsU0FBZ0IsVUFBVSxFQUFFLE1BQU0sQ0FBOEI7SUFJaEUsWUFDVSxRQUFRLEVBQUUsNkJBQTZCLEVBQy9DLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FRcEQ7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"tx_proof_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/tx_proof_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAA0B,EAAE,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzG,qBAAa,gBAAiB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAIpD,OAAO,CAAC,QAAQ;IADlB,YACU,QAAQ,EAAE,6BAA6B,EAC/C,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQpD;CACF"}
1
+ {"version":3,"file":"tx_proof_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/tx_proof_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAA0B,EAAE,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzG,qBAAa,gBAAiB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAMpD,OAAO,CAAC,QAAQ;IALlB,SAAgB,UAAU,EAAE,MAAM,CAA8B;IAIhE,YACU,QAAQ,EAAE,6BAA6B,EAC/C,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQpD;CACF"}
@@ -2,9 +2,11 @@ import { createLogger } from '@aztec/foundation/log';
2
2
  import { TX_ERROR_INVALID_PROOF } from '@aztec/stdlib/tx';
3
3
  export class TxProofValidator {
4
4
  verifier;
5
+ identifier;
5
6
  #log;
6
7
  constructor(verifier, bindings){
7
8
  this.verifier = verifier;
9
+ this.identifier = Symbol('TxProofValidator');
8
10
  this.#log = createLogger('p2p:tx_validator:proof', bindings);
9
11
  }
10
12
  async validateTx(tx) {
@@ -0,0 +1,48 @@
1
+ import type { Tx, TxValidationResult } from '@aztec/stdlib/tx';
2
+ /**
3
+ * Minimal interface consumed by {@link CachedTxValidator}.
4
+ * Keeping the dependency on an interface lets callers (and tests) substitute any cache implementation.
5
+ */
6
+ export interface ITxValidationCache {
7
+ /** Returns the cached promise if present, otherwise calls `validate`, caches its promise, and returns it. */
8
+ getOrValidate(validatorSymbol: symbol, tx: Tx, validate: () => Promise<TxValidationResult>): Promise<TxValidationResult>;
9
+ }
10
+ /**
11
+ * Caches per-validator tx validation results to avoid redundant work across repeated validation calls.
12
+ *
13
+ * The cache key is composed from the validator symbol and tx hash, ensuring results are
14
+ * scoped to the specific validator that produced them.
15
+ *
16
+ * Promises are stored before they are awaited, so concurrent calls for the same pair share
17
+ * a single in-flight validation rather than launching duplicate work.
18
+ *
19
+ * Entries are evicted in least-recently-used order once the cache reaches `maxSize`.
20
+ */
21
+ export declare class TxValidationCache implements ITxValidationCache {
22
+ #private;
23
+ private readonly entries;
24
+ private readonly txHashesCache;
25
+ constructor(maxSize: number);
26
+ /**
27
+ * Computes the cache key scoping a validation result to a specific validator and tx.
28
+ *
29
+ * @param validatorSymbol - The symbol of the validator.
30
+ * @param tx - The tx to compute the key for.
31
+ * @returns The cache key.
32
+ *
33
+ * Note: the key should NOT use the tx.hash because it can't be trusted at this point.
34
+ */
35
+ key(validatorSymbol: symbol, tx: Tx): string;
36
+ /** Returns the cached promise for the given key, or undefined if not cached. Refreshes recency. */
37
+ get(key: string): Promise<TxValidationResult> | undefined;
38
+ /** Stores a validation promise under the given key, evicting the LRU entry if at capacity. */
39
+ set(key: string, result: Promise<TxValidationResult>): void;
40
+ /** Removes the cached validation promise for the given key. */
41
+ delete(key: string): void;
42
+ /**
43
+ * Returns the cached promise if present, otherwise calls `validate`, stores its promise
44
+ * immediately (before awaiting), and returns it.
45
+ */
46
+ getOrValidate(validatorSymbol: symbol, tx: Tx, validate: () => Promise<TxValidationResult>): Promise<TxValidationResult>;
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdmFsaWRhdGlvbl9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci90eF92YWxpZGF0aW9uX2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSS9EOzs7R0FHRztBQUNILE1BQU0sV0FBVyxrQkFBa0I7SUFDakMsNkdBQTZHO0lBQzdHLGFBQWEsQ0FDWCxlQUFlLEVBQUUsTUFBTSxFQUN2QixFQUFFLEVBQUUsRUFBRSxFQUNOLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUMxQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztDQUNoQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxxQkFBYSxpQkFBa0IsWUFBVyxrQkFBa0I7O0lBRzFELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUE4QztJQUd0RSxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBc0M7SUFFcEUsWUFBWSxPQUFPLEVBQUUsTUFBTSxFQUcxQjtJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBUWxEO0lBRUQsbUdBQW1HO0lBQzVGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFNBQVMsQ0FFL0Q7SUFFRCw4RkFBOEY7SUFDdkYsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FFakU7SUFFRCwrREFBK0Q7SUFDeEQsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUUvQjtJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FDbEIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsRUFBRSxFQUFFLEVBQUUsRUFDTixRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FDMUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBYzdCO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx_validation_cache.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/tx_validation_cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAI/D;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,6GAA6G;IAC7G,aAAa,CACX,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;;IAG1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IAGtE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;IAEpE,YAAY,OAAO,EAAE,MAAM,EAG1B;IAED;;;;;;;;OAQG;IACI,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAQlD;IAED,mGAAmG;IAC5F,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAE/D;IAED,8FAA8F;IACvF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAEjE;IAED,+DAA+D;IACxD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE/B;IAED;;;OAGG;IACI,aAAa,CAClB,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAc7B;CACF"}