@aztec/p2p 0.0.1-commit.9b94fc1 → 0.0.1-commit.9ee6fcc6

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 (573) hide show
  1. package/README.md +129 -3
  2. package/dest/bootstrap/bootstrap.d.ts +4 -3
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +4 -4
  5. package/dest/client/factory.d.ts +11 -11
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +58 -19
  8. package/dest/client/interface.d.ts +61 -35
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +52 -65
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +613 -336
  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 +304 -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 +68 -22
  20. package/dest/config.d.ts.map +1 -1
  21. package/dest/config.js +117 -52
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -1
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -0
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +111 -76
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +529 -289
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +11 -8
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +17 -13
  40. package/dest/mem_pools/index.d.ts +3 -2
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +9 -1
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +33 -13
  46. package/dest/mem_pools/interface.d.ts +6 -7
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +37 -27
  49. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
  51. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  52. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  53. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  54. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  55. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  57. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  58. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +123 -0
  60. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  61. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  66. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  67. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  69. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  70. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  72. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  73. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  74. package/dest/mem_pools/tx_pool/index.js +0 -1
  75. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  76. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool/priority.js +8 -3
  78. package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
  79. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  80. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  81. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  82. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +33 -25
  83. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  84. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  85. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  86. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  87. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  89. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  90. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  101. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  102. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  104. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  105. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  107. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  108. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  109. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  110. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  111. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  112. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  113. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  114. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  115. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  116. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  117. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  118. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  119. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  120. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  121. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  122. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  123. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  124. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  125. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  126. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  127. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  128. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +215 -0
  129. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  130. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  131. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +134 -0
  132. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  133. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +216 -0
  134. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  135. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  136. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  137. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  138. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  139. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  140. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  141. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  142. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  143. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  144. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  145. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +923 -0
  146. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  147. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  148. package/dest/msg_validators/attestation_validator/attestation_validator.js +54 -20
  149. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +7 -7
  150. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  151. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +22 -13
  152. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  153. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  154. package/dest/msg_validators/clock_tolerance.js +38 -0
  155. package/dest/msg_validators/index.d.ts +2 -2
  156. package/dest/msg_validators/index.d.ts.map +1 -1
  157. package/dest/msg_validators/index.js +1 -1
  158. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +11 -0
  159. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  160. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  161. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +11 -0
  162. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  163. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +20 -0
  164. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  165. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  166. package/dest/msg_validators/proposal_validator/index.js +3 -0
  167. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +18 -0
  168. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  169. package/dest/msg_validators/proposal_validator/proposal_validator.js +116 -0
  170. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  171. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  172. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  173. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  174. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  175. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  176. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  177. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  178. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  179. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  180. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  181. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  182. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  183. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  184. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -3
  185. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  186. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  187. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  188. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  189. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  190. package/dest/msg_validators/tx_validator/data_validator.js +39 -3
  191. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  192. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  193. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  194. package/dest/msg_validators/tx_validator/factory.d.ts +139 -6
  195. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  196. package/dest/msg_validators/tx_validator/factory.js +255 -58
  197. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  198. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  199. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  200. package/dest/msg_validators/tx_validator/gas_validator.d.ts +68 -3
  201. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  202. package/dest/msg_validators/tx_validator/gas_validator.js +114 -52
  203. package/dest/msg_validators/tx_validator/index.d.ts +4 -1
  204. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  205. package/dest/msg_validators/tx_validator/index.js +3 -0
  206. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
  207. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  208. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
  209. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  210. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  211. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  212. package/dest/msg_validators/tx_validator/phases_validator.d.ts +24 -3
  213. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  214. package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
  215. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  216. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  217. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  218. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  219. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  220. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +23 -5
  221. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  222. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  223. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  224. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  225. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  226. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  227. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  228. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  229. package/dest/services/data_store.d.ts +1 -1
  230. package/dest/services/data_store.d.ts.map +1 -1
  231. package/dest/services/data_store.js +10 -6
  232. package/dest/services/discv5/discV5_service.js +1 -1
  233. package/dest/services/dummy_service.d.ts +28 -4
  234. package/dest/services/dummy_service.d.ts.map +1 -1
  235. package/dest/services/dummy_service.js +49 -1
  236. package/dest/services/encoding.d.ts +7 -3
  237. package/dest/services/encoding.d.ts.map +1 -1
  238. package/dest/services/encoding.js +23 -15
  239. package/dest/services/gossipsub/index.d.ts +3 -0
  240. package/dest/services/gossipsub/index.d.ts.map +1 -0
  241. package/dest/services/gossipsub/index.js +2 -0
  242. package/dest/services/gossipsub/scoring.d.ts +21 -3
  243. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  244. package/dest/services/gossipsub/scoring.js +24 -7
  245. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  246. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  247. package/dest/services/gossipsub/topic_score_params.js +346 -0
  248. package/dest/services/index.d.ts +2 -1
  249. package/dest/services/index.d.ts.map +1 -1
  250. package/dest/services/index.js +1 -0
  251. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  252. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  253. package/dest/services/libp2p/instrumentation.js +30 -72
  254. package/dest/services/libp2p/libp2p_service.d.ts +111 -43
  255. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  256. package/dest/services/libp2p/libp2p_service.js +1047 -388
  257. package/dest/services/peer-manager/metrics.d.ts +9 -2
  258. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  259. package/dest/services/peer-manager/metrics.js +39 -21
  260. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  261. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  262. package/dest/services/peer-manager/peer_manager.js +10 -15
  263. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  264. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  265. package/dest/services/peer-manager/peer_scoring.js +32 -6
  266. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +51 -0
  267. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  268. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +540 -0
  269. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  270. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  271. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  272. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +47 -0
  273. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  274. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  275. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
  276. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  277. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
  278. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
  279. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  280. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
  281. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  282. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  283. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  284. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  285. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  286. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  287. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  288. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  289. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  290. package/dest/services/reqresp/constants.d.ts +12 -0
  291. package/dest/services/reqresp/constants.d.ts.map +1 -0
  292. package/dest/services/reqresp/constants.js +7 -0
  293. package/dest/services/reqresp/interface.d.ts +13 -2
  294. package/dest/services/reqresp/interface.d.ts.map +1 -1
  295. package/dest/services/reqresp/interface.js +16 -2
  296. package/dest/services/reqresp/metrics.d.ts +6 -5
  297. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  298. package/dest/services/reqresp/metrics.js +17 -21
  299. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  300. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  301. package/dest/services/reqresp/protocols/auth.js +2 -2
  302. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  303. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  304. package/dest/services/reqresp/protocols/block.js +3 -2
  305. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  306. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  307. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  308. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  309. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  310. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  311. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +30 -7
  312. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  313. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +60 -14
  314. package/dest/services/reqresp/protocols/status.d.ts +5 -4
  315. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  316. package/dest/services/reqresp/protocols/status.js +7 -3
  317. package/dest/services/reqresp/protocols/tx.d.ts +8 -3
  318. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  319. package/dest/services/reqresp/protocols/tx.js +20 -0
  320. package/dest/services/reqresp/reqresp.d.ts +6 -1
  321. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  322. package/dest/services/reqresp/reqresp.js +488 -58
  323. package/dest/services/service.d.ts +56 -4
  324. package/dest/services/service.d.ts.map +1 -1
  325. package/dest/services/tx_collection/config.d.ts +22 -1
  326. package/dest/services/tx_collection/config.d.ts.map +1 -1
  327. package/dest/services/tx_collection/config.js +56 -2
  328. package/dest/services/tx_collection/fast_tx_collection.d.ts +10 -9
  329. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  330. package/dest/services/tx_collection/fast_tx_collection.js +95 -84
  331. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  332. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  333. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  334. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  335. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  336. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  337. package/dest/services/tx_collection/index.d.ts +3 -1
  338. package/dest/services/tx_collection/index.d.ts.map +1 -1
  339. package/dest/services/tx_collection/index.js +2 -0
  340. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  341. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  342. package/dest/services/tx_collection/instrumentation.js +11 -13
  343. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  344. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  345. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  346. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  347. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  348. package/dest/services/tx_collection/request_tracker.js +84 -0
  349. package/dest/services/tx_collection/slow_tx_collection.d.ts +9 -4
  350. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  351. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  352. package/dest/services/tx_collection/tx_collection.d.ts +31 -20
  353. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  354. package/dest/services/tx_collection/tx_collection.js +79 -7
  355. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  356. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  357. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  358. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  359. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  360. package/dest/services/tx_collection/tx_source.js +19 -2
  361. package/dest/services/tx_file_store/config.d.ts +16 -0
  362. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  363. package/dest/services/tx_file_store/config.js +22 -0
  364. package/dest/services/tx_file_store/index.d.ts +4 -0
  365. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  366. package/dest/services/tx_file_store/index.js +3 -0
  367. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  368. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  369. package/dest/services/tx_file_store/instrumentation.js +29 -0
  370. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  371. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  372. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  373. package/dest/services/tx_provider.d.ts +7 -5
  374. package/dest/services/tx_provider.d.ts.map +1 -1
  375. package/dest/services/tx_provider.js +20 -10
  376. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  377. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  378. package/dest/services/tx_provider_instrumentation.js +14 -14
  379. package/dest/test-helpers/index.d.ts +3 -1
  380. package/dest/test-helpers/index.d.ts.map +1 -1
  381. package/dest/test-helpers/index.js +2 -0
  382. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  383. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  384. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  385. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  386. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  387. package/dest/test-helpers/mock-pubsub.js +105 -4
  388. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  389. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  390. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  391. package/dest/test-helpers/reqresp-nodes.js +4 -3
  392. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  393. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  394. package/dest/test-helpers/test_tx_provider.js +41 -0
  395. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  396. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  397. package/dest/test-helpers/testbench-utils.js +385 -0
  398. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  399. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  400. package/dest/testbench/p2p_client_testbench_worker.js +226 -130
  401. package/dest/testbench/worker_client_manager.d.ts +53 -6
  402. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  403. package/dest/testbench/worker_client_manager.js +231 -40
  404. package/dest/util.d.ts +3 -3
  405. package/dest/util.d.ts.map +1 -1
  406. package/package.json +18 -18
  407. package/src/bootstrap/bootstrap.ts +7 -4
  408. package/src/client/factory.ts +110 -44
  409. package/src/client/interface.ts +73 -36
  410. package/src/client/p2p_client.ts +277 -397
  411. package/src/client/test/tx_proposal_collector/README.md +227 -0
  412. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +343 -0
  413. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  414. package/src/config.ts +182 -62
  415. package/src/errors/tx-pool.error.ts +12 -0
  416. package/src/index.ts +1 -0
  417. package/src/mem_pools/attestation_pool/attestation_pool.ts +511 -78
  418. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +614 -322
  419. package/src/mem_pools/attestation_pool/index.ts +9 -2
  420. package/src/mem_pools/attestation_pool/mocks.ts +22 -15
  421. package/src/mem_pools/index.ts +4 -1
  422. package/src/mem_pools/instrumentation.ts +43 -14
  423. package/src/mem_pools/interface.ts +5 -7
  424. package/src/mem_pools/tx_pool/README.md +270 -0
  425. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +367 -371
  426. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  427. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  428. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +163 -0
  429. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  430. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  431. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  432. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  433. package/src/mem_pools/tx_pool/index.ts +0 -1
  434. package/src/mem_pools/tx_pool/priority.ts +10 -3
  435. package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
  436. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +26 -18
  437. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  438. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  439. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  440. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  441. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  442. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  443. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  444. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  445. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  446. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  447. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  448. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  449. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  450. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  451. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  452. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  453. package/src/mem_pools/tx_pool_v2/interfaces.ts +247 -0
  454. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +337 -0
  455. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  456. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  457. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  458. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1105 -0
  459. package/src/msg_validators/attestation_validator/README.md +49 -0
  460. package/src/msg_validators/attestation_validator/attestation_validator.ts +39 -23
  461. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +21 -18
  462. package/src/msg_validators/clock_tolerance.ts +52 -0
  463. package/src/msg_validators/index.ts +1 -1
  464. package/src/msg_validators/proposal_validator/README.md +123 -0
  465. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +20 -0
  466. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +26 -0
  467. package/src/msg_validators/proposal_validator/index.ts +3 -0
  468. package/src/msg_validators/proposal_validator/proposal_validator.ts +116 -0
  469. package/src/msg_validators/tx_validator/README.md +119 -0
  470. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  471. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  472. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  473. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  474. package/src/msg_validators/tx_validator/block_header_validator.ts +21 -8
  475. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  476. package/src/msg_validators/tx_validator/data_validator.ts +60 -7
  477. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  478. package/src/msg_validators/tx_validator/factory.ts +416 -58
  479. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  480. package/src/msg_validators/tx_validator/gas_validator.ts +140 -55
  481. package/src/msg_validators/tx_validator/index.ts +3 -0
  482. package/src/msg_validators/tx_validator/metadata_validator.ts +31 -12
  483. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  484. package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
  485. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  486. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  487. package/src/msg_validators/tx_validator/timestamp_validator.ts +30 -19
  488. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  489. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  490. package/src/services/data_store.ts +10 -7
  491. package/src/services/discv5/discV5_service.ts +1 -1
  492. package/src/services/dummy_service.ts +65 -2
  493. package/src/services/encoding.ts +22 -13
  494. package/src/services/gossipsub/README.md +641 -0
  495. package/src/services/gossipsub/index.ts +2 -0
  496. package/src/services/gossipsub/scoring.ts +29 -5
  497. package/src/services/gossipsub/topic_score_params.ts +487 -0
  498. package/src/services/index.ts +1 -0
  499. package/src/services/libp2p/instrumentation.ts +32 -73
  500. package/src/services/libp2p/libp2p_service.ts +746 -406
  501. package/src/services/peer-manager/metrics.ts +46 -21
  502. package/src/services/peer-manager/peer_manager.ts +12 -7
  503. package/src/services/peer-manager/peer_scoring.ts +28 -4
  504. package/src/services/reqresp/README.md +229 -0
  505. package/src/services/reqresp/batch-tx-requester/README.md +344 -0
  506. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +670 -0
  507. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  508. package/src/services/reqresp/batch-tx-requester/interface.ts +54 -0
  509. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
  510. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
  511. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  512. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  513. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  514. package/src/services/reqresp/constants.ts +14 -0
  515. package/src/services/reqresp/interface.ts +30 -2
  516. package/src/services/reqresp/metrics.ts +36 -27
  517. package/src/services/reqresp/protocols/auth.ts +2 -2
  518. package/src/services/reqresp/protocols/block.ts +3 -2
  519. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  520. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  521. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +75 -10
  522. package/src/services/reqresp/protocols/status.ts +16 -12
  523. package/src/services/reqresp/protocols/tx.ts +23 -2
  524. package/src/services/reqresp/reqresp.ts +99 -32
  525. package/src/services/service.ts +73 -5
  526. package/src/services/tx_collection/config.ts +84 -2
  527. package/src/services/tx_collection/fast_tx_collection.ts +114 -93
  528. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  529. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  530. package/src/services/tx_collection/index.ts +6 -0
  531. package/src/services/tx_collection/instrumentation.ts +11 -13
  532. package/src/services/tx_collection/proposal_tx_collector.ts +108 -0
  533. package/src/services/tx_collection/request_tracker.ts +127 -0
  534. package/src/services/tx_collection/slow_tx_collection.ts +69 -36
  535. package/src/services/tx_collection/tx_collection.ts +123 -27
  536. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  537. package/src/services/tx_collection/tx_source.ts +22 -3
  538. package/src/services/tx_file_store/config.ts +37 -0
  539. package/src/services/tx_file_store/index.ts +3 -0
  540. package/src/services/tx_file_store/instrumentation.ts +36 -0
  541. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  542. package/src/services/tx_provider.ts +29 -12
  543. package/src/services/tx_provider_instrumentation.ts +24 -14
  544. package/src/test-helpers/index.ts +2 -0
  545. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  546. package/src/test-helpers/mock-pubsub.ts +147 -10
  547. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  548. package/src/test-helpers/reqresp-nodes.ts +6 -8
  549. package/src/test-helpers/test_tx_provider.ts +64 -0
  550. package/src/test-helpers/testbench-utils.ts +456 -0
  551. package/src/testbench/p2p_client_testbench_worker.ts +350 -129
  552. package/src/testbench/worker_client_manager.ts +312 -42
  553. package/src/util.ts +8 -2
  554. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -37
  555. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  556. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -213
  557. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -30
  558. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  559. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -219
  560. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
  561. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  562. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
  563. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  564. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  565. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -82
  566. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  567. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  568. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  569. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -298
  570. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -287
  571. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
  572. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -97
  573. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,15 +1,25 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- import {
3
- type AnyTx,
4
- TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP,
5
- type TxValidationResult,
6
- type TxValidator,
7
- getTxHash,
8
- } from '@aztec/stdlib/tx';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
+ import { TX_ERROR_INVALID_EXPIRATION_TIMESTAMP, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
9
4
  import type { UInt64 } from '@aztec/stdlib/types';
10
5
 
11
- export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
12
- #log = createLogger('p2p:tx_validator:timestamp');
6
+ /** Structural interface for timestamp validation. */
7
+ export interface HasTimestampData {
8
+ txHash: { toString(): string };
9
+ data: {
10
+ expirationTimestamp: bigint;
11
+ constants: {
12
+ anchorBlockHeader: {
13
+ globalVariables: {
14
+ blockNumber: BlockNumber;
15
+ };
16
+ };
17
+ };
18
+ };
19
+ }
20
+
21
+ export class TimestampTxValidator<T extends HasTimestampData> implements TxValidator<T> {
22
+ #log: Logger;
13
23
 
14
24
  constructor(
15
25
  private values: {
@@ -17,28 +27,29 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
17
27
  // being built.
18
28
  timestamp: UInt64;
19
29
  // Block number in which the tx is considered to be included.
20
- blockNumber: number;
30
+ blockNumber: BlockNumber;
21
31
  },
22
- ) {}
32
+ bindings?: LoggerBindings,
33
+ ) {
34
+ this.#log = createLogger('p2p:tx_validator:timestamp', bindings);
35
+ }
23
36
 
24
37
  validateTx(tx: T): Promise<TxValidationResult> {
25
- const includeByTimestamp = tx.data.includeByTimestamp;
26
- // If building block 1, we skip the expiration check. For details on why see the `validate_include_by_timestamp`
38
+ const expirationTimestamp = tx.data.expirationTimestamp;
39
+ // If building block 1, we skip the expiration check. For details on why see the `validate_expiration_timestamp`
27
40
  // function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
28
41
  const buildingBlock1 = this.values.blockNumber === 1;
29
42
 
30
- if (!buildingBlock1 && includeByTimestamp < this.values.timestamp) {
43
+ if (!buildingBlock1 && expirationTimestamp < this.values.timestamp) {
31
44
  if (tx.data.constants.anchorBlockHeader.globalVariables.blockNumber === 0) {
32
45
  this.#log.warn(
33
46
  `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.`,
34
47
  );
35
48
  }
36
49
  this.#log.verbose(
37
- `Rejecting tx ${getTxHash(tx)} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
38
- this.values.timestamp
39
- }.`,
50
+ `Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${expirationTimestamp}, timestamp: ${this.values.timestamp}.`,
40
51
  );
41
- return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP] });
52
+ return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_EXPIRATION_TIMESTAMP] });
42
53
  } else {
43
54
  return Promise.resolve({ result: 'valid' });
44
55
  }
