@aztec/p2p 0.0.1-commit.b655e406 → 0.0.1-commit.c2595eba

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 (444) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +4 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +4 -4
  4. package/dest/client/factory.d.ts +2 -2
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +8 -8
  7. package/dest/client/index.d.ts +1 -1
  8. package/dest/client/interface.d.ts +18 -3
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +16 -37
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +464 -126
  13. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts +2 -0
  14. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.d.ts.map +1 -0
  15. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +305 -0
  16. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts +73 -0
  17. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.d.ts.map +1 -0
  18. package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.js +8 -0
  19. package/dest/config.d.ts +69 -60
  20. package/dest/config.d.ts.map +1 -1
  21. package/dest/config.js +23 -14
  22. package/dest/enr/generate-enr.d.ts +1 -1
  23. package/dest/enr/index.d.ts +1 -1
  24. package/dest/errors/attestation-pool.error.d.ts +7 -0
  25. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  26. package/dest/errors/attestation-pool.error.js +12 -0
  27. package/dest/errors/reqresp.error.d.ts +1 -1
  28. package/dest/errors/reqresp.error.d.ts.map +1 -1
  29. package/dest/index.d.ts +1 -1
  30. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +77 -36
  31. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  32. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  34. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +241 -266
  35. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  36. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +24 -14
  37. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  38. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +123 -95
  39. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +18 -12
  40. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  41. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +91 -108
  42. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -10
  43. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  44. package/dest/mem_pools/attestation_pool/mocks.js +17 -13
  45. package/dest/mem_pools/index.d.ts +1 -1
  46. package/dest/mem_pools/instrumentation.d.ts +9 -1
  47. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  48. package/dest/mem_pools/instrumentation.js +37 -10
  49. package/dest/mem_pools/interface.d.ts +3 -4
  50. package/dest/mem_pools/interface.d.ts.map +1 -1
  51. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +33 -58
  52. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +314 -335
  54. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +32 -0
  55. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  56. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +112 -0
  57. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +157 -0
  58. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  59. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +52 -0
  60. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +16 -0
  61. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  62. package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +122 -0
  63. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  65. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  66. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  67. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  68. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +78 -0
  69. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  70. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  71. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  72. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts +25 -0
  73. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.d.ts.map +1 -0
  74. package/dest/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.js +57 -0
  75. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  76. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  77. package/dest/mem_pools/tx_pool/index.js +0 -1
  78. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  79. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  80. package/dest/mem_pools/tx_pool/priority.js +6 -1
  81. package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -6
  82. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  83. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  84. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  85. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -24
  86. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -6
  87. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  88. package/dest/msg_validators/attestation_validator/attestation_validator.js +57 -24
  89. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  90. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  91. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +76 -0
  92. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  93. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  94. package/dest/msg_validators/attestation_validator/index.js +1 -0
  95. package/dest/msg_validators/clock_tolerance.d.ts +21 -0
  96. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  97. package/dest/msg_validators/clock_tolerance.js +37 -0
  98. package/dest/msg_validators/index.d.ts +2 -2
  99. package/dest/msg_validators/index.d.ts.map +1 -1
  100. package/dest/msg_validators/index.js +1 -1
  101. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +1 -1
  102. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -1
  103. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  104. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  105. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  106. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  107. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  108. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  109. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  110. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  111. package/dest/msg_validators/proposal_validator/index.js +3 -0
  112. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  113. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  114. package/dest/msg_validators/proposal_validator/proposal_validator.js +104 -0
  115. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  116. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  117. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +212 -0
  118. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  119. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  120. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +1 -1
  121. package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
  122. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
  123. package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
  124. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +5 -4
  125. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/block_header_validator.js +3 -2
  127. package/dest/msg_validators/tx_validator/data_validator.d.ts +3 -1
  128. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  129. package/dest/msg_validators/tx_validator/data_validator.js +4 -1
  130. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +3 -2
  131. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  132. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -2
  133. package/dest/msg_validators/tx_validator/factory.d.ts +10 -4
  134. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  135. package/dest/msg_validators/tx_validator/factory.js +22 -12
  136. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  137. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  138. package/dest/msg_validators/tx_validator/fee_payer_balance.js +20 -0
  139. package/dest/msg_validators/tx_validator/gas_validator.d.ts +3 -2
  140. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  141. package/dest/msg_validators/tx_validator/gas_validator.js +11 -16
  142. package/dest/msg_validators/tx_validator/index.d.ts +2 -1
  143. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  144. package/dest/msg_validators/tx_validator/index.js +1 -0
  145. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +4 -3
  146. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  147. package/dest/msg_validators/tx_validator/metadata_validator.js +2 -2
  148. package/dest/msg_validators/tx_validator/phases_validator.d.ts +3 -2
  149. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  150. package/dest/msg_validators/tx_validator/phases_validator.js +6 -4
  151. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  152. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  153. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  154. package/dest/msg_validators/tx_validator/test_utils.d.ts +2 -2
  155. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -1
  156. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +5 -3
  157. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  158. package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
  159. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +3 -2
  160. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -1
  161. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +2 -2
  162. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +3 -2
  163. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  164. package/dest/msg_validators/tx_validator/tx_proof_validator.js +2 -2
  165. package/dest/services/data_store.d.ts +1 -1
  166. package/dest/services/data_store.d.ts.map +1 -1
  167. package/dest/services/discv5/discV5_service.d.ts +1 -1
  168. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  169. package/dest/services/discv5/discV5_service.js +1 -1
  170. package/dest/services/dummy_service.d.ts +18 -2
  171. package/dest/services/dummy_service.d.ts.map +1 -1
  172. package/dest/services/dummy_service.js +42 -0
  173. package/dest/services/encoding.d.ts +1 -1
  174. package/dest/services/encoding.d.ts.map +1 -1
  175. package/dest/services/encoding.js +7 -6
  176. package/dest/services/gossipsub/scoring.d.ts +1 -1
  177. package/dest/services/index.d.ts +1 -1
  178. package/dest/services/libp2p/instrumentation.d.ts +3 -1
  179. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  180. package/dest/services/libp2p/instrumentation.js +36 -71
  181. package/dest/services/libp2p/libp2p_service.d.ts +48 -81
  182. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  183. package/dest/services/libp2p/libp2p_service.js +926 -193
  184. package/dest/services/peer-manager/interface.d.ts +1 -1
  185. package/dest/services/peer-manager/metrics.d.ts +9 -2
  186. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  187. package/dest/services/peer-manager/metrics.js +39 -16
  188. package/dest/services/peer-manager/peer_manager.d.ts +2 -33
  189. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  190. package/dest/services/peer-manager/peer_manager.js +6 -12
  191. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  192. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  193. package/dest/services/peer-manager/peer_scoring.js +43 -2
  194. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +47 -0
  195. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  196. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +566 -0
  197. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  198. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  199. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  200. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  201. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  202. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  203. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +37 -0
  204. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  205. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +151 -0
  206. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +54 -0
  207. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  208. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +139 -0
  209. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +20 -0
  210. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  211. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +21 -0
  212. package/dest/services/reqresp/config.d.ts +1 -1
  213. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +22 -3
  214. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  215. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +63 -4
  216. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -4
  217. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  218. package/dest/services/reqresp/connection-sampler/connection_sampler.js +12 -0
  219. package/dest/services/reqresp/constants.d.ts +12 -0
  220. package/dest/services/reqresp/constants.d.ts.map +1 -0
  221. package/dest/services/reqresp/constants.js +7 -0
  222. package/dest/services/reqresp/index.d.ts +1 -1
  223. package/dest/services/reqresp/interface.d.ts +4 -2
  224. package/dest/services/reqresp/interface.d.ts.map +1 -1
  225. package/dest/services/reqresp/interface.js +1 -1
  226. package/dest/services/reqresp/metrics.d.ts +6 -5
  227. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  228. package/dest/services/reqresp/metrics.js +17 -21
  229. package/dest/services/reqresp/protocols/auth.d.ts +2 -2
  230. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -1
  231. package/dest/services/reqresp/protocols/auth.js +2 -2
  232. package/dest/services/reqresp/protocols/block.d.ts +1 -1
  233. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  234. package/dest/services/reqresp/protocols/block.js +3 -2
  235. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +5 -1
  236. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -1
  237. package/dest/services/reqresp/protocols/block_txs/bitvector.js +12 -0
  238. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +1 -1
  239. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
  240. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +14 -1
  241. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +17 -7
  242. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
  243. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +34 -4
  244. package/dest/services/reqresp/protocols/block_txs/index.d.ts +1 -1
  245. package/dest/services/reqresp/protocols/goodbye.d.ts +1 -1
  246. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  247. package/dest/services/reqresp/protocols/index.d.ts +1 -1
  248. package/dest/services/reqresp/protocols/ping.d.ts +1 -1
  249. package/dest/services/reqresp/protocols/status.d.ts +6 -5
  250. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  251. package/dest/services/reqresp/protocols/status.js +7 -3
  252. package/dest/services/reqresp/protocols/tx.d.ts +2 -3
  253. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  254. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  255. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +2 -2
  256. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  257. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  258. package/dest/services/reqresp/reqresp.d.ts +6 -41
  259. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  260. package/dest/services/reqresp/reqresp.js +460 -46
  261. package/dest/services/reqresp/status.d.ts +2 -2
  262. package/dest/services/reqresp/status.d.ts.map +1 -1
  263. package/dest/services/service.d.ts +19 -3
  264. package/dest/services/service.d.ts.map +1 -1
  265. package/dest/services/tx_collection/config.d.ts +4 -1
  266. package/dest/services/tx_collection/config.d.ts.map +1 -1
  267. package/dest/services/tx_collection/config.js +10 -2
  268. package/dest/services/tx_collection/fast_tx_collection.d.ts +9 -12
  269. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
  270. package/dest/services/tx_collection/fast_tx_collection.js +16 -5
  271. package/dest/services/tx_collection/index.d.ts +2 -1
  272. package/dest/services/tx_collection/index.d.ts.map +1 -1
  273. package/dest/services/tx_collection/index.js +1 -0
  274. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  275. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  276. package/dest/services/tx_collection/instrumentation.js +10 -13
  277. package/dest/services/tx_collection/proposal_tx_collector.d.ts +48 -0
  278. package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -0
  279. package/dest/services/tx_collection/proposal_tx_collector.js +50 -0
  280. package/dest/services/tx_collection/slow_tx_collection.d.ts +4 -5
  281. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
  282. package/dest/services/tx_collection/slow_tx_collection.js +2 -1
  283. package/dest/services/tx_collection/tx_collection.d.ts +10 -10
  284. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
  285. package/dest/services/tx_collection/tx_collection.js +5 -5
  286. package/dest/services/tx_collection/tx_collection_sink.d.ts +3 -3
  287. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
  288. package/dest/services/tx_collection/tx_source.d.ts +1 -1
  289. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  290. package/dest/services/tx_provider.d.ts +4 -2
  291. package/dest/services/tx_provider.d.ts.map +1 -1
  292. package/dest/services/tx_provider.js +11 -2
  293. package/dest/services/tx_provider_instrumentation.d.ts +5 -2
  294. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  295. package/dest/services/tx_provider_instrumentation.js +14 -14
  296. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  297. package/dest/test-helpers/get-ports.d.ts +1 -1
  298. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  299. package/dest/test-helpers/index.d.ts +3 -1
  300. package/dest/test-helpers/index.d.ts.map +1 -1
  301. package/dest/test-helpers/index.js +2 -0
  302. package/dest/test-helpers/make-enrs.d.ts +1 -1
  303. package/dest/test-helpers/make-test-p2p-clients.d.ts +2 -2
  304. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  305. package/dest/test-helpers/mock-pubsub.d.ts +4 -4
  306. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
  307. package/dest/test-helpers/mock-tx-helpers.d.ts +2 -2
  308. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -1
  309. package/dest/test-helpers/mock-tx-helpers.js +1 -1
  310. package/dest/test-helpers/reqresp-nodes.d.ts +2 -2
  311. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  312. package/dest/test-helpers/test_tx_provider.d.ts +40 -0
  313. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  314. package/dest/test-helpers/test_tx_provider.js +41 -0
  315. package/dest/test-helpers/testbench-utils.d.ts +158 -0
  316. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  317. package/dest/test-helpers/testbench-utils.js +297 -0
  318. package/dest/testbench/p2p_client_testbench_worker.d.ts +28 -2
  319. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  320. package/dest/testbench/p2p_client_testbench_worker.js +218 -120
  321. package/dest/testbench/parse_log_file.d.ts +1 -1
  322. package/dest/testbench/testbench.d.ts +1 -1
  323. package/dest/testbench/worker_client_manager.d.ts +51 -6
  324. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  325. package/dest/testbench/worker_client_manager.js +226 -39
  326. package/dest/types/index.d.ts +1 -1
  327. package/dest/util.d.ts +2 -1
  328. package/dest/util.d.ts.map +1 -1
  329. package/dest/util.js +11 -2
  330. package/dest/versioning.d.ts +1 -1
  331. package/package.json +19 -18
  332. package/src/bootstrap/bootstrap.ts +7 -4
  333. package/src/client/factory.ts +11 -20
  334. package/src/client/interface.ts +20 -2
  335. package/src/client/p2p_client.ts +108 -155
  336. package/src/client/test/tx_proposal_collector/README.md +227 -0
  337. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +336 -0
  338. package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker_protocol.ts +43 -0
  339. package/src/config.ts +36 -20
  340. package/src/errors/attestation-pool.error.ts +13 -0
  341. package/src/mem_pools/attestation_pool/attestation_pool.ts +86 -35
  342. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +243 -278
  343. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +175 -111
  344. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +147 -136
  345. package/src/mem_pools/attestation_pool/mocks.ts +21 -15
  346. package/src/mem_pools/instrumentation.ts +48 -10
  347. package/src/mem_pools/interface.ts +2 -4
  348. package/src/mem_pools/tx_pool/README.md +270 -0
  349. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +367 -371
  350. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +132 -0
  351. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +208 -0
  352. package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +162 -0
  353. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  354. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +93 -0
  355. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  356. package/src/mem_pools/tx_pool/eviction/nullifier_conflict_pre_add_rule.ts +75 -0
  357. package/src/mem_pools/tx_pool/index.ts +0 -1
  358. package/src/mem_pools/tx_pool/priority.ts +8 -1
  359. package/src/mem_pools/tx_pool/tx_pool.ts +11 -5
  360. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +23 -17
  361. package/src/msg_validators/attestation_validator/attestation_validator.ts +45 -32
  362. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +94 -0
  363. package/src/msg_validators/attestation_validator/index.ts +1 -0
  364. package/src/msg_validators/clock_tolerance.ts +51 -0
  365. package/src/msg_validators/index.ts +1 -1
  366. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  367. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  368. package/src/msg_validators/proposal_validator/index.ts +3 -0
  369. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  370. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +230 -0
  371. package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
  372. package/src/msg_validators/tx_validator/block_header_validator.ts +6 -5
  373. package/src/msg_validators/tx_validator/data_validator.ts +18 -6
  374. package/src/msg_validators/tx_validator/double_spend_validator.ts +4 -3
  375. package/src/msg_validators/tx_validator/factory.ts +67 -25
  376. package/src/msg_validators/tx_validator/fee_payer_balance.ts +40 -0
  377. package/src/msg_validators/tx_validator/gas_validator.ts +17 -28
  378. package/src/msg_validators/tx_validator/index.ts +1 -0
  379. package/src/msg_validators/tx_validator/metadata_validator.ts +19 -8
  380. package/src/msg_validators/tx_validator/phases_validator.ts +8 -4
  381. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  382. package/src/msg_validators/tx_validator/test_utils.ts +1 -1
  383. package/src/msg_validators/tx_validator/timestamp_validator.ts +11 -5
  384. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +8 -3
  385. package/src/msg_validators/tx_validator/tx_proof_validator.ts +8 -3
  386. package/src/services/discv5/discV5_service.ts +1 -1
  387. package/src/services/dummy_service.ts +51 -0
  388. package/src/services/encoding.ts +6 -5
  389. package/src/services/libp2p/instrumentation.ts +39 -71
  390. package/src/services/libp2p/libp2p_service.ts +628 -194
  391. package/src/services/peer-manager/metrics.ts +44 -16
  392. package/src/services/peer-manager/peer_manager.ts +7 -4
  393. package/src/services/peer-manager/peer_scoring.ts +45 -3
  394. package/src/services/reqresp/batch-tx-requester/README.md +305 -0
  395. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +706 -0
  396. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  397. package/src/services/reqresp/batch-tx-requester/interface.ts +57 -0
  398. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +209 -0
  399. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +205 -0
  400. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +37 -0
  401. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +65 -4
  402. package/src/services/reqresp/connection-sampler/connection_sampler.ts +19 -1
  403. package/src/services/reqresp/constants.ts +14 -0
  404. package/src/services/reqresp/interface.ts +4 -1
  405. package/src/services/reqresp/metrics.ts +36 -27
  406. package/src/services/reqresp/protocols/auth.ts +2 -2
  407. package/src/services/reqresp/protocols/block.ts +3 -2
  408. package/src/services/reqresp/protocols/block_txs/bitvector.ts +16 -0
  409. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +16 -2
  410. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -5
  411. package/src/services/reqresp/protocols/status.ts +16 -12
  412. package/src/services/reqresp/protocols/tx.ts +1 -2
  413. package/src/services/reqresp/reqresp.ts +66 -19
  414. package/src/services/service.ts +23 -4
  415. package/src/services/tx_collection/config.ts +16 -2
  416. package/src/services/tx_collection/fast_tx_collection.ts +39 -15
  417. package/src/services/tx_collection/index.ts +5 -0
  418. package/src/services/tx_collection/instrumentation.ts +5 -13
  419. package/src/services/tx_collection/proposal_tx_collector.ts +114 -0
  420. package/src/services/tx_collection/slow_tx_collection.ts +5 -4
  421. package/src/services/tx_collection/tx_collection.ts +10 -9
  422. package/src/services/tx_provider.ts +19 -3
  423. package/src/services/tx_provider_instrumentation.ts +24 -14
  424. package/src/test-helpers/index.ts +2 -0
  425. package/src/test-helpers/mock-pubsub.ts +1 -1
  426. package/src/test-helpers/mock-tx-helpers.ts +1 -1
  427. package/src/test-helpers/reqresp-nodes.ts +1 -1
  428. package/src/test-helpers/test_tx_provider.ts +64 -0
  429. package/src/test-helpers/testbench-utils.ts +374 -0
  430. package/src/testbench/p2p_client_testbench_worker.ts +338 -116
  431. package/src/testbench/worker_client_manager.ts +304 -42
  432. package/src/util.ts +12 -2
  433. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -80
  434. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  435. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -238
  436. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  437. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  438. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -70
  439. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  440. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  441. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  442. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -283
  443. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -81
  444. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,15 +1,19 @@
