@aztec/p2p 0.0.1-commit.f295ac2 → 0.0.1-commit.f504929

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 (490) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +10 -10
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +45 -18
  7. package/dest/client/interface.d.ts +46 -33
  8. package/dest/client/interface.d.ts.map +1 -1
  9. package/dest/client/p2p_client.d.ts +41 -51
  10. package/dest/client/p2p_client.d.ts.map +1 -1
  11. package/dest/client/p2p_client.js +156 -200
  12. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  18. package/dest/config.d.ts +42 -15
  19. package/dest/config.d.ts.map +1 -1
  20. package/dest/config.js +46 -37
  21. package/dest/errors/tx-pool.error.d.ts +8 -0
  22. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  23. package/dest/errors/tx-pool.error.js +9 -0
  24. package/dest/index.d.ts +2 -1
  25. package/dest/index.d.ts.map +1 -1
  26. package/dest/index.js +1 -0
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  29. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  33. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  34. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/index.js +1 -2
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  39. package/dest/mem_pools/index.d.ts +3 -2
  40. package/dest/mem_pools/index.d.ts.map +1 -1
  41. package/dest/mem_pools/index.js +1 -1
  42. package/dest/mem_pools/instrumentation.d.ts +4 -2
  43. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  44. package/dest/mem_pools/instrumentation.js +18 -16
  45. package/dest/mem_pools/interface.d.ts +5 -5
  46. package/dest/mem_pools/interface.d.ts.map +1 -1
  47. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -3
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  49. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +3 -2
  50. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +3 -2
  52. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +3 -3
  54. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +8 -1
  56. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  57. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +3 -3
  58. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
  60. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  61. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  63. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  64. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  66. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  67. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  99. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  100. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  102. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  103. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  105. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +211 -0
  106. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +119 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +193 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  114. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  115. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  116. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +354 -0
  117. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +164 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  121. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  122. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +908 -0
  123. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
  124. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/attestation_validator/attestation_validator.js +41 -10
  126. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
  127. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +18 -6
  129. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  130. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  131. package/dest/msg_validators/clock_tolerance.js +37 -0
  132. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +2 -1
  133. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  134. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +2 -1
  135. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  136. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +5 -3
  137. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  138. package/dest/msg_validators/proposal_validator/proposal_validator.js +65 -31
  139. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +4 -3
  140. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
  141. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +257 -62
  142. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  143. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  145. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  146. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  147. package/dest/msg_validators/tx_validator/allowed_public_setup.js +25 -10
  148. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  149. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  150. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  151. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  152. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  154. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  155. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  157. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  158. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  160. package/dest/msg_validators/tx_validator/factory.d.ts +118 -5
  161. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/factory.js +228 -57
  163. package/dest/msg_validators/tx_validator/gas_validator.d.ts +59 -3
  164. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  165. package/dest/msg_validators/tx_validator/gas_validator.js +76 -38
  166. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  167. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/index.js +2 -0
  169. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  170. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  171. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  172. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  173. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  174. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  175. package/dest/msg_validators/tx_validator/phases_validator.d.ts +4 -3
  176. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/phases_validator.js +28 -27
  178. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  179. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  180. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  181. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  182. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  184. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  185. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  186. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  187. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  188. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  189. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  190. package/dest/services/data_store.d.ts +1 -1
  191. package/dest/services/data_store.d.ts.map +1 -1
  192. package/dest/services/data_store.js +10 -6
  193. package/dest/services/discv5/discV5_service.js +1 -1
  194. package/dest/services/dummy_service.d.ts +24 -4
  195. package/dest/services/dummy_service.d.ts.map +1 -1
  196. package/dest/services/dummy_service.js +46 -1
  197. package/dest/services/encoding.d.ts +3 -3
  198. package/dest/services/encoding.d.ts.map +1 -1
  199. package/dest/services/encoding.js +13 -13
  200. package/dest/services/gossipsub/index.d.ts +3 -0
  201. package/dest/services/gossipsub/index.d.ts.map +1 -0
  202. package/dest/services/gossipsub/index.js +2 -0
  203. package/dest/services/gossipsub/scoring.d.ts +21 -3
  204. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  205. package/dest/services/gossipsub/scoring.js +24 -7
  206. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  207. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  208. package/dest/services/gossipsub/topic_score_params.js +346 -0
  209. package/dest/services/index.d.ts +2 -1
  210. package/dest/services/index.d.ts.map +1 -1
  211. package/dest/services/index.js +1 -0
  212. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  213. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  214. package/dest/services/libp2p/instrumentation.js +14 -3
  215. package/dest/services/libp2p/libp2p_service.d.ts +101 -43
  216. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  217. package/dest/services/libp2p/libp2p_service.js +463 -366
  218. package/dest/services/peer-manager/metrics.d.ts +4 -2
  219. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  220. package/dest/services/peer-manager/metrics.js +26 -5
  221. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  222. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  223. package/dest/services/peer-manager/peer_manager.js +2 -1
  224. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  225. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  226. package/dest/services/peer-manager/peer_scoring.js +33 -4
  227. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  228. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  229. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +539 -0
  230. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  231. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  232. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  233. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  234. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  235. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  236. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  237. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  238. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  239. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +60 -0
  240. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  241. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +173 -0
  242. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  243. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  244. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  245. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  246. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  247. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  248. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  249. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  250. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  251. package/dest/services/reqresp/interface.d.ts +14 -3
  252. package/dest/services/reqresp/interface.d.ts.map +1 -1
  253. package/dest/services/reqresp/interface.js +17 -3
  254. package/dest/services/reqresp/metrics.d.ts +6 -5
  255. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  256. package/dest/services/reqresp/metrics.js +17 -5
  257. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  258. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  259. package/dest/services/reqresp/protocols/block_txs/bitvector.js +5 -0
  260. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  261. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  262. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  263. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  264. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  265. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  266. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  267. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  268. package/dest/services/reqresp/protocols/tx.js +20 -0
  269. package/dest/services/reqresp/reqresp.d.ts +6 -1
  270. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  271. package/dest/services/reqresp/reqresp.js +71 -27
  272. package/dest/services/service.d.ts +42 -3
  273. package/dest/services/service.d.ts.map +1 -1
  274. package/dest/services/tx_collection/config.d.ts +22 -1
  275. package/dest/services/tx_collection/config.d.ts.map +1 -1
  276. package/dest/services/tx_collection/config.js +55 -1
  277. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  278. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  279. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  280. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  281. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  282. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  283. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  284. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  285. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  286. package/dest/services/tx_collection/index.d.ts +3 -1
  287. package/dest/services/tx_collection/index.d.ts.map +1 -1
  288. package/dest/services/tx_collection/index.js +2 -0
  289. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  290. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  291. package/dest/services/tx_collection/instrumentation.js +10 -2
  292. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  293. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  294. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  295. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  296. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  297. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  298. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -5
  299. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  300. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  301. package/dest/services/tx_collection/tx_collection.d.ts +29 -16
  302. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  303. package/dest/services/tx_collection/tx_collection.js +79 -7
  304. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  305. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  306. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  307. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  308. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  309. package/dest/services/tx_collection/tx_source.js +19 -2
  310. package/dest/services/tx_file_store/config.d.ts +16 -0
  311. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  312. package/dest/services/tx_file_store/config.js +22 -0
  313. package/dest/services/tx_file_store/index.d.ts +4 -0
  314. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  315. package/dest/services/tx_file_store/index.js +3 -0
  316. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  317. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  318. package/dest/services/tx_file_store/instrumentation.js +29 -0
  319. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  320. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  321. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  322. package/dest/services/tx_provider.d.ts +6 -6
  323. package/dest/services/tx_provider.d.ts.map +1 -1
  324. package/dest/services/tx_provider.js +9 -8
  325. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  326. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  327. package/dest/services/tx_provider_instrumentation.js +5 -5
  328. package/dest/test-helpers/index.d.ts +3 -1
  329. package/dest/test-helpers/index.d.ts.map +1 -1
  330. package/dest/test-helpers/index.js +2 -0
  331. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  332. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  333. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  334. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  335. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  336. package/dest/test-helpers/mock-pubsub.js +105 -4
  337. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  338. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  339. package/dest/test-helpers/reqresp-nodes.js +4 -3
  340. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  341. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  342. package/dest/test-helpers/test_tx_provider.js +41 -0
  343. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  344. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  345. package/dest/test-helpers/testbench-utils.js +366 -0
  346. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  347. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  348. package/dest/testbench/p2p_client_testbench_worker.js +219 -140
  349. package/dest/testbench/worker_client_manager.d.ts +51 -6
  350. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  351. package/dest/testbench/worker_client_manager.js +226 -44
  352. package/dest/util.d.ts +2 -2
  353. package/dest/util.d.ts.map +1 -1
  354. package/package.json +14 -14
  355. package/src/bootstrap/bootstrap.ts +7 -4
  356. package/src/client/factory.ts +83 -36
  357. package/src/client/interface.ts +56 -34
  358. package/src/client/p2p_client.ts +196 -251
  359. package/src/client/test/tx_proposal_collector/README.md +227 -0
  360. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
  361. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  362. package/src/config.ts +81 -43
  363. package/src/errors/tx-pool.error.ts +12 -0
  364. package/src/index.ts +1 -0
  365. package/src/mem_pools/attestation_pool/attestation_pool.ts +497 -91
  366. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  367. package/src/mem_pools/attestation_pool/index.ts +9 -2
  368. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  369. package/src/mem_pools/index.ts +4 -1
  370. package/src/mem_pools/instrumentation.ts +19 -14
  371. package/src/mem_pools/interface.ts +4 -4
  372. package/src/mem_pools/tx_pool/README.md +1 -1
  373. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +2 -2
  374. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +2 -1
  375. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +2 -1
  376. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +10 -7
  377. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  378. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
  379. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  380. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  381. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  382. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  383. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  384. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  385. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  386. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  387. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  388. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  389. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  390. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  391. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  392. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  393. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  394. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  395. package/src/mem_pools/tx_pool_v2/interfaces.ts +242 -0
  396. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +297 -0
  397. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  398. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  399. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +226 -0
  400. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1088 -0
  401. package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -14
  402. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +16 -10
  403. package/src/msg_validators/clock_tolerance.ts +51 -0
  404. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +1 -1
  405. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +1 -1
  406. package/src/msg_validators/proposal_validator/proposal_validator.ts +46 -32
  407. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +233 -66
  408. package/src/msg_validators/tx_validator/README.md +115 -0
  409. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  410. package/src/msg_validators/tx_validator/allowed_public_setup.ts +27 -13
  411. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  412. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  413. package/src/msg_validators/tx_validator/data_validator.ts +6 -2
  414. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  415. package/src/msg_validators/tx_validator/factory.ts +372 -55
  416. package/src/msg_validators/tx_validator/gas_validator.ts +98 -29
  417. package/src/msg_validators/tx_validator/index.ts +2 -0
  418. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  419. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  420. package/src/msg_validators/tx_validator/phases_validator.ts +30 -32
  421. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  422. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
  423. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  424. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  425. package/src/services/data_store.ts +10 -7
  426. package/src/services/discv5/discV5_service.ts +1 -1
  427. package/src/services/dummy_service.ts +59 -2
  428. package/src/services/encoding.ts +11 -12
  429. package/src/services/gossipsub/README.md +641 -0
  430. package/src/services/gossipsub/index.ts +2 -0
  431. package/src/services/gossipsub/scoring.ts +29 -5
  432. package/src/services/gossipsub/topic_score_params.ts +487 -0
  433. package/src/services/index.ts +1 -0
  434. package/src/services/libp2p/instrumentation.ts +15 -2
  435. package/src/services/libp2p/libp2p_service.ts +514 -396
  436. package/src/services/peer-manager/metrics.ts +28 -4
  437. package/src/services/peer-manager/peer_manager.ts +2 -1
  438. package/src/services/peer-manager/peer_scoring.ts +29 -1
  439. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  440. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +678 -0
  441. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  442. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  443. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  444. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +244 -0
  445. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  446. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  447. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  448. package/src/services/reqresp/interface.ts +31 -3
  449. package/src/services/reqresp/metrics.ts +34 -9
  450. package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
  451. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  452. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  453. package/src/services/reqresp/protocols/tx.ts +22 -0
  454. package/src/services/reqresp/reqresp.ts +82 -23
  455. package/src/services/service.ts +55 -2
  456. package/src/services/tx_collection/config.ts +83 -1
  457. package/src/services/tx_collection/fast_tx_collection.ts +93 -47
  458. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  459. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  460. package/src/services/tx_collection/index.ts +6 -0
  461. package/src/services/tx_collection/instrumentation.ts +17 -2
  462. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  463. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  464. package/src/services/tx_collection/slow_tx_collection.ts +68 -35
  465. package/src/services/tx_collection/tx_collection.ts +121 -24
  466. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  467. package/src/services/tx_collection/tx_source.ts +22 -3
  468. package/src/services/tx_file_store/config.ts +37 -0
  469. package/src/services/tx_file_store/index.ts +3 -0
  470. package/src/services/tx_file_store/instrumentation.ts +36 -0
  471. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  472. package/src/services/tx_provider.ts +12 -11
  473. package/src/services/tx_provider_instrumentation.ts +11 -5
  474. package/src/test-helpers/index.ts +2 -0
  475. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  476. package/src/test-helpers/mock-pubsub.ts +146 -9
  477. package/src/test-helpers/reqresp-nodes.ts +4 -6
  478. package/src/test-helpers/test_tx_provider.ts +64 -0
  479. package/src/test-helpers/testbench-utils.ts +430 -0
  480. package/src/testbench/p2p_client_testbench_worker.ts +333 -135
  481. package/src/testbench/worker_client_manager.ts +304 -47
  482. package/src/util.ts +7 -1
  483. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  484. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  485. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  486. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  487. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  488. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  489. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  490. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
