@aztec/p2p 0.0.1-commit.7b97ef96e → 0.0.1-commit.7cbc774

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 (463) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +9 -1
  5. package/dest/client/factory.d.ts +7 -7
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +39 -32
  8. package/dest/client/interface.d.ts +19 -17
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +16 -20
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +94 -105
  13. package/dest/config.d.ts +154 -106
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +134 -40
  16. package/dest/errors/p2p-service.error.d.ts +9 -0
  17. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  18. package/dest/errors/p2p-service.error.js +10 -0
  19. package/dest/errors/reqresp.error.d.ts +1 -20
  20. package/dest/errors/reqresp.error.d.ts.map +1 -1
  21. package/dest/errors/reqresp.error.js +0 -21
  22. package/dest/index.d.ts +1 -2
  23. package/dest/index.d.ts.map +1 -1
  24. package/dest/index.js +0 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +99 -59
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/attestation_pool.js +267 -197
  28. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +181 -65
  31. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/mocks.js +6 -4
  34. package/dest/mem_pools/index.d.ts +1 -2
  35. package/dest/mem_pools/index.d.ts.map +1 -1
  36. package/dest/mem_pools/instrumentation.d.ts +4 -2
  37. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  38. package/dest/mem_pools/instrumentation.js +33 -15
  39. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  40. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +3 -2
  42. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +2 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  46. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +7 -1
  52. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +4 -4
  54. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +2 -2
  55. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +10 -6
  57. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +1 -1
  58. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +8 -6
  60. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +2 -2
  61. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
  62. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
  63. package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
  64. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
  65. package/dest/mem_pools/tx_pool_v2/index.js +1 -1
  66. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +18 -9
  67. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  68. package/dest/mem_pools/tx_pool_v2/interfaces.js +3 -1
  69. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +51 -11
  70. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  71. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +90 -19
  72. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
  73. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  74. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +26 -44
  75. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +5 -3
  76. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +6 -0
  78. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +3 -2
  79. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  80. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +256 -220
  81. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  82. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  83. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  84. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  85. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  86. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  87. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  88. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  89. package/dest/msg_validators/clock_tolerance.js +61 -3
  90. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +10 -4
  91. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  92. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  93. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +10 -4
  94. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  96. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +21 -8
  97. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  98. package/dest/msg_validators/proposal_validator/proposal_validator.js +90 -44
  99. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +2 -2
  100. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  102. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  103. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -21
  105. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  106. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  107. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  108. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  109. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  110. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  111. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  112. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  113. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  114. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  115. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  116. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  117. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  118. package/dest/msg_validators/tx_validator/factory.d.ts +135 -7
  119. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  120. package/dest/msg_validators/tx_validator/factory.js +252 -61
  121. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  122. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  124. package/dest/msg_validators/tx_validator/gas_validator.d.ts +99 -3
  125. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/gas_validator.js +137 -53
  127. package/dest/msg_validators/tx_validator/index.d.ts +5 -1
  128. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/index.js +4 -0
  130. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  131. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  133. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  134. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  135. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  136. package/dest/msg_validators/tx_validator/phases_validator.d.ts +22 -2
  137. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  138. package/dest/msg_validators/tx_validator/phases_validator.js +72 -24
  139. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  140. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  141. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  142. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  143. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  144. package/dest/msg_validators/tx_validator/tx_validation_cache.js +69 -0
  145. package/dest/services/data_store.d.ts +1 -1
  146. package/dest/services/data_store.d.ts.map +1 -1
  147. package/dest/services/data_store.js +5 -5
  148. package/dest/services/discv5/discV5_service.d.ts +2 -1
  149. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  150. package/dest/services/discv5/discV5_service.js +35 -8
  151. package/dest/services/dummy_service.d.ts +12 -17
  152. package/dest/services/dummy_service.d.ts.map +1 -1
  153. package/dest/services/dummy_service.js +13 -20
  154. package/dest/services/encoding.d.ts +6 -2
  155. package/dest/services/encoding.d.ts.map +1 -1
  156. package/dest/services/encoding.js +14 -8
  157. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  158. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  159. package/dest/services/gossipsub/topic_score_params.js +21 -4
  160. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  161. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  162. package/dest/services/libp2p/instrumentation.js +14 -0
  163. package/dest/services/libp2p/libp2p_service.d.ts +47 -55
  164. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  165. package/dest/services/libp2p/libp2p_service.js +344 -308
  166. package/dest/services/peer-manager/metrics.d.ts +3 -1
  167. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  168. package/dest/services/peer-manager/metrics.js +6 -0
  169. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  170. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  171. package/dest/services/peer-manager/peer_manager.js +40 -11
  172. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  173. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  174. package/dest/services/peer-manager/peer_scoring.js +32 -10
  175. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  176. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  177. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +97 -107
  178. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +10 -6
  179. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  180. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  181. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  182. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  183. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  184. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  185. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  186. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  187. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  188. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  189. package/dest/services/reqresp/config.d.ts +3 -3
  190. package/dest/services/reqresp/config.d.ts.map +1 -1
  191. package/dest/services/reqresp/interface.d.ts +16 -18
  192. package/dest/services/reqresp/interface.d.ts.map +1 -1
  193. package/dest/services/reqresp/interface.js +10 -20
  194. package/dest/services/reqresp/metrics.d.ts +1 -1
  195. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  196. package/dest/services/reqresp/metrics.js +0 -1
  197. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  198. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  199. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +4 -2
  200. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  201. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  202. package/dest/services/reqresp/protocols/index.js +0 -1
  203. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  204. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  205. package/dest/services/reqresp/protocols/tx.js +1 -3
  206. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  207. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  208. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  209. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  210. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  211. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  212. package/dest/services/reqresp/reqresp.d.ts +7 -29
  213. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  214. package/dest/services/reqresp/reqresp.js +43 -215
  215. package/dest/services/service.d.ts +10 -13
  216. package/dest/services/service.d.ts.map +1 -1
  217. package/dest/services/tx_collection/config.d.ts +2 -23
  218. package/dest/services/tx_collection/config.d.ts.map +1 -1
  219. package/dest/services/tx_collection/config.js +2 -55
  220. package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
  221. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  222. package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
  223. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  224. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  225. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  226. package/dest/services/tx_collection/index.d.ts +2 -3
  227. package/dest/services/tx_collection/index.d.ts.map +1 -1
  228. package/dest/services/tx_collection/index.js +0 -1
  229. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  230. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  231. package/dest/services/tx_collection/instrumentation.js +0 -2
  232. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  233. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  234. package/dest/services/tx_collection/request_tracker.js +84 -0
  235. package/dest/services/tx_collection/tx_collection.d.ts +36 -55
  236. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  237. package/dest/services/tx_collection/tx_collection.js +275 -119
  238. package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
  239. package/dest/services/tx_collection/tx_collection_sink.js +2 -2
  240. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  241. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  242. package/dest/services/tx_collection/tx_source.js +9 -7
  243. package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
  244. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  245. package/dest/services/tx_file_store/tx_file_store.js +4 -14
  246. package/dest/services/tx_provider.d.ts +5 -3
  247. package/dest/services/tx_provider.d.ts.map +1 -1
  248. package/dest/services/tx_provider.js +7 -4
  249. package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
  250. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  251. package/dest/test-helpers/make-test-p2p-clients.js +5 -3
  252. package/dest/test-helpers/mock-pubsub.d.ts +24 -11
  253. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  254. package/dest/test-helpers/mock-pubsub.js +45 -45
  255. package/dest/test-helpers/reqresp-nodes.d.ts +5 -7
  256. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  257. package/dest/test-helpers/reqresp-nodes.js +17 -19
  258. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  259. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  260. package/dest/test-helpers/test_tx_provider.js +3 -0
  261. package/dest/test-helpers/testbench-utils.d.ts +13 -15
  262. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  263. package/dest/test-helpers/testbench-utils.js +42 -15
  264. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  265. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  266. package/dest/testbench/p2p_client_testbench_worker.js +88 -42
  267. package/dest/testbench/worker_client_manager.d.ts +12 -6
  268. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  269. package/dest/testbench/worker_client_manager.js +57 -11
  270. package/dest/util.d.ts +12 -7
  271. package/dest/util.d.ts.map +1 -1
  272. package/dest/util.js +35 -14
  273. package/dest/versioning.d.ts +3 -6
  274. package/dest/versioning.d.ts.map +1 -1
  275. package/dest/versioning.js +3 -24
  276. package/package.json +15 -14
  277. package/src/bootstrap/bootstrap.ts +9 -1
  278. package/src/client/factory.ts +74 -49
  279. package/src/client/interface.ts +20 -30
  280. package/src/client/p2p_client.ts +108 -156
  281. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  282. package/src/config.ts +227 -45
  283. package/src/errors/p2p-service.error.ts +11 -0
  284. package/src/errors/reqresp.error.ts +0 -25
  285. package/src/index.ts +0 -1
  286. package/src/mem_pools/attestation_pool/attestation_pool.ts +318 -242
  287. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +204 -68
  288. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  289. package/src/mem_pools/index.ts +0 -3
  290. package/src/mem_pools/instrumentation.ts +22 -14
  291. package/src/mem_pools/tx_pool_v2/README.md +9 -1
  292. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +3 -2
  293. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -0
  294. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  295. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  296. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +11 -1
  297. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +5 -5
  298. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +10 -6
  299. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +15 -6
  300. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +2 -1
  301. package/src/mem_pools/tx_pool_v2/index.ts +1 -1
  302. package/src/mem_pools/tx_pool_v2/interfaces.ts +19 -8
  303. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +130 -23
  304. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +29 -43
  305. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +17 -2
  306. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +267 -229
  307. package/src/msg_validators/attestation_validator/README.md +49 -0
  308. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  309. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -7
  310. package/src/msg_validators/clock_tolerance.ts +79 -3
  311. package/src/msg_validators/proposal_validator/README.md +123 -0
  312. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +24 -4
  313. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +35 -7
  314. package/src/msg_validators/proposal_validator/proposal_validator.ts +114 -47
  315. package/src/msg_validators/tx_validator/README.md +127 -0
  316. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +6 -15
  317. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  318. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  319. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  320. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  321. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  322. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  323. package/src/msg_validators/tx_validator/factory.ts +407 -80
  324. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  325. package/src/msg_validators/tx_validator/gas_validator.ts +199 -54
  326. package/src/msg_validators/tx_validator/index.ts +4 -0
  327. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  328. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  329. package/src/msg_validators/tx_validator/phases_validator.ts +82 -27
  330. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  331. package/src/msg_validators/tx_validator/tx_validation_cache.ts +102 -0
  332. package/src/services/data_store.ts +5 -13
  333. package/src/services/discv5/discV5_service.ts +38 -5
  334. package/src/services/dummy_service.ts +15 -44
  335. package/src/services/encoding.ts +14 -7
  336. package/src/services/gossipsub/topic_score_params.ts +36 -4
  337. package/src/services/libp2p/instrumentation.ts +14 -0
  338. package/src/services/libp2p/libp2p_service.ts +390 -360
  339. package/src/services/peer-manager/metrics.ts +7 -0
  340. package/src/services/peer-manager/peer_manager.ts +46 -11
  341. package/src/services/peer-manager/peer_scoring.ts +27 -5
  342. package/src/services/reqresp/README.md +215 -0
  343. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  344. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +97 -119
  345. package/src/services/reqresp/batch-tx-requester/interface.ts +13 -5
  346. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  347. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  348. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  349. package/src/services/reqresp/config.ts +2 -2
  350. package/src/services/reqresp/interface.ts +21 -47
  351. package/src/services/reqresp/metrics.ts +0 -1
  352. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +4 -2
  353. package/src/services/reqresp/protocols/index.ts +0 -1
  354. package/src/services/reqresp/protocols/tx.ts +1 -3
  355. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  356. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  357. package/src/services/reqresp/reqresp.ts +48 -261
  358. package/src/services/service.ts +13 -29
  359. package/src/services/tx_collection/config.ts +3 -80
  360. package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
  361. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  362. package/src/services/tx_collection/index.ts +1 -6
  363. package/src/services/tx_collection/instrumentation.ts +1 -7
  364. package/src/services/tx_collection/request_tracker.ts +127 -0
  365. package/src/services/tx_collection/tx_collection.ts +331 -176
  366. package/src/services/tx_collection/tx_collection_sink.ts +2 -2
  367. package/src/services/tx_collection/tx_source.ts +8 -7
  368. package/src/services/tx_file_store/tx_file_store.ts +5 -17
  369. package/src/services/tx_provider.ts +7 -2
  370. package/src/test-helpers/make-test-p2p-clients.ts +4 -3
  371. package/src/test-helpers/mock-pubsub.ts +49 -66
  372. package/src/test-helpers/reqresp-nodes.ts +15 -28
  373. package/src/test-helpers/test_tx_provider.ts +5 -0
  374. package/src/test-helpers/testbench-utils.ts +54 -29
  375. package/src/testbench/p2p_client_testbench_worker.ts +91 -61
  376. package/src/testbench/worker_client_manager.ts +72 -25
  377. package/src/util.ts +33 -18
  378. package/src/versioning.ts +3 -33
  379. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  380. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  381. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -305
  382. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  383. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  384. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  385. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  386. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  387. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  388. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  389. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  390. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  391. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  392. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  393. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  394. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  395. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  396. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  397. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  398. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  399. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  400. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  401. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  402. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  403. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  404. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  405. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  406. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  407. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  408. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  409. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  410. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  411. package/dest/mem_pools/tx_pool/index.js +0 -2
  412. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  413. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  414. package/dest/mem_pools/tx_pool/priority.js +0 -15
  415. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  416. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  417. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  418. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  419. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  420. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  421. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  422. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  423. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  424. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  425. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  426. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  427. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  428. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  429. package/dest/services/reqresp/protocols/block.js +0 -32
  430. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -54
  431. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  432. package/dest/services/tx_collection/fast_tx_collection.js +0 -327
  433. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  434. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  435. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  436. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -49
  437. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  438. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  439. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
  440. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  441. package/dest/services/tx_collection/slow_tx_collection.js +0 -211
  442. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -346
  443. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  444. package/src/mem_pools/tx_pool/README.md +0 -270
  445. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  446. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  447. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  448. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  449. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  450. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  451. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  452. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  453. package/src/mem_pools/tx_pool/index.ts +0 -2
  454. package/src/mem_pools/tx_pool/priority.ts +0 -20
  455. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  456. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  457. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  458. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  459. package/src/services/reqresp/protocols/block.ts +0 -37
  460. package/src/services/tx_collection/fast_tx_collection.ts +0 -387
  461. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
  462. package/src/services/tx_collection/proposal_tx_collector.ts +0 -113
  463. package/src/services/tx_collection/slow_tx_collection.ts +0 -266
