@aztec/p2p 0.0.1-commit.d431d1c → 0.0.1-commit.db765a8

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 +40 -9
  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 +56 -15
  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 +232 -11
  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 +2 -1
  167. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/index.js +1 -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 +3 -1
  179. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  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 +11 -10
  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 -137
  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 +25 -13
  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 +36 -15
  407. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +197 -15
  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 +1 -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 +6 -2
  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 +9 -9
  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 -398
  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 -131
  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,12 +1,15 @@
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);
7
10
  const currentSlot = getSlot(100);
8
11
  const nextSlot = getSlot(101);
9
- function mockGetProposer(currentProposer, nextProposer) {
12
+ function mockGetProposer(currentProposer, nextProposer, previousProposer) {
10
13
  epochCache.getProposerAttesterAddressInSlot.mockImplementation((slot)=>{
11
14
  if (slot === currentSlot) {
12
15
  return Promise.resolve(currentProposer);
@@ -14,6 +17,9 @@ export function sharedProposalValidatorTests(params) {
14
17
  if (slot === nextSlot) {
15
18
  return Promise.resolve(nextProposer);
16
19
  }
20
+ if (slot === previousSlot && previousProposer) {
21
+ return Promise.resolve(previousProposer);
22
+ }
17
23
  throw new Error('Unexpected argument');
18
24
  });
19
25
  }
@@ -27,18 +33,68 @@ export function sharedProposalValidatorTests(params) {
27
33
  nextSlot: nextSlot
28
34
  });
29
35
  });
30
- it('returns high tolerance error if slot number is not current or next slot', async ()=>{
36
+ it('returns high tolerance error if slot number is not current or next slot (outside clock tolerance)', async ()=>{
31
37
  const header = makeHeader(1, 99, 99);
32
38
  const mockProposal = await makeProposal({
33
39
  blockHeader: header,
34
40
  lastBlockHeader: header
35
41
  });
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
+ });
36
49
  epochCache.getProposerAttesterAddressInSlot.mockResolvedValue(getAddress());
37
50
  const result = await validator.validate(mockProposal);
38
- expect(result).toBe(PeerErrorSeverity.HighToleranceError);
51
+ expect(result).toEqual({
52
+ result: 'reject',
53
+ severity: PeerErrorSeverity.HighToleranceError
54
+ });
39
55
  // Should not try to resolve proposers if base validation fails
40
56
  expect(epochCache.getProposerAttesterAddressInSlot).not.toHaveBeenCalled();
41
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
72
+ });
73
+ mockGetProposer(getAddress(), getAddress(), getAddress(previousProposer));
74
+ const result = await validator.validate(mockProposal);
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();
97
+ });
42
98
  it('returns mid tolerance error if proposer is not current proposer for current slot', async ()=>{
43
99
  const currentProposer = getSigner();
44
100
  const nextProposer = getSigner();
@@ -51,7 +107,10 @@ export function sharedProposalValidatorTests(params) {
51
107
  });
52
108
  mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
53
109
  const result = await validator.validate(mockProposal);
54
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
110
+ expect(result).toEqual({
111
+ result: 'reject',
112
+ severity: PeerErrorSeverity.MidToleranceError
113
+ });
55
114
  });
56
115
  it('returns mid tolerance error if proposer is not next proposer for next slot', async ()=>{
57
116
  const currentProposer = getSigner();
@@ -65,7 +124,10 @@ export function sharedProposalValidatorTests(params) {
65
124
  });
66
125
  mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
67
126
  const result = await validator.validate(mockProposal);
68
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
127
+ expect(result).toEqual({
128
+ result: 'reject',
129
+ severity: PeerErrorSeverity.MidToleranceError
130
+ });
69
131
  });
70
132
  it('returns mid tolerance error if proposer is current proposer but proposal is for next slot', async ()=>{
71
133
  const currentProposer = getSigner();
@@ -78,7 +140,39 @@ export function sharedProposalValidatorTests(params) {
78
140
  });
79
141
  mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
80
142
  const result = await validator.validate(mockProposal);
81
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
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'
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());
171
+ const result = await validator.validate(mockProposal);
172
+ expect(result).toEqual({
173
+ result: 'reject',
174
+ severity: PeerErrorSeverity.LowToleranceError
175
+ });
82
176
  });
83
177
  it('returns undefined if proposal is valid for current slot and proposer', async ()=>{
84
178
  const currentProposer = getSigner();
@@ -91,7 +185,9 @@ export function sharedProposalValidatorTests(params) {
91
185
  });
92
186
  mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
93
187
  const result = await validator.validate(mockProposal);
94
- expect(result).toBeUndefined();
188
+ expect(result).toEqual({
189
+ result: 'accept'
190
+ });
95
191
  });
96
192
  it('returns undefined if proposal is valid for next slot and proposer', async ()=>{
97
193
  const currentProposer = getSigner();
@@ -104,7 +200,9 @@ export function sharedProposalValidatorTests(params) {
104
200
  });
105
201
  mockGetProposer(getAddress(currentProposer), getAddress(nextProposer));
106
202
  const result = await validator.validate(mockProposal);
107
- expect(result).toBeUndefined();
203
+ expect(result).toEqual({
204
+ result: 'accept'
205
+ });
108
206
  });
