@aztec/p2p 0.0.1-commit.ee80a48 → 0.0.1-commit.ef17749e1

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 (398) hide show
  1. package/dest/client/factory.d.ts +11 -11
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +41 -14
  4. package/dest/client/interface.d.ts +46 -33
  5. package/dest/client/interface.d.ts.map +1 -1
  6. package/dest/client/p2p_client.d.ts +41 -51
  7. package/dest/client/p2p_client.d.ts.map +1 -1
  8. package/dest/client/p2p_client.js +149 -224
  9. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +7 -8
  10. package/dest/config.d.ts +48 -17
  11. package/dest/config.d.ts.map +1 -1
  12. package/dest/config.js +85 -39
  13. package/dest/errors/tx-pool.error.d.ts +8 -0
  14. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  15. package/dest/errors/tx-pool.error.js +9 -0
  16. package/dest/index.d.ts +2 -1
  17. package/dest/index.d.ts.map +1 -1
  18. package/dest/index.js +1 -0
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +445 -3
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  25. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  26. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  27. package/dest/mem_pools/attestation_pool/index.js +1 -2
  28. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  29. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  31. package/dest/mem_pools/index.d.ts +3 -2
  32. package/dest/mem_pools/index.d.ts.map +1 -1
  33. package/dest/mem_pools/index.js +1 -1
  34. package/dest/mem_pools/instrumentation.d.ts +4 -2
  35. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  36. package/dest/mem_pools/instrumentation.js +16 -14
  37. package/dest/mem_pools/interface.d.ts +5 -5
  38. package/dest/mem_pools/interface.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  40. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  41. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  42. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  43. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  44. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  45. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  46. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  47. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  49. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  50. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  51. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  52. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  53. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  54. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
  55. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  56. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  58. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  59. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  61. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  62. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  64. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  65. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  79. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  80. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  82. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  83. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  85. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +213 -0
  86. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  88. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +127 -0
  89. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +210 -0
  91. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  92. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  94. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  95. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  97. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
  98. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +164 -0
  100. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  101. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +909 -0
  103. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  104. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  105. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  106. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  107. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  108. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  109. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  110. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  111. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  112. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  113. package/dest/msg_validators/proposal_validator/proposal_validator.js +48 -36
  114. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  115. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  117. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  118. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  119. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  120. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  121. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  122. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  123. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
  124. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  125. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  126. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
  127. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  128. package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
  129. package/dest/msg_validators/tx_validator/factory.d.ts +114 -6
  130. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  131. package/dest/msg_validators/tx_validator/factory.js +219 -58
  132. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  133. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  134. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  135. package/dest/msg_validators/tx_validator/gas_validator.d.ts +58 -3
  136. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  137. package/dest/msg_validators/tx_validator/gas_validator.js +73 -36
  138. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  139. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  140. package/dest/msg_validators/tx_validator/index.js +2 -0
  141. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  142. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  143. package/dest/msg_validators/tx_validator/metadata_validator.js +4 -4
  144. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  145. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  146. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  147. package/dest/msg_validators/tx_validator/phases_validator.d.ts +2 -2
  148. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  149. package/dest/msg_validators/tx_validator/phases_validator.js +44 -23
  150. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
  151. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  152. package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
  153. package/dest/services/dummy_service.d.ts +13 -5
  154. package/dest/services/dummy_service.d.ts.map +1 -1
  155. package/dest/services/dummy_service.js +10 -4
  156. package/dest/services/encoding.d.ts +3 -3
  157. package/dest/services/encoding.d.ts.map +1 -1
  158. package/dest/services/encoding.js +11 -10
  159. package/dest/services/gossipsub/index.d.ts +3 -0
  160. package/dest/services/gossipsub/index.d.ts.map +1 -0
  161. package/dest/services/gossipsub/index.js +2 -0
  162. package/dest/services/gossipsub/scoring.d.ts +21 -3
  163. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  164. package/dest/services/gossipsub/scoring.js +24 -7
  165. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  166. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  167. package/dest/services/gossipsub/topic_score_params.js +346 -0
  168. package/dest/services/index.d.ts +2 -1
  169. package/dest/services/index.d.ts.map +1 -1
  170. package/dest/services/index.js +1 -0
  171. package/dest/services/libp2p/libp2p_service.d.ts +94 -42
  172. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  173. package/dest/services/libp2p/libp2p_service.js +435 -346
  174. package/dest/services/peer-manager/metrics.d.ts +3 -1
  175. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  176. package/dest/services/peer-manager/metrics.js +6 -0
  177. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  178. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  179. package/dest/services/peer-manager/peer_manager.js +2 -1
  180. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  181. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  182. package/dest/services/peer-manager/peer_scoring.js +25 -2
  183. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +6 -5
  184. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
  185. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +26 -53
  186. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
  187. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
  188. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
  189. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
  190. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
  191. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +17 -11
  192. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -1
  193. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +49 -15
  194. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +2 -2
  195. package/dest/services/reqresp/interface.d.ts +10 -1
  196. package/dest/services/reqresp/interface.d.ts.map +1 -1
  197. package/dest/services/reqresp/interface.js +15 -1
  198. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  199. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  200. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +16 -11
  201. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +21 -10
  202. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  203. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +27 -11
  204. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  205. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  206. package/dest/services/reqresp/protocols/tx.js +20 -0
  207. package/dest/services/reqresp/reqresp.d.ts +1 -1
  208. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  209. package/dest/services/reqresp/reqresp.js +13 -5
  210. package/dest/services/service.d.ts +39 -3
  211. package/dest/services/service.d.ts.map +1 -1
  212. package/dest/services/tx_collection/config.d.ts +22 -4
  213. package/dest/services/tx_collection/config.d.ts.map +1 -1
  214. package/dest/services/tx_collection/config.js +49 -3
  215. package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
  216. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  217. package/dest/services/tx_collection/fast_tx_collection.js +64 -48
  218. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  219. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  220. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  221. package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
  222. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  223. package/dest/services/tx_collection/file_store_tx_source.js +90 -0
  224. package/dest/services/tx_collection/index.d.ts +3 -2
  225. package/dest/services/tx_collection/index.d.ts.map +1 -1
  226. package/dest/services/tx_collection/index.js +1 -0
  227. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  228. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  229. package/dest/services/tx_collection/instrumentation.js +2 -1
  230. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  231. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  232. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  233. package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -14
  234. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
  235. package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
  236. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  237. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  238. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  239. package/dest/services/tx_collection/tx_collection.d.ts +23 -10
  240. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  241. package/dest/services/tx_collection/tx_collection.js +75 -3
  242. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  243. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  244. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  245. package/dest/services/tx_collection/tx_source.d.ts +8 -3
  246. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  247. package/dest/services/tx_collection/tx_source.js +19 -2
  248. package/dest/services/tx_file_store/config.d.ts +16 -0
  249. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  250. package/dest/services/tx_file_store/config.js +22 -0
  251. package/dest/services/tx_file_store/index.d.ts +4 -0
  252. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  253. package/dest/services/tx_file_store/index.js +3 -0
  254. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  255. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  256. package/dest/services/tx_file_store/instrumentation.js +29 -0
  257. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  258. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  259. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  260. package/dest/services/tx_provider.d.ts +4 -4
  261. package/dest/services/tx_provider.d.ts.map +1 -1
  262. package/dest/services/tx_provider.js +9 -8
  263. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  264. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  265. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  266. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  267. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  268. package/dest/test-helpers/mock-pubsub.js +105 -4
  269. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  270. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  271. package/dest/test-helpers/reqresp-nodes.js +4 -3
  272. package/dest/test-helpers/testbench-utils.d.ts +43 -38
  273. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  274. package/dest/test-helpers/testbench-utils.js +128 -59
  275. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
  276. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  277. package/dest/testbench/p2p_client_testbench_worker.js +17 -16
  278. package/dest/testbench/worker_client_manager.d.ts +3 -1
  279. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  280. package/dest/testbench/worker_client_manager.js +6 -2
  281. package/dest/util.d.ts +3 -3
  282. package/dest/util.d.ts.map +1 -1
  283. package/package.json +14 -14
  284. package/src/client/factory.ts +79 -27
  285. package/src/client/interface.ts +56 -34
  286. package/src/client/p2p_client.ts +185 -269
  287. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +21 -12
  288. package/src/config.ts +132 -44
  289. package/src/errors/tx-pool.error.ts +12 -0
  290. package/src/index.ts +1 -0
  291. package/src/mem_pools/attestation_pool/attestation_pool.ts +497 -91
  292. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  293. package/src/mem_pools/attestation_pool/index.ts +9 -2
  294. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  295. package/src/mem_pools/index.ts +4 -1
  296. package/src/mem_pools/instrumentation.ts +17 -13
  297. package/src/mem_pools/interface.ts +4 -4
  298. package/src/mem_pools/tx_pool/README.md +1 -1
  299. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  300. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  301. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  302. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  303. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  304. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  305. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
  306. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  307. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  308. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  309. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  310. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  311. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  312. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  313. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  314. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  315. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  316. package/src/mem_pools/tx_pool_v2/interfaces.ts +245 -0
  317. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +327 -0
  318. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  319. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  320. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +226 -0
  321. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
  322. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
  323. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  324. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  325. package/src/msg_validators/proposal_validator/proposal_validator.ts +63 -40
  326. package/src/msg_validators/tx_validator/README.md +115 -0
  327. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  328. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  329. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  330. package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
  331. package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
  332. package/src/msg_validators/tx_validator/factory.ts +353 -77
  333. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  334. package/src/msg_validators/tx_validator/gas_validator.ts +90 -27
  335. package/src/msg_validators/tx_validator/index.ts +2 -0
  336. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  337. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  338. package/src/msg_validators/tx_validator/phases_validator.ts +51 -26
  339. package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
  340. package/src/services/dummy_service.ts +18 -6
  341. package/src/services/encoding.ts +9 -9
  342. package/src/services/gossipsub/README.md +641 -0
  343. package/src/services/gossipsub/index.ts +2 -0
  344. package/src/services/gossipsub/scoring.ts +29 -5
  345. package/src/services/gossipsub/topic_score_params.ts +487 -0
  346. package/src/services/index.ts +1 -0
  347. package/src/services/libp2p/libp2p_service.ts +460 -366
  348. package/src/services/peer-manager/metrics.ts +7 -0
  349. package/src/services/peer-manager/peer_manager.ts +2 -1
  350. package/src/services/peer-manager/peer_scoring.ts +25 -0
  351. package/src/services/reqresp/batch-tx-requester/README.md +7 -7
  352. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +31 -59
  353. package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
  354. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
  355. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +63 -24
  356. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +2 -2
  357. package/src/services/reqresp/interface.ts +26 -1
  358. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +23 -14
  359. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +38 -15
  360. package/src/services/reqresp/protocols/tx.ts +22 -0
  361. package/src/services/reqresp/reqresp.ts +16 -4
  362. package/src/services/service.ts +51 -2
  363. package/src/services/tx_collection/config.ts +74 -6
  364. package/src/services/tx_collection/fast_tx_collection.ts +74 -51
  365. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  366. package/src/services/tx_collection/file_store_tx_source.ts +117 -0
  367. package/src/services/tx_collection/index.ts +2 -1
  368. package/src/services/tx_collection/instrumentation.ts +7 -1
  369. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  370. package/src/services/tx_collection/proposal_tx_collector.ts +20 -21
  371. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  372. package/src/services/tx_collection/tx_collection.ts +113 -16
  373. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  374. package/src/services/tx_collection/tx_source.ts +22 -3
  375. package/src/services/tx_file_store/config.ts +37 -0
  376. package/src/services/tx_file_store/index.ts +3 -0
  377. package/src/services/tx_file_store/instrumentation.ts +36 -0
  378. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  379. package/src/services/tx_provider.ts +10 -9
  380. package/src/test-helpers/make-test-p2p-clients.ts +4 -6
  381. package/src/test-helpers/mock-pubsub.ts +146 -9
  382. package/src/test-helpers/reqresp-nodes.ts +5 -7
  383. package/src/test-helpers/testbench-utils.ts +127 -71
  384. package/src/testbench/p2p_client_testbench_worker.ts +26 -22
  385. package/src/testbench/worker_client_manager.ts +13 -5
  386. package/src/util.ts +8 -2
  387. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  388. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  389. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  390. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  391. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  392. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  393. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  394. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  395. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  396. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  397. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  398. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -28,16 +28,24 @@ export class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
