@aztec/p2p 0.0.1-commit.04852196a → 0.0.1-commit.04d373f

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 (406) 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 +4 -3
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +31 -14
  8. package/dest/client/interface.d.ts +14 -5
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +13 -9
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +94 -26
  13. package/dest/config.d.ts +139 -97
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +70 -5
  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 +265 -199
  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 +1 -1
  37. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  38. package/dest/mem_pools/instrumentation.js +17 -1
  39. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  40. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  41. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +2 -1
  42. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -1
  43. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
  44. package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -0
  45. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  46. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  47. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  48. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +2 -2
  49. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +10 -5
  50. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +13 -3
  52. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +20 -7
  54. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +4 -2
  55. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +3 -0
  57. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
  58. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +92 -87
  60. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  61. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  62. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  63. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -3
  64. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  65. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +4 -5
  66. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  67. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  68. package/dest/msg_validators/clock_tolerance.js +61 -3
  69. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -2
  70. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  71. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -2
  72. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  73. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +10 -2
  74. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  75. package/dest/msg_validators/proposal_validator/proposal_validator.js +46 -12
  76. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  77. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  78. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +8 -15
  79. package/dest/msg_validators/tx_validator/allowed_public_setup.js +3 -3
  80. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  81. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  82. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  83. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  84. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  85. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  86. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  87. package/dest/msg_validators/tx_validator/data_validator.d.ts +2 -1
  88. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  89. package/dest/msg_validators/tx_validator/data_validator.js +36 -2
  90. package/dest/msg_validators/tx_validator/factory.d.ts +27 -7
  91. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  92. package/dest/msg_validators/tx_validator/factory.js +47 -17
  93. package/dest/msg_validators/tx_validator/gas_validator.d.ts +48 -7
  94. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  95. package/dest/msg_validators/tx_validator/gas_validator.js +88 -41
  96. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  97. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  98. package/dest/msg_validators/tx_validator/index.js +2 -0
  99. package/dest/msg_validators/tx_validator/phases_validator.d.ts +21 -1
  100. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  101. package/dest/msg_validators/tx_validator/phases_validator.js +28 -1
  102. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +2 -1
  103. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  104. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -0
  105. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  106. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  107. package/dest/msg_validators/tx_validator/tx_validation_cache.js +69 -0
  108. package/dest/services/data_store.d.ts +1 -1
  109. package/dest/services/data_store.d.ts.map +1 -1
  110. package/dest/services/data_store.js +5 -5
  111. package/dest/services/discv5/discV5_service.d.ts +2 -1
  112. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  113. package/dest/services/discv5/discV5_service.js +35 -8
  114. package/dest/services/dummy_service.d.ts +11 -15
  115. package/dest/services/dummy_service.d.ts.map +1 -1
  116. package/dest/services/dummy_service.js +12 -16
  117. package/dest/services/encoding.d.ts +5 -1
  118. package/dest/services/encoding.d.ts.map +1 -1
  119. package/dest/services/encoding.js +7 -1
  120. package/dest/services/gossipsub/topic_score_params.d.ts +13 -2
  121. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  122. package/dest/services/gossipsub/topic_score_params.js +21 -4
  123. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  124. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  125. package/dest/services/libp2p/instrumentation.js +14 -0
  126. package/dest/services/libp2p/libp2p_service.d.ts +36 -46
  127. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  128. package/dest/services/libp2p/libp2p_service.js +282 -236
  129. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  130. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  131. package/dest/services/peer-manager/peer_manager.js +38 -10
  132. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  133. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  134. package/dest/services/peer-manager/peer_scoring.js +32 -10
  135. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +11 -8
  136. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  137. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +84 -71
  138. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +10 -6
  139. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  140. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +5 -4
  141. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  142. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +13 -7
  143. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +3 -1
  144. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  145. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +3 -0
  146. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +5 -14
  147. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -1
  148. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +6 -20
  149. package/dest/services/reqresp/config.d.ts +3 -3
  150. package/dest/services/reqresp/config.d.ts.map +1 -1
  151. package/dest/services/reqresp/interface.d.ts +16 -18
  152. package/dest/services/reqresp/interface.d.ts.map +1 -1
  153. package/dest/services/reqresp/interface.js +10 -20
  154. package/dest/services/reqresp/metrics.d.ts +1 -1
  155. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  156. package/dest/services/reqresp/metrics.js +0 -1
  157. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  158. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  159. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +4 -2
  160. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  161. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  162. package/dest/services/reqresp/protocols/index.js +0 -1
  163. package/dest/services/reqresp/protocols/tx.d.ts +1 -1
  164. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  165. package/dest/services/reqresp/protocols/tx.js +1 -3
  166. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  167. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  168. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  169. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  170. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  171. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  172. package/dest/services/reqresp/reqresp.d.ts +7 -29
  173. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  174. package/dest/services/reqresp/reqresp.js +41 -214
  175. package/dest/services/service.d.ts +9 -12
  176. package/dest/services/service.d.ts.map +1 -1
  177. package/dest/services/tx_collection/config.d.ts +2 -23
  178. package/dest/services/tx_collection/config.d.ts.map +1 -1
  179. package/dest/services/tx_collection/config.js +2 -55
  180. package/dest/services/tx_collection/file_store_tx_collection.d.ts +12 -28
  181. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
  182. package/dest/services/tx_collection/file_store_tx_collection.js +43 -83
  183. package/dest/services/tx_collection/file_store_tx_source.d.ts +5 -4
  184. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
  185. package/dest/services/tx_collection/file_store_tx_source.js +39 -29
  186. package/dest/services/tx_collection/index.d.ts +2 -3
  187. package/dest/services/tx_collection/index.d.ts.map +1 -1
  188. package/dest/services/tx_collection/index.js +0 -1
  189. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  190. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  191. package/dest/services/tx_collection/instrumentation.js +0 -2
  192. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  193. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  194. package/dest/services/tx_collection/request_tracker.js +84 -0
  195. package/dest/services/tx_collection/tx_collection.d.ts +36 -55
  196. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  197. package/dest/services/tx_collection/tx_collection.js +275 -119
  198. package/dest/services/tx_collection/tx_collection_sink.d.ts +1 -1
  199. package/dest/services/tx_collection/tx_collection_sink.js +2 -2
  200. package/dest/services/tx_collection/tx_source.d.ts +6 -5
  201. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  202. package/dest/services/tx_collection/tx_source.js +9 -7
  203. package/dest/services/tx_file_store/tx_file_store.d.ts +1 -3
  204. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
  205. package/dest/services/tx_file_store/tx_file_store.js +4 -14
  206. package/dest/services/tx_provider.d.ts +3 -1
  207. package/dest/services/tx_provider.d.ts.map +1 -1
  208. package/dest/services/tx_provider.js +3 -0
  209. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -1
  210. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  211. package/dest/test-helpers/make-test-p2p-clients.js +5 -2
  212. package/dest/test-helpers/mock-pubsub.d.ts +23 -9
  213. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  214. package/dest/test-helpers/mock-pubsub.js +44 -44
  215. package/dest/test-helpers/reqresp-nodes.d.ts +4 -5
  216. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  217. package/dest/test-helpers/reqresp-nodes.js +16 -18
  218. package/dest/test-helpers/test_tx_provider.d.ts +3 -1
  219. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -1
  220. package/dest/test-helpers/test_tx_provider.js +3 -0
  221. package/dest/test-helpers/testbench-utils.d.ts +12 -14
  222. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  223. package/dest/test-helpers/testbench-utils.js +42 -15
  224. package/dest/testbench/p2p_client_testbench_worker.d.ts +3 -5
  225. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  226. package/dest/testbench/p2p_client_testbench_worker.js +83 -38
  227. package/dest/testbench/worker_client_manager.d.ts +10 -6
  228. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  229. package/dest/testbench/worker_client_manager.js +51 -9
  230. package/dest/util.d.ts +11 -6
  231. package/dest/util.d.ts.map +1 -1
  232. package/dest/util.js +35 -14
  233. package/dest/versioning.d.ts +3 -6
  234. package/dest/versioning.d.ts.map +1 -1
  235. package/dest/versioning.js +3 -24
  236. package/package.json +15 -14
  237. package/src/bootstrap/bootstrap.ts +9 -1
  238. package/src/client/factory.ts +55 -7
  239. package/src/client/interface.ts +15 -11
  240. package/src/client/p2p_client.ts +107 -49
  241. package/src/client/test/{tx_proposal_collector/README.md → p2p_client.batch_tx_requester.bench.README.md} +23 -53
  242. package/src/config.ts +137 -4
  243. package/src/errors/p2p-service.error.ts +11 -0
  244. package/src/errors/reqresp.error.ts +0 -25
  245. package/src/index.ts +0 -1
  246. package/src/mem_pools/attestation_pool/attestation_pool.ts +316 -241
  247. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +204 -68
  248. package/src/mem_pools/attestation_pool/mocks.ts +13 -8
  249. package/src/mem_pools/index.ts +0 -3
  250. package/src/mem_pools/instrumentation.ts +5 -1
  251. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  252. package/src/mem_pools/tx_pool_v2/eviction/index.ts +1 -0
  253. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  254. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
  255. package/src/mem_pools/tx_pool_v2/interfaces.ts +9 -4
  256. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +31 -9
  257. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +13 -1
  258. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +93 -93
  259. package/src/msg_validators/attestation_validator/README.md +49 -0
  260. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  261. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +14 -7
  262. package/src/msg_validators/clock_tolerance.ts +79 -3
  263. package/src/msg_validators/proposal_validator/README.md +123 -0
  264. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +12 -2
  265. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +17 -2
  266. package/src/msg_validators/proposal_validator/proposal_validator.ts +54 -10
  267. package/src/msg_validators/tx_validator/README.md +15 -3
  268. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +3 -12
  269. package/src/msg_validators/tx_validator/allowed_public_setup.ts +3 -3
  270. package/src/msg_validators/tx_validator/archive_cache.ts +1 -1
  271. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  272. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  273. package/src/msg_validators/tx_validator/data_validator.ts +44 -1
  274. package/src/msg_validators/tx_validator/factory.ts +61 -10
  275. package/src/msg_validators/tx_validator/gas_validator.ts +121 -39
  276. package/src/msg_validators/tx_validator/index.ts +2 -0
  277. package/src/msg_validators/tx_validator/phases_validator.ts +31 -1
  278. package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -0
  279. package/src/msg_validators/tx_validator/tx_validation_cache.ts +102 -0
  280. package/src/services/data_store.ts +5 -13
  281. package/src/services/discv5/discV5_service.ts +38 -5
  282. package/src/services/dummy_service.ts +14 -39
  283. package/src/services/encoding.ts +9 -1
  284. package/src/services/gossipsub/topic_score_params.ts +36 -4
  285. package/src/services/libp2p/instrumentation.ts +14 -0
  286. package/src/services/libp2p/libp2p_service.ts +308 -272
  287. package/src/services/peer-manager/peer_manager.ts +44 -10
  288. package/src/services/peer-manager/peer_scoring.ts +27 -5
  289. package/src/services/reqresp/README.md +215 -0
  290. package/src/services/reqresp/batch-tx-requester/README.md +46 -7
  291. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +83 -77
  292. package/src/services/reqresp/batch-tx-requester/interface.ts +13 -5
  293. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +13 -6
  294. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +5 -0
  295. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +12 -25
  296. package/src/services/reqresp/config.ts +2 -2
  297. package/src/services/reqresp/interface.ts +21 -47
  298. package/src/services/reqresp/metrics.ts +0 -1
  299. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +4 -2
  300. package/src/services/reqresp/protocols/index.ts +0 -1
  301. package/src/services/reqresp/protocols/tx.ts +1 -3
  302. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  303. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  304. package/src/services/reqresp/reqresp.ts +45 -260
  305. package/src/services/service.ts +12 -28
  306. package/src/services/tx_collection/config.ts +3 -80
  307. package/src/services/tx_collection/file_store_tx_collection.ts +54 -103
  308. package/src/services/tx_collection/file_store_tx_source.ts +43 -31
  309. package/src/services/tx_collection/index.ts +1 -6
  310. package/src/services/tx_collection/instrumentation.ts +1 -7
  311. package/src/services/tx_collection/request_tracker.ts +127 -0
  312. package/src/services/tx_collection/tx_collection.ts +331 -176
  313. package/src/services/tx_collection/tx_collection_sink.ts +2 -2
  314. package/src/services/tx_collection/tx_source.ts +8 -7
  315. package/src/services/tx_file_store/tx_file_store.ts +5 -17
  316. package/src/services/tx_provider.ts +5 -0
  317. package/src/test-helpers/make-test-p2p-clients.ts +3 -0
  318. package/src/test-helpers/mock-pubsub.ts +46 -60
  319. package/src/test-helpers/reqresp-nodes.ts +12 -22
  320. package/src/test-helpers/test_tx_provider.ts +5 -0
  321. package/src/test-helpers/testbench-utils.ts +53 -28
  322. package/src/testbench/p2p_client_testbench_worker.ts +87 -54
  323. package/src/testbench/worker_client_manager.ts +59 -20
  324. package/src/util.ts +32 -17
  325. package/src/versioning.ts +3 -33
  326. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +0 -2
  327. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +0 -1
  328. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +0 -304
  329. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +0 -73
  330. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +0 -1
  331. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +0 -8
  332. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  333. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  334. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  335. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  336. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  337. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  338. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  339. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  340. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  341. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  342. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  343. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  344. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  345. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  346. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +0 -84
  347. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  348. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  349. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  350. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  351. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  352. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  353. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  354. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  355. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  356. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  357. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  358. package/dest/mem_pools/tx_pool/index.js +0 -2
  359. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  360. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  361. package/dest/mem_pools/tx_pool/priority.js +0 -15
  362. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  363. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  364. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  365. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  366. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  367. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  368. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -64
  369. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  370. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -151
  371. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  372. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  373. package/dest/services/reqresp/protocols/block.js +0 -32
  374. package/dest/services/tx_collection/fast_tx_collection.d.ts +0 -54
  375. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +0 -1
  376. package/dest/services/tx_collection/fast_tx_collection.js +0 -327
  377. package/dest/services/tx_collection/missing_txs_tracker.d.ts +0 -32
  378. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +0 -1
  379. package/dest/services/tx_collection/missing_txs_tracker.js +0 -27
  380. package/dest/services/tx_collection/proposal_tx_collector.d.ts +0 -49
  381. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +0 -1
  382. package/dest/services/tx_collection/proposal_tx_collector.js +0 -50
  383. package/dest/services/tx_collection/slow_tx_collection.d.ts +0 -57
  384. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +0 -1
  385. package/dest/services/tx_collection/slow_tx_collection.js +0 -211
  386. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +0 -345
  387. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +0 -43
  388. package/src/mem_pools/tx_pool/README.md +0 -270
  389. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  390. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  391. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  392. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  393. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  394. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  395. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  396. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  397. package/src/mem_pools/tx_pool/index.ts +0 -2
  398. package/src/mem_pools/tx_pool/priority.ts +0 -20
  399. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  400. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  401. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -161
  402. package/src/services/reqresp/protocols/block.ts +0 -37
  403. package/src/services/tx_collection/fast_tx_collection.ts +0 -387
  404. package/src/services/tx_collection/missing_txs_tracker.ts +0 -52
  405. package/src/services/tx_collection/proposal_tx_collector.ts +0 -113
  406. package/src/services/tx_collection/slow_tx_collection.ts +0 -266