@@ -1,29 +1,99 @@
1
+ import { NoCommitteeError } from '@aztec/ethereum/contracts';
1
2
  import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
3
+ import { jest } from '@jest/globals';
2
4
  export function sharedProposalValidatorTests(params) {
3
5
  const { validatorFactory, makeProposal, makeHeader, getSigner, getAddress, getSlot, getTxHashes, epochCacheMock } = params;
4
6
  describe('shared proposal validation logic', ()=>{
5
7
  let epochCache;
6
8
  let validator;
9
+ const previousSlot = getSlot(99);
10
+ const currentSlot = getSlot(100);
11
+ const nextSlot = getSlot(101);
12
+ function mockGetProposer(currentProposer, nextProposer, previousProposer) {
13
+ epochCache.getProposerAttesterAddressInSlot.mockImplementation((slot)=>{
14
+ if (slot === currentSlot) {
15
+ return Promise.resolve(currentProposer);
16
+ }
17
+ if (slot === nextSlot) {
18
+ return Promise.resolve(nextProposer);
19
+ }
20
+ if (slot === previousSlot && previousProposer) {
21
+ return Promise.resolve(previousProposer);
22
+ }
23
+ throw new Error('Unexpected argument');
24
+ });
25
+ }
7
26
  beforeEach(()=>{
8
27
  epochCache = epochCacheMock();
9
28
  validator = validatorFactory(epochCache, {
10
29
  txsPermitted: true
11
30
  });
31
+ epochCache.getCurrentAndNextSlot.mockReturnValue({
32
+ currentSlot: currentSlot,
33
+ nextSlot: nextSlot
34
+ });
12
35
  });
13
- it('returns high tolerance error if slot number is not current or next slot', async ()=>{
14
- const header = makeHeader(1, 97, 97);
36
+ it('returns high tolerance error if slot number is not current or next slot (outside clock tolerance)', async ()=>{
37
+ const header = makeHeader(1, 99, 99);
15
38
  const mockProposal = await makeProposal({
16
39
  blockHeader: header,
17
40
  lastBlockHeader: header
18
41
  });
19
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
20
- currentSlot: getSlot(98),
21
- nextSlot: getSlot(99),
22
- currentProposer: getAddress(),
23
- nextProposer: getAddress()
42
+ // Mock getEpochAndSlotNow to return time OUTSIDE clock tolerance (1000ms elapsed)
43
+ epochCache.getEpochAndSlotNow.mockReturnValue({
44
+ epoch: 1,
45
+ slot: currentSlot,
46
+ ts: 1000n,
47
+ nowMs: 1001000n
48
+ });
49
+ epochCache.getProposerAttesterAddressInSlot.mockResolvedValue(getAddress());
50
+ const result = await validator.validate(mockProposal);
51
+ expect(result).toEqual({
52
+ result: 'reject',
53
+ severity: PeerErrorSeverity.HighToleranceError
54
+ });
55
+ // Should not try to resolve proposers if base validation fails
56
+ expect(epochCache.getProposerAttesterAddressInSlot).not.toHaveBeenCalled();
57
+ });
58
+ it('returns ignore if previous slot proposal is within clock tolerance', async ()=>{
59
+ const previousProposer = getSigner();
60
+ const header = makeHeader(1, 99, 99);
61
+ const mockProposal = await makeProposal({
62
+ blockHeader: header,
63
+ lastBlockHeader: header,
64
+ signer: previousProposer
65
+ });
66
+ // Mock getEpochAndSlotNow to return time WITHIN clock tolerance (100ms elapsed)
67
+ epochCache.getEpochAndSlotNow.mockReturnValue({
68
+ epoch: 1,
69
+ slot: currentSlot,
70
+ ts: 1000n,
71
+ nowMs: 1000100n
24
72
  });
73
+ mockGetProposer(getAddress(), getAddress(), getAddress(previousProposer));
25
74
  const result = await validator.validate(mockProposal);
26
- expect(result).toBe(PeerErrorSeverity.HighToleranceError);
75
+ expect(result).toEqual({
76
+ result: 'ignore'
77
+ });
78
+ });
79
+ it('returns mid tolerance error if proposal has invalid signature', async ()=>{
80
+ const currentProposer = getSigner();
81
+ const header = makeHeader(1, 100, 100);
82
+ const mockProposal = await makeProposal({
83
+ blockHeader: header,
84
+ lastBlockHeader: header,
85
+ signer: currentProposer
86
+ });
87
+ // Override getSender to return undefined (invalid signature)
88
+ jest.spyOn(mockProposal, 'getSender').mockReturnValue(undefined);
89
+ mockGetProposer(getAddress(currentProposer), getAddress());
90
+ const result = await validator.validate(mockProposal);
91
+ expect(result).toEqual({
92
+ result: 'reject',
93
+ severity: PeerErrorSeverity.MidToleranceError
94
+ });
95
+ // Should not try to resolve proposer if signature is invalid
96
+ expect(epochCache.getProposerAttesterAddressInSlot).not.toHaveBeenCalled();
27
97
  });
28
98
  it('returns mid tolerance error if proposer is not current proposer for current slot', async ()=>{
29
99
  const currentProposer = getSigner();
@@ -35,14 +105,12 @@ export function sharedProposalValidatorTests(params) {
35
105
  lastBlockHeader: header,
36
106
  signer: invalidProposer
37
107
  });
38
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
39
- currentSlot: getSlot(100),
40
- nextSlot: getSlot(101),
41
- currentProposer: getAddress(currentProposer),
42
- nextProposer: getAddress(nextProposer)
43
- });
108
+ mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
44
109
  const result = await validator.validate(mockProposal);
45
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
110
+ expect(result).toEqual({
111
+ result: 'reject',
112
+ severity: PeerErrorSeverity.MidToleranceError
113
+ });
46
114
  });
47
115
  it('returns mid tolerance error if proposer is not next proposer for next slot', async ()=>{
48
116
  const currentProposer = getSigner();
@@ -54,14 +122,12 @@ export function sharedProposalValidatorTests(params) {
54
122
  lastBlockHeader: header,
55
123
  signer: invalidProposer
56
124
  });
57
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
58
- currentSlot: getSlot(100),
59
- nextSlot: getSlot(101),
60
- currentProposer: getAddress(currentProposer),
61
- nextProposer: getAddress(nextProposer)
62
- });
125
+ mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
63
126
  const result = await validator.validate(mockProposal);
64
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
127
+ expect(result).toEqual({
128
+ result: 'reject',
129
+ severity: PeerErrorSeverity.MidToleranceError
130
+ });
65
131
  });