28
28
  validateTx(tx: T): Promise<TxValidationResult> {
29
29
  const errors = [];
30
30
  if (!this.#hasCorrectL1ChainId(tx)) {
31
- errors.push(TX_ERROR_INCORRECT_L1_CHAIN_ID);
31
+ errors.push(
32
+ `${TX_ERROR_INCORRECT_L1_CHAIN_ID} (tx: ${tx.data.constants.txContext.chainId.toNumber()}, expected: ${this.values.l1ChainId.toNumber()})`,
33
+ );
32
34
  }
33
35
  if (!this.#hasCorrectRollupVersion(tx)) {
34
- errors.push(TX_ERROR_INCORRECT_ROLLUP_VERSION);
36
+ errors.push(
37
+ `${TX_ERROR_INCORRECT_ROLLUP_VERSION} (tx: ${tx.data.constants.txContext.version.toNumber()}, expected: ${this.values.rollupVersion.toNumber()})`,
38
+ );
35
39
  }
36
40
  if (!this.#hasCorrectVkTreeRoot(tx)) {
37
- errors.push(TX_ERROR_INCORRECT_VK_TREE_ROOT);
41
+ errors.push(
42
+ `${TX_ERROR_INCORRECT_VK_TREE_ROOT} (tx: ${tx.data.constants.vkTreeRoot.toString()}, expected: ${this.values.vkTreeRoot.toString()})`,
43
+ );
38
44
  }
39
45
  if (!this.#hasCorrectprotocolContractsHash(tx)) {
40
- errors.push(TX_ERROR_INCORRECT_PROTOCOL_CONTRACTS_HASH);
46
+ errors.push(
47
+ `${TX_ERROR_INCORRECT_PROTOCOL_CONTRACTS_HASH} (tx: ${tx.data.constants.protocolContractsHash.toString()}, expected: ${this.values.protocolContractsHash.toString()})`,
48
+ );
41
49
  }
42
50
  return Promise.resolve(errors.length > 0 ? { result: 'invalid', reason: errors } : { result: 'valid' });
43
51
  }