@@ -1,18 +1,26 @@
1
1
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
- import { type BlockProposal, type CheckpointProposalCore, type ValidationResult } from '@aztec/stdlib/p2p';
2
+ import { type BlockProposal, type CheckpointProposalCore, type CoordinationSignatureContext, type ValidationResult } from '@aztec/stdlib/p2p';
3
3
  /** Validates header-level and tx-level fields of block and checkpoint proposals. */
4
4
  export declare class ProposalValidator {
5
5
  private epochCache;
6
6
  private logger;
7
7
  private txsPermitted;
8
8
  private maxTxsPerBlock?;
9
+ private maxBlocksPerCheckpoint?;
10
+ private pipeliningWindow;
11
+ private skipSlotValidation;
12
+ private signatureContext;
9
13
  constructor(epochCache: EpochCacheInterface, opts: {
10
14
  txsPermitted: boolean;
11
15
  maxTxsPerBlock?: number;
16
+ maxBlocksPerCheckpoint?: number;
17
+ p2pPropagationTime?: number;
18
+ skipSlotValidation?: boolean;
19
+ signatureContext: CoordinationSignatureContext;
12
20
  }, loggerName: string);
13
21
  /** Validates header-level fields: slot, signature, and proposer. */
14
22
  validate(proposal: BlockProposal | CheckpointProposalCore): Promise<ValidationResult>;
15
23
  /** Validates transaction-related fields of a block proposal. */
16
24
  validateTxs(proposal: BlockProposal): Promise<ValidationResult>;
17
25
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxzQkFBc0IsRUFFM0IsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixvRkFBb0Y7QUFDcEYscUJBQWEsaUJBQWlCO0lBQzVCLE9BQU8sQ0FBQyxVQUFVLENBQXNCO0lBQ3hDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLFlBQVksQ0FBVTtJQUM5QixPQUFPLENBQUMsY0FBYyxDQUFDLENBQVM7SUFFaEMsWUFDRSxVQUFVLEVBQUUsbUJBQW1CLEVBQy9CLElBQUksRUFBRTtRQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7UUFBQyxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQUN4RCxVQUFVLEVBQUUsTUFBTSxFQU1uQjtJQUVELG9FQUFvRTtJQUN2RCxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQWEsR0FBRyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0F1Q2pHO0lBRUQsZ0VBQWdFO0lBQ25ELFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQXdDM0U7Q0FDRiJ9
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvcHJvcG9zYWxfdmFsaWRhdG9yL3Byb3Bvc2FsX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxzQkFBc0IsRUFDM0IsS0FBSyw0QkFBNEIsRUFFakMsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixvRkFBb0Y7QUFDcEYscUJBQWEsaUJBQWlCO0lBQzVCLE9BQU8sQ0FBQyxVQUFVLENBQXNCO0lBQ3hDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLFlBQVksQ0FBVTtJQUM5QixPQUFPLENBQUMsY0FBYyxDQUFDLENBQVM7SUFDaEMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQVM7SUFDeEMsT0FBTyxDQUFDLGdCQUFnQixDQUFtQjtJQUMzQyxPQUFPLENBQUMsa0JBQWtCLENBQVU7SUFDcEMsT0FBTyxDQUFDLGdCQUFnQixDQUErQjtJQUV2RCxZQUNFLFVBQVUsRUFBRSxtQkFBbUIsRUFDL0IsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLE9BQU8sQ0FBQztRQUN0QixjQUFjLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDeEIsc0JBQXNCLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDaEMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDNUIsa0JBQWtCLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDN0IsZ0JBQWdCLEVBQUUsNEJBQTRCLENBQUM7S0FDaEQsRUFDRCxVQUFVLEVBQUUsTUFBTSxFQVVuQjtJQUVELG9FQUFvRTtJQUN2RCxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQWEsR0FBRyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FrRWpHO0lBRUQsZ0VBQWdFO0lBQ25ELFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQXdDM0U7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAE3B,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,oFAAoF;AACpF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,YACE,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EACxD,UAAU,EAAE,MAAM,EAMnB;IAED,oEAAoE;IACvD,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuCjG;IAED,gEAAgE;IACnD,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC3E;CACF"}
1
+ {"version":3,"file":"proposal_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/proposal_validator/proposal_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EAEjC,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAI3B,oFAAoF;AACpF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,sBAAsB,CAAC,CAAS;IACxC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,gBAAgB,CAA+B;IAEvD,YACE,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE;QACJ,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,gBAAgB,EAAE,4BAA4B,CAAC;KAChD,EACD,UAAU,EAAE,MAAM,EAUnB;IAED,oEAAoE;IACvD,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkEjG;IAED,gEAAgE;IACnD,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC3E;CACF"}
@@ -1,39 +1,66 @@
1
1
  import { NoCommitteeError } from '@aztec/ethereum/contracts';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
- import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
4
- import { isWithinClockTolerance } from '../clock_tolerance.js';
3
+ import { PeerErrorSeverity, hasValidSignatureContext } from '@aztec/stdlib/p2p';
4
+ import { PipeliningWindow, isWithinClockTolerance } from '../clock_tolerance.js';
5
5
  /** Validates header-level and tx-level fields of block and checkpoint proposals. */ export class ProposalValidator {
6
6
  epochCache;
7
7
  logger;
8
8
  txsPermitted;
9
9
  maxTxsPerBlock;
10
+ maxBlocksPerCheckpoint;
11
+ pipeliningWindow;
12
+ skipSlotValidation;
13
+ signatureContext;
10
14
  constructor(epochCache, opts, loggerName){
11
15
  this.epochCache = epochCache;
12
16
  this.txsPermitted = opts.txsPermitted;
13
17
  this.maxTxsPerBlock = opts.maxTxsPerBlock;
18
+ this.maxBlocksPerCheckpoint = opts.maxBlocksPerCheckpoint;
19
+ this.pipeliningWindow = new PipeliningWindow(epochCache, {
20
+ p2pPropagationTime: opts.p2pPropagationTime
21
+ });
22
+ this.skipSlotValidation = opts.skipSlotValidation ?? false;
23
+ this.signatureContext = opts.signatureContext;
14
24
  this.logger = createLogger(loggerName);
15
25
  }
16
26
  /** Validates header-level fields: slot, signature, and proposer. */ async validate(proposal) {
17
27
  try {
18
- // Slot check
19
- const { currentSlot, nextSlot } = this.epochCache.getCurrentAndNextSlot();
28
+ // Cross-chain replay check: reject proposals that carry a foreign signing domain.
29
+ if (!hasValidSignatureContext(proposal, this.signatureContext)) {
30
+ this.logger.warn(`Penalizing peer for proposal with foreign signature context`, {
31
+ chainId: proposal.signatureContext.chainId,
32
+ rollupAddress: proposal.signatureContext.rollupAddress.toString(),
33
+ expectedChainId: this.signatureContext.chainId,
34
+ expectedRollupAddress: this.signatureContext.rollupAddress.toString()
35
+ });
36
+ return {
37
+ result: 'reject',
38
+ severity: PeerErrorSeverity.LowToleranceError
39
+ };
40
+ }
41
+ // Slot check: use target slots since proposals target pipeline slots (slot + 1 when pipelining).
42
+ const { targetSlot, nextSlot } = this.epochCache.getTargetAndNextSlot();
20
43
  const slotNumber = proposal.slotNumber;
21
- if (slotNumber !== currentSlot && slotNumber !== nextSlot) {
22
- // Check if message is for previous slot and within clock tolerance
23
- if (!isWithinClockTolerance(slotNumber, currentSlot, this.epochCache)) {
44
+ if (!this.skipSlotValidation && slotNumber !== targetSlot && slotNumber !== nextSlot) {
45
+ // When pipelining, accept proposals for the current slot (built in the previous slot)
46
+ // if they're still within the shared proposal acceptance window.
47
+ if (this.pipeliningWindow.acceptsProposal(slotNumber)) {
48
+ // Fall through to remaining validation (signature, proposer, etc.)
49
+ } else if (!isWithinClockTolerance(slotNumber, targetSlot, this.epochCache)) {
24
50
  this.logger.warn(`Penalizing peer for invalid slot number ${slotNumber}`, {
25
- currentSlot,
51
+ targetSlot,
26
52
  nextSlot
27
53
  });
28
54
  return {
29
55
  result: 'reject',
30
56
  severity: PeerErrorSeverity.HighToleranceError
31
57
  };
58
+ } else {
59
+ this.logger.verbose(`Ignoring proposal for previous slot ${slotNumber} within clock tolerance`);
60
+ return {
61
+ result: 'ignore'
62
+ };
32
63
  }
33
- this.logger.verbose(`Ignoring proposal for previous slot ${slotNumber} within clock tolerance`);
34
- return {
35
- result: 'ignore'
36
- };
37
64
  }
38
65
  // Signature validity
39
66
  const proposer = proposal.getSender();
@@ -56,6 +83,13 @@ import { isWithinClockTolerance } from '../clock_tolerance.js';
56
83
  severity: PeerErrorSeverity.MidToleranceError
57
84
  };
58
85
  }
86
+ if (this.maxBlocksPerCheckpoint !== undefined && 'indexWithinCheckpoint' in proposal && proposal.indexWithinCheckpoint >= this.maxBlocksPerCheckpoint) {
87
+ this.logger.warn(`Penalizing peer for proposal with indexWithinCheckpoint ${proposal.indexWithinCheckpoint} >= max ${this.maxBlocksPerCheckpoint}`);
88
+ return {
89
+ result: 'reject',
90
+ severity: PeerErrorSeverity.MidToleranceError
91
+ };
92
+ }
59
93
  return {
60
94
  result: 'accept'
61
95
  };
@@ -4,4 +4,4 @@ export declare class AggregateTxValidator<T> implements TxValidator<T> {
4
4
  constructor(...validators: TxValidator<T>[]);
5
5
  validateTx(tx: T): Promise<TxValidationResult>;
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hZ2dyZWdhdGVfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhFLHFCQUFhLG9CQUFvQixDQUFDLENBQUMsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQU0xQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWtCbkQ7Q0FDRiJ9
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hZ2dyZWdhdGVfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhFLHFCQUFhLG9CQUFvQixDQUFDLENBQUMsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQU0xQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQVNuRDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate_tx_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/aggregate_tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAExE,qBAAa,oBAAoB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,YAAY,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAM1C;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkBnD;CACF"}
1
+ {"version":3,"file":"aggregate_tx_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/aggregate_tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAExE,qBAAa,oBAAoB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,YAAY,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAM1C;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CASnD;CACF"}
@@ -7,25 +7,18 @@ export class AggregateTxValidator {
7
7
  this.validators = validators;
8
8
  }
9
9
  async validateTx(tx) {
10
- const aggregate = {
11
- result: 'valid',
12
- reason: []
13
- };
10
+ const reasons = [];
14
11
  for (const validator of this.validators){
15
12
  const result = await validator.validateTx(tx);
16
13
  if (result.result === 'invalid') {
17
- aggregate.result = 'invalid';
18
- aggregate.reason.push(...result.reason);
19
- } else if (result.result === 'skipped') {
20
- if (aggregate.result === 'valid') {
21
- aggregate.result = 'skipped';
22
- }
23
- aggregate.reason.push(...result.reason);
14
+ reasons.push(...result.reason);
24
15
  }
25
16
  }
26
- if (aggregate.result === 'valid') {
27
- delete aggregate.reason;
28
- }
29
- return aggregate;
17
+ return reasons.length > 0 ? {
18
+ result: 'invalid',
19
+ reason: reasons
20
+ } : {
21
+ result: 'valid'
22
+ };
30
23
  }
31
24
  }
@@ -1,6 +1,6 @@
1
1
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
2
- import { AuthRegistryArtifact } from '@aztec/protocol-contracts/auth-registry';
3
2
  import { FeeJuiceArtifact } from '@aztec/protocol-contracts/fee-juice';
3
+ import { AuthRegistryArtifact, STANDARD_AUTH_REGISTRY_ADDRESS } from '@aztec/standard-contracts/auth-registry';
4
4
  import { buildAllowedElement } from './allowed_setup_helpers.js';
5
5
  let defaultAllowedSetupFunctions;
6
6
  /** Returns the default list of functions allowed to run in the setup phase of a transaction. */ export async function getDefaultAllowedSetupFunctions() {
@@ -8,14 +8,14 @@ let defaultAllowedSetupFunctions;
8
8
  defaultAllowedSetupFunctions = await Promise.all([
9
9
  // AuthRegistry: needed for authwit support via private path (set_authorized_private enqueues _set_authorized)
10
10
  buildAllowedElement(AuthRegistryArtifact, {
11
- address: ProtocolContractAddress.AuthRegistry
11
+ address: STANDARD_AUTH_REGISTRY_ADDRESS
12
12
  }, '_set_authorized', {
13
13
  onlySelf: true,
14
14
  rejectNullMsgSender: true
15
15
  }),
16
16
  // AuthRegistry: needed for authwit support via public path (PublicFeePaymentMethod calls set_authorized directly)
17
17
  buildAllowedElement(AuthRegistryArtifact, {
18
- address: ProtocolContractAddress.AuthRegistry
18
+ address: STANDARD_AUTH_REGISTRY_ADDRESS
19
19
  }, 'set_authorized', {
20
20
  rejectNullMsgSender: true
21
21
  }),
@@ -10,7 +10,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
10
10
  this.archives = new Map();
11
11
  }
12
12
  async getArchiveIndices(archives) {
13
- const toCheckDb = archives.filter((n)=>!this.archives.has(n.toString())).map((n)=>n.toFr());
13
+ const toCheckDb = archives.filter((n)=>!this.archives.has(n.toString()));
14
14
  const dbHits = await this.db.findLeafIndices(MerkleTreeId.ARCHIVE, toCheckDb);
15
15
  dbHits.forEach((x, index)=>{
16
16
  if (x !== undefined) {
@@ -0,0 +1,15 @@
1
+ import type { Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
2
+ import type { ITxValidationCache } from './tx_validation_cache.js';
3
+ /** Wraps a {@link TxValidator} to cache its results in a shared {@link ITxValidationCache}. */
4
+ export declare class CachedTxValidator<T extends Tx> implements TxValidator<T> {
5
+ private readonly inner;
6
+ private readonly validatorSymbol;
7
+ private readonly cache;
8
+ constructor(inner: TxValidator<T>, validatorSymbol: symbol, cache: ITxValidationCache);
9
+ static new<T extends Tx>(inner: TxValidator<T> & {
10
+ identifier: symbol;
11
+ }, cache?: ITxValidationCache): TxValidator<T>;
12
+ static newWithIdentifier<T extends Tx>(inner: TxValidator<T>, identifier: symbol, cache?: ITxValidationCache): TxValidator<T>;
13
+ validateTx(tx: T): Promise<TxValidationResult>;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9jYWNoZWRfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1RSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRW5FLCtGQUErRjtBQUMvRixxQkFBYSxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUVsRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlO0lBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQUh4QixZQUNtQixLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNyQixlQUFlLEVBQUUsTUFBTSxFQUN2QixLQUFLLEVBQUUsa0JBQWtCLEVBQ3hDO0lBRUosT0FBYyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFDNUIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUFFLFVBQVUsRUFBRSxNQUFNLENBQUE7S0FBRSxFQUM5QyxLQUFLLENBQUMsRUFBRSxrQkFBa0IsR0FDekIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUVoQjtJQUVELE9BQWMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFDMUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDckIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLEdBQ3pCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FFaEI7SUFFTSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FFcEQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cached_tx_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/cached_tx_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,+FAA+F;AAC/F,qBAAa,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAElE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHxB,YACmB,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,kBAAkB,EACxC;IAEJ,OAAc,GAAG,CAAC,CAAC,SAAS,EAAE,EAC5B,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,EAC9C,KAAK,CAAC,EAAE,kBAAkB,GACzB,WAAW,CAAC,CAAC,CAAC,CAEhB;IAED,OAAc,iBAAiB,CAAC,CAAC,SAAS,EAAE,EAC1C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,kBAAkB,GACzB,WAAW,CAAC,CAAC,CAAC,CAEhB;IAEM,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAEpD;CACF"}
@@ -0,0 +1,19 @@
1
+ /** Wraps a {@link TxValidator} to cache its results in a shared {@link ITxValidationCache}. */ export class CachedTxValidator {
2
+ inner;
3
+ validatorSymbol;
4
+ cache;
5
+ constructor(inner, validatorSymbol, cache){
6
+ this.inner = inner;
7
+ this.validatorSymbol = validatorSymbol;
8
+ this.cache = cache;
9
+ }
10
+ static new(inner, cache) {
11
+ return CachedTxValidator.newWithIdentifier(inner, inner.identifier, cache);
12
+ }
13
+ static newWithIdentifier(inner, identifier, cache) {
14
+ return cache ? new CachedTxValidator(inner, identifier, cache) : inner;
15
+ }
16
+ validateTx(tx) {
17
+ return this.cache.getOrValidate(this.validatorSymbol, tx, ()=>this.inner.validateTx(tx));
18
+ }
19
+ }
@@ -0,0 +1,9 @@
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
2
+ import { type Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
+ /** Validates that contract instance deployment logs contain correct addresses. */
4
+ export declare class ContractInstanceTxValidator implements TxValidator<Tx> {
5
+ #private;
6
+ constructor(bindings?: LoggerBindings);
7
+ validateTx(tx: Tx): Promise<TxValidationResult>;
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2VfdmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvdHhfdmFsaWRhdG9yL2NvbnRyYWN0X2luc3RhbmNlX3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHdkYsT0FBTyxFQUdMLEtBQUssRUFBRSxFQUNQLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLGtGQUFrRjtBQUNsRixxQkFBYSwyQkFBNEIsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdqRSxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FHcEQ7Q0FpQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_instance_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/contract_instance_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,EAGL,KAAK,EAAE,EACP,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,kFAAkF;AAClF,qBAAa,2BAA4B,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGjE,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGpD;CAiCF"}
@@ -0,0 +1,48 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { ContractInstancePublishedEvent } from '@aztec/protocol-contracts/instance-registry';
3
+ import { computeContractAddressFromInstance } from '@aztec/stdlib/contract';
4
+ import { TX_ERROR_INCORRECT_CONTRACT_ADDRESS, TX_ERROR_MALFORMED_CONTRACT_INSTANCE_LOG } from '@aztec/stdlib/tx';
5
+ /** Validates that contract instance deployment logs contain correct addresses. */ export class ContractInstanceTxValidator {
6
+ #log;
7
+ constructor(bindings){
8
+ this.#log = createLogger('p2p:tx_validator:contract_instance', bindings);
9
+ }
10
+ async validateTx(tx) {
11
+ const reason = await this.#hasCorrectContractInstanceAddresses(tx);
12
+ return reason ? {
13
+ result: 'invalid',
14
+ reason: [
15
+ reason
16
+ ]
17
+ } : {
18
+ result: 'valid'
19
+ };
20
+ }
21
+ async #hasCorrectContractInstanceAddresses(tx) {
22
+ const privateLogs = tx.data.getNonEmptyPrivateLogs();
23
+ for (const log of privateLogs){
24
+ if (!ContractInstancePublishedEvent.isContractInstancePublishedEvent(log)) {
25
+ continue;
26
+ }
27
+ let event;
28
+ try {
29
+ event = ContractInstancePublishedEvent.fromLog(log);
30
+ } catch (e) {
31
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to parse contract instance event: ${e}`);
32
+ return TX_ERROR_MALFORMED_CONTRACT_INSTANCE_LOG;
33
+ }
34
+ try {
35
+ const instance = event.toContractInstance();
36
+ const computedAddress = await computeContractAddressFromInstance(instance);
37
+ if (!computedAddress.equals(instance.address)) {
38
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: contract instance address mismatch. Claimed ${instance.address}, computed ${computedAddress}`);
39
+ return TX_ERROR_INCORRECT_CONTRACT_ADDRESS;
40
+ }
41
+ } catch (e) {
42
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to compute contract instance address: ${e}`);
43
+ return TX_ERROR_MALFORMED_CONTRACT_INSTANCE_LOG;
44
+ }
45
+ }
46
+ return undefined;
47
+ }
48
+ }
@@ -2,7 +2,8 @@ import { type LoggerBindings } from '@aztec/foundation/log';
2
2
  import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
3
  export declare class DataTxValidator implements TxValidator<Tx> {
4
4
  #private;
5
+ readonly identifier: symbol;
5
6
  constructor(bindings?: LoggerBindings);
6
7
  validateTx(tx: Tx): Promise<TxValidationResult>;
7
8
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZGF0YV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFTTCxFQUFFLEVBQ0YsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIscUJBQWEsZUFBZ0IsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdyRCxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FNcEQ7Q0FtR0YifQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZGF0YV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBSXZGLE9BQU8sRUFXTCxFQUFFLEVBQ0YsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIscUJBQWEsZUFBZ0IsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUNyRCxTQUFnQixVQUFVLEVBQUUsTUFBTSxDQUE2QjtJQUkvRCxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPcEQ7Q0F1SUYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EASL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAGrD,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAMpD;CAmGF"}
1
+ {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAIvF,OAAO,EAWL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IACrD,SAAgB,UAAU,EAAE,MAAM,CAA6B;IAI/D,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAEK,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOpD;CAuIF"}
@@ -1,14 +1,17 @@
1
1
  import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS } from '@aztec/constants';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
+ import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
4
+ import { computeContractClassId } from '@aztec/stdlib/contract';
3
5
  import { computeCalldataHash } from '@aztec/stdlib/hash';
4
- import { TX_ERROR_CALLDATA_COUNT_MISMATCH, TX_ERROR_CALLDATA_COUNT_TOO_LARGE, TX_ERROR_CONTRACT_CLASS_LOGS, TX_ERROR_CONTRACT_CLASS_LOG_COUNT, TX_ERROR_CONTRACT_CLASS_LOG_LENGTH, TX_ERROR_CONTRACT_CLASS_LOG_SORTING, TX_ERROR_INCORRECT_CALLDATA, TX_ERROR_INCORRECT_HASH, Tx } from '@aztec/stdlib/tx';
6
+ import { TX_ERROR_CALLDATA_COUNT_MISMATCH, TX_ERROR_CALLDATA_COUNT_TOO_LARGE, TX_ERROR_CONTRACT_CLASS_LOGS, TX_ERROR_CONTRACT_CLASS_LOG_COUNT, TX_ERROR_CONTRACT_CLASS_LOG_LENGTH, TX_ERROR_CONTRACT_CLASS_LOG_SORTING, TX_ERROR_INCORRECT_CALLDATA, TX_ERROR_INCORRECT_CONTRACT_CLASS_ID, TX_ERROR_INCORRECT_HASH, TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG, Tx } from '@aztec/stdlib/tx';
5
7
  export class DataTxValidator {
8
+ identifier = Symbol('DataTxValidator');
6
9
  #log;
7
10
  constructor(bindings){
8
11
  this.#log = createLogger('p2p:tx_validator:tx_data', bindings);
9
12
  }
10
13
  async validateTx(tx) {
11
- const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx);
14
+ const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx) ?? await this.#hasCorrectContractClassIds(tx);
12
15
  return reason ? {
13
16
  result: 'invalid',
14
17
  reason: [
@@ -77,4 +80,35 @@ export class DataTxValidator {
77
80
  }
78
81
  return undefined;
79
82
  }
83
+ async #hasCorrectContractClassIds(tx) {
84
+ const contractClassLogs = tx.getContractClassLogs();
85
+ for (const log of contractClassLogs){
86
+ if (!ContractClassPublishedEvent.isContractClassPublishedEvent(log)) {
87
+ continue;
88
+ }
89
+ let event;
90
+ try {
91
+ event = ContractClassPublishedEvent.fromLog(log);
92
+ } catch (e) {
93
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to parse contract class event: ${e}`);
94
+ return TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG;
95
+ }
96
+ try {
97
+ const { publicBytecodeCommitment } = await event.toContractClassPublicWithBytecodeCommitment();
98
+ const computedClassId = await computeContractClassId({
99
+ artifactHash: event.artifactHash,
100
+ privateFunctionsRoot: event.privateFunctionsRoot,
101
+ publicBytecodeCommitment
102
+ });
103
+ if (!computedClassId.equals(event.contractClassId)) {
104
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: contract class id mismatch. Claimed ${event.contractClassId}, computed ${computedClassId}`);
105
+ return TX_ERROR_INCORRECT_CONTRACT_CLASS_ID;
106
+ }
107
+ } catch (e) {
108
+ this.#log.warn(`Rejecting tx ${tx.getTxHash()}: failed to compute contract class id: ${e}`);
109
+ return TX_ERROR_MALFORMED_CONTRACT_CLASS_LOG;
110
+ }
111
+ }
112
+ return undefined;
113
+ }
80
114
  }
@@ -39,6 +39,7 @@ import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
39
39
  import type { GlobalVariables, Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
40
40
  import type { UInt64 } from '@aztec/stdlib/types';
41
41
  import type { TxMetaData } from '../../mem_pools/tx_pool_v2/tx_metadata.js';
42
+ import { TxValidationCache } from './tx_validation_cache.js';
42
43
  /**
43
44
  * A validator paired with a peer penalty severity.
44
45
  * Used for gossip validation where each validator's failure triggers a peer penalization
@@ -59,7 +60,11 @@ export interface TransactionValidator {
59
60
  * The `doubleSpendValidator` failure is special-cased by the caller (`handleGossipedTx`)
60
61
  * to determine severity based on how recently the nullifier appeared.
61
62
  */
62
- export declare function createFirstStageTxValidationsForGossipedTransactions(timestamp: UInt64, blockNumber: BlockNumber, worldStateSynchronizer: WorldStateSynchronizer, gasFees: GasFees, l1ChainId: number, rollupVersion: number, protocolContractsHash: Fr, contractDataSource: ContractDataSource, txsPermitted: boolean, allowedInSetup?: AllowedElement[], bindings?: LoggerBindings): Record<string, TransactionValidator>;
63
+ export declare function createFirstStageTxValidationsForGossipedTransactions(timestamp: UInt64, blockNumber: BlockNumber, worldStateSynchronizer: WorldStateSynchronizer, gasFees: GasFees, l1ChainId: number, rollupVersion: number, protocolContractsHash: Fr, contractDataSource: ContractDataSource, txsPermitted: boolean, allowedInSetup?: AllowedElement[], bindings?: LoggerBindings, gasLimitOpts?: {
64
+ rollupManaLimit?: number;
65
+ maxBlockL2Gas?: number;
66
+ maxBlockDAGas?: number;
67
+ }): Record<string, TransactionValidator>;
63
68
  /**
64
69
  * Second stage of gossip validation — expensive proof verification.
65
70
  *
@@ -74,10 +79,10 @@ export declare function createSecondStageTxValidationsForGossipedTransactions(pr
74
79
  * are invalid against current state. State-dependent checks happen when the tx
75
80
  * enters the pending pool or during block building.
76
81
  */
77
- export declare function createTxValidatorForReqResponseReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
82
+ export declare function createTxValidatorForOnDemandReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
78
83
  l1ChainId: number;
79
84
  rollupVersion: number;
80
- }, bindings?: LoggerBindings): TxValidator;
85
+ }, bindings?: LoggerBindings, cache?: TxValidationCache): TxValidator;
81
86
  /**
82
87
  * Validators for txs received in block proposals.
83
88
  * Same as req/resp — well-formedness only. We must store these for block
@@ -86,14 +91,14 @@ export declare function createTxValidatorForReqResponseReceivedTxs(verifier: Cli
86
91
  export declare function createTxValidatorForBlockProposalReceivedTxs(verifier: ClientProtocolCircuitVerifier, { l1ChainId, rollupVersion }: {
87
92
  l1ChainId: number;
88
93
  rollupVersion: number;
89
- }, bindings?: LoggerBindings): TxValidator;
94
+ }, bindings?: LoggerBindings, cache?: TxValidationCache): TxValidator;
90
95
  /**
91
96
  * Validators for unsolicited txs received over JSON-RPC (from a local wallet/PXE).
92
97
  * Full validation — all state-dependent checks are run. Proof verification is optional
93
98
  * (can be skipped for testing purposes). Fee enforcement is also optional (skipped for testing/dev).
94
99
  * Called from `AztecNodeService.isValidTx()`.
95
100
  */
96
- export declare function createTxValidatorForAcceptingTxsOverRPC(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted }: {
101
+ export declare function createTxValidatorForAcceptingTxsOverRPC(db: MerkleTreeReadOperations, contractDataSource: ContractDataSource, verifier: ClientProtocolCircuitVerifier | undefined, { l1ChainId, rollupVersion, setupAllowList, gasFees, skipFeeEnforcement, timestamp, blockNumber, txsPermitted, rollupManaLimit, maxBlockL2Gas, maxBlockDAGas }: {
97
102
  l1ChainId: number;
98
103
  rollupVersion: number;
99
104
  setupAllowList: AllowedElement[];
@@ -102,6 +107,9 @@ export declare function createTxValidatorForAcceptingTxsOverRPC(db: MerkleTreeRe
102
107
  timestamp: UInt64;
103
108
  blockNumber: BlockNumber;
104
109
  txsPermitted: boolean;
110
+ rollupManaLimit: number;
111
+ maxBlockL2Gas?: number;
112
+ maxBlockDAGas?: number;
105
113
  }, bindings?: LoggerBindings): TxValidator<Tx>;
106
114
  /**
107
115
  * Validators for txs about to be included in a block by the sequencer.
@@ -125,5 +133,17 @@ export declare function createTxValidatorForBlockBuilding(db: MerkleTreeReadOper
125
133
  * Operates on `TxMetaData` rather than full `Tx` since metadata is pre-built by the pool.
126
134
  * Injected into `TxPoolV2` as the `createTxValidator` factory in `TxPoolV2Dependencies`.
127
135
  */
128
- export declare function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer: WorldStateSynchronizer, timestamp: bigint, blockNumber: BlockNumber, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTVELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFlNUU7Ozs7R0FJRztBQUNILE1BQU0sV0FBVyxvQkFBb0I7SUFDbkMsU0FBUyxFQUFFO1FBQ1QsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDakQsQ0FBQztJQUNGLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQztDQUM3QjtBQUVEOzs7Ozs7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
136
+ export declare function createTxValidatorForTransactionsEnteringPendingTxPool(worldStateSynchronizer: WorldStateSynchronizer, timestamp: bigint, blockNumber: BlockNumber, gasLimitOpts: {
137
+ rollupManaLimit?: number;
138
+ maxBlockL2Gas?: number;
139
+ maxBlockDAGas?: number;
140
+ }, gasFees: GasFees, bindings?: LoggerBindings): Promise<TxValidator<TxMetaData>>;
141
+ /**
142
+ * Creates a function that checks whether a tx's setup-phase calls are on the allow list.
143
+ *
144
+ * Uses the `PhasesTxValidator` on the full Tx. The result is stored as a boolean
145
+ * flag in `TxMetaData.allowedSetupCalls` at receipt time, so the pending pool
146
+ * migration validator can check it without needing the full Tx or its dependencies.
147
+ */
148
+ export declare function createCheckAllowedSetupCalls(contractDataSource: ContractDataSource, setupAllowList: AllowedElement[], getTimestamp: () => UInt64): (tx: Tx) => Promise<boolean>;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTVELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFnQjVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdEOzs7O0dBSUc7QUFDSCxNQUFNLFdBQVcsb0JBQW9CO0lBQ25DLFNBQVMsRUFBRTtRQUNULFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQ2pELENB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
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/factory.ts"],"names":[],"mappings":"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"}