@aztec/p2p 0.0.1-fake-ceab37513c → 0.0.6-commit.a2d1860fe9

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 (601) 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 +7 -6
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +52 -15
  7. package/dest/client/index.d.ts +1 -1
  8. package/dest/client/interface.d.ts +58 -23
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +51 -74
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +613 -264
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  19. package/dest/config.d.ts +95 -61
  20. package/dest/config.d.ts.map +1 -1
  21. package/dest/config.js +42 -16
  22. package/dest/enr/generate-enr.d.ts +1 -1
  23. package/dest/enr/index.d.ts +1 -1
  24. package/dest/errors/attestation-pool.error.d.ts +7 -0
  25. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  26. package/dest/errors/attestation-pool.error.js +12 -0
  27. package/dest/errors/reqresp.error.d.ts +1 -1
  28. package/dest/errors/reqresp.error.d.ts.map +1 -1
  29. package/dest/errors/tx-pool.error.d.ts +8 -0
  30. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  31. package/dest/errors/tx-pool.error.js +9 -0
  32. package/dest/index.d.ts +2 -1
  33. package/dest/index.d.ts.map +1 -1
  34. package/dest/index.js +1 -0
  35. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +114 -57
  36. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  37. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  38. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  39. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  40. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +529 -288
  41. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  42. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  43. package/dest/mem_pools/attestation_pool/index.js +1 -2
  44. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -10
  45. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  46. package/dest/mem_pools/attestation_pool/mocks.js +17 -13
  47. package/dest/mem_pools/index.d.ts +3 -2
  48. package/dest/mem_pools/index.d.ts.map +1 -1
  49. package/dest/mem_pools/index.js +1 -1
  50. package/dest/mem_pools/instrumentation.d.ts +9 -1
  51. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  52. package/dest/mem_pools/instrumentation.js +37 -10
  53. package/dest/mem_pools/interface.d.ts +6 -7
  54. package/dest/mem_pools/interface.d.ts.map +1 -1
  55. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +33 -58
  56. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +316 -337
  58. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  59. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  61. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  62. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  64. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  65. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  67. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  68. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  70. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  71. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  73. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  74. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  76. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  77. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  79. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  80. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool/index.js +0 -1
  82. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  83. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  84. package/dest/mem_pools/tx_pool/priority.js +6 -1
  85. package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
  86. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  87. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  88. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  89. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -24
  90. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  91. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  92. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  93. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  94. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  95. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  96. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  97. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  98. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  119. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  120. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  121. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  122. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +74 -0
  123. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  124. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  125. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
  126. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  127. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  128. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  129. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  130. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  131. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  132. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  133. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  134. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  135. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +209 -0
  136. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  137. package/dest/mem_pools/tx_pool_v2/interfaces.js +8 -0
  138. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
  139. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  140. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
  141. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  142. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  143. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  144. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  145. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  146. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
  147. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  148. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  149. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
  150. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  151. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  152. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +878 -0
  153. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -6
  154. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  155. package/dest/msg_validators/attestation_validator/attestation_validator.js +57 -24
  156. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  157. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  158. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
  159. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  160. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  161. package/dest/msg_validators/attestation_validator/index.js +1 -0
  162. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  163. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  164. package/dest/msg_validators/clock_tolerance.js +37 -0
  165. package/dest/msg_validators/index.d.ts +2 -2
  166. package/dest/msg_validators/index.d.ts.map +1 -1
  167. package/dest/msg_validators/index.js +1 -1
  168. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
  169. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
  170. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  171. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  172. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  173. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  174. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  175. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  176. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  177. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  178. package/dest/msg_validators/proposal_validator/index.js +3 -0
  179. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  180. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  181. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  182. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  183. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  184. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  185. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
  186. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  187. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  188. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  189. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  190. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  191. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  192. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  193. package/dest/msg_validators/tx_validator/block_header_validator.js +5 -4
  194. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  195. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  196. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  197. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  198. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  199. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  200. package/dest/msg_validators/tx_validator/factory.d.ts +10 -4
  201. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  202. package/dest/msg_validators/tx_validator/factory.js +30 -14
  203. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  204. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  205. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  206. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  207. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  208. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  209. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  210. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  211. package/dest/msg_validators/tx_validator/index.js +2 -0
  212. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +5 -7
  213. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  214. package/dest/msg_validators/tx_validator/metadata_validator.js +8 -26
  215. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  216. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  217. package/dest/msg_validators/tx_validator/phases_validator.js +6 -4
  218. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  219. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  220. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  221. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  222. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  223. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +30 -0
  224. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  225. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  226. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  227. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  228. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  229. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  230. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  231. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  232. package/dest/services/data_store.d.ts +1 -1
  233. package/dest/services/data_store.d.ts.map +1 -1
  234. package/dest/services/data_store.js +10 -6
  235. package/dest/services/discv5/discV5_service.d.ts +1 -1
  236. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  237. package/dest/services/discv5/discV5_service.js +1 -1
  238. package/dest/services/dummy_service.d.ts +28 -3
  239. package/dest/services/dummy_service.d.ts.map +1 -1
  240. package/dest/services/dummy_service.js +51 -0
  241. package/dest/services/encoding.d.ts +2 -2
  242. package/dest/services/encoding.d.ts.map +1 -1
  243. package/dest/services/encoding.js +10 -8
  244. package/dest/services/gossipsub/index.d.ts +3 -0
  245. package/dest/services/gossipsub/index.d.ts.map +1 -0
  246. package/dest/services/gossipsub/index.js +2 -0
  247. package/dest/services/gossipsub/scoring.d.ts +21 -3
  248. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  249. package/dest/services/gossipsub/scoring.js +24 -7
  250. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  251. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  252. package/dest/services/gossipsub/topic_score_params.js +346 -0
  253. package/dest/services/index.d.ts +2 -1
  254. package/dest/services/index.d.ts.map +1 -1
  255. package/dest/services/index.js +1 -0
  256. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  257. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  258. package/dest/services/libp2p/instrumentation.js +36 -71
  259. package/dest/services/libp2p/libp2p_service.d.ts +111 -84
  260. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  261. package/dest/services/libp2p/libp2p_service.js +1160 -284
  262. package/dest/services/peer-manager/interface.d.ts +1 -1
  263. package/dest/services/peer-manager/metrics.d.ts +9 -2
  264. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  265. package/dest/services/peer-manager/metrics.js +39 -16
  266. package/dest/services/peer-manager/peer_manager.d.ts +2 -33
  267. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  268. package/dest/services/peer-manager/peer_manager.js +6 -12
  269. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  270. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  271. package/dest/services/peer-manager/peer_scoring.js +68 -4
  272. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  273. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  274. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +562 -0
  275. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  276. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  277. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  278. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  279. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  280. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  281. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  282. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  283. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  284. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  285. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  286. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  287. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  288. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  289. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  290. package/dest/services/reqresp/config.d.ts +1 -1
  291. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  292. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  293. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  294. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -4
  295. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  296. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  297. package/dest/services/reqresp/constants.d.ts +12 -0
  298. package/dest/services/reqresp/constants.d.ts.map +1 -0
  299. package/dest/services/reqresp/constants.js +7 -0
  300. package/dest/services/reqresp/index.d.ts +1 -1
  301. package/dest/services/reqresp/interface.d.ts +13 -2
  302. package/dest/services/reqresp/interface.d.ts.map +1 -1
  303. package/dest/services/reqresp/interface.js +16 -2
  304. package/dest/services/reqresp/metrics.d.ts +6 -5
  305. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  306. package/dest/services/reqresp/metrics.js +17 -21
  307. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  308. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  309. package/dest/services/reqresp/protocols/auth.js +2 -2
  310. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  311. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  312. package/dest/services/reqresp/protocols/block.js +3 -2
  313. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  314. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  315. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  316. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  317. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  318. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  319. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +30 -9
  320. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  321. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +60 -14
  322. package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
  323. package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
  324. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  325. package/dest/services/reqresp/protocols/index.d.ts +1 -1
  326. package/dest/services/reqresp/protocols/ping.d.ts +1 -1
  327. package/dest/services/reqresp/protocols/status.d.ts +6 -5
  328. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  329. package/dest/services/reqresp/protocols/status.js +7 -3
  330. package/dest/services/reqresp/protocols/tx.d.ts +8 -3
  331. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  332. package/dest/services/reqresp/protocols/tx.js +20 -0
  333. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  334. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
  335. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  336. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  337. package/dest/services/reqresp/reqresp.d.ts +6 -41
  338. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  339. package/dest/services/reqresp/reqresp.js +471 -50
  340. package/dest/services/reqresp/status.d.ts +2 -2
  341. package/dest/services/reqresp/status.d.ts.map +1 -1
  342. package/dest/services/service.d.ts +55 -3
  343. package/dest/services/service.d.ts.map +1 -1
  344. package/dest/services/tx_collection/config.d.ts +22 -1
  345. package/dest/services/tx_collection/config.d.ts.map +1 -1
  346. package/dest/services/tx_collection/config.js +56 -2
  347. package/dest/services/tx_collection/fast_tx_collection.d.ts +10 -12
  348. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  349. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  350. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  351. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  352. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  353. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  354. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  355. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  356. package/dest/services/tx_collection/index.d.ts +3 -1
  357. package/dest/services/tx_collection/index.d.ts.map +1 -1
  358. package/dest/services/tx_collection/index.js +2 -0
  359. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  360. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  361. package/dest/services/tx_collection/instrumentation.js +11 -13
  362. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  363. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  364. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  365. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  366. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  367. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  368. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -6
  369. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  370. package/dest/services/tx_collection/slow_tx_collection.js +61 -26
  371. package/dest/services/tx_collection/tx_collection.d.ts +31 -18
  372. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  373. package/dest/services/tx_collection/tx_collection.js +79 -7
  374. package/dest/services/tx_collection/tx_collection_sink.d.ts +19 -9
  375. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  376. package/dest/services/tx_collection/tx_collection_sink.js +47 -20
  377. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  378. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  379. package/dest/services/tx_collection/tx_source.js +21 -4
  380. package/dest/services/tx_file_store/config.d.ts +16 -0
  381. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  382. package/dest/services/tx_file_store/config.js +22 -0
  383. package/dest/services/tx_file_store/index.d.ts +4 -0
  384. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  385. package/dest/services/tx_file_store/index.js +3 -0
  386. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  387. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  388. package/dest/services/tx_file_store/instrumentation.js +29 -0
  389. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  390. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  391. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  392. package/dest/services/tx_provider.d.ts +6 -4
  393. package/dest/services/tx_provider.d.ts.map +1 -1
  394. package/dest/services/tx_provider.js +16 -6
  395. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  396. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  397. package/dest/services/tx_provider_instrumentation.js +14 -14
  398. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  399. package/dest/test-helpers/get-ports.d.ts +1 -1
  400. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  401. package/dest/test-helpers/index.d.ts +3 -1
  402. package/dest/test-helpers/index.d.ts.map +1 -1
  403. package/dest/test-helpers/index.js +2 -0
  404. package/dest/test-helpers/make-enrs.d.ts +1 -1
  405. package/dest/test-helpers/make-test-p2p-clients.d.ts +4 -4
  406. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  407. package/dest/test-helpers/mock-pubsub.d.ts +31 -4
  408. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  409. package/dest/test-helpers/mock-pubsub.js +103 -2
  410. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  411. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  412. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  413. package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
  414. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  415. package/dest/test-helpers/reqresp-nodes.js +2 -1
  416. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  417. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  418. package/dest/test-helpers/test_tx_provider.js +41 -0
  419. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  420. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  421. package/dest/test-helpers/testbench-utils.js +366 -0
  422. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  423. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  424. package/dest/testbench/p2p_client_testbench_worker.js +221 -123
  425. package/dest/testbench/parse_log_file.d.ts +1 -1
  426. package/dest/testbench/testbench.d.ts +1 -1
  427. package/dest/testbench/testbench.js +2 -2
  428. package/dest/testbench/worker_client_manager.d.ts +51 -6
  429. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  430. package/dest/testbench/worker_client_manager.js +226 -39
  431. package/dest/types/index.d.ts +1 -1
  432. package/dest/util.d.ts +3 -2
  433. package/dest/util.d.ts.map +1 -1
  434. package/dest/util.js +11 -2
  435. package/dest/versioning.d.ts +1 -1
  436. package/dest/versioning.js +2 -2
  437. package/package.json +19 -18
  438. package/src/bootstrap/bootstrap.ts +7 -4
  439. package/src/client/factory.ts +97 -31
  440. package/src/client/interface.ts +77 -23
  441. package/src/client/p2p_client.ts +291 -309
  442. package/src/client/test/tx_proposal_collector/README.md +227 -0
  443. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +346 -0
  444. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  445. package/src/config.ts +76 -21
  446. package/src/errors/attestation-pool.error.ts +13 -0
  447. package/src/errors/tx-pool.error.ts +12 -0
  448. package/src/index.ts +1 -0
  449. package/src/mem_pools/attestation_pool/attestation_pool.ts +514 -58
  450. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +614 -309
  451. package/src/mem_pools/attestation_pool/index.ts +9 -2
  452. package/src/mem_pools/attestation_pool/mocks.ts +22 -15
  453. package/src/mem_pools/index.ts +4 -1
  454. package/src/mem_pools/instrumentation.ts +48 -10
  455. package/src/mem_pools/interface.ts +5 -7
  456. package/src/mem_pools/tx_pool/README.md +270 -0
  457. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +369 -373
  458. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  459. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  460. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  461. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  462. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  463. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  464. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  465. package/src/mem_pools/tx_pool/index.ts +0 -1
  466. package/src/mem_pools/tx_pool/priority.ts +8 -1
  467. package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
  468. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +23 -17
  469. package/src/mem_pools/tx_pool_v2/README.md +275 -0
  470. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  471. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  472. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  473. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  474. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  475. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
  476. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  477. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
  478. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  479. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  480. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +87 -0
  481. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
  482. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
  483. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  484. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  485. package/src/mem_pools/tx_pool_v2/interfaces.ts +239 -0
  486. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
  487. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  488. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  489. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
  490. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1052 -0
  491. package/src/msg_validators/attestation_validator/attestation_validator.ts +45 -32
  492. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
  493. package/src/msg_validators/attestation_validator/index.ts +1 -0
  494. package/src/msg_validators/clock_tolerance.ts +51 -0
  495. package/src/msg_validators/index.ts +1 -1
  496. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  497. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  498. package/src/msg_validators/proposal_validator/index.ts +3 -0
  499. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  500. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  501. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
  502. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  503. package/src/msg_validators/tx_validator/block_header_validator.ts +22 -9
  504. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  505. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  506. package/src/msg_validators/tx_validator/factory.ts +72 -24
  507. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  508. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  509. package/src/msg_validators/tx_validator/index.ts +2 -0
  510. package/src/msg_validators/tx_validator/metadata_validator.ts +25 -48
  511. package/src/msg_validators/tx_validator/phases_validator.ts +8 -4
  512. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  513. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  514. package/src/msg_validators/tx_validator/timestamp_validator.ts +57 -0
  515. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  516. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  517. package/src/services/data_store.ts +10 -7
  518. package/src/services/discv5/discV5_service.ts +1 -1
  519. package/src/services/dummy_service.ts +68 -1
  520. package/src/services/encoding.ts +9 -7
  521. package/src/services/gossipsub/README.md +641 -0
  522. package/src/services/gossipsub/index.ts +2 -0
  523. package/src/services/gossipsub/scoring.ts +29 -5
  524. package/src/services/gossipsub/topic_score_params.ts +487 -0
  525. package/src/services/index.ts +1 -0
  526. package/src/services/libp2p/instrumentation.ts +39 -71
  527. package/src/services/libp2p/libp2p_service.ts +883 -286
  528. package/src/services/peer-manager/metrics.ts +44 -16
  529. package/src/services/peer-manager/peer_manager.ts +7 -4
  530. package/src/services/peer-manager/peer_scoring.ts +70 -3
  531. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  532. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  533. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  534. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  535. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  536. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  537. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  538. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  539. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  540. package/src/services/reqresp/constants.ts +14 -0
  541. package/src/services/reqresp/interface.ts +30 -2
  542. package/src/services/reqresp/metrics.ts +36 -27
  543. package/src/services/reqresp/protocols/auth.ts +2 -2
  544. package/src/services/reqresp/protocols/block.ts +3 -2
  545. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  546. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  547. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +75 -10
  548. package/src/services/reqresp/protocols/status.ts +16 -12
  549. package/src/services/reqresp/protocols/tx.ts +23 -2
  550. package/src/services/reqresp/reqresp.ts +79 -22
  551. package/src/services/service.ts +72 -4
  552. package/src/services/tx_collection/config.ts +84 -2
  553. package/src/services/tx_collection/fast_tx_collection.ts +96 -49
  554. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  555. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  556. package/src/services/tx_collection/index.ts +6 -0
  557. package/src/services/tx_collection/instrumentation.ts +11 -13
  558. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  559. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  560. package/src/services/tx_collection/slow_tx_collection.ts +70 -36
  561. package/src/services/tx_collection/tx_collection.ts +122 -24
  562. package/src/services/tx_collection/tx_collection_sink.ts +48 -21
  563. package/src/services/tx_collection/tx_source.ts +24 -5
  564. package/src/services/tx_file_store/config.ts +37 -0
  565. package/src/services/tx_file_store/index.ts +3 -0
  566. package/src/services/tx_file_store/instrumentation.ts +36 -0
  567. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  568. package/src/services/tx_provider.ts +27 -10
  569. package/src/services/tx_provider_instrumentation.ts +24 -14
  570. package/src/test-helpers/index.ts +2 -0
  571. package/src/test-helpers/make-test-p2p-clients.ts +3 -3
  572. package/src/test-helpers/mock-pubsub.ts +144 -4
  573. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  574. package/src/test-helpers/reqresp-nodes.ts +3 -2
  575. package/src/test-helpers/test_tx_provider.ts +64 -0
  576. package/src/test-helpers/testbench-utils.ts +430 -0
  577. package/src/testbench/p2p_client_testbench_worker.ts +349 -120
  578. package/src/testbench/testbench.ts +2 -2
  579. package/src/testbench/worker_client_manager.ts +304 -42
  580. package/src/util.ts +19 -3
  581. package/src/versioning.ts +2 -2
  582. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -30
  583. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  584. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -190
  585. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -25
  586. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  587. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -197
  588. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
  589. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  590. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
  591. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  592. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  593. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -62
  594. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  595. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  596. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  597. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -256
  598. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -253
  599. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
  600. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -72
  601. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,23 +1,36 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import { type AnyTx, TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
+ import type { BlockHash } from '@aztec/stdlib/block';
3
+ import { TX_ERROR_BLOCK_HEADER, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export interface ArchiveSource {
6
- getArchiveIndices: (archives: Fr[]) => Promise<(bigint | undefined)[]>;
6
+ getArchiveIndices: (archives: BlockHash[]) => Promise<(bigint | undefined)[]>;
7
7
  }
8
8
 
9
- export class BlockHeaderTxValidator<T extends AnyTx> implements TxValidator<T> {
10
- #log = createLogger('p2p:tx_validator:tx_block_header');
9
+ /** Structural interface for block header validation. */
10
+ export interface HasBlockHeaderData {
11
+ txHash: { toString(): string };
12
+ data: {
13
+ constants: {
14
+ anchorBlockHeader: {
15
+ hash(): Promise<BlockHash>;
16
+ };
17
+ };
18
+ };
19
+ }
20
+
21
+ export class BlockHeaderTxValidator<T extends HasBlockHeaderData> implements TxValidator<T> {
22
+ #log: Logger;
11
23
  #archiveSource: ArchiveSource;
12
24
 
13
- constructor(archiveSource: ArchiveSource) {
25
+ constructor(archiveSource: ArchiveSource, bindings?: LoggerBindings) {
14
26
  this.#archiveSource = archiveSource;
27
+ this.#log = createLogger('p2p:tx_validator:tx_block_header', bindings);
15
28
  }
16
29
 
17
30
  async validateTx(tx: T): Promise<TxValidationResult> {
18
- const [index] = await this.#archiveSource.getArchiveIndices([await tx.data.constants.historicalHeader.hash()]);
31
+ const [index] = await this.#archiveSource.getArchiveIndices([await tx.data.constants.anchorBlockHeader.hash()]);
19
32
  if (index === undefined) {
20
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for referencing an unknown block header`);
33
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for referencing an unknown block header`);
21
34
  return { result: 'invalid', reason: [TX_ERROR_BLOCK_HEADER] };
22
35
  }
23
36
  return { result: 'valid' };
@@ -1,5 +1,5 @@
1
1
  import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS } from '@aztec/constants';
2
- import { createLogger } from '@aztec/foundation/log';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import { computeCalldataHash } from '@aztec/stdlib/hash';
4
4
  import {
5
5
  TX_ERROR_CALLDATA_COUNT_MISMATCH,
@@ -16,7 +16,11 @@ import {
16
16
  } from '@aztec/stdlib/tx';
17
17
 
18
18
  export class DataTxValidator implements TxValidator<Tx> {
19
- #log = createLogger('p2p:tx_validator:tx_data');
19
+ #log: Logger;
20
+
21
+ constructor(bindings?: LoggerBindings) {
22
+ this.#log = createLogger('p2p:tx_validator:tx_data', bindings);
23
+ }
20
24
 
21
25
  async validateTx(tx: Tx): Promise<TxValidationResult> {
22
26
  const reason =
@@ -31,7 +35,9 @@ export class DataTxValidator implements TxValidator<Tx> {
31
35
  if (!tx.getTxHash().equals(expected)) {
32
36
  const reason = TX_ERROR_INCORRECT_HASH;
33
37
  this.#log.verbose(
34
- `Rejecting tx ${tx.getTxHash().toString()}. Reason: ${reason}. Expected hash ${expected.toString()}. Got ${tx.getTxHash().toString()}.`,
38
+ `Rejecting tx ${tx.getTxHash().toString()}. Reason: ${reason}. Expected hash ${expected.toString()}. Got ${tx
39
+ .getTxHash()
40
+ .toString()}.`,
35
41
  );
36
42
  return reason;
37
43
  }
@@ -52,7 +58,9 @@ export class DataTxValidator implements TxValidator<Tx> {
52
58
  if (tx.getTotalPublicCalldataCount() > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
53
59
  const reason = TX_ERROR_CALLDATA_COUNT_TOO_LARGE;
54
60
  this.#log.verbose(
55
- `Rejecting tx ${tx.getTxHash().toString()}. Reason: ${reason}. Expected no greater than ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS} fields. Got ${tx.getTotalPublicCalldataCount()}.`,
61
+ `Rejecting tx ${tx
62
+ .getTxHash()
63
+ .toString()}. Reason: ${reason}. Expected no greater than ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS} fields. Got ${tx.getTotalPublicCalldataCount()}.`,
56
64
  );
57
65
  return reason;
58
66
  }
@@ -89,7 +97,9 @@ export class DataTxValidator implements TxValidator<Tx> {
89
97
  if (expectedHashes.some(h => logHash.value.equals(h))) {
90
98
  const matchingLogIndex = expectedHashes.findIndex(l => logHash.value.equals(l));
91
99
  this.#log.verbose(
92
- `Rejecting tx ${tx.getTxHash().toString()} because of mismatched contract class logs indices. Expected ${i} from the kernel's log hashes. Got ${matchingLogIndex} in the tx.`,
100
+ `Rejecting tx ${tx
101
+ .getTxHash()
102
+ .toString()} because of mismatched contract class logs indices. Expected ${i} from the kernel's log hashes. Got ${matchingLogIndex} in the tx.`,
93
103
  );
94
104
  return TX_ERROR_CONTRACT_CLASS_LOG_SORTING;
95
105
  } else {
@@ -105,7 +115,9 @@ export class DataTxValidator implements TxValidator<Tx> {
105
115
  const expectedMinLength = 1 + tx.contractClassLogFields[i].fields.findLastIndex(f => !f.isZero());
106
116
  if (logHash.logHash.length < expectedMinLength) {
107
117
  this.#log.verbose(
108
- `Rejecting tx ${tx.getTxHash().toString()} because of incorrect contract class log length. Expected the length to be at least ${expectedMinLength}. Got ${
118
+ `Rejecting tx ${tx
119
+ .getTxHash()
120
+ .toString()} because of incorrect contract class log length. Expected the length to be at least ${expectedMinLength}. Got ${
109
121
  logHash.logHash.length
110
122
  }.`,
111
123
  );
@@ -1,9 +1,8 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
3
  import {
3
- type AnyTx,
4
4
  TX_ERROR_DUPLICATE_NULLIFIER_IN_TX,
5
5
  TX_ERROR_EXISTING_NULLIFIER,
6
- Tx,
7
6
  type TxValidationResult,
8
7
  type TxValidator,
9
8
  } from '@aztec/stdlib/tx';
@@ -12,26 +11,33 @@ export interface NullifierSource {
12
11
  nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
13
12
  }
14
13
 
15
- export class DoubleSpendTxValidator<T extends AnyTx> implements TxValidator<T> {
16
- #log = createLogger('p2p:tx_validator:tx_double_spend');
14
+ /** Structural interface for double-spend validation. */
15
+ export interface HasNullifierData {
16
+ txHash: { toString(): string };
17
+ data: { getNonEmptyNullifiers(): Fr[] };
18
+ }
19
+
20
+ export class DoubleSpendTxValidator<T extends HasNullifierData> implements TxValidator<T> {
21
+ #log: Logger;
17
22
  #nullifierSource: NullifierSource;
18
23
 
19
- constructor(nullifierSource: NullifierSource) {
24
+ constructor(nullifierSource: NullifierSource, bindings?: LoggerBindings) {
20
25
  this.#nullifierSource = nullifierSource;
26
+ this.#log = createLogger('p2p:tx_validator:tx_double_spend', bindings);
21
27
  }
22
28
 
23
29
  async validateTx(tx: T): Promise<TxValidationResult> {
24
- const nullifiers = tx instanceof Tx ? tx.data.getNonEmptyNullifiers() : tx.txEffect.nullifiers;
30
+ const nullifiers = tx.data.getNonEmptyNullifiers();
25
31
 
26
32
  // Ditch this tx if it has repeated nullifiers
27
33
  const uniqueNullifiers = new Set(nullifiers.map(n => n.toBigInt()));
28
34
  if (uniqueNullifiers.size !== nullifiers.length) {
29
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for emitting duplicate nullifiers`);
35
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for emitting duplicate nullifiers`);
30
36
  return { result: 'invalid', reason: [TX_ERROR_DUPLICATE_NULLIFIER_IN_TX] };
31
37
  }
32
38
 
33
39
  if ((await this.#nullifierSource.nullifiersExist(nullifiers.map(n => n.toBuffer()))).some(Boolean)) {
34
- this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for repeating a nullifier`);
40
+ this.#log.verbose(`Rejecting tx ${tx.txHash} for repeating a nullifier`);
35
41
  return { result: 'invalid', reason: [TX_ERROR_EXISTING_NULLIFIER] };
36
42
  }
37
43
 
@@ -1,6 +1,8 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { LoggerBindings } from '@aztec/foundation/log';
2
4
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
5
+ import { ProtocolContractAddress, protocolContractsHash } from '@aztec/protocol-contracts';
4
6
  import type { ContractDataSource } from '@aztec/stdlib/contract';
5
7
  import type { GasFees } from '@aztec/stdlib/gas';
6
8
  import type {
@@ -10,9 +12,10 @@ import type {
10
12
  } from '@aztec/stdlib/interfaces/server';
11
13
  import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
12
14
  import { DatabasePublicStateSource, MerkleTreeId } from '@aztec/stdlib/trees';
13
- import type { Tx, TxValidationResult } from '@aztec/stdlib/tx';
15
+ import type { Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
14
16
  import type { UInt64 } from '@aztec/stdlib/types';
15
17
 
18
+ import { AggregateTxValidator } from './aggregate_tx_validator.js';
16
19
  import { ArchiveCache } from './archive_cache.js';
17
20
  import { BlockHeaderTxValidator } from './block_header_validator.js';
18
21
  import { DataTxValidator } from './data_validator.js';
@@ -20,6 +23,8 @@ import { DoubleSpendTxValidator } from './double_spend_validator.js';
20
23
  import { GasTxValidator } from './gas_validator.js';
21
24
  import { MetadataTxValidator } from './metadata_validator.js';
22
25
  import { PhasesTxValidator } from './phases_validator.js';
26
+ import { SizeTxValidator } from './size_validator.js';
27
+ import { TimestampTxValidator } from './timestamp_validator.js';
23
28
  import { TxPermittedValidator } from './tx_permitted_validator.js';
24
29
  import { TxProofValidator } from './tx_proof_validator.js';
25
30
 
@@ -32,48 +37,63 @@ export interface MessageValidator {
32
37
 
33
38
  export function createTxMessageValidators(
34
39
  timestamp: UInt64,
35
- blockNumber: number,
40
+ blockNumber: BlockNumber,
36
41
  worldStateSynchronizer: WorldStateSynchronizer,
37
42
  gasFees: GasFees,
38
43
  l1ChainId: number,
39
44
  rollupVersion: number,
40
- protocolContractTreeRoot: Fr,
45
+ protocolContractsHash: Fr,
41
46
  contractDataSource: ContractDataSource,
42
47
  proofVerifier: ClientProtocolCircuitVerifier,
43
48
  txsPermitted: boolean,
44
49
  allowedInSetup: AllowedElement[] = [],
50
+ bindings?: LoggerBindings,
45
51
  ): Record<string, MessageValidator>[] {
46
52
  const merkleTree = worldStateSynchronizer.getCommitted();
47
53
 
48
54
  return [
49
55
  {
50
56
  txsPermittedValidator: {
51
- validator: new TxPermittedValidator(txsPermitted),
57
+ validator: new TxPermittedValidator(txsPermitted, bindings),
52
58
  severity: PeerErrorSeverity.MidToleranceError,
53
59
  },
54
60
  dataValidator: {
55
- validator: new DataTxValidator(),
61
+ validator: new DataTxValidator(bindings),
56
62
  severity: PeerErrorSeverity.HighToleranceError,
57
63
  },
58
64
  metadataValidator: {
59
- validator: new MetadataTxValidator({
60
- l1ChainId: new Fr(l1ChainId),
61
- rollupVersion: new Fr(rollupVersion),
62
- timestamp,
63
- blockNumber,
64
- protocolContractTreeRoot,
65
- vkTreeRoot: getVKTreeRoot(),
66
- }),
65
+ validator: new MetadataTxValidator(
66
+ {
67
+ l1ChainId: new Fr(l1ChainId),
68
+ rollupVersion: new Fr(rollupVersion),
69
+ protocolContractsHash,
70
+ vkTreeRoot: getVKTreeRoot(),
71
+ },
72
+ bindings,
73
+ ),
67
74
  severity: PeerErrorSeverity.HighToleranceError,
68
75
  },
76
+ timestampValidator: {
77
+ validator: new TimestampTxValidator<Tx>(
78
+ {
79
+ timestamp,
80
+ blockNumber,
81
+ },
82
+ bindings,
83
+ ),
84
+ severity: PeerErrorSeverity.MidToleranceError,
85
+ },
69
86
  doubleSpendValidator: {
70
- validator: new DoubleSpendTxValidator({
71
- nullifiersExist: async (nullifiers: Buffer[]) => {
72
- const merkleTree = worldStateSynchronizer.getCommitted();
73
- const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
74
- return indices.map(index => index !== undefined);
87
+ validator: new DoubleSpendTxValidator(
88
+ {
89
+ nullifiersExist: async (nullifiers: Buffer[]) => {
90
+ const merkleTree = worldStateSynchronizer.getCommitted();
91
+ const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
92
+ return indices.map(index => index !== undefined);
93
+ },
75
94
  },
76
- }),
95
+ bindings,
96
+ ),
77
97
  severity: PeerErrorSeverity.HighToleranceError,
78
98
  },
79
99
  gasValidator: {
@@ -81,23 +101,51 @@ export function createTxMessageValidators(
81
101
  new DatabasePublicStateSource(merkleTree),
82
102
  ProtocolContractAddress.FeeJuice,
83
103
  gasFees,
104
+ bindings,
84
105
  ),
85
106
  severity: PeerErrorSeverity.HighToleranceError,
86
107
  },
87
108
  phasesValidator: {
88
- validator: new PhasesTxValidator(contractDataSource, allowedInSetup, timestamp),
109
+ validator: new PhasesTxValidator(contractDataSource, allowedInSetup, timestamp, bindings),
89
110
  severity: PeerErrorSeverity.MidToleranceError,
90
111
  },
91
112
  blockHeaderValidator: {
92
- validator: new BlockHeaderTxValidator(new ArchiveCache(merkleTree)),
113
+ validator: new BlockHeaderTxValidator(new ArchiveCache(merkleTree), bindings),
93
114
  severity: PeerErrorSeverity.HighToleranceError,
94
115
  },
95
116
  },
96
117
  {
97
118
  proofValidator: {
98
- validator: new TxProofValidator(proofVerifier),
119
+ validator: new TxProofValidator(proofVerifier, bindings),
99
120
  severity: PeerErrorSeverity.MidToleranceError,
100
121
  },
101
122
  },
102
123
  ];
103
124
  }
125
+
126
+ export function createTxReqRespValidator(
127
+ verifier: ClientProtocolCircuitVerifier,
128
+ {
129
+ l1ChainId,
130
+ rollupVersion,
131
+ }: {
132
+ l1ChainId: number;
133
+ rollupVersion: number;
134
+ },
135
+ bindings?: LoggerBindings,
136
+ ): TxValidator {
137
+ return new AggregateTxValidator(
138
+ new MetadataTxValidator(
139
+ {
140
+ l1ChainId: new Fr(l1ChainId),
141
+ rollupVersion: new Fr(rollupVersion),
142
+ protocolContractsHash,
143
+ vkTreeRoot: getVKTreeRoot(),
144
+ },
145
+ bindings,
146
+ ),
147
+ new SizeTxValidator(bindings),
148
+ new DataTxValidator(bindings),
149
+ new TxProofValidator(verifier, bindings),
150
+ );
151
+ }
@@ -0,0 +1,40 @@
1
+ import { getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
2
+ import { FunctionSelector } from '@aztec/stdlib/abi';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { type Tx, TxExecutionPhase } from '@aztec/stdlib/tx';
5
+
6
+ export type FeePayerBalanceDelta = {
7
+ feeLimit: bigint;
8
+ claimAmount: bigint;
9
+ };
10
+
11
+ const increasePublicBalanceSelectorPromise = FunctionSelector.fromSignature('_increase_public_balance((Field),u128)');
12
+
13
+ export function getTxFeeLimit(tx: Tx): bigint {
14
+ return tx.data.constants.txContext.gasSettings.getFeeLimit().toBigInt();
15
+ }
16
+
17
+ export async function getFeePayerClaimAmount(tx: Tx, feeJuiceAddress: AztecAddress): Promise<bigint> {
18
+ const setupFns = getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP);
19
+ const increasePublicBalanceSelector = await increasePublicBalanceSelectorPromise;
20
+ const feePayer = tx.data.feePayer;
21
+
22
+ const claimFunctionCall = setupFns.find(
23
+ fn =>
24
+ fn.request.contractAddress.equals(feeJuiceAddress) &&
25
+ fn.request.msgSender.equals(feeJuiceAddress) &&
26
+ fn.calldata.length > 2 &&
27
+ fn.functionSelector.equals(increasePublicBalanceSelector) &&
28
+ fn.args[0].equals(feePayer.toField()) &&
29
+ !fn.request.isStaticCall,
30
+ );
31
+
32
+ return claimFunctionCall ? claimFunctionCall.args[1].toBigInt() : 0n;
33
+ }
34
+
35
+ export async function getFeePayerBalanceDelta(tx: Tx, feeJuiceAddress: AztecAddress): Promise<FeePayerBalanceDelta> {
36
+ return {
37
+ feeLimit: getTxFeeLimit(tx),
38
+ claimAmount: await getFeePayerClaimAmount(tx, feeJuiceAddress),
39
+ };
40
+ }
@@ -1,8 +1,6 @@
1
1
  import { AVM_MAX_PROCESSABLE_L2_GAS, FIXED_DA_GAS, FIXED_L2_GAS } from '@aztec/constants';
2
- import { createLogger } from '@aztec/foundation/log';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import { computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
4
- import { getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
5
- import { FunctionSelector } from '@aztec/stdlib/abi';
6
4
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
5
  import { Gas, GasFees } from '@aztec/stdlib/gas';
8
6
  import type { PublicStateSource } from '@aztec/stdlib/trees';
@@ -12,18 +10,25 @@ import {
12
10
  TX_ERROR_INSUFFICIENT_FEE_PER_GAS,
13
11
  TX_ERROR_INSUFFICIENT_GAS_LIMIT,
14
12
  type Tx,
15
- TxExecutionPhase,
16
13
  type TxValidationResult,
17
14
  type TxValidator,
18
15
  } from '@aztec/stdlib/tx';
19
16
 
17
+ import { getFeePayerClaimAmount, getTxFeeLimit } from './fee_payer_balance.js';
18
+
20
19
  export class GasTxValidator implements TxValidator<Tx> {
21
- #log = createLogger('sequencer:tx_validator:tx_gas');
20
+ #log: Logger;
22
21
  #publicDataSource: PublicStateSource;
23
22
  #feeJuiceAddress: AztecAddress;
24
23
  #gasFees: GasFees;
25
24
 
26
- constructor(publicDataSource: PublicStateSource, feeJuiceAddress: AztecAddress, gasFees: GasFees) {
25
+ constructor(
26
+ publicDataSource: PublicStateSource,
27
+ feeJuiceAddress: AztecAddress,
28
+ gasFees: GasFees,
29
+ bindings?: LoggerBindings,
30
+ ) {
31
+ this.#log = createLogger('sequencer:tx_validator:tx_gas', bindings);
27
32
  this.#publicDataSource = publicDataSource;
28
33
  this.#feeJuiceAddress = feeJuiceAddress;
29
34
  this.#gasFees = gasFees;
@@ -93,7 +98,7 @@ export class GasTxValidator implements TxValidator<Tx> {
93
98
  const feePayer = tx.data.feePayer;
94
99
 
95
100
  // Compute the maximum fee that this tx may pay, based on its gasLimits and maxFeePerGas
96
- const feeLimit = tx.data.constants.txContext.gasSettings.getFeeLimit();
101
+ const feeLimit = getTxFeeLimit(tx);
97
102
 
98
103
  // Read current balance of the feePayer
99
104
  const initialBalance = await this.#publicDataSource.storageRead(
@@ -102,30 +107,14 @@ export class GasTxValidator implements TxValidator<Tx> {
102
107
  );
103
108
 
104
109
  // If there is a claim in this tx that increases the fee payer balance in Fee Juice, add it to balance
105
- const setupFns = getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP);
106
- const increasePublicBalanceSelector = await FunctionSelector.fromSignature(
107
- '_increase_public_balance((Field),u128)',
108
- );
109
-
110
- // Arguments of the claim function call:
111
- // - args[0]: Amount recipient.
112
- // - args[1]: Amount being claimed.
113
- const claimFunctionCall = setupFns.find(
114
- fn =>
115
- fn.request.contractAddress.equals(this.#feeJuiceAddress) &&
116
- fn.request.msgSender.equals(this.#feeJuiceAddress) &&
117
- fn.calldata.length > 2 &&
118
- fn.functionSelector.equals(increasePublicBalanceSelector) &&
119
- fn.args[0].equals(feePayer.toField()) &&
120
- !fn.request.isStaticCall,
121
- );
110
+ const claimAmount = await getFeePayerClaimAmount(tx, this.#feeJuiceAddress);
111
+ const balance = initialBalance.toBigInt() + claimAmount;
122
112
 
123
- const balance = claimFunctionCall ? initialBalance.add(claimFunctionCall.args[1]) : initialBalance;
124
- if (balance.lt(feeLimit)) {
113
+ if (balance < feeLimit) {
125
114
  this.#log.verbose(`Rejecting transaction due to not enough fee payer balance`, {
126
115
  feePayer,
127
- balance: balance.toBigInt(),
128
- feeLimit: feeLimit.toBigInt(),
116
+ balance,
117
+ feeLimit,
129
118
  });
130
119
  return { result: 'invalid', reason: [TX_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE] };
131
120
  }
@@ -10,3 +10,5 @@ export * from './test_utils.js';
10
10
  export * from './allowed_public_setup.js';
11
11
  export * from './archive_cache.js';
12
12
  export * from './tx_permitted_validator.js';
13
+ export * from './timestamp_validator.js';
14
+ export * from './size_validator.js';
@@ -1,34 +1,29 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import { createLogger } from '@aztec/foundation/log';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
3
  import {
4
4
  type AnyTx,
5
5
  TX_ERROR_INCORRECT_L1_CHAIN_ID,
6
- TX_ERROR_INCORRECT_PROTOCOL_CONTRACT_TREE_ROOT,
6
+ TX_ERROR_INCORRECT_PROTOCOL_CONTRACTS_HASH,
7
7
  TX_ERROR_INCORRECT_ROLLUP_VERSION,
8
8
  TX_ERROR_INCORRECT_VK_TREE_ROOT,
9
- TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP,
10
9
  type TxValidationResult,
11
10
  type TxValidator,
12
- getTxHash,
13
11
  } from '@aztec/stdlib/tx';
14
- import type { UInt64 } from '@aztec/stdlib/types';
15
12
 
16
13
  export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
17
- #log = createLogger('p2p:tx_validator:tx_metadata');
14
+ #log: Logger;
18
15
 
19
16
  constructor(
20
17
  private values: {
21
18
  l1ChainId: Fr;
22
19
  rollupVersion: Fr;
23
- // Timestamp at which we will validate that the tx is not expired. This is typically the timestamp of the block
24
- // being built.
25
- timestamp: UInt64;
26
- // Block number in which the tx is considered to be included.
27
- blockNumber: number;
28
20
  vkTreeRoot: Fr;
29
- protocolContractTreeRoot: Fr;
21
+ protocolContractsHash: Fr;
30
22
  },
31
- ) {}
23
+ bindings?: LoggerBindings,
24
+ ) {
25
+ this.#log = createLogger('p2p:tx_validator:tx_metadata', bindings);
26
+ }
32
27
 
33
28
  validateTx(tx: T): Promise<TxValidationResult> {
34
29
  const errors = [];
@@ -38,14 +33,11 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
38
33
  if (!this.#hasCorrectRollupVersion(tx)) {
39
34
  errors.push(TX_ERROR_INCORRECT_ROLLUP_VERSION);
40
35
  }
41
- if (!this.#isValidForTimestamp(tx)) {
42
- errors.push(TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP);
43
- }
44
36
  if (!this.#hasCorrectVkTreeRoot(tx)) {
45
37
  errors.push(TX_ERROR_INCORRECT_VK_TREE_ROOT);
46
38
  }
47
- if (!this.#hasCorrectProtocolContractTreeRoot(tx)) {
48
- errors.push(TX_ERROR_INCORRECT_PROTOCOL_CONTRACT_TREE_ROOT);
39
+ if (!this.#hasCorrectprotocolContractsHash(tx)) {
40
+ errors.push(TX_ERROR_INCORRECT_PROTOCOL_CONTRACTS_HASH);
49
41
  }
50
42
  return Promise.resolve(errors.length > 0 ? { result: 'invalid', reason: errors } : { result: 'valid' });
51
43
  }
@@ -54,7 +46,9 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
54
46
  // This gets implicitly tested in the proof validator, but we can get a much cheaper check here by looking early at the vk.
55
47
  if (!tx.data.constants.vkTreeRoot.equals(this.values.vkTreeRoot)) {
56
48
  this.#log.verbose(
57
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect vk tree root ${tx.data.constants.vkTreeRoot.toString()} != ${this.values.vkTreeRoot.toString()}`,
49
+ `Rejecting tx ${
50
+ 'txHash' in tx ? tx.txHash : tx.hash
51
+ } because of incorrect vk tree root ${tx.data.constants.vkTreeRoot.toString()} != ${this.values.vkTreeRoot.toString()}`,
58
52
  );
59
53
  return false;
60
54
  } else {
@@ -62,10 +56,12 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
62
56
  }
63
57
  }
64
58
 
65
- #hasCorrectProtocolContractTreeRoot(tx: T): boolean {
66
- if (!tx.data.constants.protocolContractTreeRoot.equals(this.values.protocolContractTreeRoot)) {
59
+ #hasCorrectprotocolContractsHash(tx: T): boolean {
60
+ if (!tx.data.constants.protocolContractsHash.equals(this.values.protocolContractsHash)) {
67
61
  this.#log.verbose(
68
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect protocol contract tree root ${tx.data.constants.protocolContractTreeRoot.toString()} != ${this.values.protocolContractTreeRoot.toString()}`,
62
+ `Rejecting tx ${
63
+ 'txHash' in tx ? tx.txHash : tx.hash
64
+ } because of incorrect protocol contracts hash ${tx.data.constants.protocolContractsHash.toString()} != ${this.values.protocolContractsHash.toString()}`,
69
65
  );
70
66
  return false;
71
67
  }
@@ -75,30 +71,9 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
75
71
  #hasCorrectL1ChainId(tx: T): boolean {
76
72
  if (!tx.data.constants.txContext.chainId.equals(this.values.l1ChainId)) {
77
73
  this.#log.verbose(
78
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect L1 chain ${tx.data.constants.txContext.chainId.toNumber()} != ${this.values.l1ChainId.toNumber()}`,
79
- );
80
- return false;
81
- } else {
82
- return true;
83
- }
84
- }
85
-
86
- #isValidForTimestamp(tx: T): boolean {
87
- const includeByTimestamp = tx.data.includeByTimestamp;
88
- // If building block 1, we skip the expiration check. For details on why see the `validate_include_by_timestamp`
89
- // function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
90
- const buildingBlock1 = this.values.blockNumber === 1;
91
-
92
- if (!buildingBlock1 && includeByTimestamp < this.values.timestamp) {
93
- if (tx.data.constants.historicalHeader.globalVariables.blockNumber === 0) {
94
- this.#log.warn(
95
- `A tx built against a genesis block failed to be included in block 1 which is the only block in which txs built against a genesis block are allowed to be included.`,
96
- );
97
- }
98
- this.#log.verbose(
99
- `Rejecting tx ${getTxHash(tx)} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
100
- this.values.timestamp
101
- }.`,
74
+ `Rejecting tx ${
75
+ 'txHash' in tx ? tx.txHash : tx.hash
76
+ } because of incorrect L1 chain ${tx.data.constants.txContext.chainId.toNumber()} != ${this.values.l1ChainId.toNumber()}`,
102
77
  );
103
78
  return false;
104
79
  } else {
@@ -109,7 +84,9 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
109
84
  #hasCorrectRollupVersion(tx: T): boolean {
110
85
  if (!tx.data.constants.txContext.version.equals(this.values.rollupVersion)) {
111
86
  this.#log.verbose(
112
- `Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect rollup version ${tx.data.constants.txContext.version.toNumber()} != ${this.values.rollupVersion.toNumber()}`,
87
+ `Rejecting tx ${
88
+ 'txHash' in tx ? tx.txHash : tx.hash
89
+ } because of incorrect rollup version ${tx.data.constants.txContext.version.toNumber()} != ${this.values.rollupVersion.toNumber()}`,
113
90
  );
114
91
  return false;
115
92
  } else {
@@ -1,4 +1,4 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import { PublicContractsDB, getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
3
3
  import type { ContractDataSource } from '@aztec/stdlib/contract';
4
4
  import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
@@ -14,22 +14,26 @@ import {
14
14
  import type { UInt64 } from '@aztec/stdlib/types';
15
15
 
16
16
  export class PhasesTxValidator implements TxValidator<Tx> {
17
- #log = createLogger('sequencer:tx_validator:tx_phases');
17
+ #log: Logger;
18
18
  private contractsDB: PublicContractsDB;
19
19
 
20
20
  constructor(
21
21
  contracts: ContractDataSource,
22
22
  private setupAllowList: AllowedElement[],
23
23
  private timestamp: UInt64,
24
+ bindings?: LoggerBindings,
24
25
  ) {
25
- this.contractsDB = new PublicContractsDB(contracts);
26
+ this.#log = createLogger('sequencer:tx_validator:tx_phases', bindings);
27
+ this.contractsDB = new PublicContractsDB(contracts, bindings);
26
28
  }
27
29
 
28
30
  async validateTx(tx: Tx): Promise<TxValidationResult> {
31
+ this.contractsDB.createCheckpoint();
29
32
  try {
30
33
  // TODO(@spalladino): We add this just to handle public authwit-check calls during setup
31
34
  // which are needed for public FPC flows, but fail if the account contract hasnt been deployed yet,
32
35
  // which is what we're trying to do as part of the current txs.
36
+ // We only need to create/revert checkpoint here because of this addNewContracts call.
33
37
  await this.contractsDB.addNewContracts(tx);
34
38
 
35
39
  if (!tx.data.forPublic) {
@@ -58,7 +62,7 @@ export class PhasesTxValidator implements TxValidator<Tx> {
58
62
  this.#log.error(`Error validating phases for tx`, err);
59
63
  return { result: 'invalid', reason: [TX_ERROR_DURING_VALIDATION] };
60
64
  } finally {
61
- this.contractsDB.clearContractsForTx();
65
+ this.contractsDB.revertCheckpoint();
62
66
  }
63
67
  }
64
68
 
@@ -0,0 +1,22 @@
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
+ import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
3
+ import { Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
+
5
+ export class SizeTxValidator implements TxValidator<Tx> {
6
+ #log: Logger;
7
+
8
+ constructor(bindings?: LoggerBindings) {
9
+ this.#log = createLogger('p2p:tx_validator:tx_size', bindings);
10
+ }
11
+
12
+ validateTx(tx: Tx): Promise<TxValidationResult> {
13
+ const txSize = tx.getSize();
14
+ if (txSize > MAX_TX_SIZE_KB * 1024) {
15
+ this.#log.verbose(
16
+ `Rejecting transaction ${tx.getTxHash().toString()}. Reason: size above size limit. ${txSize}bytes > ${MAX_TX_SIZE_KB}Kb`,
17
+ );
18
+ return Promise.resolve({ result: 'invalid', reason: ['Transaction size above size limit'] });
19
+ }
20
+ return Promise.resolve({ result: 'valid' });
21
+ }
22
+ }