@aztec/p2p 0.0.1-commit.a072138 → 0.0.1-commit.a4600f49

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 (558) hide show
  1. package/README.md +130 -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 +22 -6
  5. package/dest/client/factory.d.ts +13 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +67 -18
  8. package/dest/client/interface.d.ts +90 -40
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +69 -64
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +240 -244
  13. package/dest/config.d.ts +168 -89
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +157 -45
  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 +9 -16
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +10 -17
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -2
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +164 -106
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +518 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +550 -125
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  40. package/dest/mem_pools/index.d.ts +3 -3
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +12 -5
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +38 -17
  46. package/dest/mem_pools/interface.d.ts +5 -5
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +39 -0
  52. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +97 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  55. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  90. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  91. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  94. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +243 -0
  97. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/interfaces.js +11 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +122 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +368 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +68 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +178 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +91 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +1013 -0
  114. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +10 -3
  115. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/attestation_validator/attestation_validator.js +38 -15
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +8 -4
  118. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  119. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  120. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +12 -5
  121. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  122. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +11 -3
  123. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +12 -5
  124. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +23 -3
  126. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +36 -9
  127. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/proposal_validator/proposal_validator.js +130 -48
  129. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  130. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  131. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  132. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  133. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  135. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  136. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  137. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  138. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  139. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  140. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  141. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  142. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  143. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  144. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  145. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  146. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  147. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  148. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  149. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  150. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  151. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  152. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  154. package/dest/msg_validators/tx_validator/factory.d.ts +133 -7
  155. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/factory.js +261 -61
  157. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  158. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  160. package/dest/msg_validators/tx_validator/gas_validator.d.ts +104 -3
  161. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
  163. package/dest/msg_validators/tx_validator/index.d.ts +5 -1
  164. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  165. package/dest/msg_validators/tx_validator/index.js +4 -0
  166. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  167. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  169. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  170. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  171. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  172. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  173. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  174. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  175. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  176. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  178. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  179. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  181. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  182. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  183. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  184. package/dest/services/data_store.d.ts +1 -1
  185. package/dest/services/data_store.d.ts.map +1 -1
  186. package/dest/services/data_store.js +5 -5
  187. package/dest/services/discv5/discV5_service.d.ts +13 -2
  188. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  189. package/dest/services/discv5/discV5_service.js +119 -23
  190. package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
  191. package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
  192. package/dest/services/discv5/persisted_enr_store.js +145 -0
  193. package/dest/services/dummy_service.d.ts +26 -18
  194. package/dest/services/dummy_service.d.ts.map +1 -1
  195. package/dest/services/dummy_service.js +25 -20
  196. package/dest/services/encoding.d.ts +24 -7
  197. package/dest/services/encoding.d.ts.map +1 -1
  198. package/dest/services/encoding.js +43 -26
  199. package/dest/services/gossipsub/index.d.ts +3 -0
  200. package/dest/services/gossipsub/index.d.ts.map +1 -0
  201. package/dest/services/gossipsub/index.js +2 -0
  202. package/dest/services/gossipsub/scoring.d.ts +21 -3
  203. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  204. package/dest/services/gossipsub/scoring.js +24 -7
  205. package/dest/services/gossipsub/topic_score_params.d.ts +167 -0
  206. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  207. package/dest/services/gossipsub/topic_score_params.js +336 -0
  208. package/dest/services/index.d.ts +2 -1
  209. package/dest/services/index.d.ts.map +1 -1
  210. package/dest/services/index.js +1 -0
  211. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  212. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  213. package/dest/services/libp2p/instrumentation.js +14 -0
  214. package/dest/services/libp2p/libp2p_service.d.ts +111 -61
  215. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  216. package/dest/services/libp2p/libp2p_service.js +785 -580
  217. package/dest/services/peer-manager/metrics.d.ts +3 -1
  218. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  219. package/dest/services/peer-manager/metrics.js +6 -0
  220. package/dest/services/peer-manager/peer_manager.d.ts +20 -3
  221. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  222. package/dest/services/peer-manager/peer_manager.js +83 -26
  223. package/dest/services/peer-manager/peer_scoring.d.ts +34 -2
  224. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  225. package/dest/services/peer-manager/peer_scoring.js +127 -15
  226. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +7 -10
  227. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  228. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +100 -132
  229. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +11 -11
  230. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  231. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  232. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  233. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  234. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  235. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  236. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  237. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  238. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  239. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  240. package/dest/services/reqresp/config.d.ts +15 -3
  241. package/dest/services/reqresp/config.d.ts.map +1 -1
  242. package/dest/services/reqresp/config.js +11 -0
  243. package/dest/services/reqresp/interface.d.ts +25 -18
  244. package/dest/services/reqresp/interface.d.ts.map +1 -1
  245. package/dest/services/reqresp/interface.js +23 -19
  246. package/dest/services/reqresp/metrics.d.ts +1 -1
  247. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  248. package/dest/services/reqresp/metrics.js +0 -1
  249. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +4 -3
  250. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  251. package/dest/services/reqresp/protocols/block_txs/bitvector.js +3 -2
  252. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  253. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  254. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +34 -26
  255. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +32 -16
  256. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  257. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +68 -34
  258. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  259. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  260. package/dest/services/reqresp/protocols/index.js +0 -1
  261. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  262. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  263. package/dest/services/reqresp/protocols/tx.js +21 -3
  264. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  265. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  266. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  267. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  268. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  269. package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -13
  270. package/dest/services/reqresp/reqresp.d.ts +7 -29
  271. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  272. package/dest/services/reqresp/reqresp.js +85 -219
  273. package/dest/services/service.d.ts +62 -13
  274. package/dest/services/service.d.ts.map +1 -1
  275. package/dest/services/tx_collection/config.d.ts +11 -14
  276. package/dest/services/tx_collection/config.d.ts.map +1 -1
  277. package/dest/services/tx_collection/config.js +26 -33
  278. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  279. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  280. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  281. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  282. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  283. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  284. package/dest/services/tx_collection/index.d.ts +3 -3
  285. package/dest/services/tx_collection/index.d.ts.map +1 -1
  286. package/dest/services/tx_collection/index.js +1 -1
  287. package/dest/services/tx_collection/instrumentation.js +1 -2
  288. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  289. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  290. package/dest/services/tx_collection/request_tracker.js +84 -0
  291. package/dest/services/tx_collection/tx_collection.d.ts +45 -51
  292. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  293. package/dest/services/tx_collection/tx_collection.js +296 -68
  294. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  295. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  296. package/dest/services/tx_collection/tx_collection_sink.js +28 -31
  297. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  298. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  299. package/dest/services/tx_collection/tx_source.js +29 -7
  300. package/dest/services/tx_file_store/config.d.ts +16 -0
  301. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  302. package/dest/services/tx_file_store/config.js +22 -0
  303. package/dest/services/tx_file_store/index.d.ts +4 -0
  304. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  305. package/dest/services/tx_file_store/index.js +3 -0
  306. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  307. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  308. package/dest/services/tx_file_store/instrumentation.js +29 -0
  309. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  310. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  311. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  312. package/dest/services/tx_provider.d.ts +6 -4
  313. package/dest/services/tx_provider.d.ts.map +1 -1
  314. package/dest/services/tx_provider.js +12 -8
  315. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  316. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  317. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  318. package/dest/test-helpers/mock-pubsub.d.ts +46 -6
  319. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  320. package/dest/test-helpers/mock-pubsub.js +115 -14
  321. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  322. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  323. package/dest/test-helpers/reqresp-nodes.js +19 -20
  324. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  325. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  326. package/dest/test-helpers/test_tx_provider.js +3 -0
  327. package/dest/test-helpers/testbench-utils.d.ts +56 -50
  328. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  329. package/dest/test-helpers/testbench-utils.js +178 -75
  330. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  331. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  332. package/dest/testbench/p2p_client_testbench_worker.js +113 -50
  333. package/dest/testbench/worker_client_manager.d.ts +12 -6
  334. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  335. package/dest/testbench/worker_client_manager.js +57 -11
  336. package/dest/util.d.ts +13 -8
  337. package/dest/util.d.ts.map +1 -1
  338. package/dest/util.js +35 -14
  339. package/dest/versioning.d.ts +3 -6
  340. package/dest/versioning.d.ts.map +1 -1
  341. package/dest/versioning.js +3 -24
  342. package/package.json +16 -16
  343. package/src/bootstrap/bootstrap.ts +17 -3
  344. package/src/client/factory.ts +135 -31
  345. package/src/client/interface.ts +97 -48
  346. package/src/client/p2p_client.ts +282 -310
  347. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  348. package/src/config.ts +282 -49
  349. package/src/errors/p2p-service.error.ts +11 -0
  350. package/src/errors/reqresp.error.ts +13 -19
  351. package/src/errors/tx-pool.error.ts +12 -0
  352. package/src/index.ts +1 -1
  353. package/src/mem_pools/attestation_pool/attestation_pool.ts +585 -94
  354. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +656 -141
  355. package/src/mem_pools/attestation_pool/index.ts +9 -2
  356. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  357. package/src/mem_pools/index.ts +2 -2
  358. package/src/mem_pools/instrumentation.ts +27 -17
  359. package/src/mem_pools/interface.ts +4 -4
  360. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  361. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  362. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +112 -0
  363. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  364. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  365. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  366. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  367. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  368. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  369. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  370. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  371. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  372. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  373. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  374. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  375. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  376. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  377. package/src/mem_pools/tx_pool_v2/interfaces.ts +274 -0
  378. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  379. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  380. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +465 -0
  381. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +252 -0
  382. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1215 -0
  383. package/src/msg_validators/attestation_validator/README.md +49 -0
  384. package/src/msg_validators/attestation_validator/attestation_validator.ts +46 -14
  385. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +17 -9
  386. package/src/msg_validators/proposal_validator/README.md +123 -0
  387. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +26 -4
  388. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +43 -7
  389. package/src/msg_validators/proposal_validator/proposal_validator.ts +155 -49
  390. package/src/msg_validators/tx_validator/README.md +129 -0
  391. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  392. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  393. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  394. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  395. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  396. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  397. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  398. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  399. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  400. package/src/msg_validators/tx_validator/factory.ts +413 -80
  401. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  402. package/src/msg_validators/tx_validator/gas_validator.ts +195 -54
  403. package/src/msg_validators/tx_validator/index.ts +4 -0
  404. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  405. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  406. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  407. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  408. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  409. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  410. package/src/services/data_store.ts +5 -13
  411. package/src/services/discv5/discV5_service.ts +126 -14
  412. package/src/services/discv5/persisted_enr_store.ts +158 -0
  413. package/src/services/dummy_service.ts +38 -45
  414. package/src/services/encoding.ts +42 -26
  415. package/src/services/gossipsub/README.md +663 -0
  416. package/src/services/gossipsub/index.ts +2 -0
  417. package/src/services/gossipsub/scoring.ts +29 -5
  418. package/src/services/gossipsub/topic_score_params.ts +478 -0
  419. package/src/services/index.ts +1 -0
  420. package/src/services/libp2p/instrumentation.ts +14 -0
  421. package/src/services/libp2p/libp2p_service.ts +858 -637
  422. package/src/services/peer-manager/metrics.ts +7 -0
  423. package/src/services/peer-manager/peer_manager.ts +91 -25
  424. package/src/services/peer-manager/peer_scoring.ts +127 -8
  425. package/src/services/reqresp/README.md +194 -0
  426. package/src/services/reqresp/batch-tx-requester/README.md +53 -14
  427. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +101 -147
  428. package/src/services/reqresp/batch-tx-requester/interface.ts +14 -10
  429. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  430. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  431. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  432. package/src/services/reqresp/config.ts +19 -2
  433. package/src/services/reqresp/interface.ts +45 -46
  434. package/src/services/reqresp/metrics.ts +0 -1
  435. package/src/services/reqresp/protocols/block_txs/bitvector.ts +3 -2
  436. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +43 -30
  437. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +84 -34
  438. package/src/services/reqresp/protocols/index.ts +0 -1
  439. package/src/services/reqresp/protocols/tx.ts +23 -3
  440. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  441. package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -13
  442. package/src/services/reqresp/reqresp.ts +100 -263
  443. package/src/services/service.ts +81 -29
  444. package/src/services/tx_collection/config.ts +40 -49
  445. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  446. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  447. package/src/services/tx_collection/index.ts +2 -6
  448. package/src/services/tx_collection/instrumentation.ts +1 -1
  449. package/src/services/tx_collection/request_tracker.ts +127 -0
  450. package/src/services/tx_collection/tx_collection.ts +362 -110
  451. package/src/services/tx_collection/tx_collection_sink.ts +32 -36
  452. package/src/services/tx_collection/tx_source.ts +29 -8
  453. package/src/services/tx_file_store/config.ts +37 -0
  454. package/src/services/tx_file_store/index.ts +3 -0
  455. package/src/services/tx_file_store/instrumentation.ts +36 -0
  456. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  457. package/src/services/tx_provider.ts +15 -9
  458. package/src/test-helpers/make-test-p2p-clients.ts +7 -6
  459. package/src/test-helpers/mock-pubsub.ts +137 -14
  460. package/src/test-helpers/reqresp-nodes.ts +17 -29
  461. package/src/test-helpers/test_tx_provider.ts +5 -0
  462. package/src/test-helpers/testbench-utils.ts +185 -94
  463. package/src/testbench/p2p_client_testbench_worker.ts +122 -65
  464. package/src/testbench/worker_client_manager.ts +72 -25
  465. package/src/util.ts +40 -19
  466. package/src/versioning.ts +3 -33
  467. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  468. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  469. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  470. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  471. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  472. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  473. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  474. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  475. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  476. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  477. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  478. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  479. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  480. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  481. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  482. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  483. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  484. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  485. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  486. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  487. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  488. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  489. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  490. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  491. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  492. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  493. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  494. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  495. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  496. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  497. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  498. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  499. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  500. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  501. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  502. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  503. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  504. package/dest/mem_pools/tx_pool/index.js +0 -2
  505. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  506. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  507. package/dest/mem_pools/tx_pool/priority.js +0 -15
  508. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  509. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  510. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  511. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  512. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  513. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  514. package/dest/msg_validators/clock_tolerance.d.ts +0 -21
  515. package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
  516. package/dest/msg_validators/clock_tolerance.js +0 -37
  517. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  518. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  519. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  520. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  521. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  522. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  523. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  524. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  525. package/dest/services/reqresp/protocols/block.js +0 -32
  526. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -53
  527. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  528. package/dest/services/tx_collection/fast_tx_collection.js +0 -311
  529. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -48
  530. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  531. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  532. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -53
  533. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  534. package/dest/services/tx_collection/slow_tx_collection.js +0 -177
  535. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -336
  536. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  537. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  538. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  539. package/src/mem_pools/tx_pool/README.md +0 -270
  540. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  541. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  542. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  543. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  544. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  545. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  546. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  547. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  548. package/src/mem_pools/tx_pool/index.ts +0 -2
  549. package/src/mem_pools/tx_pool/priority.ts +0 -20
  550. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  551. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  552. package/src/msg_validators/clock_tolerance.ts +0 -51
  553. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  554. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  555. package/src/services/reqresp/protocols/block.ts +0 -37
  556. package/src/services/tx_collection/fast_tx_collection.ts +0 -364
  557. package/src/services/tx_collection/proposal_tx_collector.ts +0 -114
  558. package/src/services/tx_collection/slow_tx_collection.ts +0 -233