@@ -1,10 +1,15 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { Tx, TxValidationResult, TxValidator } from '@aztec/stdlib/tx';
3
3
 
4
4
  export class TxPermittedValidator implements TxValidator<Tx> {
5
- #log = createLogger('p2p:tx_validator:tx_permitted');
5
+ #log: Logger;
6
6
 
7
- constructor(private permitted: boolean) {}
7
+ constructor(
8
+ private permitted: boolean,
9
+ bindings?: LoggerBindings,
10
+ ) {
11
+ this.#log = createLogger('p2p:tx_validator:tx_permitted', bindings);
12
+ }
8
13
 
9
14
  validateTx(tx: Tx): Promise<TxValidationResult> {
10
15
  if (!this.permitted) {
@@ -1,11 +1,16 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
3
3
  import { TX_ERROR_INVALID_PROOF, Tx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
4
 
5
5
  export class TxProofValidator implements TxValidator<Tx> {
6
- #log = createLogger('p2p:tx_validator:private_proof');
6
+ #log: Logger;
7
7
 
8
- constructor(private verifier: ClientProtocolCircuitVerifier) {}
8
+ constructor(
9
+ private verifier: ClientProtocolCircuitVerifier,
10
+ bindings?: LoggerBindings,
11
+ ) {
12
+ this.#log = createLogger('p2p:tx_validator:proof', bindings);
13
+ }
9
14
 
10
15
  async validateTx(tx: Tx): Promise<TxValidationResult> {
11
16
  const result = await this.verifier.verifyProof(tx);
@@ -24,6 +24,7 @@ class KeyNotFoundError extends Error {
24
24
  }
25
25
 
26
26
  export class AztecDatastore implements Datastore {
27
+ #db: AztecAsyncKVStore;
27
28
  #memoryDatastore: Map<string, MemoryItem>;
28
29
  #dbDatastore: AztecAsyncMap<string, Uint8Array>;
29
30
 
@@ -32,9 +33,9 @@ export class AztecDatastore implements Datastore {
32
33
  private maxMemoryItems: number;
33
34
 
34
35
  constructor(db: AztecAsyncKVStore, { maxMemoryItems } = { maxMemoryItems: 50 }) {
36
+ this.#db = db;
35
37
  this.#memoryDatastore = new Map();
36
38
  this.#dbDatastore = db.openMap('p2p_datastore');
37
-
38
39
  this.maxMemoryItems = maxMemoryItems;
39
40
  }
40
41
 
@@ -106,13 +107,15 @@ export class AztecDatastore implements Datastore {
106
107
  });
107
108
  },
108
109
  commit: async () => {
109
- for (const op of this.#batchOps) {
110
- if (op.type === 'put' && op.value) {
111
- await this.put(op.key, op.value);
112
- } else if (op.type === 'del') {
113
- await this.delete(op.key);
110
+ await this.#db.transactionAsync(async () => {
111
+ for (const op of this.#batchOps) {
112
+ if (op.type === 'put' && op.value) {
113
+ await this.put(op.key, op.value);
114
+ } else if (op.type === 'del') {
115
+ await this.delete(op.key);
116
+ }
114
117
  }
115
- }
118
+ });
116
119
  this.#batchOps = []; // Clear operations after commit
117
120
  },
118
121
  };
@@ -87,7 +87,7 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
87
87
  this.packageVersion,
88
88
  ));
89
89
 
90
- const metricsRegistry = new OtelMetricsAdapter(telemetry);
90
+ const metricsRegistry = new OtelMetricsAdapter(telemetry, this.logger.getBindings());
91
91
  this.discv5 = Discv5.create({
92
92
  enr: this.enr,
93
93
  peerId,
@@ -1,6 +1,6 @@
1
1
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
3
- import type { Gossipable, PeerErrorSeverity } from '@aztec/stdlib/p2p';
3
+ import type { Gossipable, PeerErrorSeverity, TopicType } from '@aztec/stdlib/p2p';
4
4
  import { Tx, TxHash } from '@aztec/stdlib/tx';
5
5
 
6
6
  import type { PeerId } from '@libp2p/interface';
@@ -8,7 +8,9 @@ import type { ENR } from '@nethermindeth/enr';
8
8
  import EventEmitter from 'events';
9
9
 
10
10
  import type { PeerManagerInterface } from './peer-manager/interface.js';
11
+ import type { BatchTxRequesterLibP2PService } from './reqresp/batch-tx-requester/interface.js';
11
12
  import type { P2PReqRespConfig } from './reqresp/config.js';
13
+ import type { ConnectionSampler } from './reqresp/connection-sampler/connection_sampler.js';
12
14
  import { type AuthRequest, StatusMessage } from './reqresp/index.js';
13
15
  import type {
14
16
  ReqRespInterface,
@@ -23,6 +25,9 @@ import type { GoodByeReason } from './reqresp/protocols/goodbye.js';
23
25
  import { ReqRespStatus } from './reqresp/status.js';
24
26
  import {
25
27
  type P2PBlockReceivedCallback,
28
+ type P2PCheckpointReceivedCallback,
29
+ type P2PDuplicateAttestationCallback,
30
+ type P2PDuplicateProposalCallback,
26
31
  type P2PService,
27
32
  type PeerDiscoveryService,
28
33
  PeerDiscoveryState,
@@ -39,6 +44,10 @@ export class DummyP2PService implements P2PService {
39
44
  return [];
40
45
  }
41
46
 
47
+ getGossipMeshPeerCount(_topicType: TopicType): number {
48
+ return 0;
49
+ }
50
+
42
51
  /**
43
52
  * Starts the dummy implementation.
44
53
  * @returns A resolved promise.
@@ -74,6 +83,21 @@ export class DummyP2PService implements P2PService {
74
83
  */
75
84
  public registerBlockReceivedCallback(_callback: P2PBlockReceivedCallback) {}
76
85
 
86
+ /**
87
+ * Register a callback into the validator client for when a checkpoint proposal is received
88
+ */
89
+ public registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
90
+
91
+ /**
92
+ * Register a callback for when a duplicate proposal is detected
93
+ */
94
+ public registerDuplicateProposalCallback(_callback: P2PDuplicateProposalCallback): void {}
95
+
96
+ /**
97
+ * Register a callback for when a duplicate attestation is detected
98
+ */
99
+ public registerDuplicateAttestationCallback(_callback: P2PDuplicateAttestationCallback): void {}
100
+
77
101
  /**
78
102
  * Sends a request to a peer.
79
103
  * @param _protocol - The protocol to send the request on.
@@ -100,6 +124,15 @@ export class DummyP2PService implements P2PService {
100
124
  return Promise.resolve([]);
101
125
  }
102
126
 
127
+ public sendRequestToPeer(
128
+ _peerId: PeerId,
129
+ _subProtocol: ReqRespSubProtocol,
130
+ _payload: Buffer,
131
+ _dialTimeout?: number,
132
+ ): Promise<ReqRespResponse> {
133
+ return Promise.resolve({ status: ReqRespStatus.SUCCESS, data: Buffer.from([]) });
134
+ }
135
+
103
136
  /**
104
137
  * Returns the ENR of the peer.
105
138
  * @returns The ENR of the peer, otherwise undefined.
@@ -108,7 +141,7 @@ export class DummyP2PService implements P2PService {
108
141
  return undefined;
109
142
  }
110
143
 
111
- validate(_txs: Tx[]): Promise<void> {
144
+ validateTxsReceivedInBlockProposal(_txs: Tx[]): Promise<void> {
112
145
  return Promise.resolve();
113
146
  }
114
147
 
@@ -126,6 +159,27 @@ export class DummyP2PService implements P2PService {
126
159
 
127
160
  //this is no-op
128
161
  registerThisValidatorAddresses(_address: EthAddress[]): void {}
162
+
163
+ /**
164
+ * Get dummy BatchTxRequesterLibP2PService for testing
165
+ */
166
+ getBatchTxRequesterService(): BatchTxRequesterLibP2PService {
167
+ return {
168
+ reqResp: this, // The dummy service implements ReqRespInterface
169
+ connectionSampler: new DummyReqResp().getConnectionSampler(),
170
+ txValidatorConfig: {
171
+ l1ChainId: 1,
172
+ rollupVersion: 1,
173
+ proofVerifier: {
174
+ verifyProof: () => Promise.resolve({ valid: true, durationMs: 0, totalDurationMs: 0 }),
175
+ stop: () => Promise.resolve(),
176
+ },
177
+ },
178
+ peerScoring: {
179
+ penalizePeer: (_peerId, _penalty) => {},
180
+ },
181
+ };
182
+ }
129
183
  }
130
184
 
131
185
  /**
@@ -262,6 +316,15 @@ export class DummyReqResp implements ReqRespInterface {
262
316
  return Promise.resolve({ status: ReqRespStatus.SUCCESS, data: Buffer.from([]) });
263
317
  }
264
318
 
319
+ /**
320
+ * Get dummy connection sampler for testing
321
+ */
322
+ getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'> {
323
+ return {
324
+ getPeerListSortedByConnectionCountAsc: () => [],
325
+ };
326
+ }
327
+
265
328
  addSubProtocol(
266
329
  _subProtocol: ReqRespSubProtocol,
267
330
  _handler: ReqRespSubProtocolHandler,
@@ -1,14 +1,22 @@
1
1
  // Taken from lodestar: https://github.com/ChainSafe/lodestar
2
- import { sha256 } from '@aztec/foundation/crypto';
3
2
  import { createLogger } from '@aztec/foundation/log';
4
- import { TopicType, getTopicFromString } from '@aztec/stdlib/p2p';
3
+ import { MAX_TX_SIZE_KB, TopicType, getTopicFromString } from '@aztec/stdlib/p2p';
5
4
 
6
5
  import type { RPC } from '@chainsafe/libp2p-gossipsub/message';
7
6
  import type { DataTransform } from '@chainsafe/libp2p-gossipsub/types';
8
7
  import type { Message } from '@libp2p/interface';
8
+ import { webcrypto } from 'node:crypto';
9
9
  import { compressSync, uncompressSync } from 'snappy';
10
10
  import xxhashFactory from 'xxhash-wasm';
11
11
 
12
+ /** Thrown when a Snappy-compressed response exceeds the allowed decompressed size. */
13
+ export class OversizedSnappyResponseError extends Error {
14
+ constructor(decompressedSize: number, maxSizeKb: number) {
15
+ super(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
16
+ this.name = 'OversizedSnappyResponseError';
17
+ }
18
+ }
19
+
12
20
  // Load WASM
13
21
  const xxhash = await xxhashFactory();
14
22
 
@@ -44,21 +52,22 @@ export function msgIdToStrFn(msgId: Uint8Array): string {
44
52
  * @param message - The libp2p message
45
53
  * @returns The message identifier
46
54
  */
47
- export function getMsgIdFn(message: Message) {
48
- const { topic } = message;
49
-
50
- const vec = [Buffer.from(topic), message.data];
51
- return sha256(Buffer.concat(vec)).subarray(0, 20);
55
+ export async function getMsgIdFn({ topic, data }: Message): Promise<Uint8Array> {
56
+ const buffer = Buffer.concat([Buffer.from(topic), data]);
57
+ const hash = await webcrypto.subtle.digest('SHA-256', buffer);
58
+ return Buffer.from(hash.slice(0, 20));
52
59
  }
53
60
 
54
61
  const DefaultMaxSizesKb: Record<TopicType, number> = {
55
- // Tx effects should not exceed 128kb, so 512kb for the full tx obj should be sufficient
56
- [TopicType.tx]: 512,
62
+ [TopicType.tx]: MAX_TX_SIZE_KB,
57
63
  // An attestation has roughly 30 fields, which is 1kb, so 5x is plenty
58
- [TopicType.block_attestation]: 5,
64
+ [TopicType.checkpoint_attestation]: 5,
59
65
  // Proposals may carry some tx objects, so we allow a larger size capped at 10mb
60
66
  // Note this may not be enough for carrying all tx objects in a block
61
67
  [TopicType.block_proposal]: 1024 * 10,
68
+ // Checkpoint proposals carry almost the same data as a block proposal (see the lastBlockProposal)
69
+ // Only diff is an additional header, which is pretty small compared to the 10mb limit
70
+ [TopicType.checkpoint_proposal]: 1024 * 10,
62
71
  };
63
72
 
64
73
  /**
@@ -77,15 +86,15 @@ export class SnappyTransform implements DataTransform {
77
86
  return this.inboundTransformData(Buffer.from(data), topic);
78
87
  }
79
88
 
80
- public inboundTransformData(data: Buffer, topic?: TopicType): Buffer {
89
+ public inboundTransformData(data: Buffer, topic?: TopicType, maxSizeKbOverride?: number): Buffer {
81
90
  if (data.length === 0) {
82
91
  return data;
83
92
  }
84
- const maxSizeKb = this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
93
+ const maxSizeKb = maxSizeKbOverride ?? this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
85
94
  const { decompressedSize } = readSnappyPreamble(data);
86
95
  if (decompressedSize > maxSizeKb * 1024) {
87
96
  this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
88
- throw new Error(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
97
+ throw new OversizedSnappyResponseError(decompressedSize, maxSizeKb);
89
98
  }
90
99
 
91
100
  return Buffer.from(uncompressSync(data, { asBuffer: true }));