109
207
  describe('transaction permission validation', ()=>{
110
208
  it('returns mid tolerance error if txs not permitted and proposal contains txHashes', async ()=>{
@@ -121,7 +219,10 @@ export function sharedProposalValidatorTests(params) {
121
219
  });
122
220
  mockGetProposer(getAddress(currentProposer), getAddress());
123
221
  const result = await validatorWithTxsDisabled.validate(mockProposal);
124
- expect(result).toBe(PeerErrorSeverity.MidToleranceError);
222
+ expect(result).toEqual({
223
+ result: 'reject',
224
+ severity: PeerErrorSeverity.MidToleranceError
225
+ });
125
226
  });
126
227
  it('returns undefined if txs not permitted but proposal has no txHashes', async ()=>{
127
228
  const currentProposer = getSigner();
@@ -137,7 +238,9 @@ export function sharedProposalValidatorTests(params) {
137
238
  });
138
239
  mockGetProposer(getAddress(currentProposer), getAddress());
139
240
  const result = await validatorWithTxsDisabled.validate(mockProposal);
140
- expect(result).toBeUndefined();
241
+ expect(result).toEqual({
242
+ result: 'accept'
243
+ });
141
244
  });
142
245
  it('returns undefined if txs permitted and proposal contains txHashes', async ()=>{
143
246
  const currentProposer = getSigner();
@@ -150,7 +253,125 @@ export function sharedProposalValidatorTests(params) {
150
253
  });
151
254
  mockGetProposer(getAddress(currentProposer), getAddress());
152
255
  const result = await validator.validate(mockProposal);
153
- expect(result).toBeUndefined();
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'
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());
371
+ const result = await validator.validate(mockProposal);
372
+ expect(result).toEqual({
373
+ result: 'accept'
374
+ });
154
375
  });
155
376
  });
156
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"}
@@ -3,7 +3,10 @@ import { createLogger } from '@aztec/foundation/log';
3
3
  import { computeCalldataHash } from '@aztec/stdlib/hash';
4
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';
5
5
  export class DataTxValidator {
6
- #log = createLogger('p2p:tx_validator:tx_data');
6
+ #log;
7
+ constructor(bindings){
8
+ this.#log = createLogger('p2p:tx_validator:tx_data', bindings);
9
+ }
7
10
  async validateTx(tx) {
8
11
  const reason = await this.#hasCorrectHash(tx) ?? await this.#hasCorrectCalldata(tx) ?? await this.#hasCorrectContractClassLogs(tx);
9
12
  return reason ? {
@@ -1,10 +1,21 @@
1
- import { type AnyTx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type LoggerBindings } from '@aztec/foundation/log';
3
+ import { type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
2
4
  export interface NullifierSource {
3
5
  nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
4
6
  }
5
- export declare class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
7
+ /** Structural interface for double-spend validation. */
8
+ export interface HasNullifierData {
9
+ txHash: {
10
+ toString(): string;
11
+ };
12
+ data: {
13
+ getNonEmptyNullifiers(): Fr[];
14
+ };
15
+ }
16
+ export declare class DoubleSpendTxValidator<T extends HasNullifierData> implements TxValidator<T> {
6
17
  #private;
7
- constructor(nullifierSource: NullifierSource);
18
+ constructor(nullifierSource: NullifierSource, bindings?: LoggerBindings);
8
19
  validateTx(tx: T): Promise<TxValidationResult>;
9
20
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlX3NwZW5kX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9kb3VibGVfc3BlbmRfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxLQUFLLEtBQUssRUFJVixLQUFLLGtCQUFrQixFQUN2QixLQUFLLFdBQVcsRUFDakIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLFdBQVcsZUFBZTtJQUM5QixlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Q0FDL0Q7QUFFRCxxQkFBYSxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQzs7SUFJNUUsWUFBWSxlQUFlLEVBQUUsZUFBZSxFQUUzQztJQUVLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQWdCbkQ7Q0FDRiJ9
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlX3NwZW5kX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci9kb3VibGVfc3BlbmRfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBR0wsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxXQUFXLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsTUFBTSxXQUFXLGVBQWU7SUFDOUIsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0NBQy9EO0FBRUQsd0RBQXdEO0FBQ3hELE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsTUFBTSxFQUFFO1FBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDL0IsSUFBSSxFQUFFO1FBQUUscUJBQXFCLElBQUksRUFBRSxFQUFFLENBQUE7S0FBRSxDQUFDO0NBQ3pDO0FBRUQscUJBQWEsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLGdCQUFnQixDQUFFLFlBQVcsV0FBVyxDQUFDLENBQUMsQ0FBQzs7SUFJdkYsWUFBWSxlQUFlLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHdEU7SUFFSyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FnQm5EO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EAIV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAI5E,YAAY,eAAe,EAAE,eAAe,EAE3C;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgBnD;CACF"}
1
+ {"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QAAE,qBAAqB,IAAI,EAAE,EAAE,CAAA;KAAE,CAAC;CACzC;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,gBAAgB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIvF,YAAY,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,cAAc,EAGtE;IAEK,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgBnD;CACF"}