@@ -1,4 +1,34 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
1
+ /**
2
+ * Transaction validator factories for each tx entry point.
3
+ *
4
+ * Unsolicited transactions (gossip and RPC) are fully validated before acceptance.
5
+ * Transactions received via req/resp or block proposals are only checked for
6
+ * well-formedness because we must include them for block re-execution — they may
7
+ * ultimately be invalid, which is caught during block building and reported as
8
+ * part of block validation/attestation. See the README in this directory for the
9
+ * full validation strategy.
10
+ *
11
+ * 1. **Gossip** — full validation in two stages with a pool pre-check in between.
12
+ * Stage 1 (fast): metadata, data, timestamps, double-spend, gas, phases, block header.
13
+ * Pool pre-check: `canAddPendingTx` — skips proof verification if pool would reject.
14
+ * Stage 2 (slow): proof verification.
15
+ * Orchestrated by `handleGossipedTx` in `libp2p_service.ts`.
16
+ *
17
+ * 2. **JSON-RPC** — full validation including all state-dependent checks.
18
+ * Proof verification and fee enforcement are configurable for testing purposes.
19
+ *
20
+ * 3. **Req/resp & block proposals** — well-formedness checks only (metadata, size,
21
+ * data, proof). Stored for re-execution; validity against state is not checked here.
22
+ *
23
+ * 4. **Block building** — re-validates against current state immediately before
24
+ * sequencing. Catches invalid txs that entered via req/resp or block proposals.
25
+ * Proof and data checks are skipped since they were verified on entry.
26
+ *
27
+ * 5. **Pending pool migration** — when unmined txs (e.g. from req/resp or block
28
+ * proposals) are migrated to the pending pool, the pool runs the state-dependent
29
+ * checks they missed: double-spend, block header, gas limits, and timestamps.
30
+ * This runs on every tx potentially entering the pending pool.
31
+ */ import { Fr } from '@aztec/foundation/curves/bn254';
2
32
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
33
  import { ProtocolContractAddress, protocolContractsHash } from '@aztec/protocol-contracts';
