@aztec/p2p 0.0.1-commit.fffb133c → 0.0.1-dev

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 (501) 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 +17 -9
  5. package/dest/client/factory.d.ts +10 -10
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +59 -19
  8. package/dest/client/interface.d.ts +46 -33
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +41 -51
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +166 -224
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +304 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  19. package/dest/config.d.ts +60 -11
  20. package/dest/config.d.ts.map +1 -1
  21. package/dest/config.js +101 -33
  22. package/dest/errors/tx-pool.error.d.ts +8 -0
  23. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  24. package/dest/errors/tx-pool.error.js +9 -0
  25. package/dest/index.d.ts +2 -1
  26. package/dest/index.d.ts.map +1 -1
  27. package/dest/index.js +1 -0
  28. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
  29. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
  31. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
  34. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  35. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  36. package/dest/mem_pools/attestation_pool/index.js +1 -2
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  40. package/dest/mem_pools/index.d.ts +3 -2
  41. package/dest/mem_pools/index.d.ts.map +1 -1
  42. package/dest/mem_pools/index.js +1 -1
  43. package/dest/mem_pools/instrumentation.d.ts +1 -1
  44. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  45. package/dest/mem_pools/instrumentation.js +2 -2
  46. package/dest/mem_pools/interface.d.ts +5 -5
  47. package/dest/mem_pools/interface.d.ts.map +1 -1
  48. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
  49. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +2 -1
  51. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
  52. package/dest/mem_pools/tx_pool/priority.d.ts +2 -2
  53. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  54. package/dest/mem_pools/tx_pool/priority.js +4 -4
  55. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  56. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  57. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +3 -1
  58. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  59. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  61. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
  62. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
  64. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  65. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  67. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  97. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  98. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  99. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  100. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  101. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  102. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  103. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +213 -0
  104. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  105. package/dest/mem_pools/tx_pool_v2/interfaces.js +9 -0
  106. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +135 -0
  107. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  108. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +216 -0
  109. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  114. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +354 -0
  115. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  116. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  117. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +164 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +906 -0
  121. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
  122. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  123. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +7 -2
  124. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +6 -4
  125. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +10 -2
  127. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +6 -4
  128. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +16 -2
  130. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -8
  131. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/proposal_validator/proposal_validator.js +52 -40
  133. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  134. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  135. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +3 -3
  136. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +2 -1
  137. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -1
  138. package/dest/msg_validators/tx_validator/allowed_public_setup.js +24 -20
  139. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  140. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  141. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  142. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  143. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  145. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  146. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  147. package/dest/msg_validators/tx_validator/block_header_validator.js +5 -4
  148. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  149. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  150. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  151. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  152. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  153. package/dest/msg_validators/tx_validator/data_validator.js +39 -3
  154. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -4
  155. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/double_spend_validator.js +7 -6
  157. package/dest/msg_validators/tx_validator/factory.d.ts +137 -5
  158. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  159. package/dest/msg_validators/tx_validator/factory.js +255 -58
  160. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +1 -1
  161. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -1
  162. package/dest/msg_validators/tx_validator/fee_payer_balance.js +6 -2
  163. package/dest/msg_validators/tx_validator/gas_validator.d.ts +68 -3
  164. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  165. package/dest/msg_validators/tx_validator/gas_validator.js +106 -38
  166. package/dest/msg_validators/tx_validator/index.d.ts +3 -1
  167. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  168. package/dest/msg_validators/tx_validator/index.js +2 -0
  169. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +3 -2
  170. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  171. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  172. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  173. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  174. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  175. package/dest/msg_validators/tx_validator/phases_validator.d.ts +24 -3
  176. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  177. package/dest/msg_validators/tx_validator/phases_validator.js +75 -27
  178. package/dest/msg_validators/tx_validator/size_validator.d.ts +3 -1
  179. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -1
  180. package/dest/msg_validators/tx_validator/size_validator.js +4 -1
  181. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +22 -5
  182. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  183. package/dest/msg_validators/tx_validator/timestamp_validator.js +8 -8
  184. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  185. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  186. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  187. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  188. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  189. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  190. package/dest/services/data_store.d.ts +1 -1
  191. package/dest/services/data_store.d.ts.map +1 -1
  192. package/dest/services/data_store.js +10 -6
  193. package/dest/services/discv5/discV5_service.d.ts +1 -1
  194. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  195. package/dest/services/discv5/discV5_service.js +31 -9
  196. package/dest/services/dummy_service.d.ts +24 -4
  197. package/dest/services/dummy_service.d.ts.map +1 -1
  198. package/dest/services/dummy_service.js +46 -1
  199. package/dest/services/encoding.d.ts +7 -3
  200. package/dest/services/encoding.d.ts.map +1 -1
  201. package/dest/services/encoding.js +18 -11
  202. package/dest/services/gossipsub/index.d.ts +3 -0
  203. package/dest/services/gossipsub/index.d.ts.map +1 -0
  204. package/dest/services/gossipsub/index.js +2 -0
  205. package/dest/services/gossipsub/scoring.d.ts +21 -3
  206. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  207. package/dest/services/gossipsub/scoring.js +24 -7
  208. package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
  209. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  210. package/dest/services/gossipsub/topic_score_params.js +346 -0
  211. package/dest/services/index.d.ts +2 -1
  212. package/dest/services/index.d.ts.map +1 -1
  213. package/dest/services/index.js +1 -0
  214. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  215. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  216. package/dest/services/libp2p/instrumentation.js +14 -3
  217. package/dest/services/libp2p/libp2p_service.d.ts +100 -42
  218. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  219. package/dest/services/libp2p/libp2p_service.js +499 -383
  220. package/dest/services/peer-manager/metrics.d.ts +2 -2
  221. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  222. package/dest/services/peer-manager/metrics.js +20 -5
  223. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  224. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  225. package/dest/services/peer-manager/peer_manager.js +21 -12
  226. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  227. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  228. package/dest/services/peer-manager/peer_scoring.js +33 -4
  229. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +48 -0
  230. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  231. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +562 -0
  232. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  233. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  234. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  235. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +46 -0
  236. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  237. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  238. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +34 -0
  239. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  240. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +130 -0
  241. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  242. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  243. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  244. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  245. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  246. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  247. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  248. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  249. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  250. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -1
  251. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  252. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  253. package/dest/services/reqresp/interface.d.ts +12 -1
  254. package/dest/services/reqresp/interface.d.ts.map +1 -1
  255. package/dest/services/reqresp/interface.js +15 -1
  256. package/dest/services/reqresp/metrics.d.ts +6 -5
  257. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  258. package/dest/services/reqresp/metrics.js +17 -5
  259. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  260. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  261. package/dest/services/reqresp/protocols/block_txs/bitvector.js +5 -0
  262. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
  263. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  264. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +27 -9
  265. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +29 -6
  266. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  267. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +59 -13
  268. package/dest/services/reqresp/protocols/tx.d.ts +7 -1
  269. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  270. package/dest/services/reqresp/protocols/tx.js +20 -0
  271. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +5 -4
  272. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  273. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -8
  274. package/dest/services/reqresp/reqresp.d.ts +6 -1
  275. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  276. package/dest/services/reqresp/reqresp.js +85 -34
  277. package/dest/services/service.d.ts +42 -3
  278. package/dest/services/service.d.ts.map +1 -1
  279. package/dest/services/tx_collection/config.d.ts +22 -1
  280. package/dest/services/tx_collection/config.d.ts.map +1 -1
  281. package/dest/services/tx_collection/config.js +55 -1
  282. package/dest/services/tx_collection/fast_tx_collection.d.ts +7 -4
  283. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  284. package/dest/services/tx_collection/fast_tx_collection.js +71 -44
  285. package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
  286. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  287. package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
  288. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  289. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  290. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  291. package/dest/services/tx_collection/index.d.ts +3 -1
  292. package/dest/services/tx_collection/index.d.ts.map +1 -1
  293. package/dest/services/tx_collection/index.js +2 -0
  294. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  295. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  296. package/dest/services/tx_collection/instrumentation.js +10 -2
  297. package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
  298. package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
  299. package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
  300. package/dest/services/tx_collection/proposal_tx_collector.d.ts +49 -0
  301. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  302. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  303. package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
  304. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  305. package/dest/services/tx_collection/slow_tx_collection.js +60 -26
  306. package/dest/services/tx_collection/tx_collection.d.ts +25 -12
  307. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  308. package/dest/services/tx_collection/tx_collection.js +79 -7
  309. package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
  310. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  311. package/dest/services/tx_collection/tx_collection_sink.js +26 -29
  312. package/dest/services/tx_collection/tx_source.d.ts +13 -7
  313. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  314. package/dest/services/tx_collection/tx_source.js +26 -7
  315. package/dest/services/tx_file_store/config.d.ts +16 -0
  316. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  317. package/dest/services/tx_file_store/config.js +22 -0
  318. package/dest/services/tx_file_store/index.d.ts +4 -0
  319. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  320. package/dest/services/tx_file_store/index.js +3 -0
  321. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  322. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  323. package/dest/services/tx_file_store/instrumentation.js +29 -0
  324. package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
  325. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  326. package/dest/services/tx_file_store/tx_file_store.js +152 -0
  327. package/dest/services/tx_provider.d.ts +4 -4
  328. package/dest/services/tx_provider.d.ts.map +1 -1
  329. package/dest/services/tx_provider.js +9 -8
  330. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  331. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  332. package/dest/services/tx_provider_instrumentation.js +5 -5
  333. package/dest/test-helpers/index.d.ts +3 -1
  334. package/dest/test-helpers/index.d.ts.map +1 -1
  335. package/dest/test-helpers/index.js +2 -0
  336. package/dest/test-helpers/make-test-p2p-clients.d.ts +7 -8
  337. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  338. package/dest/test-helpers/make-test-p2p-clients.js +1 -2
  339. package/dest/test-helpers/mock-pubsub.d.ts +30 -4
  340. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  341. package/dest/test-helpers/mock-pubsub.js +105 -4
  342. package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
  343. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  344. package/dest/test-helpers/reqresp-nodes.js +4 -3
  345. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  346. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  347. package/dest/test-helpers/test_tx_provider.js +41 -0
  348. package/dest/test-helpers/testbench-utils.d.ts +163 -0
  349. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  350. package/dest/test-helpers/testbench-utils.js +367 -0
  351. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  352. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  353. package/dest/testbench/p2p_client_testbench_worker.js +221 -139
  354. package/dest/testbench/worker_client_manager.d.ts +53 -6
  355. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  356. package/dest/testbench/worker_client_manager.js +230 -45
  357. package/dest/util.d.ts +2 -2
  358. package/dest/util.d.ts.map +1 -1
  359. package/package.json +14 -14
  360. package/src/bootstrap/bootstrap.ts +15 -6
  361. package/src/client/factory.ts +112 -37
  362. package/src/client/interface.ts +56 -34
  363. package/src/client/p2p_client.ts +200 -269
  364. package/src/client/test/tx_proposal_collector/README.md +227 -0
  365. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +345 -0
  366. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  367. package/src/config.ts +160 -34
  368. package/src/errors/tx-pool.error.ts +12 -0
  369. package/src/index.ts +1 -0
  370. package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
  371. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
  372. package/src/mem_pools/attestation_pool/index.ts +9 -2
  373. package/src/mem_pools/attestation_pool/mocks.ts +2 -1
  374. package/src/mem_pools/index.ts +4 -1
  375. package/src/mem_pools/instrumentation.ts +2 -1
  376. package/src/mem_pools/interface.ts +4 -4
  377. package/src/mem_pools/tx_pool/README.md +1 -1
  378. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +2 -1
  379. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
  380. package/src/mem_pools/tx_pool/priority.ts +4 -4
  381. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +3 -1
  382. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  383. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  384. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
  385. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  386. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  387. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  388. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  389. package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
  390. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  391. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  392. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  393. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  394. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  395. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  396. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  397. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  398. package/src/mem_pools/tx_pool_v2/interfaces.ts +244 -0
  399. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +337 -0
  400. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  401. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
  402. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +235 -0
  403. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1087 -0
  404. package/src/msg_validators/attestation_validator/README.md +49 -0
  405. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +10 -4
  406. package/src/msg_validators/proposal_validator/README.md +123 -0
  407. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +14 -4
  408. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +20 -7
  409. package/src/msg_validators/proposal_validator/proposal_validator.ts +67 -44
  410. package/src/msg_validators/tx_validator/README.md +119 -0
  411. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +5 -5
  412. package/src/msg_validators/tx_validator/allowed_public_setup.ts +22 -27
  413. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  414. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  415. package/src/msg_validators/tx_validator/block_header_validator.ts +22 -11
  416. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  417. package/src/msg_validators/tx_validator/data_validator.ts +48 -3
  418. package/src/msg_validators/tx_validator/double_spend_validator.ts +15 -9
  419. package/src/msg_validators/tx_validator/factory.ts +413 -56
  420. package/src/msg_validators/tx_validator/fee_payer_balance.ts +6 -2
  421. package/src/msg_validators/tx_validator/gas_validator.ts +132 -30
  422. package/src/msg_validators/tx_validator/index.ts +2 -0
  423. package/src/msg_validators/tx_validator/metadata_validator.ts +6 -3
  424. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  425. package/src/msg_validators/tx_validator/phases_validator.ts +87 -30
  426. package/src/msg_validators/tx_validator/size_validator.ts +6 -2
  427. package/src/msg_validators/tx_validator/timestamp_validator.ts +29 -21
  428. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  429. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  430. package/src/services/data_store.ts +10 -7
  431. package/src/services/discv5/discV5_service.ts +23 -5
  432. package/src/services/dummy_service.ts +59 -2
  433. package/src/services/encoding.ts +18 -10
  434. package/src/services/gossipsub/README.md +641 -0
  435. package/src/services/gossipsub/index.ts +2 -0
  436. package/src/services/gossipsub/scoring.ts +29 -5
  437. package/src/services/gossipsub/topic_score_params.ts +487 -0
  438. package/src/services/index.ts +1 -0
  439. package/src/services/libp2p/instrumentation.ts +15 -2
  440. package/src/services/libp2p/libp2p_service.ts +544 -419
  441. package/src/services/peer-manager/metrics.ts +21 -4
  442. package/src/services/peer-manager/peer_manager.ts +18 -11
  443. package/src/services/peer-manager/peer_scoring.ts +29 -1
  444. package/src/services/reqresp/README.md +229 -0
  445. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  446. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  447. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  448. package/src/services/reqresp/batch-tx-requester/interface.ts +53 -0
  449. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +161 -0
  450. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  451. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  452. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  453. package/src/services/reqresp/connection-sampler/connection_sampler.ts +16 -0
  454. package/src/services/reqresp/interface.ts +29 -1
  455. package/src/services/reqresp/metrics.ts +34 -9
  456. package/src/services/reqresp/protocols/block_txs/bitvector.ts +7 -0
  457. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +35 -12
  458. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +74 -9
  459. package/src/services/reqresp/protocols/tx.ts +22 -0
  460. package/src/services/reqresp/rate-limiter/rate_limiter.ts +13 -9
  461. package/src/services/reqresp/reqresp.ts +97 -32
  462. package/src/services/service.ts +55 -2
  463. package/src/services/tx_collection/config.ts +83 -1
  464. package/src/services/tx_collection/fast_tx_collection.ts +93 -47
  465. package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
  466. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  467. package/src/services/tx_collection/index.ts +6 -0
  468. package/src/services/tx_collection/instrumentation.ts +17 -2
  469. package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
  470. package/src/services/tx_collection/proposal_tx_collector.ts +113 -0
  471. package/src/services/tx_collection/slow_tx_collection.ts +66 -33
  472. package/src/services/tx_collection/tx_collection.ts +117 -20
  473. package/src/services/tx_collection/tx_collection_sink.ts +30 -34
  474. package/src/services/tx_collection/tx_source.ts +28 -8
  475. package/src/services/tx_file_store/config.ts +37 -0
  476. package/src/services/tx_file_store/index.ts +3 -0
  477. package/src/services/tx_file_store/instrumentation.ts +36 -0
  478. package/src/services/tx_file_store/tx_file_store.ts +175 -0
  479. package/src/services/tx_provider.ts +10 -9
  480. package/src/services/tx_provider_instrumentation.ts +11 -5
  481. package/src/test-helpers/index.ts +2 -0
  482. package/src/test-helpers/make-test-p2p-clients.ts +3 -5
  483. package/src/test-helpers/mock-pubsub.ts +146 -9
  484. package/src/test-helpers/reqresp-nodes.ts +4 -6
  485. package/src/test-helpers/test_tx_provider.ts +64 -0
  486. package/src/test-helpers/testbench-utils.ts +431 -0
  487. package/src/testbench/p2p_client_testbench_worker.ts +334 -131
  488. package/src/testbench/worker_client_manager.ts +311 -47
  489. package/src/util.ts +7 -1
  490. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
  491. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  492. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
  493. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
  494. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  495. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
  496. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +0 -23
  497. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +0 -1
  498. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +0 -212
  499. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
  500. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
  501. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +0 -230