1
- import { SecretValue } from '@aztec/foundation/config';
2
1
  import { EthAddress } from '@aztec/foundation/eth-address';
3
2
  import { sleep } from '@aztec/foundation/sleep';
4
3
  import { fork } from 'child_process';
4
+ import { existsSync } from 'fs';
5
5
  import path from 'path';
6
6
  import { fileURLToPath } from 'url';
7
7
  import { getP2PDefaultConfig } from '../config.js';
8
8
  import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-private-keys.js';
9
9
  import { getPorts } from '../test-helpers/get-ports.js';
10
10
  import { makeEnr, makeEnrs } from '../test-helpers/make-enrs.js';
11
+ import { BENCHMARK_CONSTANTS } from '../test-helpers/testbench-utils.js';
11
12
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
12
- const workerPath = path.join(__dirname, '../../dest/testbench/p2p_client_testbench_worker.js');
13
+ const p2pRoot = path.resolve(__dirname, '../..');
14
+ const workerTsPath = path.join(__dirname, 'p2p_client_testbench_worker.ts');
15
+ const workerJsPath = path.join(p2pRoot, 'dest/testbench/p2p_client_testbench_worker.js');
16
+ const tsconfigPath = path.join(p2pRoot, 'tsconfig.json');
13
17
  const testChainConfig = {
14
18
  l1ChainId: 31337,
15
19
  rollupVersion: 1,
@@ -22,6 +26,7 @@ class WorkerClientManager {
22
26
  peerIdPrivateKeys = [];
23
27
  peerEnrs = [];
24
28
  ports = [];
29
+ peerIds = [];
25
30
  p2pConfig;
26
31
  logger;
27
32
  messageReceivedByClient = [];
@@ -36,12 +41,15 @@ class WorkerClientManager {
36
41
  });
37
42
  }