@@ -0,0 +1,30 @@
1
+ import type { NullifierSource } from '@aztec/p2p';
2
+ import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
3
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
4
+
5
+ /**
6
+ * Implements a nullifier source by checking a DB and an in-memory collection.
7
+ * Intended for validating transactions as they are added to a block.
8
+ */
9
+ export class NullifierCache implements NullifierSource {
10
+ nullifiers: Set<string>;
11
+
12
+ constructor(private db: MerkleTreeReadOperations) {
13
+ this.nullifiers = new Set();
14
+ }
15
+
16
+ public async nullifiersExist(nullifiers: Buffer[]): Promise<boolean[]> {
17
+ const cacheResults = nullifiers.map(n => this.nullifiers.has(n.toString()));
18
+ const toCheckDb = nullifiers.filter((_n, index) => !cacheResults[index]);
19
+ const dbHits = await this.db.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, toCheckDb);
20
+
21
+ let dbIndex = 0;
22
+ return nullifiers.map((_n, index) => cacheResults[index] || dbHits[dbIndex++] !== undefined);
23
+ }
24
+
25
+ public addNullifiers(nullifiers: Buffer[]) {
26
+ for (const nullifier of nullifiers) {
27
+ this.nullifiers.add(nullifier.toString());
28
+ }
29
+ }
30
+ }
@@ -1,11 +1,17 @@
1
+ import { NULL_MSG_SENDER_CONTRACT_ADDRESS } from '@aztec/constants';
1
2
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
3
  import { PublicContractsDB, getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
5
  import type { ContractDataSource } from '@aztec/stdlib/contract';
4
6
  import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
5
7
  import {
6
8
  type PublicCallRequestWithCalldata,
7
9
  TX_ERROR_DURING_VALIDATION,
8
10
  TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED,
11
+ TX_ERROR_SETUP_FUNCTION_UNKNOWN_CONTRACT,
12
+ TX_ERROR_SETUP_NULL_MSG_SENDER,
13
+ TX_ERROR_SETUP_ONLY_SELF_WRONG_SENDER,
14
+ TX_ERROR_SETUP_WRONG_CALLDATA_LENGTH,
9
15
  Tx,
10
16
  TxExecutionPhase,
11
17
  type TxValidationResult,
@@ -45,7 +51,8 @@ export class PhasesTxValidator implements TxValidator<Tx> {
45
51
 
46
52
  const setupFns = getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP);
47
53
  for (const setupFn of setupFns) {
48
- if (!(await this.isOnAllowList(setupFn, this.setupAllowList))) {
54
+ const rejectionReason = await this.checkAllowList(setupFn, this.setupAllowList);
55
+ if (rejectionReason) {
49
56
  this.#log.verbose(
50
57
  `Rejecting tx ${tx.getTxHash().toString()} because it calls setup function not on allow list: ${
51
58
  setupFn.request.contractAddress
@@ -53,7 +60,7 @@ export class PhasesTxValidator implements TxValidator<Tx> {
53
60
  { allowList: this.setupAllowList },
54
61
  );
55
62
 
56
- return { result: 'invalid', reason: [TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED] };
63
+ return { result: 'invalid', reason: [rejectionReason] };
57
64
  }
58
65
  }
59
66
 
@@ -66,53 +73,71 @@ export class PhasesTxValidator implements TxValidator<Tx> {
66
73
  }
67
74
  }
68
75
 
69
- private async isOnAllowList(
76
+ /** Returns a rejection reason if the call is not on the allow list, or undefined if it is allowed. */
77
+ private async checkAllowList(
70
78
  publicCall: PublicCallRequestWithCalldata,
71
79
  allowList: AllowedElement[],
72
- ): Promise<boolean> {
80
+ ): Promise<string | undefined> {
73
81
  if (publicCall.isEmpty()) {
74
- return true;
82
+ return undefined;
75
83
  }
76
84
 
77
85
  const contractAddress = publicCall.request.contractAddress;
78
86
  const functionSelector = publicCall.functionSelector;
79
87
 
80
- // do these checks first since they don't require the contract class
88
+ // Check address-based entries first since they don't require the contract class.
81
89
  for (const entry of allowList) {
82
- if ('address' in entry && !('selector' in entry)) {
83
- if (contractAddress.equals(entry.address)) {
84
- return true;
85
- }
86
- }
87
-
88
- if ('address' in entry && 'selector' in entry) {
90
+ if ('address' in entry) {
89
91
  if (contractAddress.equals(entry.address) && entry.selector.equals(functionSelector)) {
90
- return true;
92
+ if (entry.calldataLength !== undefined && publicCall.calldata.length !== entry.calldataLength) {
93
+ return TX_ERROR_SETUP_WRONG_CALLDATA_LENGTH;
94
+ }
95
+ if (entry.onlySelf && !publicCall.request.msgSender.equals(contractAddress)) {
96
+ return TX_ERROR_SETUP_ONLY_SELF_WRONG_SENDER;
97
+ }
98
+ if (
99
+ entry.rejectNullMsgSender &&
100
+ publicCall.request.msgSender.equals(AztecAddress.fromBigInt(NULL_MSG_SENDER_CONTRACT_ADDRESS))
101
+ ) {
102
+ return TX_ERROR_SETUP_NULL_MSG_SENDER;
103
+ }
104
+ return undefined;
91
105
  }
92
106
  }
107
+ }
93
108
 
94
- const contractClass = await this.contractsDB.getContractInstance(contractAddress, this.timestamp);
95
-
96
- if (!contractClass) {
97
- throw new Error(`Contract not found: ${contractAddress}`);
109
+ // Check class-based entries. Fetch the contract instance lazily (only once).
110
+ let contractClassId: undefined | { value: string | undefined };
111
+ for (const entry of allowList) {
112
+ if (!('classId' in entry)) {
113
+ continue;
98
114
  }
99
115
 
100
- if ('classId' in entry && !('selector' in entry)) {
101
- if (contractClass.currentContractClassId.equals(entry.classId)) {
102
- return true;
116
+ if (contractClassId === undefined) {
117
+ const instance = await this.contractsDB.getContractInstance(contractAddress, this.timestamp);
118
+ contractClassId = { value: instance?.currentContractClassId.toString() };
119
+ if (!contractClassId.value) {
120
+ return TX_ERROR_SETUP_FUNCTION_UNKNOWN_CONTRACT;
103
121
  }
104
122
  }
105
123
 
106
- if ('classId' in entry && 'selector' in entry) {
124
+ if (contractClassId.value === entry.classId.toString() && entry.selector.equals(functionSelector)) {
125
+ if (entry.calldataLength !== undefined && publicCall.calldata.length !== entry.calldataLength) {
126
+ return TX_ERROR_SETUP_WRONG_CALLDATA_LENGTH;
127
+ }
128
+ if (entry.onlySelf && !publicCall.request.msgSender.equals(contractAddress)) {
129
+ return TX_ERROR_SETUP_ONLY_SELF_WRONG_SENDER;
130
+ }
107
131
  if (
108
- contractClass.currentContractClassId.equals(entry.classId) &&
109
- (entry.selector === undefined || entry.selector.equals(functionSelector))
132
+ entry.rejectNullMsgSender &&
133
+ publicCall.request.msgSender.equals(AztecAddress.fromBigInt(NULL_MSG_SENDER_CONTRACT_ADDRESS))
110
134
  ) {
111
- return true;
135
+ return TX_ERROR_SETUP_NULL_MSG_SENDER;
112
136
  }
137
+ return undefined;
113
138
  }
114
139
  }
115
140
 
116
- return false;
141
+ return TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED;
117
142
  }
118
143
  }
@@ -1,15 +1,24 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger, type LoggerBindings, 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';
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> {
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> {
13
22
  #log: Logger;
14
23
 
15
24
  constructor(
@@ -26,25 +35,21 @@ export class TimestampTxValidator<T extends AnyTx> implements TxValidator<T> {
26
35
  }
27
36
 
28
37
  validateTx(tx: T): Promise<TxValidationResult> {
29
- const includeByTimestamp = tx.data.includeByTimestamp;
30
- // 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`
31
40
  // function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
32
41
  const buildingBlock1 = this.values.blockNumber === 1;
33
42
 
34
- if (!buildingBlock1 && includeByTimestamp < this.values.timestamp) {
43
+ if (!buildingBlock1 && expirationTimestamp < this.values.timestamp) {
35
44
  if (tx.data.constants.anchorBlockHeader.globalVariables.blockNumber === 0) {
36
45
  this.#log.warn(
37
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.`,
38
47
  );
39
48
  }
40
49
  this.#log.verbose(
41
- `Rejecting tx ${getTxHash(
42
- tx,
43
- )} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${
44
- this.values.timestamp
45
- }.`,
50
+ `Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${expirationTimestamp}, timestamp: ${this.values.timestamp}.`,
46
51
  );
47
- return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP] });
52
+ return Promise.resolve({ result: 'invalid', reason: [TX_ERROR_INVALID_EXPIRATION_TIMESTAMP] });
48
53
  } else {
49
54
  return Promise.resolve({ result: 'valid' });
50
55
  }
@@ -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';
@@ -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.
@@ -82,6 +88,16 @@ export class DummyP2PService implements P2PService {
82
88
  */
83
89
  public registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
84
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
+
85
101
  /**
86
102
  * Sends a request to a peer.
87
103
  * @param _protocol - The protocol to send the request on.
@@ -125,14 +141,10 @@ export class DummyP2PService implements P2PService {
125
141
  return undefined;
126
142
  }
127
143
 
128
- validate(_txs: Tx[]): Promise<void> {
144
+ validateTxsReceivedInBlockProposal(_txs: Tx[]): Promise<void> {
129
145
  return Promise.resolve();
130
146
  }
131
147
 
132
- validatePropagatedTx(_tx: Tx, _peerId: PeerId): Promise<boolean> {
133
- return Promise.resolve(true);
134
- }
135
-
136
148
  addReqRespSubProtocol(
137
149
  _subProtocol: ReqRespSubProtocol,
138
150
  _handler: ReqRespSubProtocolHandler,
@@ -1,11 +1,11 @@
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
 
@@ -44,11 +44,10 @@ export function msgIdToStrFn(msgId: Uint8Array): string {
44
44
  * @param message - The libp2p message
45
45
  * @returns The message identifier
46
46
  */
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);
47
+ export async function getMsgIdFn({ topic, data }: Message): Promise<Uint8Array> {
48
+ const buffer = Buffer.concat([Buffer.from(topic), data]);
49
+ const hash = await webcrypto.subtle.digest('SHA-256', buffer);
50
+ return Buffer.from(hash.slice(0, 20));
52
51
  }
53
52
 
54
53
  const DefaultMaxSizesKb: Record<TopicType, number> = {
@@ -58,7 +57,8 @@ const DefaultMaxSizesKb: Record<TopicType, number> = {
58
57
  // Proposals may carry some tx objects, so we allow a larger size capped at 10mb
59
58
  // Note this may not be enough for carrying all tx objects in a block
60
59
  [TopicType.block_proposal]: 1024 * 10,
61
- // TODO(palla/mbps): Check size for checkpoint proposal
60
+ // Checkpoint proposals carry almost the same data as a block proposal (see the lastBlockProposal)
61
+ // Only diff is an additional header, which is pretty small compared to the 10mb limit
62
62
  [TopicType.checkpoint_proposal]: 1024 * 10,
63
63
  };
64
64
 
@@ -78,11 +78,11 @@ export class SnappyTransform implements DataTransform {
78
78
  return this.inboundTransformData(Buffer.from(data), topic);
79
79
  }
80
80
 
81
- public inboundTransformData(data: Buffer, topic?: TopicType): Buffer {
81
+ public inboundTransformData(data: Buffer, topic?: TopicType, maxSizeKbOverride?: number): Buffer {
82
82
  if (data.length === 0) {
83
83
  return data;
84
84
  }
85
- const maxSizeKb = this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
85
+ const maxSizeKb = maxSizeKbOverride ?? this.maxSizesKb[topic!] ?? this.defaultMaxSizeKb;
86
86
  const { decompressedSize } = readSnappyPreamble(data);
87
87
  if (decompressedSize > maxSizeKb * 1024) {
88
88
  this.logger.warn(`Decompressed size ${decompressedSize} exceeds maximum allowed size of ${maxSizeKb}kb`);