@@ -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,
@@ -242,10 +242,17 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
242
242
  }
243
243
 
244
244
  private async onEnrAdded(enr: ENR) {
245
- const multiAddrTcp = await enr.getFullMultiaddr('tcp');
246
- const multiAddrUdp = await enr.getFullMultiaddr('udp');
247
- this.logger.debug(`Added ENR ${enr.encodeTxt()}`, { multiAddrTcp, multiAddrUdp, nodeId: enr.nodeId });
248
- this.onDiscovered(enr);
245
+ try {
246
+ const multiAddrTcp = await enr.getFullMultiaddr('tcp');
247
+ const multiAddrUdp = await enr.getFullMultiaddr('udp');
248
+ this.logger.debug(`Added ENR ${enr.encodeTxt()}`, { multiAddrTcp, multiAddrUdp, nodeId: enr.nodeId });
249
+ this.onDiscovered(enr);
250
+ } catch (err) {
251
+ // A malformed ENR address field (e.g. a 3-byte TCP port) makes @nethermindeth/enr throw while
252
+ // parsing the multiaddr. This is an async event listener, so an unhandled rejection would crash
253
+ // the process — catch, log, and drop the ENR instead.
254
+ this.logger.warn(`Dropping ENR with unparseable address`, { nodeId: enr.nodeId, err });
255
+ }
249
256
  }