66
132
  it('returns mid tolerance error if proposer is current proposer but proposal is for next slot', async ()=>{
67
133
  const currentProposer = getSigner();
@@ -72,14 +138,41 @@ export function sharedProposalValidatorTests(params) {
72
138
  lastBlockHeader: header,
73
139
  signer: currentProposer
74
140
  });
75
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
76
- currentSlot: getSlot(100),
77
- nextSlot: getSlot(101),
78
- currentProposer: getAddress(currentProposer),
79
- nextProposer: getAddress(nextProposer)
141
+ mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
142
+ const result = await validator.validate(mockProposal);
143
+ expect(result).toEqual({
144
+ result: 'reject',
145
+ severity: PeerErrorSeverity.MidToleranceError
146
+ });
147
+ });
148
+ it('accepts proposal when proposer is undefined (open committee)', async ()=>{
149
+ const currentProposer = getSigner();
150
+ const header = makeHeader(1, 100, 100);
151
+ const mockProposal = await makeProposal({
152
+ blockHeader: header,
153
+ lastBlockHeader: header,
154
+ signer: currentProposer
155
+ });
156
+ epochCache.getProposerAttesterAddressInSlot.mockResolvedValue(undefined);
157
+ const result = await validator.validate(mockProposal);
158
+ expect(result).toEqual({
159
+ result: 'accept'
80
160
  });
161
+ });
162
+ it('returns low tolerance error when getProposerAttesterAddressInSlot throws NoCommitteeError', async ()=>{
163
+ const currentProposer = getSigner();
164
+ const header = makeHeader(1, 100, 100);
165
+ const mockProposal = await makeProposal({
166
+ blockHeader: header,
167
+ lastBlockHeader: header,
168
+ signer: currentProposer
169
+ });
170
+ epochCache.getProposerAttesterAddressInSlot.mockRejectedValue(new NoCommitteeError());
81
171
  const result = await validator.validate(mockProposal);
82
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
172
+ expect(result).toEqual({
173
+ result: 'reject',
174
+ severity: PeerErrorSeverity.LowToleranceError
175
+ });
83
176
  });