4
34
  import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
@@ -6,79 +36,240 @@ import { DatabasePublicStateSource, MerkleTreeId } from '@aztec/stdlib/trees';
6
36
  import { AggregateTxValidator } from './aggregate_tx_validator.js';
7
37
  import { ArchiveCache } from './archive_cache.js';
8
38
  import { BlockHeaderTxValidator } from './block_header_validator.js';
39
+ import { CachedTxValidator } from './cached_tx_validator.js';
40
+ import { ContractInstanceTxValidator } from './contract_instance_validator.js';
9
41
  import { DataTxValidator } from './data_validator.js';
10
42
  import { DoubleSpendTxValidator } from './double_spend_validator.js';
11
- import { GasTxValidator } from './gas_validator.js';
43
+ import { GasLimitsValidator, GasTxValidator, MaxFeePerGasValidator } from './gas_validator.js';
12
44
  import { MetadataTxValidator } from './metadata_validator.js';
13
- import { PhasesTxValidator } from './phases_validator.js';
45
+ import { NullifierCache } from './nullifier_cache.js';
46
+ import { AllowedSetupCallsMetaValidator, PhasesTxValidator } from './phases_validator.js';
14
47
  import { SizeTxValidator } from './size_validator.js';
15
48
  import { TimestampTxValidator } from './timestamp_validator.js';