250
257
 
251
258
  private isOurBootnode(enr: ENR) {
@@ -281,6 +288,17 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
281
288
  return false;
282
289
  }
283
290
 
291
+ // A malformed TCP field (e.g. a non-2-byte port) makes @nethermindeth/enr throw while building the
292
+ // multiaddr. Reject such an ENR here so it's never emitted as a full peer or re-parsed by an
293
+ // unguarded listener (which would crash the process). A missing TCP addr is allowed — those peers
294
+ // are simply skipped at dial time.
295
+ try {
296
+ enr.getLocationMultiaddr('tcp');
297
+ } catch (err) {
298
+ this.logger.debug(`Peer node ${enr.nodeId} has an unparseable TCP address`, { err });
299
+ return false;
300
+ }
301
+
284
302
  // And check it has the correct version
285
303
  let compressedVersion;
286
304
  try {
@@ -1,6 +1,6 @@
1
1
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
3
- import type { Gossipable, PeerErrorSeverity } from '@aztec/stdlib/p2p';
3
+ import type { Gossipable, PeerErrorSeverity, TopicType } from '@aztec/stdlib/p2p';
4
4
  import { Tx, TxHash } from '@aztec/stdlib/tx';
5
5
 
6
6
  import type { PeerId } from '@libp2p/interface';
@@ -8,7 +8,9 @@ import type { ENR } from '@nethermindeth/enr';
8
8
  import EventEmitter from 'events';
9
9
 
10
10
  import type { PeerManagerInterface } from './peer-manager/interface.js';
11
+ import type { BatchTxRequesterLibP2PService } from './reqresp/batch-tx-requester/interface.js';
11
12
  import type { P2PReqRespConfig } from './reqresp/config.js';
13
+ import type { ConnectionSampler } from './reqresp/connection-sampler/connection_sampler.js';
12
14
  import { type AuthRequest, StatusMessage } from './reqresp/index.js';
13
15
  import type {
14
16
  ReqRespInterface,
@@ -24,6 +26,8 @@ import { ReqRespStatus } from './reqresp/status.js';
24
26
  import {
25
27
  type P2PBlockReceivedCallback,
26
28
  type P2PCheckpointReceivedCallback,
29
+ type P2PDuplicateAttestationCallback,
30
+ type P2PDuplicateProposalCallback,
27
31
  type P2PService,
28
32
  type PeerDiscoveryService,
29
33
  PeerDiscoveryState,
@@ -40,6 +44,10 @@ export class DummyP2PService implements P2PService {
40
44
  return [];
41
45
  }
42
46
 
47
+ getGossipMeshPeerCount(_topicType: TopicType): number {
48
+ return 0;
49
+ }
50
+
43
51
  /**
44
52
  * Starts the dummy implementation.
45
53
  * @returns A resolved promise.
@@ -80,6 +88,16 @@ export class DummyP2PService implements P2PService {
80
88
  */
81
89
  public registerCheckpointReceivedCallback(_callback: P2PCheckpointReceivedCallback) {}
82
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
+
83
101
  /**
84
102
  * Sends a request to a peer.
85
103
  * @param _protocol - The protocol to send the request on.
@@ -106,6 +124,15 @@ export class DummyP2PService implements P2PService {
106
124
  return Promise.resolve([]);
107
125
  }
108
126
 
127
+ public sendRequestToPeer(
128
+ _peerId: PeerId,
129
+ _subProtocol: ReqRespSubProtocol,
130
+ _payload: Buffer,
131
+ _dialTimeout?: number,
132
+ ): Promise<ReqRespResponse> {
133
+ return Promise.resolve({ status: ReqRespStatus.SUCCESS, data: Buffer.from([]) });
134
+ }
135
+
109
136
  /**
110
137
  * Returns the ENR of the peer.
111
138
  * @returns The ENR of the peer, otherwise undefined.
@@ -114,7 +141,7 @@ export class DummyP2PService implements P2PService {
114
141
  return undefined;
115
142
  }
116
143
 
117
- validate(_txs: Tx[]): Promise<void> {
144
+ validateTxsReceivedInBlockProposal(_txs: Tx[]): Promise<void> {
118
145
  return Promise.resolve();
119
146
  }
120
147
 
@@ -132,6 +159,27 @@ export class DummyP2PService implements P2PService {
132
159
 
133
160
  //this is no-op
134
161
  registerThisValidatorAddresses(_address: EthAddress[]): void {}
162
+
163
+ /**
164
+ * Get dummy BatchTxRequesterLibP2PService for testing
165
+ */
166
+ getBatchTxRequesterService(): BatchTxRequesterLibP2PService {
167
+ return {
168
+ reqResp: this, // The dummy service implements ReqRespInterface
169
+ connectionSampler: new DummyReqResp().getConnectionSampler(),
170
+ txValidatorConfig: {
171
+ l1ChainId: 1,
172
+ rollupVersion: 1,
173
+ proofVerifier: {
174
+ verifyProof: () => Promise.resolve({ valid: true, durationMs: 0, totalDurationMs: 0 }),
175
+ stop: () => Promise.resolve(),
176
+ },
177
+ },
178
+ peerScoring: {
179
+ penalizePeer: (_peerId, _penalty) => {},
180
+ },
181
+ };
182
+ }
135
183
  }
136
184
 
137
185
  /**
@@ -268,6 +316,15 @@ export class DummyReqResp implements ReqRespInterface {
268
316
  return Promise.resolve({ status: ReqRespStatus.SUCCESS, data: Buffer.from([]) });
269
317
  }
270
318
 
319
+ /**
320
+ * Get dummy connection sampler for testing
321
+ */
322
+ getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'> {
323
+ return {
324
+ getPeerListSortedByConnectionCountAsc: () => [],
325
+ };
326
+ }
327
+
271
328
  addSubProtocol(
272
329
  _subProtocol: ReqRespSubProtocol,
273
330
  _handler: ReqRespSubProtocolHandler,
@@ -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 }));