84
177
  it('returns undefined if proposal is valid for current slot and proposer', async ()=>{
85
178
  const currentProposer = getSigner();
@@ -90,14 +183,11 @@ export function sharedProposalValidatorTests(params) {
90
183
  lastBlockHeader: header,
91
184
  signer: currentProposer
92
185
  });
93
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
94
- currentSlot: getSlot(100),
95
- nextSlot: getSlot(101),
96
- currentProposer: getAddress(currentProposer),
97
- nextProposer: getAddress(nextProposer)
98
- });
186
+ mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
99
187
  const result = await validator.validate(mockProposal);
100
- expect(result).toBeUndefined();
188
+ expect(result).toEqual({
189
+ result: 'accept'
190
+ });
101
191
  });
102
192
  it('returns undefined if proposal is valid for next slot and proposer', async ()=>{
103
193
  const currentProposer = getSigner();
@@ -108,14 +198,11 @@ export function sharedProposalValidatorTests(params) {
108
198
  lastBlockHeader: header,
109
199
  signer: nextProposer
110
200
  });
111
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
112
- currentSlot: getSlot(100),
113
- nextSlot: getSlot(101),
114
- currentProposer: getAddress(currentProposer),
115
- nextProposer: getAddress(nextProposer)
116
- });
201
+ mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
117
202
  const result = await validator.validate(mockProposal);