38
43
  /**
39
- * Creates a client configuration object
44
+ * Creates a client configuration object for IPC.
45
+ * Note: We send the raw peerIdPrivateKey string instead of SecretValue
46
+ * because SecretValue.toJSON() returns '[Redacted]', losing the value.
47
+ * The worker must re-wrap it in SecretValue.
40
48
  */ createClientConfig(clientIndex, port, otherNodes) {
41
49
  return {
42
50
  ...getP2PDefaultConfig(),
43
51
  p2pEnabled: true,
44
- peerIdPrivateKey: new SecretValue(this.peerIdPrivateKeys[clientIndex]),
52
+ peerIdPrivateKey: this.peerIdPrivateKeys[clientIndex],
45
53
  listenAddress: '127.0.0.1',
46
54
  p2pIp: '127.0.0.1',
47
55
  p2pPort: port,
@@ -52,9 +60,26 @@ class WorkerClientManager {
52
60
  };
53
61
  }
54
62
  /**
55
- * Spawns a worker process and returns a promise that resolves when the worker is ready
63
+ * Spawns a worker process and returns a promise that resolves when the worker is ready.
64
+ * Config uses raw string for peerIdPrivateKey (not SecretValue) for IPC serialization.
56
65
  */ spawnWorkerProcess(config, clientIndex) {
57
- const childProcess = fork(workerPath);
66
+ const useCompiled = existsSync(workerJsPath);
67
+ const workerPath = useCompiled ? workerJsPath : workerTsPath;
68
+ const execArgv = [
69
+ ...process.execArgv
70
+ ];
71
+ if (!useCompiled && !execArgv.includes('ts-node/esm')) {
72
+ execArgv.push('--loader', 'ts-node/esm');
73
+ }
74
+ const env = {
75
+ ...process.env,
76
+ TS_NODE_PROJECT: tsconfigPath
77
+ };
78
+ const childProcess = fork(workerPath, {
79
+ cwd: p2pRoot,
80
+ execArgv,
81
+ env
82
+ });
58
83
  childProcess.send({
59
84
  type: 'START',
60
85
  config,
@@ -73,29 +98,54 @@ class WorkerClientManager {
73
98
  });
74
99
  // Create ready signal promise
75
100
  const readySignal = new Promise((resolve, reject)=>{
76
- // Set a timeout to avoid hanging indefinitely
101
+ let resolved = false;
77
102
  const timeout = setTimeout(()=>{
103
+ if (resolved) {
104
+ return;
105
+ }
106
+ resolved = true;
107
+ childProcess.off('message', messageHandler);
108
+ childProcess.off('exit', exitHandler);
78
109
  reject(new Error(`Timeout waiting for worker ${clientIndex} to be ready`));
79
- }, 30000); // 30 second timeout
80
- childProcess.once('message', (msg)=>{
81
- clearTimeout(timeout);
110
+ }, BENCHMARK_CONSTANTS.WORKER_READY_TIMEOUT_MS);
111
+ const messageHandler = (msg)=>{
112
+ if (resolved) {
113
+ return;
114
+ }
115
+ // Only handle READY or ERROR messages; ignore others (e.g., GOSSIP_RECEIVED)
82
116
  if (msg.type === 'READY') {
117
+ resolved = true;
118
+ clearTimeout(timeout);
119
+ childProcess.off('message', messageHandler);
120
+ childProcess.off('exit', exitHandler);
121
+ if (typeof msg.peerId === 'string') {
122
+ this.peerIds[clientIndex] = msg.peerId;
123
+ }
83
124
  resolve();
84
- }
85
- // For future use
86
- if (msg.type === 'ERROR') {
125
+ } else if (msg.type === 'ERROR') {
126
+ resolved = true;
127
+ clearTimeout(timeout);
128
+ childProcess.off('message', messageHandler);
129
+ childProcess.off('exit', exitHandler);
87
130
  reject(new Error(msg.error));
88
131
  }
89
- });
90
- // Also resolve/reject if process exits before sending message
91
- childProcess.once('exit', (code)=>{
132
+ // Ignore other message types and keep waiting for READY/ERROR
133
+ };
134
+ const exitHandler = (code)=>{
135
+ if (resolved) {
136
+ return;
137
+ }
138
+ resolved = true;
92
139
  clearTimeout(timeout);
140
+ childProcess.off('message', messageHandler);
93
141
  if (code === 0) {
94
142
  resolve();
95
143
  } else {
96
144
  reject(new Error(`Worker ${clientIndex} exited with code ${code} before becoming ready`));
97
145
  }
98
- });
146
+ };
147
+ childProcess.on('message', messageHandler);
148
+ childProcess.once('exit', exitHandler);
99
149
  });
100
150
  return [
101
151
  childProcess,
@@ -103,34 +153,46 @@ class WorkerClientManager {
103
153
  ];
104
154
  }
105
155
  /**
106
- * Creates a number of worker clients in separate processes
107
- * All are configured to connect to each other and overrided with the test specific config
156
+ * Creates a number of worker clients in separate processes.
157
+ * All are configured to connect to each other and overridden with the test-specific config.
108
158
  *
109
159
  * @param numberOfClients - The number of clients to create
160
+ * @param options - Optional overrides for seeding/bootstrapping strategy
110
161
  * @returns The ENRs of the created clients
111
- */ async makeWorkerClients(numberOfClients) {
162
+ */ async makeWorkerClients(numberOfClients, options = {}) {
112
163
  try {
164
+ const bootstrapMode = options.bootstrapMode ?? (this.p2pConfig.bootstrapNodesAsFullPeers ? 'all' : 'subset');
165
+ const seedPeerLimit = options.seedPeerLimit ?? 10;
166
+ const batchSize = options.batchSize ?? (bootstrapMode === 'all' ? Math.min(5, numberOfClients) : numberOfClients);
167
+ const batchDelayMs = options.batchDelayMs ?? (bootstrapMode === 'all' ? 500 : 0);
113
168
  this.messageReceivedByClient = new Array(numberOfClients).fill(0);
114
169
  this.peerIdPrivateKeys = generatePeerIdPrivateKeys(numberOfClients);
115
170
  this.ports = await getPorts(numberOfClients);
116
171
  this.peerEnrs = await makeEnrs(this.peerIdPrivateKeys, this.ports, testChainConfig);
172
+ this.peerIds = new Array(numberOfClients);
117
173
  this.processes = [];
118
174
  const readySignals = [];
119
- for(let i = 0; i < numberOfClients; i++){
120
- this.logger.info(`Creating client ${i}`);
121
- // Maximum seed with 10 other peers to allow peer discovery to connect them at a smoother rate
122
- const otherNodes = this.peerEnrs.filter((_, ind)=>ind < Math.min(i, 10));
123
- const config = this.createClientConfig(i, this.ports[i], otherNodes);
124
- const [childProcess, readySignal] = this.spawnWorkerProcess(config, i);
125
- readySignals.push(readySignal);
126
- this.processes.push(childProcess);
175
+ for(let batchStart = 0; batchStart < numberOfClients; batchStart += batchSize){
176
+ const batchEnd = Math.min(batchStart + batchSize, numberOfClients);
177
+ const batchPromises = [];
178
+ for(let i = batchStart; i < batchEnd; i++){
179
+ this.logger.info(`Creating client ${i}`);
180
+ const otherNodes = bootstrapMode === 'all' ? this.peerEnrs.filter((_, ind)=>ind !== i) : this.peerEnrs.filter((_, ind)=>ind < Math.min(i, seedPeerLimit));
181
+ const config = this.createClientConfig(i, this.ports[i], otherNodes);
182
+ const [childProcess, readySignal] = this.spawnWorkerProcess(config, i);
183
+ readySignals.push(readySignal);
184
+ batchPromises.push(readySignal);
185
+ this.processes.push(childProcess);
186
+ }
187
+ await Promise.all(batchPromises);
188
+ if (batchEnd < numberOfClients && batchDelayMs > 0) {
189
+ await sleep(batchDelayMs);
190
+ }
127
191
  }
128
- // Wait for peers to all connect with each other
129
- await sleep(10000);
130
- // Wait for all peers to be booted up with timeout
192
+ await sleep(BENCHMARK_CONSTANTS.PEER_DISCOVERY_WAIT_MS);
131
193
  await Promise.race([
132
194
  Promise.all(readySignals),
133
- new Promise((_, reject)=>setTimeout(()=>reject(new Error('Timeout waiting for all workers to be ready')), 30000))
195
+ new Promise((_, reject)=>setTimeout(()=>reject(new Error('Timeout waiting for all workers to be ready')), BENCHMARK_CONSTANTS.WORKER_READY_TIMEOUT_MS))
134
196
  ]);
135
197
  return this.peerEnrs;
136
198
  } catch (error) {
@@ -172,10 +234,9 @@ class WorkerClientManager {
172
234
  const config = this.createClientConfig(clientIndex, newPort, otherNodes);
173
235
  const [childProcess, readySignal] = this.spawnWorkerProcess(config, clientIndex);
174
236
  this.processes[clientIndex] = childProcess;
175
- // Wait for the process to be ready with a timeout
176
237
  await Promise.race([
177
238
  readySignal,
178
- new Promise((_, reject)=>setTimeout(()=>reject(new Error(`Timeout waiting for client ${clientIndex} to be ready`)), 30000))
239
+ new Promise((_, reject)=>setTimeout(()=>reject(new Error(`Timeout waiting for client ${clientIndex} to be ready`)), BENCHMARK_CONSTANTS.WORKER_READY_TIMEOUT_MS))
179
240
  ]);
180
241
  } catch (error) {
181
242
  this.logger.error(`Error during changePort for client ${clientIndex}:`, error);
@@ -191,15 +252,14 @@ class WorkerClientManager {
191
252
  return Promise.resolve();
192
253
  }
193
254
  return new Promise((resolve)=>{
194
- // Set a timeout for the graceful exit
195
255
  const forceKillTimeout = setTimeout(()=>{
196
256
  this.logger.warn(`Process ${index} didn't exit gracefully, force killing...`);
197
257
  try {
198
- process1.kill('SIGKILL'); // Force kill
258
+ process1.kill('SIGKILL');
199
259
  } catch (e) {
200
260
  this.logger.error(`Error force killing process ${index}:`, e);
201
261
  }
202
- }, 5000); // 5 second timeout for graceful exit
262
+ }, BENCHMARK_CONSTANTS.GRACEFUL_SHUTDOWN_TIMEOUT_MS);
203
263
  // Listen for process exit
204
264
  process1.once('exit', ()=>{
205
265
  clearTimeout(forceKillTimeout);
@@ -228,7 +288,6 @@ class WorkerClientManager {
228
288
  this.logger.info(`Cleaning up ${this.processes.length} worker processes`);
229
289
  // Create array of promises for each process termination
230
290
  const terminationPromises = this.processes.map((process1, index)=>this.terminateProcess(process1, index));
231
- // Wait for all processes to terminate with a timeout
232
291
  try {
233
292
  await Promise.race([
234
293
  Promise.all(terminationPromises),
@@ -245,14 +304,142 @@ class WorkerClientManager {
245
304
  }
246
305
  });
247
306
  resolve();
248
- }, 10000); // 10 second timeout for all processes
307
+ }, BENCHMARK_CONSTANTS.CLEANUP_TIMEOUT_MS);
249
308
  })
250
309
  ]);
251
310
  } catch (error) {
252
311
  this.logger.error('Error during cleanup:', error);
253
312
  }
254
313
  this.processes = [];
314
+ this.peerIds = [];
255
315
  this.logger.info('All worker processes cleaned up');
256
316
  }