@@ -1,12 +1,113 @@
1
1
  import { type LoggerBindings } from '@aztec/foundation/log';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { GasFees } from '@aztec/stdlib/gas';
3
+ import { Gas, GasFees } from '@aztec/stdlib/gas';
4
4
  import type { PublicStateSource } from '@aztec/stdlib/trees';
5
5
  import { type Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
6
+ /** Structural interface for types that carry gas limit data, used by {@link GasLimitsValidator}. */
7
+ export interface HasGasLimitData {
8
+ txHash: {
9
+ toString(): string;
10
+ };
11
+ data: {
12
+ forPublic?: unknown;
13
+ constants: {
14
+ txContext: {
15
+ gasSettings: {
16
+ gasLimits: Gas;
17
+ };
18
+ };
19
+ };
20
+ };
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
+ }
37
+ /**
38
+ * Validates that a transaction's gas limits are within acceptable bounds.
39
+ *
40
+ * Rejects transactions whose gas limits fall below the fixed minimums (FIXED_DA_GAS,
41
+ * FIXED_L2_GAS) or exceed the AVM's maximum processable L2 gas. This is a cheap,
42
+ * stateless check that operates on gas settings alone.
43
+ *
44
+ * Generic over T so it can validate both full {@link Tx} objects and {@link TxMetaData}
45
+ * (used during pending pool migration).
46
+ *
47
+ * Used by: pending pool migration (via factory), and indirectly by {@link GasTxValidator}.
48
+ */
49
+ export declare class GasLimitsValidator<T extends HasGasLimitData> implements TxValidator<T> {
50
+ #private;
51
+ /**
52
+ * @param maxTxL2Gas - The network admission limit on L2 gas a single tx may declare (the per-block mana
53
+ * allocation, see {@link computeNetworkTxGasLimits}). Defaults to the per-tx protocol maximum, so callers
54
+ * that pass nothing (e.g. block building) enforce only the protocol ceiling.
55
+ * @param maxTxDAGas - The network admission limit on DA gas a single tx may declare. Defaults to the
56
+ * per-tx protocol maximum {@link MAX_TX_DA_GAS}.
57
+ */
58
+ constructor(opts?: {
59
+ maxTxL2Gas?: number;
60
+ maxTxDAGas?: number;
61
+ bindings?: LoggerBindings;
62
+ });
63
+ validateTx(tx: T): Promise<TxValidationResult>;
64
+ /** Checks gas limits are >= fixed minimums and <= effective max gas (L2 and DA). */
65
+ validateGasLimit(tx: T): TxValidationResult;
66
+ }
67
+ /**
68
+ * Validates that a transaction's max fee per gas meets the current block's gas fees.
69
+ *
70
+ * Rejects transactions whose maxFeesPerGas is below the current block's gas fees
71
+ * on either dimension (DA or L2). This is a cheap, stateless check.
72
+ *
73
+ * Generic over T so it can validate both full {@link Tx} objects and {@link TxMetaData}
74
+ * (used during pending pool migration).
75
+ *
76
+ * Used by: pending pool migration (via factory), and indirectly by {@link GasTxValidator}.
77
+ */
78
+ export declare class MaxFeePerGasValidator<T extends HasMaxFeePerGasData> implements TxValidator<T> {
79
+ #private;
80
+ constructor(gasFees: GasFees, bindings?: LoggerBindings);
81
+ validateTx(tx: T): Promise<TxValidationResult>;
82
+ /** Checks maxFeesPerGas >= current block gas fees on both dimensions. */
83
+ validateMaxFeePerGas(tx: T): TxValidationResult;
84
+ }
85
+ /**
86
+ * Validates that a transaction can pay its gas fees.
87
+ *
88
+ * Runs three checks in order:
89
+ * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
90
+ * out of bounds.
91
+ * 2. **Max fee per gas** — rejects the tx if its maxFeesPerGas is below
92
+ * the current block's gas fees.
93
+ * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
94
+ * adds any pending claim from a setup-phase `_increase_public_balance` call, and
95
+ * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
96
+ *
97
+ * Used by: gossip (stage 1), RPC, and block building validators.
98
+ */
6
99
  export declare class GasTxValidator implements TxValidator<Tx> {
7
100
  #private;
8
- constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees, bindings?: LoggerBindings);
101
+ private bindings?;
102
+ constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees, bindings?: LoggerBindings | undefined, opts?: {
103
+ maxTxL2Gas?: number;
104
+ maxTxDAGas?: number;
105
+ });
9
106
  validateTx(tx: Tx): Promise<TxValidationResult>;