118
- expect(result).toBeUndefined();
203
+ expect(result).toEqual({
204
+ result: 'accept'
205
+ });
119
206
  });
120
207
  describe('transaction permission validation', ()=>{
121
208
  it('returns mid tolerance error if txs not permitted and proposal contains txHashes', async ()=>{
@@ -130,14 +217,12 @@ export function sharedProposalValidatorTests(params) {
130
217
  signer: currentProposer,
131
218
  txHashes: getTxHashes(2)
132
219
  });
133
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
134
- currentSlot: getSlot(100),
135
- nextSlot: getSlot(101),
136
- currentProposer: getAddress(currentProposer),
137
- nextProposer: getAddress()
138
- });
220
+ mockGetProposer(getAddress(currentProposer), getAddress());
139
221
  const result = await validatorWithTxsDisabled.validate(mockProposal);
140
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
222
+ expect(result).toEqual({
223
+ result: 'reject',
224
+ severity: PeerErrorSeverity.MidToleranceError
225
+ });
141
226
  });
142
227
  it('returns undefined if txs not permitted but proposal has no txHashes', async ()=>{
143
228
  const currentProposer = getSigner();
@@ -151,14 +236,11 @@ export function sharedProposalValidatorTests(params) {
151
236
  signer: currentProposer,
152
237
  txHashes: getTxHashes(0)
153
238
  });
154
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
155
- currentSlot: getSlot(100),
156
- nextSlot: getSlot(101),
157
- currentProposer: getAddress(currentProposer),
158
- nextProposer: getAddress()
159
- });
239
+ mockGetProposer(getAddress(currentProposer), getAddress());
160
240
  const result = await validatorWithTxsDisabled.validate(mockProposal);
161
- expect(result).toBeUndefined();
241
+ expect(result).toEqual({
242
+ result: 'accept'
243
+ });
162
244
  });