317
+ /**
318
+ * Run a req/resp benchmark across all worker clients.
319
+ *
320
+ * This sends a BENCH_REQRESP command to all workers:
321
+ * - Aggregator (client 0) runs the collector and returns timing results
322
+ * - Responders (clients 1..N) populate their tx pools based on distribution
323
+ *
324
+ * All workers generate the same txs deterministically from a shared seed,
325
+ * then filter based on their peerIndex and distribution pattern.
326
+ */ async runReqRespBenchmark(config) {
327
+ const peerCount = this.processes.length;
328
+ if (peerCount < 2) {
329
+ throw new Error('Need at least 2 peers to run req/resp benchmark');
330
+ }
331
+ const seed = config.seed ?? Date.now();
332
+ const blockNumber = config.blockNumber ?? 1;
333
+ const pinnedPeerId = config.pinnedPeerIndex !== undefined ? this.peerIds[config.pinnedPeerIndex] : undefined;
334
+ this.logger.info(`Starting req/resp benchmark: txCount=${config.txCount}, distribution=${config.distribution}, collector=${config.collectorType}`);
335
+ const readyPromises = [];
336
+ for(let i = 1; i < peerCount; i++){
337
+ const cmd = {
338
+ type: 'BENCH_REQRESP',
339
+ txCount: config.txCount,
340
+ peerCount,
341
+ distribution: config.distribution,
342
+ collectorType: config.collectorType,
343
+ timeoutMs: config.timeoutMs,
344
+ isAggregator: false,
345
+ peerIndex: i,
346
+ pinnedPeerIndex: config.pinnedPeerIndex,
347
+ pinnedPeerId,
348
+ blockNumber,
349
+ seed
350
+ };
351
+ this.processes[i].send(cmd);
352
+ readyPromises.push(this.waitForBenchReady(i, 30000));
353
+ }
354
+ await Promise.all(readyPromises);
355
+ this.logger.info('All responder peers ready, starting aggregator benchmark...');
356
+ const aggregatorCmd = {
357
+ type: 'BENCH_REQRESP',
358
+ txCount: config.txCount,
359
+ peerCount,
360
+ distribution: config.distribution,
361
+ collectorType: config.collectorType,
362
+ timeoutMs: config.timeoutMs,
363
+ isAggregator: true,
364
+ peerIndex: 0,
365
+ pinnedPeerIndex: config.pinnedPeerIndex,
366
+ pinnedPeerId,
367
+ blockNumber,
368
+ seed
369
+ };
370
+ this.processes[0].send(aggregatorCmd);
371
+ const result = await this.waitForBenchResult(0, config.timeoutMs + 30000);
372
+ this.logger.info(`Benchmark complete: fetched=${result.fetchedCount}/${config.txCount}, duration=${result.durationMs.toFixed(0)}ms, success=${result.success}`);
373
+ return {
374
+ txCount: config.txCount,
375
+ distribution: config.distribution,
376
+ collector: config.collectorType,
377
+ durationMs: result.durationMs,
378
+ fetchedCount: result.fetchedCount,
379
+ success: result.success,
380
+ error: result.error
381
+ };
382
+ }
383
+ waitForBenchReady(clientIndex, timeoutMs) {
384
+ return new Promise((resolve, reject)=>{
385
+ let resolved = false;
386
+ const handler = (msg)=>{
387
+ if (resolved) {
388
+ return;
389
+ }
390
+ if (msg.type === 'BENCH_READY') {
391
+ resolved = true;
392
+ clearTimeout(timeout);
393
+ this.processes[clientIndex].off('message', handler);
394
+ resolve();
395
+ } else if (msg.type === 'ERROR') {
396
+ resolved = true;
397
+ clearTimeout(timeout);
398
+ this.processes[clientIndex].off('message', handler);
399
+ reject(new Error(`Client ${clientIndex} error: ${msg.error}`));
400
+ }
401
+ };
402
+ const timeout = setTimeout(()=>{
403
+ if (resolved) {
404
+ return;
405
+ }
406
+ resolved = true;
407
+ this.processes[clientIndex].off('message', handler);
408
+ reject(new Error(`Timeout waiting for BENCH_READY from client ${clientIndex}`));
409
+ }, timeoutMs);
410
+ this.processes[clientIndex].on('message', handler);
411
+ });
412
+ }
413
+ waitForBenchResult(clientIndex, timeoutMs) {
414
+ return new Promise((resolve, reject)=>{
415
+ let resolved = false;
416
+ const handler = (msg)=>{
417
+ if (resolved) {
418
+ return;
419
+ }
420
+ if (msg.type === 'BENCH_RESULT') {
421
+ resolved = true;
422
+ clearTimeout(timeout);
423
+ this.processes[clientIndex].off('message', handler);
424
+ resolve(msg);
425
+ } else if (msg.type === 'ERROR') {
426
+ resolved = true;
427
+ clearTimeout(timeout);
428
+ this.processes[clientIndex].off('message', handler);
429
+ reject(new Error(`Client ${clientIndex} error: ${msg.error}`));
430
+ }
431
+ };
432
+ const timeout = setTimeout(()=>{
433
+ if (resolved) {
434
+ return;
435
+ }
436
+ resolved = true;
437
+ this.processes[clientIndex].off('message', handler);
438
+ reject(new Error(`Timeout waiting for BENCH_RESULT from client ${clientIndex}`));
439
+ }, timeoutMs);
440
+ this.processes[clientIndex].on('message', handler);
441
+ });
442
+ }
257
443
  }
