@aztec/p2p 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2c0ee1788

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 (529) 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 +12 -11
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +61 -19
  8. package/dest/client/interface.d.ts +54 -34
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +43 -52
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +190 -226
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +25 -12
  14. package/dest/config.d.ts +138 -87
  15. package/dest/config.d.ts.map +1 -1
  16. package/dest/config.js +116 -41
  17. package/dest/errors/p2p-service.error.d.ts +9 -0
  18. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  19. package/dest/errors/p2p-service.error.js +10 -0
  20. package/dest/errors/tx-pool.error.d.ts +8 -0
  21. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  22. package/dest/errors/tx-pool.error.js +9 -0
  23. package/dest/index.d.ts +2 -2
  24. package/dest/index.d.ts.map +1 -1
  25. package/dest/index.js +1 -1
  26. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +106 -88
  27. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/attestation_pool.js +448 -3
  29. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  30. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  32. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  33. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/index.js +1 -2
  35. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  36. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  37. package/dest/mem_pools/attestation_pool/mocks.js +7 -5
  38. package/dest/mem_pools/index.d.ts +3 -3
  39. package/dest/mem_pools/index.d.ts.map +1 -1
  40. package/dest/mem_pools/index.js +1 -1
  41. package/dest/mem_pools/instrumentation.d.ts +4 -2
  42. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  43. package/dest/mem_pools/instrumentation.js +35 -17
  44. package/dest/mem_pools/interface.d.ts +5 -5
  45. package/dest/mem_pools/interface.d.ts.map +1 -1
  46. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  47. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  49. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  50. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  52. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  53. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/{tx_pool → tx_pool_v2}/eviction/invalid_txs_after_mining_rule.js +16 -35
  76. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  88. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  89. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  91. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  92. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  94. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
  95. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  103. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  104. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +924 -0
  112. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +9 -3
  113. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  114. package/dest/msg_validators/attestation_validator/attestation_validator.js +37 -12
  115. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +8 -4
  116. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  117. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +9 -4
  118. package/dest/msg_validators/clock_tolerance.d.ts +12 -1
  119. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -1
  120. package/dest/msg_validators/clock_tolerance.js +61 -3
  121. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -4
  122. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  124. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -4
  125. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  127. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +19 -8
  128. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/proposal_validator/proposal_validator.js +88 -44
  130. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  131. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  133. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  134. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  135. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  136. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  137. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  138. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  139. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  140. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  141. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  142. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/block_header_validator.js +5 -4
  144. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  145. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  146. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  147. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  148. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  149. package/dest/msg_validators/tx_validator/data_validator.js +39 -3
  150. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  151. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  152. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  153. package/dest/msg_validators/tx_validator/factory.d.ts +135 -7
  154. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  155. package/dest/msg_validators/tx_validator/factory.js +247 -60
  156. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  157. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  158. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  159. package/dest/msg_validators/tx_validator/gas_validator.d.ts +100 -3
  160. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  161. package/dest/msg_validators/tx_validator/gas_validator.js +138 -53
  162. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  163. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/index.js +2 -0
  165. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  166. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  167. package/dest/msg_validators/tx_validator/metadata_validator.js +6 -6
  168. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  169. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  170. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  171. package/dest/msg_validators/tx_validator/phases_validator.d.ts +24 -3
  172. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  173. package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
  174. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  175. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  176. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  177. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  178. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  179. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  180. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  181. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  182. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  183. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  184. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  185. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  186. package/dest/services/data_store.d.ts +1 -1
  187. package/dest/services/data_store.d.ts.map +1 -1
  188. package/dest/services/data_store.js +14 -10
  189. package/dest/services/discv5/discV5_service.js +1 -1
  190. package/dest/services/dummy_service.d.ts +17 -6
  191. package/dest/services/dummy_service.d.ts.map +1 -1
  192. package/dest/services/dummy_service.js +16 -5
  193. package/dest/services/encoding.d.ts +7 -3
  194. package/dest/services/encoding.d.ts.map +1 -1
  195. package/dest/services/encoding.js +18 -11
  196. package/dest/services/gossipsub/index.d.ts +3 -0
  197. package/dest/services/gossipsub/index.d.ts.map +1 -0
  198. package/dest/services/gossipsub/index.js +2 -0
  199. package/dest/services/gossipsub/scoring.d.ts +21 -3
  200. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  201. package/dest/services/gossipsub/scoring.js +24 -7
  202. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  203. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  204. package/dest/services/gossipsub/topic_score_params.js +363 -0
  205. package/dest/services/index.d.ts +2 -1
  206. package/dest/services/index.d.ts.map +1 -1
  207. package/dest/services/index.js +1 -0
  208. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  209. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  210. package/dest/services/libp2p/instrumentation.js +28 -3
  211. package/dest/services/libp2p/libp2p_service.d.ts +96 -52
  212. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  213. package/dest/services/libp2p/libp2p_service.js +590 -452
  214. package/dest/services/peer-manager/metrics.d.ts +4 -2
  215. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  216. package/dest/services/peer-manager/metrics.js +26 -5
  217. package/dest/services/peer-manager/peer_manager.d.ts +6 -2
  218. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  219. package/dest/services/peer-manager/peer_manager.js +39 -11
  220. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  221. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  222. package/dest/services/peer-manager/peer_scoring.js +65 -14
  223. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +14 -10
  224. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  225. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +89 -112
  226. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +4 -7
  227. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  228. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +11 -13
  229. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  230. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +31 -46
  231. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +19 -11
  232. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  233. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +52 -15
  234. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  235. package/dest/services/reqresp/config.d.ts +3 -3
  236. package/dest/services/reqresp/config.d.ts.map +1 -1
  237. package/dest/services/reqresp/interface.d.ts +23 -9
  238. package/dest/services/reqresp/interface.d.ts.map +1 -1
  239. package/dest/services/reqresp/interface.js +23 -10
  240. package/dest/services/reqresp/metrics.d.ts +6 -5
  241. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  242. package/dest/services/reqresp/metrics.js +16 -5
  243. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  244. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  245. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +17 -12
  246. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +25 -14
  247. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  248. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +40 -24
  249. package/dest/services/reqresp/protocols/index.d.ts +1 -2
  250. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  251. package/dest/services/reqresp/protocols/index.js +0 -1
  252. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  253. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  254. package/dest/services/reqresp/protocols/tx.js +21 -3
  255. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  256. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  257. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  258. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  259. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  260. package/dest/services/reqresp/rate-limiter/rate_limits.js +0 -10
  261. package/dest/services/reqresp/reqresp.d.ts +4 -2
  262. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  263. package/dest/services/reqresp/reqresp.js +40 -15
  264. package/dest/services/service.d.ts +43 -4
  265. package/dest/services/service.d.ts.map +1 -1
  266. package/dest/services/tx_collection/config.d.ts +22 -4
  267. package/dest/services/tx_collection/config.d.ts.map +1 -1
  268. package/dest/services/tx_collection/config.js +49 -3
  269. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -8
  270. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  271. package/dest/services/tx_collection/fast_tx_collection.js +88 -88
  272. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  273. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  274. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  275. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  276. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  277. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  278. package/dest/services/tx_collection/index.d.ts +3 -2
  279. package/dest/services/tx_collection/index.d.ts.map +1 -1
  280. package/dest/services/tx_collection/index.js +1 -0
  281. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  282. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  283. package/dest/services/tx_collection/instrumentation.js +10 -2
  284. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -15
  285. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  286. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  287. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  288. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  289. package/dest/services/tx_collection/request_tracker.js +84 -0
  290. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  291. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  292. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  293. package/dest/services/tx_collection/tx_collection.d.ts +23 -13
  294. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  295. package/dest/services/tx_collection/tx_collection.js +75 -3
  296. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  297. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  298. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  299. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  300. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  301. package/dest/services/tx_collection/tx_source.js +26 -7
  302. package/dest/services/tx_file_store/config.d.ts +16 -0
  303. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  304. package/dest/services/tx_file_store/config.js +22 -0
  305. package/dest/services/tx_file_store/index.d.ts +4 -0
  306. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  307. package/dest/services/tx_file_store/index.js +3 -0
  308. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  309. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  310. package/dest/services/tx_file_store/instrumentation.js +29 -0
  311. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  312. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  313. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  314. package/dest/services/tx_provider.d.ts +4 -4
  315. package/dest/services/tx_provider.d.ts.map +1 -1
  316. package/dest/services/tx_provider.js +9 -8
  317. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  318. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  319. package/dest/services/tx_provider_instrumentation.js +5 -5
  320. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  321. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  322. package/dest/test-helpers/make-test-p2p-clients.js +4 -2
  323. package/dest/test-helpers/mock-pubsub.d.ts +40 -6
  324. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  325. package/dest/test-helpers/mock-pubsub.js +139 -13
  326. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  327. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  328. package/dest/test-helpers/reqresp-nodes.js +8 -5
  329. package/dest/test-helpers/testbench-utils.d.ts +45 -38
  330. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  331. package/dest/test-helpers/testbench-utils.js +152 -62
  332. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  333. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  334. package/dest/testbench/p2p_client_testbench_worker.js +86 -29
  335. package/dest/testbench/worker_client_manager.d.ts +10 -1
  336. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  337. package/dest/testbench/worker_client_manager.js +55 -3
  338. package/dest/util.d.ts +3 -3
  339. package/dest/util.d.ts.map +1 -1
  340. package/package.json +14 -14
  341. package/src/bootstrap/bootstrap.ts +7 -4
  342. package/src/client/factory.ts +118 -37
  343. package/src/client/interface.ts +65 -35
  344. package/src/client/p2p_client.ts +228 -272
  345. package/src/client/test/tx_proposal_collector/README.md +4 -4
  346. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +37 -16
  347. package/src/config.ts +188 -46
  348. package/src/errors/p2p-service.error.ts +11 -0
  349. package/src/errors/tx-pool.error.ts +12 -0
  350. package/src/index.ts +1 -1
  351. package/src/mem_pools/attestation_pool/attestation_pool.ts +501 -91
  352. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  353. package/src/mem_pools/attestation_pool/index.ts +9 -2
  354. package/src/mem_pools/attestation_pool/mocks.ts +14 -8
  355. package/src/mem_pools/index.ts +2 -2
  356. package/src/mem_pools/instrumentation.ts +24 -15
  357. package/src/mem_pools/interface.ts +4 -4
  358. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  359. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  360. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  361. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  362. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  363. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  364. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  365. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  366. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  367. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  368. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  369. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  370. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  371. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  372. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  373. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  374. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  375. package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
  376. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  377. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  378. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  379. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  380. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1107 -0
  381. package/src/msg_validators/attestation_validator/README.md +49 -0
  382. package/src/msg_validators/attestation_validator/attestation_validator.ts +41 -9
  383. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +22 -6
  384. package/src/msg_validators/clock_tolerance.ts +79 -3
  385. package/src/msg_validators/proposal_validator/README.md +123 -0
  386. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +23 -4
  387. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +34 -7
  388. package/src/msg_validators/proposal_validator/proposal_validator.ts +111 -47
  389. package/src/msg_validators/tx_validator/README.md +127 -0
  390. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  391. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  392. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  393. package/src/msg_validators/tx_validator/archive_cache.ts +2 -2
  394. package/src/msg_validators/tx_validator/block_header_validator.ts +22 -11
  395. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  396. package/src/msg_validators/tx_validator/data_validator.ts +48 -3
  397. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  398. package/src/msg_validators/tx_validator/factory.ts +403 -69
  399. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  400. package/src/msg_validators/tx_validator/gas_validator.ts +203 -52
  401. package/src/msg_validators/tx_validator/index.ts +2 -0
  402. package/src/msg_validators/tx_validator/metadata_validator.ts +18 -7
  403. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  404. package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
  405. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  406. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
  407. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  408. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  409. package/src/services/data_store.ts +14 -19
  410. package/src/services/discv5/discV5_service.ts +1 -1
  411. package/src/services/dummy_service.ts +25 -7
  412. package/src/services/encoding.ts +18 -10
  413. package/src/services/gossipsub/README.md +641 -0
  414. package/src/services/gossipsub/index.ts +2 -0
  415. package/src/services/gossipsub/scoring.ts +29 -5
  416. package/src/services/gossipsub/topic_score_params.ts +519 -0
  417. package/src/services/index.ts +1 -0
  418. package/src/services/libp2p/instrumentation.ts +29 -2
  419. package/src/services/libp2p/libp2p_service.ts +632 -494
  420. package/src/services/peer-manager/metrics.ts +28 -4
  421. package/src/services/peer-manager/peer_manager.ts +45 -11
  422. package/src/services/peer-manager/peer_scoring.ts +56 -6
  423. package/src/services/reqresp/README.md +229 -0
  424. package/src/services/reqresp/batch-tx-requester/README.md +60 -21
  425. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +89 -122
  426. package/src/services/reqresp/batch-tx-requester/interface.ts +3 -6
  427. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +30 -71
  428. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +68 -24
  429. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  430. package/src/services/reqresp/config.ts +2 -2
  431. package/src/services/reqresp/interface.ts +45 -10
  432. package/src/services/reqresp/metrics.ts +33 -9
  433. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +24 -15
  434. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -24
  435. package/src/services/reqresp/protocols/index.ts +0 -1
  436. package/src/services/reqresp/protocols/tx.ts +23 -3
  437. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  438. package/src/services/reqresp/rate-limiter/rate_limits.ts +0 -10
  439. package/src/services/reqresp/reqresp.ts +53 -16
  440. package/src/services/service.ts +57 -3
  441. package/src/services/tx_collection/config.ts +74 -6
  442. package/src/services/tx_collection/fast_tx_collection.ts +94 -97
  443. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  444. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  445. package/src/services/tx_collection/index.ts +2 -1
  446. package/src/services/tx_collection/instrumentation.ts +17 -2
  447. package/src/services/tx_collection/proposal_tx_collector.ts +21 -27
  448. package/src/services/tx_collection/request_tracker.ts +127 -0
  449. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  450. package/src/services/tx_collection/tx_collection.ts +114 -19
  451. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  452. package/src/services/tx_collection/tx_source.ts +28 -8
  453. package/src/services/tx_file_store/config.ts +37 -0
  454. package/src/services/tx_file_store/index.ts +3 -0
  455. package/src/services/tx_file_store/instrumentation.ts +36 -0
  456. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  457. package/src/services/tx_provider.ts +10 -9
  458. package/src/services/tx_provider_instrumentation.ts +11 -5
  459. package/src/test-helpers/make-test-p2p-clients.ts +6 -6
  460. package/src/test-helpers/mock-pubsub.ts +180 -14
  461. package/src/test-helpers/reqresp-nodes.ts +9 -9
  462. package/src/test-helpers/testbench-utils.ts +159 -74
  463. package/src/testbench/p2p_client_testbench_worker.ts +95 -32
  464. package/src/testbench/worker_client_manager.ts +68 -6
  465. package/src/util.ts +8 -2
  466. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  467. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  468. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  469. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  470. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  471. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  472. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -125
  473. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  474. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -596
  475. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +0 -32
  476. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +0 -1
  477. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +0 -112
  478. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +0 -157
  479. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +0 -1
  480. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +0 -52
  481. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +0 -16
  482. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +0 -1
  483. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +0 -122
  484. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +0 -17
  485. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +0 -1
  486. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +0 -19
  487. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +0 -1
  488. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +0 -78
  489. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +0 -26
  490. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +0 -1
  491. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +0 -84
  492. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +0 -25
  493. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +0 -1
  494. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +0 -57
  495. package/dest/mem_pools/tx_pool/index.d.ts +0 -3
  496. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  497. package/dest/mem_pools/tx_pool/index.js +0 -2
  498. package/dest/mem_pools/tx_pool/priority.d.ts +0 -12
  499. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  500. package/dest/mem_pools/tx_pool/priority.js +0 -15
  501. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -127
  502. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  503. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  504. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  505. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  506. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -400
  507. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  508. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  509. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  510. package/dest/services/reqresp/protocols/block.d.ts +0 -9
  511. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  512. package/dest/services/reqresp/protocols/block.js +0 -32
  513. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  514. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  515. package/src/mem_pools/tx_pool/README.md +0 -270
  516. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -746
  517. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +0 -132
  518. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +0 -208
  519. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +0 -162
  520. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +0 -104
  521. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +0 -93
  522. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +0 -106
  523. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +0 -75
  524. package/src/mem_pools/tx_pool/index.ts +0 -2
  525. package/src/mem_pools/tx_pool/priority.ts +0 -20
  526. package/src/mem_pools/tx_pool/tx_pool.ts +0 -141
  527. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -319
  528. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
  529. package/src/services/reqresp/protocols/block.ts +0 -37