163
245
  it('returns undefined if txs permitted and proposal contains txHashes', async ()=>{
164
246
  const currentProposer = getSigner();
@@ -169,14 +251,127 @@ export function sharedProposalValidatorTests(params) {
169
251
  signer: currentProposer,
170
252
  txHashes: getTxHashes(2)
171
253
  });
172
- epochCache.getProposerAttesterAddressInCurrentOrNextSlot.mockResolvedValue({
173
- currentSlot: getSlot(100),
174
- nextSlot: getSlot(101),
175
- currentProposer: getAddress(currentProposer),
176
- nextProposer: getAddress()
254
+ mockGetProposer(getAddress(currentProposer), getAddress());
255
+ const result = await validator.validate(mockProposal);
256
+ expect(result).toEqual({
257
+ result: 'accept'
258
+ });
259
+ });
260
+ });
261
+ describe('embedded tx validation', ()=>{
262
+ it('returns mid tolerance error if embedded txs are not listed in txHashes', async ()=>{
263
+ const currentProposer = getSigner();
264
+ const txHashes = getTxHashes(2);
265
+ const header = makeHeader(1, 100, 100);
266
+ const mockProposal = await makeProposal({
267
+ blockHeader: header,
268
+ lastBlockHeader: header,
269
+ signer: currentProposer,
270
+ txHashes
271
+ });
272
+ // Create a fake tx whose hash is NOT in txHashes
273
+ const fakeTxHash = getTxHashes(1)[0];
274
+ const fakeTx = {
275
+ getTxHash: ()=>fakeTxHash,
276
+ validateTxHash: ()=>Promise.resolve(true)
277
+ };
278
+ Object.defineProperty(mockProposal, 'txs', {
279
+ get: ()=>[
280
+ fakeTx
281
+ ],
282
+ configurable: true
283
+ });
284
+ mockGetProposer(getAddress(currentProposer), getAddress());
285
+ const result = await validator.validate(mockProposal);
286
+ expect(result).toEqual({
287
+ result: 'reject',
288
+ severity: PeerErrorSeverity.MidToleranceError
289
+ });
290
+ });
291
+ it('returns low tolerance error if embedded tx has invalid tx hash', async ()=>{
292
+ const currentProposer = getSigner();
293
+ const txHashes = getTxHashes(2);
294
+ const header = makeHeader(1, 100, 100);
295
+ const mockProposal = await makeProposal({
296
+ blockHeader: header,
297
+ lastBlockHeader: header,
298
+ signer: currentProposer,
299
+ txHashes
300
+ });
301
+ // Create a fake tx whose hash IS in txHashes but validateTxHash returns false
302
+ const fakeTx = {
303
+ getTxHash: ()=>txHashes[0],
304
+ validateTxHash: ()=>Promise.resolve(false)
305
+ };
306
+ Object.defineProperty(mockProposal, 'txs', {
307
+ get: ()=>[
308
+ fakeTx
309
+ ],
310
+ configurable: true
311
+ });
312
+ mockGetProposer(getAddress(currentProposer), getAddress());
313
+ const result = await validator.validate(mockProposal);
314
+ expect(result).toEqual({
315
+ result: 'reject',
316
+ severity: PeerErrorSeverity.LowToleranceError
317
+ });
318
+ });
319
+ });
320
+ describe('maxTxsPerBlock validation', ()=>{
321
+ it('rejects proposal when txHashes exceed maxTxsPerBlock', async ()=>{
322
+ const validatorWithMaxTxs = validatorFactory(epochCache, {
323
+ txsPermitted: true,
324
+ maxTxsPerBlock: 2
325
+ });
326
+ const currentProposer = getSigner();
327
+ const header = makeHeader(1, 100, 100);
328
+ const mockProposal = await makeProposal({
329
+ blockHeader: header,
330
+ lastBlockHeader: header,
331
+ signer: currentProposer,
332
+ txHashes: getTxHashes(3)
333
+ });
334
+ mockGetProposer(getAddress(currentProposer), getAddress());
335
+ const result = await validatorWithMaxTxs.validate(mockProposal);
336
+ expect(result).toEqual({
337
+ result: 'reject',
338
+ severity: PeerErrorSeverity.MidToleranceError
339
+ });
340
+ });
341
+ it('accepts proposal when txHashes count equals maxTxsPerBlock', async ()=>{
342
+ const validatorWithMaxTxs = validatorFactory(epochCache, {
343
+ txsPermitted: true,
344
+ maxTxsPerBlock: 2
345
+ });
346
+ const currentProposer = getSigner();
347
+ const header = makeHeader(1, 100, 100);
348
+ const mockProposal = await makeProposal({
349
+ blockHeader: header,
350
+ lastBlockHeader: header,
351
+ signer: currentProposer,
352
+ txHashes: getTxHashes(2)
353
+ });
354
+ mockGetProposer(getAddress(currentProposer), getAddress());
355
+ const result = await validatorWithMaxTxs.validate(mockProposal);
356
+ expect(result).toEqual({
357
+ result: 'accept'
177
358
  });
359
+ });
360
+ it('accepts proposal when maxTxsPerBlock is not set (unlimited)', async ()=>{
361
+ // Default validator has no maxTxsPerBlock
362
+ const currentProposer = getSigner();
363
+ const header = makeHeader(1, 100, 100);
364
+ const mockProposal = await makeProposal({
365
+ blockHeader: header,
366
+ lastBlockHeader: header,
367
+ signer: currentProposer,
368
+ txHashes: getTxHashes(10)
369
+ });
370
+ mockGetProposer(getAddress(currentProposer), getAddress());
178
371
  const result = await validator.validate(mockProposal);
179
- expect(result).toBeUndefined();
372
+ expect(result).toEqual({
373
+ result: 'accept'
374
+ });
180
375
  });
181
376
  });
182
377
  });