16
49
  import { TxPermittedValidator } from './tx_permitted_validator.js';
17
50
  import { TxProofValidator } from './tx_proof_validator.js';
18
- export function createTxMessageValidators(timestamp, blockNumber, worldStateSynchronizer, gasFees, l1ChainId, rollupVersion, protocolContractsHash, contractDataSource, proofVerifier, txsPermitted, allowedInSetup = [], bindings) {
51
+ /**
52
+ * First stage of gossip validation — fast checks run before the pool pre-check.
53
+ *
54
+ * If any validator fails, the peer is penalized and the tx is rejected immediately,
55
+ * without consulting the pool or running proof verification.
56
+ *
57
+ * The `doubleSpendValidator` failure is special-cased by the caller (`handleGossipedTx`)
58
+ * to determine severity based on how recently the nullifier appeared.
59
+ */ export function createFirstStageTxValidationsForGossipedTransactions(timestamp, blockNumber, worldStateSynchronizer, gasFees, l1ChainId, rollupVersion, protocolContractsHash, contractDataSource, txsPermitted, allowedInSetup = [], bindings, gasLimitOpts) {
19
60
  const merkleTree = worldStateSynchronizer.getCommitted();
20
- return [
21
- {
22
- txsPermittedValidator: {
23
- validator: new TxPermittedValidator(txsPermitted, bindings),
24
- severity: PeerErrorSeverity.MidToleranceError
25
- },
26
- dataValidator: {
27
- validator: new DataTxValidator(bindings),
28
- severity: PeerErrorSeverity.HighToleranceError
29
- },
30
- metadataValidator: {
31
- validator: new MetadataTxValidator({
32
- l1ChainId: new Fr(l1ChainId),
33
- rollupVersion: new Fr(rollupVersion),
34
- protocolContractsHash,
35
- vkTreeRoot: getVKTreeRoot()
36
- }, bindings),
37
- severity: PeerErrorSeverity.HighToleranceError
38
- },
39
- timestampValidator: {
40
- validator: new TimestampTxValidator({
41
- timestamp,
42
- blockNumber
43
- }, bindings),
44
- severity: PeerErrorSeverity.MidToleranceError
45
- },
46
- doubleSpendValidator: {
47
- validator: new DoubleSpendTxValidator({
48
- nullifiersExist: async (nullifiers)=>{
49
- const merkleTree = worldStateSynchronizer.getCommitted();
50
- const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
51
- return indices.map((index)=>index !== undefined);
52
- }
53
- }, bindings),
54
- severity: PeerErrorSeverity.HighToleranceError
55
- },
56
- gasValidator: {
57
- validator: new GasTxValidator(new DatabasePublicStateSource(merkleTree), ProtocolContractAddress.FeeJuice, gasFees, bindings),
58
- severity: PeerErrorSeverity.HighToleranceError
59
- },
60
- phasesValidator: {
61
- validator: new PhasesTxValidator(contractDataSource, allowedInSetup, timestamp, bindings),
62
- severity: PeerErrorSeverity.MidToleranceError
63
- },
64
- blockHeaderValidator: {
65
- validator: new BlockHeaderTxValidator(new ArchiveCache(merkleTree), bindings),
66
- severity: PeerErrorSeverity.HighToleranceError
67
- }
61
+ return {
62
+ timestampValidator: {
63
+ validator: new TimestampTxValidator({
64
+ timestamp,
65
+ blockNumber
66
+ }, bindings),
67
+ severity: PeerErrorSeverity.HighToleranceError
68
68
  },
69
- {
70
- proofValidator: {
71
- validator: new TxProofValidator(proofVerifier, bindings),
72
- severity: PeerErrorSeverity.MidToleranceError
73
- }
69
+ txsPermittedValidator: {
70
+ validator: new TxPermittedValidator(txsPermitted, bindings),
71
+ severity: PeerErrorSeverity.MidToleranceError
72
+ },
73
+ txSizeValidator: {
74
+ validator: new SizeTxValidator(bindings),
75
+ severity: PeerErrorSeverity.MidToleranceError
76
+ },
77
+ metadataValidator: {
78
+ validator: new MetadataTxValidator({
79
+ l1ChainId: new Fr(l1ChainId),
80
+ rollupVersion: new Fr(rollupVersion),
81
+ protocolContractsHash,
82
+ vkTreeRoot: getVKTreeRoot()
83
+ }, bindings),
84
+ severity: PeerErrorSeverity.MidToleranceError
85
+ },
86
+ phasesValidator: {
87
+ validator: new PhasesTxValidator(contractDataSource, allowedInSetup, timestamp, bindings),
88
+ severity: PeerErrorSeverity.MidToleranceError
89
+ },
90
+ blockHeaderValidator: {
91
+ validator: new BlockHeaderTxValidator(new ArchiveCache(merkleTree), bindings),
92
+ severity: PeerErrorSeverity.HighToleranceError
93
+ },
94
+ doubleSpendValidator: {
95
+ validator: new DoubleSpendTxValidator({
96
+ nullifiersExist: async (nullifiers)=>{
97
+ const merkleTree = worldStateSynchronizer.getCommitted();
98
+ const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
99
+ return indices.map((index)=>index !== undefined);
100
+ }
101
+ }, bindings),
102
+ severity: PeerErrorSeverity.MidToleranceError
103
+ },
104
+ gasValidator: {
105
+ validator: new GasTxValidator(new DatabasePublicStateSource(merkleTree), ProtocolContractAddress.FeeJuice, gasFees, bindings, gasLimitOpts),
106
+ severity: PeerErrorSeverity.MidToleranceError
107
+ },
108
+ dataValidator: {
109
+ validator: new DataTxValidator(bindings),
110
+ severity: PeerErrorSeverity.MidToleranceError
111
+ },
112
+ contractInstanceValidator: {
113
+ validator: new ContractInstanceTxValidator(bindings),
114
+ severity: PeerErrorSeverity.MidToleranceError
74
115
  }
75
- ];
116
+ };
117
+ }
118
+ /**
119
+ * Second stage of gossip validation — expensive proof verification.
120
+ *
121
+ * Only runs after the first stage passes AND `canAddPendingTx` confirms the pool would
122
+ * accept the tx. This avoids wasting CPU on proof verification for txs the pool would reject
123
+ * (e.g., duplicates, insufficient balance, pool full).
124
+ */ export function createSecondStageTxValidationsForGossipedTransactions(proofVerifier, bindings) {
125
+ return {
126
+ proofValidator: {
127
+ validator: new TxProofValidator(proofVerifier, bindings),
128
+ severity: PeerErrorSeverity.LowToleranceError
129
+ }
130
+ };
76
131
  }
77
- export function createTxReqRespValidator(verifier, { l1ChainId, rollupVersion }, bindings) {
78
- return new AggregateTxValidator(new MetadataTxValidator({
132
+ /**
133
+ * Well-formedness checks only: metadata, size, data, and proof.
134
+ * Used for req/resp and block proposal txs. These txs must be accepted for block
135
+ * re-execution even though they may be invalid against current state — that is
136
+ * caught later by the block building validator.
137
+ */ function createTxValidatorForMinimumTxIntegrityChecks(verifier, { l1ChainId, rollupVersion }, bindings, cache) {
138
+ const aggregate = new AggregateTxValidator(new MetadataTxValidator({
79
139
  l1ChainId: new Fr(l1ChainId),
80
140
  rollupVersion: new Fr(rollupVersion),
81
141
  protocolContractsHash,
82
142
  vkTreeRoot: getVKTreeRoot()
83
- }, 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);
147
+ }
148
+ /**
149
+ * Validators for txs received via req/resp or filestores.
150
+ * Checks well-formedness only — we must accept these for re-execution even if they
151
+ * are invalid against current state. State-dependent checks happen when the tx
152
+ * enters the pending pool or during block building.
153
+ */ export function createTxValidatorForOnDemandReceivedTxs(verifier, { l1ChainId, rollupVersion }, bindings, cache) {
154
+ return createTxValidatorForMinimumTxIntegrityChecks(verifier, {
155
+ l1ChainId,
156
+ rollupVersion
157
+ }, bindings, cache);
158
+ }
159
+ /**
160
+ * Validators for txs received in block proposals.
161
+ * Same as req/resp — well-formedness only. We must store these for block
162
+ * re-execution; their validity against state is checked during block building.
163
+ */ export function createTxValidatorForBlockProposalReceivedTxs(verifier, { l1ChainId, rollupVersion }, bindings, cache) {
164
+ return createTxValidatorForMinimumTxIntegrityChecks(verifier, {
165
+ l1ChainId,
166
+ rollupVersion
167
+ }, bindings, cache);
168
+ }
169
+ /**
170
+ * Validators for unsolicited txs received over JSON-RPC (from a local wallet/PXE).
171
+ * Full validation — all state-dependent checks are run. Proof verification is optional
172
+ * (can be skipped for testing purposes). Fee enforcement is also optional (skipped for testing/dev).
173
+ * Called from `AztecNodeService.isValidTx()`.
174
+ */ export function createTxValidatorForAcceptingTxsOverRPC(db, contractDataSource, verifier, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted, rollupManaLimit, maxBlockL2Gas, maxBlockDAGas }, bindings) {
175
+ const validators = [
176
+ new TxPermittedValidator(txsPermitted, bindings),
177
+ new TimestampTxValidator({
178
+ timestamp,
179
+ blockNumber
180
+ }, bindings),
181
+ new SizeTxValidator(bindings),
182
+ new MetadataTxValidator({
183
+ l1ChainId: new Fr(l1ChainId),
184
+ rollupVersion: new Fr(rollupVersion),
185
+ protocolContractsHash,
186
+ vkTreeRoot: getVKTreeRoot()
187
+ }, bindings),
188
+ new PhasesTxValidator(contractDataSource, setupAllowList, timestamp, bindings),
189
+ new BlockHeaderTxValidator(new ArchiveCache(db), bindings),
190
+ new DoubleSpendTxValidator(new NullifierCache(db), bindings),
191
+ new DataTxValidator(bindings),
192
+ new ContractInstanceTxValidator(bindings)
193
+ ];
194
+ if (!skipFeeEnforcement) {
195
+ validators.push(new GasTxValidator(new DatabasePublicStateSource(db), ProtocolContractAddress.FeeJuice, gasFees, bindings, {
196
+ rollupManaLimit,
197
+ maxBlockL2Gas,
198
+ maxBlockDAGas
199
+ }));
200
+ }
201
+ if (verifier) {
202
+ validators.push(new TxProofValidator(verifier, bindings));
203
+ }
204
+ return new AggregateTxValidator(...validators);
205
+ }
206
+ /**
207
+ * Validators for txs about to be included in a block by the sequencer.
208
+ * Re-validates against current state. This is where invalid txs that entered via
209
+ * req/resp or block proposals are caught — their invalidity is reported as part
210
+ * of block validation/attestation. Proof and data checks are omitted since they
211
+ * were already verified on entry.
212
+ * Called from `CheckpointBuilder.makeBlockBuilderDeps()`.
213
+ */ export function createTxValidatorForBlockBuilding(db, contractDataSource, globalVariables, setupAllowList, bindings) {
214
+ const nullifierCache = new NullifierCache(db);
215
+ const archiveCache = new ArchiveCache(db);
216
+ const publicStateSource = new DatabasePublicStateSource(db);
217
+ return {
218
+ preprocessValidator: createTxValidatorForValidatingAgainstCurrentState(nullifierCache, archiveCache, publicStateSource, contractDataSource, globalVariables, setupAllowList, bindings),
219
+ nullifierCache
220
+ };
221
+ }
222
+ function createTxValidatorForValidatingAgainstCurrentState(nullifierSource, archiveSource, publicStateSource, contractDataSource, globalVariables, setupAllowList, bindings) {
223
+ // We don't include the TxProofValidator nor the DataTxValidator here because they are already checked by the time we get to block building.
224
+ return new AggregateTxValidator(new TimestampTxValidator({
225
+ timestamp: globalVariables.timestamp,
226
+ blockNumber: globalVariables.blockNumber
227
+ }, bindings), new PhasesTxValidator(contractDataSource, setupAllowList, globalVariables.timestamp, bindings), new BlockHeaderTxValidator(archiveSource, bindings), new DoubleSpendTxValidator(nullifierSource, bindings), new GasTxValidator(publicStateSource, ProtocolContractAddress.FeeJuice, globalVariables.gasFees, bindings));
228
+ }
229
+ /**
230
+ * Validators for txs migrating to the pending pool.
231
+ *
232
+ * Txs that arrived via req/resp or block proposals only had well-formedness checks
233
+ * on receipt. When they fail to be mined and are migrated to the pending pool, we
234
+ * run the state-dependent checks they missed: double-spend, block header, gas limits,
235
+ * and timestamp expiry. This is run on EVERY tx potentially entering the pending pool
236
+ * — called inside `TxPoolV2Impl` during `addPendingTxs`, `prepareForSlot` (unprotect),
237
+ * `handlePrunedBlocks` (unmine), and startup hydration.
238
+ *
239
+ * Operates on `TxMetaData` rather than full `Tx` since metadata is pre-built by the pool.
240
+ * Injected into `TxPoolV2` as the `createTxValidator` factory in `TxPoolV2Dependencies`.
241
+ */ export async function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer, timestamp, blockNumber, gasLimitOpts, gasFees, bindings) {
242
+ await worldStateSynchronizer.syncImmediate();
243
+ const merkleTree = worldStateSynchronizer.getCommitted();
244
+ const nullifierSource = {
245
+ nullifiersExist: async (nullifiers)=>{
246
+ const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
247
+ return indices.map((index)=>index !== undefined);
248
+ }
249
+ };
250
+ const archiveSource = {
251
+ getArchiveIndices: (archives)=>{
252
+ return merkleTree.findLeafIndices(MerkleTreeId.ARCHIVE, archives);
253
+ }
254
+ };
255
+ return new AggregateTxValidator(new GasLimitsValidator({
256
+ ...gasLimitOpts,
257
+ bindings
258
+ }), new MaxFeePerGasValidator(gasFees, bindings), new TimestampTxValidator({
259
+ timestamp,
260
+ blockNumber
261
+ }, bindings), new DoubleSpendTxValidator(nullifierSource, bindings), new BlockHeaderTxValidator(archiveSource, bindings), new AllowedSetupCallsMetaValidator(bindings));
262
+ }
263
+ /**
264
+ * Creates a function that checks whether a tx's setup-phase calls are on the allow list.
265
+ *
266
+ * Uses the `PhasesTxValidator` on the full Tx. The result is stored as a boolean
267
+ * flag in `TxMetaData.allowedSetupCalls` at receipt time, so the pending pool
268
+ * migration validator can check it without needing the full Tx or its dependencies.
269
+ */ export function createCheckAllowedSetupCalls(contractDataSource, setupAllowList, getTimestamp) {
270
+ return async (tx)=>{
271
+ const validator = new PhasesTxValidator(contractDataSource, setupAllowList, getTimestamp());
272
+ const result = await validator.validateTx(tx);
273
+ return result.result === 'valid';
274
+ };
84
275
  }
@@ -7,4 +7,4 @@ export type FeePayerBalanceDelta = {
7
7
  export declare function getTxFeeLimit(tx: Tx): bigint;
8
8
  export declare function getFeePayerClaimAmount(tx: Tx, feeJuiceAddress: AztecAddress): Promise<bigint>;
9
9
  export declare function getFeePayerBalanceDelta(tx: Tx, feeJuiceAddress: AztecAddress): Promise<FeePayerBalanceDelta>;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZmVlX3BheWVyX2JhbGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBRTdELE1BQU0sTUFBTSxvQkFBb0IsR0FBRztJQUNqQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFdBQVcsRUFBRSxNQUFNLENBQUM7Q0FDckIsQ0FBQztBQUlGLHdCQUFnQixhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRTVDO0FBRUQsd0JBQXNCLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBZ0JuRztBQUVELHdCQUFzQix1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBS2xIIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3BheWVyX2JhbGFuY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZmVlX3BheWVyX2JhbGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBRTdELE1BQU0sTUFBTSxvQkFBb0IsR0FBRztJQUNqQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFdBQVcsRUFBRSxNQUFNLENBQUM7Q0FDckIsQ0FBQztBQU9GLHdCQUFnQixhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRTVDO0FBRUQsd0JBQXNCLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBZ0JuRztBQUVELHdCQUFzQix1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBS2xIIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"fee_payer_balance.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/fee_payer_balance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAE5C;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnG;AAED,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAKlH"}
1
+ {"version":3,"file":"fee_payer_balance.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/fee_payer_balance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAOF,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAE5C;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnG;AAED,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAKlH"}
@@ -1,7 +1,11 @@
1
+ import { FeeJuiceArtifact } from '@aztec/protocol-contracts/fee-juice';
1
2
  import { getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
2
- import { FunctionSelector } from '@aztec/stdlib/abi';
3
+ import { FunctionSelector, getAllFunctionAbis } from '@aztec/stdlib/abi';
3
4
  import { TxExecutionPhase } from '@aztec/stdlib/tx';
4
- const increasePublicBalanceSelectorPromise = FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
5
+ const increasePublicBalanceSelectorPromise = (()=>{
6
+ const fn = getAllFunctionAbis(FeeJuiceArtifact).find((f)=>f.name === '_increase_public_balance');
7
+ return FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
8
+ })();
5
9
  export function getTxFeeLimit(tx) {
6
10
  return tx.data.constants.txContext.gasSettings.getFeeLimit().toBigInt();
7
11
  }
@@ -1,12 +1,108 @@
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
+ constructor(opts?: {
52
+ rollupManaLimit?: number;
53
+ maxBlockL2Gas?: number;
54
+ maxBlockDAGas?: number;
55
+ bindings?: LoggerBindings;
56
+ });
57
+ validateTx(tx: T): Promise<TxValidationResult>;
58
+ /** Checks gas limits are >= fixed minimums and <= effective max gas (L2 and DA). */
59
+ validateGasLimit(tx: T): TxValidationResult;
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
+ }
79
+ /**
80
+ * Validates that a transaction can pay its gas fees.
81
+ *
82
+ * Runs three checks in order:
83
+ * 1. **Gas limits** (delegates to {@link GasLimitsValidator}) — rejects if limits are
84
+ * out of bounds.
85
+ * 2. **Max fee per gas** — rejects the tx if its maxFeesPerGas is below
86
+ * the current block's gas fees.
87
+ * 3. **Fee payer balance** — reads the fee payer's FeeJuice balance from public state,
88
+ * adds any pending claim from a setup-phase `_increase_public_balance` call, and
89
+ * rejects if the total is less than the tx's fee limit (gasLimits * maxFeePerGas).
90
+ *
91
+ * Used by: gossip (stage 1), RPC, and block building validators.
92
+ */
6
93
  export declare class GasTxValidator implements TxValidator<Tx> {
7
94
  #private;
8
- constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees, bindings?: LoggerBindings);
95
+ private bindings?;
96
+ constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees, bindings?: LoggerBindings | undefined, opts?: {
97
+ rollupManaLimit?: number;
98
+ maxBlockL2Gas?: number;
99
+ maxBlockDAGas?: number;
100
+ });
9
101
  validateTx(tx: Tx): Promise<TxValidationResult>;
102
+ /**
103
+ * Checks the fee payer has enough FeeJuice balance to cover the tx's fee limit.
104
+ * Accounts for any pending claim from a setup-phase `_increase_public_balance` call.
105
+ */
10
106
  validateTxFee(tx: Tx): Promise<TxValidationResult>;
11
107
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9nYXNfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQU8sT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBS0wsS0FBSyxFQUFFLEVBQ1AsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIscUJBQWEsY0FBZSxZQUFXLFdBQVcsQ0FBQyxFQUFFLENBQUM7O0lBTXBELFlBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQ25DLGVBQWUsRUFBRSxZQUFZLEVBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFNMUI7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FTcEQ7SUFtRFksYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBeUI5RDtDQUNGIn0=
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":"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;;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"}