107
+ /**
108
+ * Checks the fee payer has enough FeeJuice balance to cover the tx's fee limit.
109
+ * Accounts for any pending claim from a setup-phase `_increase_public_balance` call.
110
+ */
10
111
  validateTxFee(tx: Tx): Promise<TxValidationResult>;
11
112
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQU8sT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBS0wsS0FBSyxFQUFFLEVBQ1AsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIscUJBQWEsY0FBZSxZQUFXLFdBQVcsQ0FBQyxFQUFFLENBQUM7O0lBTXBELFlBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQ25DLGVBQWUsRUFBRSxZQUFZLEVBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFNMUI7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FTcEQ7SUFtRFksYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBeUI5RDtDQUNGIn0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUtMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBSTFCLG9HQUFvRztBQUNwRyxNQUFNLFdBQVcsZUFBZTtJQUM5QixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFFSixTQUFTLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDcEIsU0FBUyxFQUFFO1lBQ1QsU0FBUyxFQUFFO2dCQUNULFdBQVcsRUFBRTtvQkFBRSxTQUFTLEVBQUUsR0FBRyxDQUFBO2lCQUFFLENBQUM7YUFDakMsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCw2R0FBNkc7QUFDN0csTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyxNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFDSixTQUFTLEVBQUU7WUFDVCxTQUFTLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFO29CQUFFLGFBQWEsRUFBRSxPQUFPLENBQUE7aUJBQUUsQ0FBQzthQUN6QyxDQUFDO1NBQ0gsQ0FBQztLQUNILENBQUM7Q0FDSDtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gscUJBQWEsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLGVBQWUsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7O0lBS2xGOzs7Ozs7T0FNRztJQUNILFlBQVksSUFBSSxDQUFDLEVBQUU7UUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUE7S0FBRSxFQU96RjtJQUVELFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUU3QztJQUVELG9GQUFvRjtJQUNwRixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQTJDMUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxxQkFBYSxxQkFBcUIsQ0FBQyxDQUFDLFNBQVMsbUJBQW1CLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUl6RixZQUFZLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUd0RDtJQUVELFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUU3QztJQUVELHlFQUF5RTtJQUN6RSxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQWtCOUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxxQkFBYSxjQUFlLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFXbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUpuQixZQUNFLGdCQUFnQixFQUFFLGlCQUFpQixFQUNuQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixPQUFPLEVBQUUsT0FBTyxFQUNSLFFBQVEsQ0FBQyw0QkFBZ0IsRUFDakMsSUFBSSxDQUFDLEVBQUU7UUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQU9wRDtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWFwRDtJQUVEOzs7T0FHRztJQUNVLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQTRCOUQ7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"gas_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/gas_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAO,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,qBAAa,cAAe,YAAW,WAAW,CAAC,EAAE,CAAC;;IAMpD,YACE,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,cAAc,EAM1B;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CASpD;IAmDY,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;;IAKlF;;;;;;OAMG;IACH,YAAY,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;KAAE,EAOzF;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7C;IAED,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CA2C1C;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,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAOpD;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"}
@@ -1,58 +1,44 @@
1
- import { AVM_MAX_PROCESSABLE_L2_GAS, FIXED_DA_GAS, FIXED_L2_GAS } from '@aztec/constants';
1
+ import { MAX_PROCESSABLE_L2_GAS, MAX_TX_DA_GAS, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
3
  import { computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
4
4
  import { Gas } from '@aztec/stdlib/gas';
5
5
  import { TX_ERROR_GAS_LIMIT_TOO_HIGH, TX_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE, TX_ERROR_INSUFFICIENT_FEE_PER_GAS, TX_ERROR_INSUFFICIENT_GAS_LIMIT } from '@aztec/stdlib/tx';
6
6
  import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
7
- export class GasTxValidator {
7
+ /**
8
+ * Validates that a transaction's gas limits are within acceptable bounds.
9
+ *
10
+ * Rejects transactions whose gas limits fall below the fixed minimums (FIXED_DA_GAS,
11
+ * FIXED_L2_GAS) or exceed the AVM's maximum processable L2 gas. This is a cheap,
12
+ * stateless check that operates on gas settings alone.
13
+ *
14
+ * Generic over T so it can validate both full {@link Tx} objects and {@link TxMetaData}
15
+ * (used during pending pool migration).
16
+ *
17
+ * Used by: pending pool migration (via factory), and indirectly by {@link GasTxValidator}.
18
+ */ export class GasLimitsValidator {
8
19
  #log;
9
- #publicDataSource;
10
- #feeJuiceAddress;
11
- #gasFees;
12
- constructor(publicDataSource, feeJuiceAddress, gasFees, bindings){
13
- this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
14
- this.#publicDataSource = publicDataSource;
15
- this.#feeJuiceAddress = feeJuiceAddress;
16
- this.#gasFees = gasFees;
17
- }
18
- async validateTx(tx) {
19
- const gasLimitValidation = this.#validateGasLimit(tx);
20
- if (gasLimitValidation.result === 'invalid') {
21
- return Promise.resolve(gasLimitValidation);
22
- }
23
- if (this.#shouldSkip(tx)) {
24
- return Promise.resolve({
25
- result: 'skipped',
26
- reason: [
27
- TX_ERROR_INSUFFICIENT_FEE_PER_GAS
28
- ]
29
- });
30
- }
31
- return await this.validateTxFee(tx);
32
- }
20
+ #effectiveMaxL2Gas;
21
+ #effectiveMaxDAGas;
33
22
  /**
34
- * Check whether the tx's max fees are valid for the current block, and skip if not.
35
- * We skip instead of invalidating since the tx may become eligible later.
36
- * Note that circuits check max fees even if fee payer is unset, so we
37
- * keep this validation even if the tx does not pay fees.
38
- */ #shouldSkip(tx) {
39
- const gasSettings = tx.data.constants.txContext.gasSettings;
40
- // Skip the tx if its max fees are not enough for the current block's gas fees.
41
- const maxFeesPerGas = gasSettings.maxFeesPerGas;
42
- const notEnoughMaxFees = maxFeesPerGas.feePerDaGas < this.#gasFees.feePerDaGas || maxFeesPerGas.feePerL2Gas < this.#gasFees.feePerL2Gas;
43
- if (notEnoughMaxFees) {
44
- this.#log.verbose(`Skipping transaction ${tx.getTxHash().toString()} due to insufficient fee per gas`, {
45
- txMaxFeesPerGas: maxFeesPerGas.toInspect(),
46
- currentGasFees: this.#gasFees.toInspect()
47
- });
48
- }
49
- return notEnoughMaxFees;
23
+ * @param maxTxL2Gas - The network admission limit on L2 gas a single tx may declare (the per-block mana
24
+ * allocation, see {@link computeNetworkTxGasLimits}). Defaults to the per-tx protocol maximum, so callers
25
+ * that pass nothing (e.g. block building) enforce only the protocol ceiling.
26
+ * @param maxTxDAGas - The network admission limit on DA gas a single tx may declare. Defaults to the
27
+ * per-tx protocol maximum {@link MAX_TX_DA_GAS}.
28
+ */ constructor(opts){
29
+ this.#log = createLogger('sequencer:tx_validator:tx_gas', opts?.bindings);
30
+ // The passed limits are network admission limits; clamp to the per-tx protocol maxima as a hard ceiling.
31
+ // MAX_TX_DA_GAS bounds DA by what a single tx can actually post to a blob; declaring more is meaningless
32
+ // and would let a tx reserve checkpoint/block DA budget during proposal building it can't use.
33
+ this.#effectiveMaxL2Gas = Math.min(MAX_PROCESSABLE_L2_GAS, opts?.maxTxL2Gas ?? Infinity);
34
+ this.#effectiveMaxDAGas = Math.min(MAX_TX_DA_GAS, opts?.maxTxDAGas ?? Infinity);
50
35
  }
51
- /**
52
- * Check whether the tx's gas limit is above the minimum amount.
53
- */ #validateGasLimit(tx) {
36
+ validateTx(tx) {
37
+ return Promise.resolve(this.validateGasLimit(tx));
38
+ }
39
+ /** Checks gas limits are >= fixed minimums and <= effective max gas (L2 and DA). */ validateGasLimit(tx) {
54
40
  const gasLimits = tx.data.constants.txContext.gasSettings.gasLimits;
55
- const minGasLimits = new Gas(FIXED_DA_GAS, FIXED_L2_GAS);
41
+ const minGasLimits = new Gas(TX_DA_GAS_OVERHEAD, tx.data.forPublic ? PUBLIC_TX_L2_GAS_OVERHEAD : PRIVATE_TX_L2_GAS_OVERHEAD);
56
42
  if (minGasLimits.gtAny(gasLimits)) {
57
43
  this.#log.verbose(`Rejecting transaction due to the gas limit(s) not being above the minimum gas limit`, {
58
44
  gasLimits,
@@ -61,19 +47,31 @@ export class GasTxValidator {
61
47
  return {
62
48
  result: 'invalid',
63
49
  reason: [
64
- TX_ERROR_INSUFFICIENT_GAS_LIMIT
50
+ `${TX_ERROR_INSUFFICIENT_GAS_LIMIT} (required=da:${minGasLimits.daGas},l2:${minGasLimits.l2Gas} got=da:${gasLimits.daGas},l2:${gasLimits.l2Gas})`
65
51
  ]
66
52
  };
67
53
  }
68
- if (gasLimits.l2Gas > AVM_MAX_PROCESSABLE_L2_GAS) {
69
- this.#log.verbose(`Rejecting transaction due to the gas limit(s) being higher than the maximum processable gas`, {
54
+ if (gasLimits.l2Gas > this.#effectiveMaxL2Gas) {
55
+ this.#log.verbose(`Rejecting transaction due to the L2 gas limit being higher than the effective maximum`, {
70
56
  gasLimits,
71
- minGasLimits
57
+ effectiveMaxL2Gas: this.#effectiveMaxL2Gas
58
+ });
59
+ return {
60
+ result: 'invalid',
61
+ reason: [
62
+ `${TX_ERROR_GAS_LIMIT_TOO_HIGH} (l2Gas=${gasLimits.l2Gas}, max=${this.#effectiveMaxL2Gas})`
63
+ ]
64
+ };
65
+ }
66
+ if (gasLimits.daGas > this.#effectiveMaxDAGas) {
67
+ this.#log.verbose(`Rejecting transaction due to the DA gas limit being higher than the effective maximum`, {
68
+ gasLimits,
69
+ effectiveMaxDAGas: this.#effectiveMaxDAGas
72
70
  });
73
71
  return {
74
72
  result: 'invalid',
75
73
  reason: [
76
- TX_ERROR_GAS_LIMIT_TOO_HIGH
74
+ `${TX_ERROR_GAS_LIMIT_TOO_HIGH} (daGas=${gasLimits.daGas}, max=${this.#effectiveMaxDAGas})`
77
75
  ]
78
76
  };
79
77
  }
@@ -81,7 +79,93 @@ export class GasTxValidator {
81
79
  result: 'valid'
82
80
  };
83
81
  }