@@ -1,7 +1,7 @@
1
- import type { ProcessedTx, Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
2
- export declare class AggregateTxValidator<T extends Tx | ProcessedTx> implements TxValidator<T> {
3
- #private;
1
+ import type { TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
2
+ export declare class AggregateTxValidator<T> implements TxValidator<T> {
3
+ readonly validators: TxValidator<T>[];
4
4
  constructor(...validators: TxValidator<T>[]);
5
5
  validateTx(tx: T): Promise<TxValidationResult>;
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hZ2dyZWdhdGVfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekYscUJBQWEsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUVyRixZQUFZLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQU0xQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWtCbkQ7Q0FDRiJ9
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlX3R4X3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hZ2dyZWdhdGVfdHhfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhFLHFCQUFhLG9CQUFvQixDQUFDLENBQUMsQ0FBRSxZQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQU0xQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWtCbkQ7Q0FDRiJ9
@@ -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,WAAW,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzF,qBAAa,oBAAoB,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAErF,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,CAkBnD;CACF"}
@@ -1,17 +1,17 @@
1
1
  export class AggregateTxValidator {
2
- #validators;
2
+ validators;
3
3
  constructor(...validators){
4
4
  if (validators.length === 0) {
5
5
  throw new Error('At least one validator must be provided');
6
6
  }
7
- this.#validators = validators;
7
+ this.validators = validators;
8
8
  }
9
9
  async validateTx(tx) {
10
10
  const aggregate = {
11
11
  result: 'valid',
12
12
  reason: []
13
13
  };
14
- for (const validator of this.#validators){
14
+ for (const validator of this.validators){
15
15
  const result = await validator.validateTx(tx);
16
16
  if (result.result === 'invalid') {
17
17
  aggregate.result = 'invalid';
@@ -1,3 +1,4 @@
1
1
  import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
2
+ /** Returns the default list of functions allowed to run in the setup phase of a transaction. */
2
3
  export declare function getDefaultAllowedSetupFunctions(): Promise<AllowedElement[]>;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZF9wdWJsaWNfc2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvYWxsb3dlZF9wdWJsaWNfc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHdEUsd0JBQXNCLCtCQUErQixJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQTJCakYifQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZF9wdWJsaWNfc2V0dXAuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvYWxsb3dlZF9wdWJsaWNfc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJdEUsZ0dBQWdHO0FBQ2hHLHdCQUFzQiwrQkFBK0IsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0F1Q2pGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"allowed_public_setup.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/allowed_public_setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CA2BjF"}
1
+ {"version":3,"file":"allowed_public_setup.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/allowed_public_setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,gGAAgG;AAChG,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAuCjF"}
@@ -1,25 +1,40 @@
1
- import { FPCContract } from '@aztec/noir-contracts.js/FPC';
2
1
  import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
3
2
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
3
+ import { FunctionSelector } from '@aztec/stdlib/abi';
4
4
  import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
5
- let defaultAllowedSetupFunctions = undefined;
6
- export async function getDefaultAllowedSetupFunctions() {
5
+ let defaultAllowedSetupFunctions;
6
+ /** Returns the default list of functions allowed to run in the setup phase of a transaction. */ export async function getDefaultAllowedSetupFunctions() {
7
7
  if (defaultAllowedSetupFunctions === undefined) {
8
+ const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
9
+ const setAuthorizedInternalSelector = await FunctionSelector.fromSignature('_set_authorized((Field),Field,bool)');
10
+ const setAuthorizedSelector = await FunctionSelector.fromSignature('set_authorized(Field,bool)');
11
+ const increaseBalanceSelector = await FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
12
+ const transferInPublicSelector = await FunctionSelector.fromSignature('transfer_in_public((Field),(Field),u128,Field)');
8
13
  defaultAllowedSetupFunctions = [
9
- // needed for authwit support
14
+ // AuthRegistry: needed for authwit support via private path (set_authorized_private enqueues _set_authorized)
10
15
  {
11
- address: ProtocolContractAddress.AuthRegistry
16
+ address: ProtocolContractAddress.AuthRegistry,
17
+ selector: setAuthorizedInternalSelector
12
18
  },
13
- // needed for claiming on the same tx as a spend
19
+ // AuthRegistry: needed for authwit support via public path (PublicFeePaymentMethod calls set_authorized directly)
14
20
  {
15
- address: ProtocolContractAddress.FeeJuice
21
+ address: ProtocolContractAddress.AuthRegistry,
22
+ selector: setAuthorizedSelector
16
23
  },
17
- // needed for private transfers via FPC
24
+ // FeeJuice: needed for claiming on the same tx as a spend (claim_and_end_setup enqueues this)
18
25
  {
19
- classId: (await getContractClassFromArtifact(TokenContractArtifact)).id
26
+ address: ProtocolContractAddress.FeeJuice,
27
+ selector: increaseBalanceSelector
20
28
  },
29
+ // Token: needed for private transfers via FPC (transfer_to_public enqueues this)
21
30
  {
22
- classId: (await getContractClassFromArtifact(FPCContract.artifact)).id
31
+ classId: tokenClassId,
32
+ selector: increaseBalanceSelector
33
+ },
34
+ // Token: needed for public transfers via FPC (fee_entrypoint_public enqueues this)
35
+ {
36
+ classId: tokenClassId,
37
+ selector: transferInPublicSelector
23
38
  }
24
39
  ];
25
40
  }
@@ -1,5 +1,5 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
1
  import type { ArchiveSource } from '@aztec/p2p';
2
+ import type { BlockHash } from '@aztec/stdlib/block';
3
3
  import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
4
4
  /**
5
5
  * Implements an archive source by checking a DB and an in-memory collection.
@@ -9,6 +9,6 @@ export declare class ArchiveCache implements ArchiveSource {
9
9
  private db;
10
10
  archives: Map<string, bigint>;
11
11
  constructor(db: MerkleTreeReadOperations);
12
- getArchiveIndices(archives: Fr[]): Promise<(bigint | undefined)[]>;
12
+ getArchiveIndices(archives: BlockHash[]): Promise<(bigint | undefined)[]>;
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZV9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hcmNoaXZlX2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2hGOzs7R0FHRztBQUNILHFCQUFhLFlBQWEsWUFBVyxhQUFhO0lBR3BDLE9BQU8sQ0FBQyxFQUFFO0lBRnRCLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTlCLFlBQW9CLEVBQUUsRUFBRSx3QkFBd0IsRUFFL0M7SUFFWSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FVOUU7Q0FDRiJ9
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZV9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9hcmNoaXZlX2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2hGOzs7R0FHRztBQUNILHFCQUFhLFlBQWEsWUFBVyxhQUFhO0lBR3BDLE9BQU8sQ0FBQyxFQUFFO0lBRnRCLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTlCLFlBQW9CLEVBQUUsRUFBRSx3QkFBd0IsRUFFL0M7SUFFWSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FVckY7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"archive_cache.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/archive_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,YAAa,YAAW,aAAa;IAGpC,OAAO,CAAC,EAAE;IAFtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,YAAoB,EAAE,EAAE,wBAAwB,EAE/C;IAEY,iBAAiB,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAU9E;CACF"}
1
+ {"version":3,"file":"archive_cache.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/archive_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;GAGG;AACH,qBAAa,YAAa,YAAW,aAAa;IAGpC,OAAO,CAAC,EAAE;IAFtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,YAAoB,EAAE,EAAE,wBAAwB,EAE/C;IAEY,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAUrF;CACF"}
@@ -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()));
13
+ const toCheckDb = archives.filter((n)=>!this.archives.has(n.toString())).map((n)=>n.toFr());
14
14
  const dbHits = await this.db.findLeafIndices(MerkleTreeId.ARCHIVE, toCheckDb);
15
15
  dbHits.forEach((x, index)=>{
16
16
  if (x !== undefined) {
@@ -1,11 +1,25 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
- import { type AnyTx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
2
+ import type { BlockHash } from '@aztec/stdlib/block';
3
+ import { type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
4
  export interface ArchiveSource {
4
- getArchiveIndices: (archives: Fr[]) => Promise<(bigint | undefined)[]>;
5
+ getArchiveIndices: (archives: BlockHash[]) => Promise<(bigint | undefined)[]>;
5
6
  }
6
- export declare class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
7
+ /** Structural interface for block header validation. */
8
+ export interface HasBlockHeaderData {
9
+ txHash: {
10
+ toString(): string;
11
+ };
12
+ data: {
13
+ constants: {
14
+ anchorBlockHeader: {
15
+ hash(): Promise<BlockHash>;
16
+ };
17
+ };
18
+ };
19
+ }
20
+ export declare class BlockHeaderTxValidator<T extends HasBlockHeaderData> implements TxValidator<T> {
7
21
  #private;
8
- constructor(archiveSource: ArchiveSource);
22
+ constructor(archiveSource: ArchiveSource, bindings?: LoggerBindings);
9
23
  validateTx(tx: T): Promise<TxValidationResult>;
10
24
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfaGVhZGVyX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9ibG9ja19oZWFkZXJfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBeUIsS0FBSyxrQkFBa0IsRUFBRSxLQUFLLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhILE1BQU0sV0FBVyxhQUFhO0lBQzVCLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDeEU7QUFFRCxxQkFBYSxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQzs7SUFJNUUsWUFBWSxhQUFhLEVBQUUsYUFBYSxFQUV2QztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQU9uRDtDQUNGIn0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfaGVhZGVyX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9ibG9ja19oZWFkZXJfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQXlCLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRyxNQUFNLFdBQVcsYUFBYTtJQUM1QixpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQy9FO0FBRUQsd0RBQXdEO0FBQ3hELE1BQU0sV0FBVyxrQkFBa0I7SUFDakMsTUFBTSxFQUFFO1FBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDL0IsSUFBSSxFQUFFO1FBQ0osU0FBUyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUU7Z0JBQ2pCLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCxxQkFBYSxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsa0JBQWtCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUl6RixZQUFZLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUdsRTtJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQU9uRDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"block_header_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/block_header_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,KAAK,KAAK,EAAyB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhH,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;CACxE;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAI5E,YAAY,aAAa,EAAE,aAAa,EAEvC;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOnD;CACF"}
1
+ {"version":3,"file":"block_header_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/block_header_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAyB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,iBAAiB,EAAE;gBACjB,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;aAC5B,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIzF,YAAY,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGlE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOnD;CACF"}
@@ -1,17 +1,18 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { TX_ERROR_BLOCK_HEADER } from '@aztec/stdlib/tx';
3
3
  export class BlockHeaderTxValidator {
4
- #log = createLogger('p2p:tx_validator:tx_block_header');
4
+ #log;
5
5
  #archiveSource;
6
- constructor(archiveSource){
6
+ constructor(archiveSource, bindings){
7
7
  this.#archiveSource = archiveSource;
8
+ this.#log = createLogger('p2p:tx_validator:tx_block_header', bindings);
8
9
  }
9
10
  async validateTx(tx) {
10
11
  const [index] = await this.#archiveSource.getArchiveIndices([
11
12
  await tx.data.constants.anchorBlockHeader.hash()
12
13
  ]);
13
14
  if (index === undefined) {
14
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for referencing an unknown block header`);
15
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for referencing an unknown block header`);
15
16
  return {
16
17
  result: 'invalid',
17
18
  reason: [
@@ -1,6 +1,8 @@
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
1
2
  import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
2
3
  export declare class DataTxValidator implements TxValidator<Tx> {
3
4
  #private;
5
+ constructor(bindings?: LoggerBindings);
4
6
  validateTx(tx: Tx): Promise<TxValidationResult>;
5
7
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZGF0YV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQVNMLEVBQUUsRUFDRixLQUFLLGtCQUFrQixFQUN2QixLQUFLLFdBQVcsRUFDakIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixxQkFBYSxlQUFnQixZQUFXLFdBQVcsQ0FBQyxFQUFFLENBQUM7O0lBRy9DLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQU1wRDtDQW1HRiJ9
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV92YWxpZGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc2dfdmFsaWRhdG9ycy90eF92YWxpZGF0b3IvZGF0YV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFTTCxFQUFFLEVBQ0YsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIscUJBQWEsZUFBZ0IsWUFBVyxXQUFXLENBQUMsRUFBRSxDQUFDOztJQUdyRCxZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FNcEQ7Q0FtR0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AAGA,OAAO,EASL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAG/C,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;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"}