258
444
  export { WorkerClientManager, testChainConfig };
445
+ export { COLLECTOR_DISPLAY_NAMES } from './p2p_client_testbench_worker.js';
@@ -31,4 +31,4 @@ export declare enum GossipSubEvent {
31
31
  */
32
32
  export declare const AZTEC_ENR_KEY = "aztec";
33
33
  export declare const AZTEC_ENR_CLIENT_VERSION_KEY = "ver";
34
- //# sourceMappingURL=index.d.ts.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7cURBRXFEO0FBRXJEOztHQUVHO0FBQ0gsb0JBQVksU0FBUztJQUNuQixVQUFVLG9CQUFvQjtJQUM5QixTQUFTLGlCQUFpQjtJQUMxQixZQUFZLG9CQUFvQjtDQUNqQztBQUVEOztHQUVHO0FBQ0gsb0JBQVksV0FBVztJQUNyQixVQUFVLGVBQWU7SUFDekIsU0FBUyxhQUFhO0lBQ3RCLGlCQUFpQixxQkFBcUI7Q0FDdkM7QUFFRDs7R0FFRztBQUNILG9CQUFZLGNBQWM7SUFDeEIsT0FBTyxzQkFBc0I7Q0FDOUI7QUFFRDs7cURBRXFEO0FBRXJEOztHQUVHO0FBQ0gsZUFBTyxNQUFNLGFBQWEsVUFBVSxDQUFDO0FBQ3JDLGVBQU8sTUFBTSw0QkFBNEIsUUFBUSxDQUFDIn0=
package/dest/util.d.ts CHANGED
@@ -35,6 +35,7 @@ export declare function convertToMultiaddr(address: string, port: number, protoc
35
35
  * Queries the public IP address of the machine.
36
36
  */
37
37
  export declare function getPublicIp(): Promise<string>;
38
+ export declare function isValidIpAddress(address: string): boolean;
38
39
  export declare function resolveAddressIfNecessary(address: string, port: string): Promise<string>;
39
40
  export declare function configureP2PClientAddresses(_config: P2PConfig & DataStoreConfig): Promise<P2PConfig & DataStoreConfig>;
40
41
  /**
@@ -57,4 +58,4 @@ export declare function getPeerIdPrivateKey(config: {
57
58
  * @returns The peer ID.
58
59
  */
59
60
  export declare function createLibP2PPeerIdFromPrivateKey(privateKey: string): Promise<PeerId>;
60
- //# sourceMappingURL=util.d.ts.map
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSXJDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk3QyxNQUFNLFdBQVcsWUFBYSxTQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ3hGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJLENBQ1YsU0FBUyxFQUNULGtCQUFrQixHQUFHLHFCQUFxQixHQUFHLFNBQVMsR0FBRyxXQUFXLEdBQUcsK0JBQStCLEdBQUcsUUFBUSxDQUNsSCxHQUFHO1lBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FBRSxDQUFDO0tBQ2xELENBQUM7Q0FDSDtBQUVELE1BQU0sTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzlCLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDbkIsTUFBTSxFQUFFLFNBQVMsQ0FBQztJQUNsQixVQUFVLEVBQUU7UUFDVixpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztLQUN0QyxDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7NkNBTzZDO0FBQzdDLHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQU9qRztBQUVEOztHQUVHO0FBQ0gsd0JBQXNCLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBUW5EO0FBRUQsd0JBQWdCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUd6RDtBQUVELHdCQUFzQix5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVc5RjtBQWNELHdCQUFzQiwyQkFBMkIsQ0FDL0MsT0FBTyxFQUFFLFNBQVMsR0FBRyxlQUFlLEdBQ25DLE9BQU8sQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLENBbUJ0QztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLG1CQUFtQixDQUN2QyxNQUFNLEVBQUU7SUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFDLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFBO0NBQUUsRUFDekcsS0FBSyxFQUFFLGlCQUFpQixFQUN4QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0EyRDlCO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FTMUYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACT,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,+BAA+B,GAAG,QAAQ,CAClH,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxF,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CACV,SAAS,EACT,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,+BAA+B,GAAG,QAAQ,CAClH,GAAG;YAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAOjG;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAQnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA2D9B;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
package/dest/util.js CHANGED
@@ -3,6 +3,7 @@ import { generateKeyPair, marshalPrivateKey, unmarshalPrivateKey } from '@libp2p
3
3
  import { createFromPrivKey } from '@libp2p/peer-id-factory';
4
4
  import { resolve } from 'dns/promises';
5
5
  import { promises as fs } from 'fs';
6
+ import net from 'net';
6
7
  import path from 'path';
7
8
  const PEER_ID_DATA_DIR_FILE = 'p2p-private-key';
8
9
  /**
@@ -22,9 +23,17 @@ const PEER_ID_DATA_DIR_FILE = 'p2p-private-key';
22
23
  /**
23
24
  * Queries the public IP address of the machine.
24
25
  */ export async function getPublicIp() {
25
- const resp = await fetch('http://checkip.amazonaws.com/');
26
+ const resp = await fetch('https://checkip.amazonaws.com/');
26
27
  const text = await resp.text();
27
- return text.trim();
28
+ const address = text.trim();
29
+ if (!isValidIpAddress(address)) {
30
+ throw new Error(`Received invalid IP address from checkip service: ${address}`);
31
+ }
32
+ return address;
33
+ }
34
+ export function isValidIpAddress(address) {
35
+ const netType = net.isIP(address);
36
+ return netType === 4;
28
37
  }
29
38
  export async function resolveAddressIfNecessary(address, port) {
30
39
  const multiaddrPrefix = addressToMultiAddressType(address);
@@ -9,4 +9,4 @@ export declare function setAztecEnrKey(enr: SignableENR, config: ChainConfig, us
9
9
  export declare function setAztecClientVersionEnrKey(enr: SignableENR, clientVersion: string): void;
10
10
  /** Checks the given value from an ENR record against the expected versions. */
11
11
  export declare function checkAztecEnrVersion(enrValue: Buffer, expectedVersions: ComponentsVersions): void;
12
- //# sourceMappingURL=versioning.d.ts.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbmluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZlcnNpb25pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBSXhCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTdEQscUVBQXFFO0FBQ3JFLHdCQUFnQixXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsc0JBRTlDO0FBRUQsaUVBQWlFO0FBQ2pFLHdCQUFnQixjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsVUFBYyxzQkFLNUY7QUFFRCxtREFBbUQ7QUFDbkQsd0JBQWdCLDJCQUEyQixDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFJbEY7QUFFRCwrRUFBK0U7QUFDL0Usd0JBQWdCLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLFFBVTFGIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.0.1-commit.b655e406",
3
+ "version": "0.0.1-commit.c2595eba",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -19,12 +19,12 @@
19
19
  "tsconfig": "./tsconfig.json"
20
20
  },
21
21
  "scripts": {
22
- "build": "yarn clean && tsc -b",
23
- "build:dev": "tsc -b --watch",
22
+ "build": "yarn clean && ../scripts/tsc.sh",
23
+ "build:dev": "../scripts/tsc.sh --watch",
24
24
  "clean": "rm -rf ./dest .tsbuildinfo",
25
25
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
26
26
  "start": "node ./dest",
27
- "start:dev": "tsc-watch -p tsconfig.json --onSuccess 'yarn start'"
27
+ "start:dev": "concurrently -k \"../scripts/tsc.sh --watch\" \"nodemon --watch dest --exec yarn start\""
28
28
  },
29
29
  "inherits": [
30
30
  "../package.common.json"
@@ -67,17 +67,17 @@
67
67
  ]
68
68
  },
69
69
  "dependencies": {
70
- "@aztec/constants": "0.0.1-commit.b655e406",
71
- "@aztec/epoch-cache": "0.0.1-commit.b655e406",
72
- "@aztec/ethereum": "0.0.1-commit.b655e406",
73
- "@aztec/foundation": "0.0.1-commit.b655e406",
74
- "@aztec/kv-store": "0.0.1-commit.b655e406",
75
- "@aztec/noir-contracts.js": "0.0.1-commit.b655e406",
76
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.b655e406",
77
- "@aztec/protocol-contracts": "0.0.1-commit.b655e406",
78
- "@aztec/simulator": "0.0.1-commit.b655e406",
79
- "@aztec/stdlib": "0.0.1-commit.b655e406",
80
- "@aztec/telemetry-client": "0.0.1-commit.b655e406",
70
+ "@aztec/constants": "0.0.1-commit.c2595eba",
71
+ "@aztec/epoch-cache": "0.0.1-commit.c2595eba",
72
+ "@aztec/ethereum": "0.0.1-commit.c2595eba",
73
+ "@aztec/foundation": "0.0.1-commit.c2595eba",
74
+ "@aztec/kv-store": "0.0.1-commit.c2595eba",
75
+ "@aztec/noir-contracts.js": "0.0.1-commit.c2595eba",
76
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.c2595eba",
77
+ "@aztec/protocol-contracts": "0.0.1-commit.c2595eba",
78
+ "@aztec/simulator": "0.0.1-commit.c2595eba",
79
+ "@aztec/stdlib": "0.0.1-commit.c2595eba",
80
+ "@aztec/telemetry-client": "0.0.1-commit.c2595eba",
81
81
  "@chainsafe/libp2p-gossipsub": "13.0.0",
82
82
  "@chainsafe/libp2p-noise": "^15.0.0",
83
83
  "@chainsafe/libp2p-yamux": "^6.0.2",
@@ -104,11 +104,12 @@
104
104
  "xxhash-wasm": "^1.1.0"
105
105
  },
106
106
  "devDependencies": {
107
- "@aztec/archiver": "0.0.1-commit.b655e406",
108
- "@aztec/world-state": "0.0.1-commit.b655e406",
107
+ "@aztec/archiver": "0.0.1-commit.c2595eba",
108
+ "@aztec/world-state": "0.0.1-commit.c2595eba",
109
109
  "@jest/globals": "^30.0.0",
110
110
  "@types/jest": "^30.0.0",
111
111
  "@types/node": "^22.15.17",
112
+ "@typescript/native-preview": "7.0.0-dev.20260113.1",
112
113
  "get-port": "^7.1.0",
113
114
  "it-drain": "^3.0.5",
114
115
  "it-length": "^3.0.6",
@@ -117,7 +118,7 @@
117
118
  "ts-node": "^10.9.1",
118
119
  "typescript": "^5.3.3",
119
120
  "uint8arrays": "^5.0.3",
120
- "viem": "npm:@spalladino/viem@2.38.2-eip7594.0"
121
+ "viem": "npm:@aztec/viem@2.38.2"
121
122
  },
122
123
  "files": [
123
124
  "dest",
@@ -1,4 +1,4 @@
1
- import { createLogger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
2
2
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
3
  import type { P2PBootstrapApi } from '@aztec/stdlib/interfaces/server';
4
4
  import { OtelMetricsAdapter, type TelemetryClient } from '@aztec/telemetry-client';
@@ -18,12 +18,15 @@ import { convertToMultiaddr, getPeerIdPrivateKey, getPublicIp } from '../util.js
18
18
  export class BootstrapNode implements P2PBootstrapApi {
19
19
  private node?: Discv5EventEmitter = undefined;
20
20
  private peerId?: PeerId;
21
+ private logger: Logger;
21
22
 
22
23
  constructor(
23
24
  private store: AztecAsyncKVStore,
24
25
  private telemetry: TelemetryClient,
25
- private logger = createLogger('p2p:bootstrap'),
26
- ) {}
26
+ bindings?: LoggerBindings,
27
+ ) {
28
+ this.logger = createLogger('p2p:bootstrap', bindings);
29
+ }
27
30
 
28
31
  /**
29
32
  * Starts the bootstrap node.
@@ -65,7 +68,7 @@ export class BootstrapNode implements P2PBootstrapApi {
65
68
 
66
69
  this.logger.debug(`Starting bootstrap node ${peerId} listening on ${listenAddrUdp.toString()}`);
67
70
 
68
- const metricsRegistry = new OtelMetricsAdapter(this.telemetry);
71
+ const metricsRegistry = new OtelMetricsAdapter(this.telemetry, this.logger.getBindings());
69
72
  this.node = Discv5.create({
70
73
  enr: ourEnr,
71
74
  peerId,
@@ -26,7 +26,7 @@ import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerI
26
26
  export type P2PClientDeps<T extends P2PClientType> = {
27
27
  txPool?: TxPool;
28
28
  store?: AztecAsyncKVStore;
29
- attestationPool?: T extends P2PClientType.Full ? AttestationPool : undefined;
29
+ attestationPool?: AttestationPool;
30
30
  logger?: Logger;
31
31
  txCollectionNodeSources?: TxSource[];
32
32
  p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService<T>>;
@@ -62,30 +62,21 @@ export async function createP2PClient<T extends P2PClientType>(
62
62
  );
63
63
  }
64
64
 
65
- const store = deps.store ?? (await createStore(P2P_STORE_NAME, 2, config, createLogger('p2p:lmdb-v2')));
66
- const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, createLogger('p2p-archive:lmdb-v2'));
67
- const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, createLogger('p2p-peer:lmdb-v2'));
68
- const attestationStore = await createStore(
69
- P2P_ATTESTATION_STORE_NAME,
70
- 1,
71
- config,
72
- createLogger('p2p-attestation:lmdb-v2'),
73
- );
65
+ const bindings = logger.getBindings();
66
+ const store = deps.store ?? (await createStore(P2P_STORE_NAME, 2, config, bindings));
67
+ const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, bindings);
68
+ const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, bindings);
69
+ const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 1, config, bindings);
74
70
  const l1Constants = await archiver.getL1Constants();
75
71
 
76
- const mempools: MemPools<T> = {
72
+ const mempools: MemPools = {
77
73
  txPool:
78
74
  deps.txPool ??
79
75
  new AztecKVTxPool(store, archive, worldStateSynchronizer, telemetry, {
80
- maxTxPoolSize: config.maxTxPoolSize,
76
+ maxPendingTxCount: config.maxPendingTxCount,
81
77
  archivedTxLimit: config.archivedTxLimit,
82
78
  }),
83
- attestationPool:
84
- clientType === P2PClientType.Full
85
- ? ((deps.attestationPool ?? new KvAttestationPool(attestationStore, telemetry)) as T extends P2PClientType.Full
86
- ? AttestationPool
87
- : undefined)
88
- : undefined,
79
+ attestationPool: deps.attestationPool ?? new KvAttestationPool(attestationStore, telemetry),
89
80
  };
90
81
 
91
82
  const p2pService = await createP2PService<T>(
@@ -115,7 +106,7 @@ export async function createP2PClient<T extends P2PClientType>(
115
106
  }
116
107
 
117
108
  const txCollection = new TxCollection(
118
- p2pService,
109
+ p2pService.getBatchTxRequesterService(),
119
110
  nodeSources,
120
111
  l1Constants,
121
112
  mempools.txPool,
@@ -147,7 +138,7 @@ async function createP2PService<T extends P2PClientType>(
147
138
  epochCache: EpochCacheInterface,
148
139
  store: AztecAsyncKVStore,
149
140
  peerStore: AztecLMDBStoreV2,
150
- mempools: MemPools<T>,
141
+ mempools: MemPools,
151
142
  p2pServiceFactory: P2PClientDeps<T>['p2pServiceFactory'],
152
143
  packageVersion: string,
153
144
  logger: Logger,