84
- async validateTxFee(tx) {
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})`
115
+ ]
116
+ };
117
+ }
118
+ return {
119
+ result: 'valid'
120
+ };
121
+ }
122
+ }
123
+ /**
124
+ * Validates that a transaction can pay its gas fees.
125
+ *
126
+ * Runs three checks in order:
127
+ * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
128
+ * out of bounds.
129
+ * 2. **Max fee per gas** — rejects the tx if its maxFeesPerGas is below
130
+ * the current block's gas fees.
131
+ * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
132
+ * adds any pending claim from a setup-phase `_increase_public_balance` call, and
133
+ * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
134
+ *
135
+ * Used by: gossip (stage 1), RPC, and block building validators.
136
+ */ export class GasTxValidator {
137
+ bindings;
138
+ #log;
139
+ #publicDataSource;
140
+ #feeJuiceAddress;
141
+ #gasFees;
142
+ #gasLimitOpts;
143
+ constructor(publicDataSource, feeJuiceAddress, gasFees, bindings, opts){
144
+ this.bindings = bindings;
145
+ this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
146
+ this.#publicDataSource = publicDataSource;
147
+ this.#feeJuiceAddress = feeJuiceAddress;
148
+ this.#gasFees = gasFees;
149
+ this.#gasLimitOpts = opts;
150
+ }
151
+ async validateTx(tx) {
152
+ const gasLimitValidation = new GasLimitsValidator({
153
+ ...this.#gasLimitOpts,
154
+ bindings: this.bindings
155
+ }).validateGasLimit(tx);
156
+ if (gasLimitValidation.result === 'invalid') {
157
+ return gasLimitValidation;
158
+ }
159
+ const maxFeeValidation = new MaxFeePerGasValidator(this.#gasFees, this.bindings).validateMaxFeePerGas(tx);
160
+ if (maxFeeValidation.result === 'invalid') {
161
+ return maxFeeValidation;
162
+ }
163
+ return await this.validateTxFee(tx);
164
+ }
165
+ /**
166
+ * Checks the fee payer has enough FeeJuice balance to cover the tx's fee limit.
167
+ * Accounts for any pending claim from a setup-phase `_increase_public_balance` call.
168
+ */ async validateTxFee(tx) {
85
169
  const feePayer = tx.data.feePayer;
86
170
  // Compute the maximum fee that this tx may pay, based on its gasLimits and maxFeePerGas
87
171
  const feeLimit = getTxFeeLimit(tx);
@@ -99,7 +183,7 @@ export class GasTxValidator {
99
183
  return {
100
184
  result: 'invalid',
101
185
  reason: [
102
- TX_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE
186
+ `${TX_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE} (required=${feeLimit}, available=${balance})`
103
187
  ]
104
188
  };
105
189
  }
@@ -8,8 +8,12 @@ export * from './gas_validator.js';
8
8
  export * from './phases_validator.js';
9
9
  export * from './test_utils.js';
10
10
  export * from './allowed_public_setup.js';
11
+ export * from './allowed_setup_helpers.js';
11
12
  export * from './archive_cache.js';
12
13
  export * from './tx_permitted_validator.js';
13
14
  export * from './timestamp_validator.js';
14
15
  export * from './size_validator.js';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDIn0=
16
+ export * from './factory.js';
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,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,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"}
@@ -8,7 +8,11 @@ export * from './gas_validator.js';
8
8
  export * from './phases_validator.js';
9
9
  export * from './test_utils.js';
10
10
  export * from './allowed_public_setup.js';
11
+ export * from './allowed_setup_helpers.js';
11
12
  export * from './archive_cache.js';
12
13
  export * from './tx_permitted_validator.js';
13
14
  export * from './timestamp_validator.js';
14
15
  export * from './size_validator.js';
16
+ export * from './factory.js';
17
+ export * from './tx_validation_cache.js';
18
+ export * from './cached_tx_validator.js';
@@ -12,4 +12,4 @@ export declare class MetadataTxValidator<T extends AnyTx> implements TxValidator
12
12
  }, bindings?: LoggerBindings);
13
13
  validateTx(tx: T): Promise<TxValidationResult>;
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGFfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL21ldGFkYXRhX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxFQUNMLEtBQUssS0FBSyxFQUtWLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFCQUFhLG1CQUFtQixDQUFDLENBQUMsU0FBUyxLQUFLLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUl2RSxPQUFPLENBQUMsTUFBTTtJQURoQixZQUNVLE1BQU0sRUFBRTtRQUNkLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDZCxhQUFhLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFDZixxQkFBcUIsRUFBRSxFQUFFLENBQUM7S0FDM0IsRUFDRCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRUQsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBZTdDO0NBcURGIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGFfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL21ldGFkYXRhX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxFQUNMLEtBQUssS0FBSyxFQUtWLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFCQUFhLG1CQUFtQixDQUFDLENBQUMsU0FBUyxLQUFLLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUl2RSxPQUFPLENBQUMsTUFBTTtJQURoQixZQUNVLE1BQU0sRUFBRTtRQUNkLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDZCxhQUFhLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFDZixxQkFBcUIsRUFBRSxFQUFFLENBQUM7S0FDM0IsRUFDRCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRUQsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBdUI3QztDQXFERiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"metadata_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/metadata_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EACL,KAAK,KAAK,EAKV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIvE,OAAO,CAAC,MAAM;IADhB,YACU,MAAM,EAAE;QACd,SAAS,EAAE,EAAE,CAAC;QACd,aAAa,EAAE,EAAE,CAAC;QAClB,UAAU,EAAE,EAAE,CAAC;QACf,qBAAqB,EAAE,EAAE,CAAC;KAC3B,EACD,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAe7C;CAqDF"}
1
+ {"version":3,"file":"metadata_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/metadata_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EACL,KAAK,KAAK,EAKV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIvE,OAAO,CAAC,MAAM;IADhB,YACU,MAAM,EAAE;QACd,SAAS,EAAE,EAAE,CAAC;QACd,aAAa,EAAE,EAAE,CAAC;QAClB,UAAU,EAAE,EAAE,CAAC;QACf,qBAAqB,EAAE,EAAE,CAAC;KAC3B,EACD,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuB7C;CAqDF"}
@@ -10,16 +10,16 @@ export class MetadataTxValidator {
10
10
  validateTx(tx) {
11
11
  const errors = [];
12
12
  if (!this.#hasCorrectL1ChainId(tx)) {
13
- errors.push(TX_ERROR_INCORRECT_L1_CHAIN_ID);
13
+ errors.push(`${TX_ERROR_INCORRECT_L1_CHAIN_ID} (tx: ${tx.data.constants.txContext.chainId.toNumber()}, expected: ${this.values.l1ChainId.toNumber()})`);
14
14
  }
15
15
  if (!this.#hasCorrectRollupVersion(tx)) {
16
- errors.push(TX_ERROR_INCORRECT_ROLLUP_VERSION);
16
+ errors.push(`${TX_ERROR_INCORRECT_ROLLUP_VERSION} (tx: ${tx.data.constants.txContext.version.toNumber()}, expected: ${this.values.rollupVersion.toNumber()})`);
17
17
  }
18
18
  if (!this.#hasCorrectVkTreeRoot(tx)) {
19
- errors.push(TX_ERROR_INCORRECT_VK_TREE_ROOT);
19
+ errors.push(`${TX_ERROR_INCORRECT_VK_TREE_ROOT} (tx: ${tx.data.constants.vkTreeRoot.toString()}, expected: ${this.values.vkTreeRoot.toString()})`);
20
20
  }
21
21
  if (!this.#hasCorrectprotocolContractsHash(tx)) {
22
- errors.push(TX_ERROR_INCORRECT_PROTOCOL_CONTRACTS_HASH);
22
+ errors.push(`${TX_ERROR_INCORRECT_PROTOCOL_CONTRACTS_HASH} (tx: ${tx.data.constants.protocolContractsHash.toString()}, expected: ${this.values.protocolContractsHash.toString()})`);
23
23
  }
24
24
  return Promise.resolve(errors.length > 0 ? {
25
25
  result: 'invalid',
@@ -0,0 +1,14 @@
1
+ import type { NullifierSource } from '@aztec/p2p';
2
+ import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
3
+ /**
4
+ * Implements a nullifier source by checking a DB and an in-memory collection.
5
+ * Intended for validating transactions as they are added to a block.
6
+ */
7
+ export declare class NullifierCache implements NullifierSource {
8
+ private db;
9
+ nullifiers: Set<string>;
10
+ constructor(db: MerkleTreeReadOperations);
11
+ nullifiersExist(nullifiers: Buffer[]): Promise<boolean[]>;
12
+ addNullifiers(nullifiers: Buffer[]): void;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlmaWVyX2NhY2hlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL251bGxpZmllcl9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdoRjs7O0dBR0c7QUFDSCxxQkFBYSxjQUFlLFlBQVcsZUFBZTtJQUd4QyxPQUFPLENBQUMsRUFBRTtJQUZ0QixVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLFlBQW9CLEVBQUUsRUFBRSx3QkFBd0IsRUFFL0M7SUFFWSxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQU9yRTtJQUVNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBSXhDO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullifier_cache.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/nullifier_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IAGxC,OAAO,CAAC,EAAE;IAFtB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB,YAAoB,EAAE,EAAE,wBAAwB,EAE/C;IAEY,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAOrE;IAEM,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAIxC;CACF"}
@@ -0,0 +1,24 @@
1
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
2
+ /**
3
+ * Implements a nullifier source by checking a DB and an in-memory collection.
4
+ * Intended for validating transactions as they are added to a block.
5
+ */ export class NullifierCache {
6
+ db;
7
+ nullifiers;
8
+ constructor(db){
9
+ this.db = db;
10
+ this.nullifiers = new Set();
11
+ }
12
+ async nullifiersExist(nullifiers) {
13
+ const cacheResults = nullifiers.map((n)=>this.nullifiers.has(n.toString()));
14
+ const toCheckDb = nullifiers.filter((_n, index)=>!cacheResults[index]);
15
+ const dbHits = await this.db.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, toCheckDb);
16
+ let dbIndex = 0;
17
+ return nullifiers.map((_n, index)=>cacheResults[index] || dbHits[dbIndex++] !== undefined);
18
+ }
19
+ addNullifiers(nullifiers) {
20
+ for (const nullifier of nullifiers){
21
+ this.nullifiers.add(nullifier.toString());
22
+ }
23
+ }
24
+ }
@@ -10,6 +10,26 @@ export declare class PhasesTxValidator implements TxValidator<Tx> {
10
10
  private contractsDB;
11
11
  constructor(contracts: ContractDataSource, setupAllowList: AllowedElement[], timestamp: UInt64, bindings?: LoggerBindings);
12
12
  validateTx(tx: Tx): Promise<TxValidationResult>;
13
- private isOnAllowList;
13
+ private checkAllowList;
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9waGFzZXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFJTCxFQUFFLEVBRUYsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQscUJBQWEsaUJBQWtCLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFNckQsT0FBTyxDQUFDLGNBQWM7SUFDdEIsT0FBTyxDQUFDLFNBQVM7SUFMbkIsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFFdkMsWUFDRSxTQUFTLEVBQUUsa0JBQWtCLEVBQ3JCLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFDaEMsU0FBUyxFQUFFLE1BQU0sRUFDekIsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUkxQjtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQXFDcEQ7WUFFYSxhQUFhO0NBaUQ1QiJ9
15
+ /** Structural interface for the allowed-setup-calls flag check. */
16
+ export interface HasAllowedSetupCallsData {
17
+ txHash: {
18
+ toString(): string;
19
+ };
20
+ allowedSetupCalls: boolean;
21
+ }
22
+ /**
23
+ * Validates that a transaction's setup-phase calls were allowed at receipt time.
24
+ *
25
+ * Checks the precomputed `allowedSetupCalls` flag on TxMetaData. The flag is
26
+ * computed by running the PhasesTxValidator on the full Tx when it first enters
27
+ * the pool. This lightweight validator is used during pending pool migration to
28
+ * reject txs whose setup calls are not on the allow list.
29
+ */
30
+ export declare class AllowedSetupCallsMetaValidator<T extends HasAllowedSetupCallsData> implements TxValidator<T> {
31
+ #private;
32
+ constructor(bindings?: LoggerBindings);
33
+ validateTx(tx: T): Promise<TxValidationResult>;
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9waGFzZXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFRTCxFQUFFLEVBRUYsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQscUJBQWEsaUJBQWtCLFlBQVcsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7SUFNckQsT0FBTyxDQUFDLGNBQWM7SUFDdEIsT0FBTyxDQUFDLFNBQVM7SUFMbkIsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFFdkMsWUFDRSxTQUFTLEVBQUUsa0JBQWtCLEVBQ3JCLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFDaEMsU0FBUyxFQUFFLE1BQU0sRUFDekIsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUkxQjtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQXNDcEQ7WUFHYSxjQUFjO0NBa0U3QjtBQUVELG1FQUFtRTtBQUNuRSxNQUFNLFdBQVcsd0JBQXdCO0lBQ3ZDLE1BQU0sRUFBRTtRQUFFLFFBQVEsSUFBSSxNQUFNLENBQUE7S0FBRSxDQUFDO0lBQy9CLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztDQUM1QjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSw4QkFBOEIsQ0FBQyxDQUFDLFNBQVMsd0JBQXdCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUd2RyxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FNN0M7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAIL,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAMrD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,WAAW,CAAoB;IAEvC,YACE,SAAS,EAAE,kBAAkB,EACrB,cAAc,EAAE,cAAc,EAAE,EAChC,SAAS,EAAE,MAAM,EACzB,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqCpD;YAEa,aAAa;CAiD5B"}
1
+ {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAQL,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAMrD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,WAAW,CAAoB;IAEvC,YACE,SAAS,EAAE,kBAAkB,EACrB,cAAc,EAAE,cAAc,EAAE,EAChC,SAAS,EAAE,MAAM,EACzB,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsCpD;YAGa,cAAc;CAkE7B;AAED,mEAAmE;AACnE,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,qBAAa,8BAA8B,CAAC,CAAC,SAAS,wBAAwB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAGvG,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAM7C;CACF"}