@@ -1,16 +1,25 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import {
4
- type AnyTx,
5
- TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP,
6
- type TxValidationResult,
7
- type TxValidator,
8
- getTxHash,
9
- } 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';
10
4
  import type { UInt64 } from '@aztec/stdlib/types';
11
5
 
12
- export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
13
- #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;
14
23
 
15
24
  constructor(
16
25
  private values: {
@@ -20,28 +29,27 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
20
29
  // Block number in which the tx is considered to be included.
21
30
  blockNumber: BlockNumber;
22
31
  },
23
- ) {}
32
+ bindings?: LoggerBindings,
33
+ ) {
34
+ this.#log = createLogger('p2p:tx_validator:timestamp', bindings);
35
+ }
24
36
 
25
37
  validateTx(tx: T): Promise<TxValidationResult> {
26
- const includeByTimestamp = tx.data.includeByTimestamp;
27
- // 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`
28
40
  // function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
29
41
  const buildingBlock1 = this.values.blockNumber === 1;
30
42
 
31
- if (!buildingBlock1 && includeByTimestamp < this.values.timestamp) {
43
+ if (!buildingBlock1 && expirationTimestamp < this.values.timestamp) {
32
44
  if (tx.data.constants.anchorBlockHeader.globalVariables.blockNumber === 0) {
33
45
  this.#log.warn(
34
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.`,
35
47
  );
36
48
  }
37
49
  this.#log.verbose(
38
- `Rejecting tx ${getTxHash(
39
- tx,
40
- )} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
41
- this.values.timestamp
42
- }.`,
50
+ `Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${expirationTimestamp}, timestamp: ${this.values.timestamp}.`,
43
51
  );
44
- return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP] });
52
+ return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_EXPIRATION_TIMESTAMP] });
45
53
  } else {
46
54
  return Promise.resolve({ result: 'valid' });
47
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,17 +24,16 @@ 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
 
30
- #batchOps: BatchOp[] = [];
31
-
32
31
  private maxMemoryItems: number;
33
32
 
34
33
  constructor(db: AztecAsyncKVStore, { maxMemoryItems } = { maxMemoryItems: 50 }) {
34
+ this.#db = db;
35
35
  this.#memoryDatastore = new Map();
36
36
  this.#dbDatastore = db.openMap('p2p_datastore');
37
-
38
37
  this.maxMemoryItems = maxMemoryItems;
39
38
  }
40
39
 
@@ -91,29 +90,25 @@ export class AztecDatastore implements Datastore {
91
90
  }
92
91
 
93
92
  batch(): Batch {
93
+ const ops: BatchOp[] = [];
94
94
  return {
95
95
  put: (key, value) => {
96
- this.#batchOps.push({
97
- type: 'put',
98
- key,
99
- value,
100
- });
96
+ ops.push({ type: 'put', key, value });
101
97
  },
102
98
  delete: key => {
103
- this.#batchOps.push({
104
- type: 'del',
105
- key,
106
- });
99
+ ops.push({ type: 'del', key });
107
100
  },
108
101
  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);
102
+ await this.#db.transactionAsync(async () => {
103
+ for (const op of ops) {
104
+ if (op.type === 'put' && op.value) {
105
+ await this.put(op.key, op.value);
106
+ } else if (op.type === 'del') {
107
+ await this.delete(op.key);
108
+ }
114
109
  }
115
- }
116
- this.#batchOps = []; // Clear operations after commit
110
+ });
111
+ ops.length = 0;
117
112
  },
118
113
  };
119
114
  }
@@ -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 { CheckpointProposalCore, 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';
@@ -26,6 +26,8 @@ import { ReqRespStatus } from './reqresp/status.js';
26
26
  import {
27
27
  type P2PBlockReceivedCallback,
28
28
  type P2PCheckpointReceivedCallback,
29
+ type P2PDuplicateAttestationCallback,
30
+ type P2PDuplicateProposalCallback,
29
31
  type P2PService,
30
32
  type PeerDiscoveryService,
31
33
  PeerDiscoveryState,
@@ -42,6 +44,10 @@ export class DummyP2PService implements P2PService {
42
44
  return [];
43
45
  }
44
46
 
47
+ getGossipMeshPeerCount(_topicType: TopicType): number {
48
+ return 0;
49
+ }
50
+
45
51
  /**
46
52
  * Starts the dummy implementation.
47
53
  * @returns A resolved promise.
@@ -80,7 +86,22 @@ export class DummyP2PService implements P2PService {
80
86
  /**
81
87
  * Register a callback into the validator client for when a checkpoint proposal is received
82
88
  */
83
- public registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
89
+ public registerValidatorCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
90
+ public registerAllNodesCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
91
+
92
+ public notifyOwnCheckpointProposal(_checkpoint: CheckpointProposalCore): Promise<void> {
93
+ return Promise.resolve();
94
+ }
95
+
96
+ /**
97
+ * Register a callback for when a duplicate proposal is detected
98
+ */
99
+ public registerDuplicateProposalCallback(_callback: P2PDuplicateProposalCallback): void {}
100
+
101
+ /**
102
+ * Register a callback for when a duplicate attestation is detected
103
+ */
104
+ public registerDuplicateAttestationCallback(_callback: P2PDuplicateAttestationCallback): void {}
84
105
 
85
106
  /**
86
107
  * Sends a request to a peer.
@@ -125,14 +146,10 @@ export class DummyP2PService implements P2PService {
125
146
  return undefined;
126
147
  }
127
148
 
128
- validate(_txs: Tx[]): Promise<void> {
149
+ validateTxsReceivedInBlockProposal(_txs: Tx[]): Promise<void> {
129
150
  return Promise.resolve();
130
151
  }
131
152
 
132
- validatePropagatedTx(_tx: Tx, _peerId: PeerId): Promise<boolean> {
133
- return Promise.resolve(true);
134
- }
135
-
136
153
  addReqRespSubProtocol(
137
154
  _subProtocol: ReqRespSubProtocol,
138
155
  _handler: ReqRespSubProtocolHandler,
@@ -270,6 +287,7 @@ export class DummyPeerManager implements PeerManagerInterface {
270
287
 
271
288
  export class DummyReqResp implements ReqRespInterface {
272
289
  updateConfig(_config: Partial<P2PReqRespConfig>): void {}
290
+ setShouldRejectPeer(): void {}
273
291
  start(
274
292
  _subProtocolHandlers: ReqRespSubProtocolHandlers,
275
293
  _subProtocolValidators: ReqRespSubProtocolValidators,
@@ -1,14 +1,22 @@
1
1
  // Taken from lodestar: https://github.com/ChainSafe/lodestar
2
- import { sha256 } from '@aztec/foundation/crypto/sha256';
3
2
  import { createLogger } from '@aztec/foundation/log';
4
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,11 +52,10 @@ 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> = {
@@ -58,7 +65,8 @@ const DefaultMaxSizesKb: Record<TopicType, number> = {
58
65
  // Proposals may carry some tx objects, so we allow a larger size capped at 10mb
59
66
  // Note this may not be enough for carrying all tx objects in a block
60
67
  [TopicType.block_proposal]: 1024 * 10,
61
- // TODO(palla/mbps): Check size for checkpoint proposal
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
62
70
  [TopicType.checkpoint_proposal]: 1024 * 10,
63
71
  };
64
72
 
@@ -78,15 +86,15 @@ export class SnappyTransform implements DataTransform {
78
86
  return this.inboundTransformData(Buffer.from(data), topic);
79
87
  }
80
88
 
81
- public inboundTransformData(data: Buffer, topic?: TopicType): Buffer {
89
+ public inboundTransformData(data: Buffer, topic?: TopicType, maxSizeKbOverride?: number): Buffer {
82
90
  if (data.length === 0) {
83
91
  return data;
84
92
  }
85
- const maxSizeKb = this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
93
+ const maxSizeKb = maxSizeKbOverride ?? this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
86
94
  const { decompressedSize } = readSnappyPreamble(data);
87
95
  if (decompressedSize > maxSizeKb * 1024) {
88
96
  this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
89
- throw new Error(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);
97
+ throw new OversizedSnappyResponseError(decompressedSize, maxSizeKb);
90
98
  }
91
99
 
92
100
  return Buffer.from(uncompressSync(data, { asBuffer: true }));