@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.017a351

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 (633) 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 +34 -13
  5. package/dest/client/factory.d.ts +23 -12
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +106 -26
  8. package/dest/client/index.d.ts +2 -1
  9. package/dest/client/index.d.ts.map +1 -1
  10. package/dest/client/index.js +1 -0
  11. package/dest/client/interface.d.ts +192 -0
  12. package/dest/client/interface.d.ts.map +1 -0
  13. package/dest/client/interface.js +9 -0
  14. package/dest/client/p2p_client.d.ts +97 -221
  15. package/dest/client/p2p_client.d.ts.map +1 -1
  16. package/dest/client/p2p_client.js +818 -289
  17. package/dest/config.d.ts +235 -133
  18. package/dest/config.d.ts.map +1 -1
  19. package/dest/config.js +295 -36
  20. package/dest/enr/generate-enr.d.ts +11 -3
  21. package/dest/enr/generate-enr.d.ts.map +1 -1
  22. package/dest/enr/generate-enr.js +27 -5
  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/p2p-service.error.d.ts +9 -0
  28. package/dest/errors/p2p-service.error.d.ts.map +1 -0
  29. package/dest/errors/p2p-service.error.js +10 -0
  30. package/dest/errors/reqresp.error.d.ts +1 -20
  31. package/dest/errors/reqresp.error.d.ts.map +1 -1
  32. package/dest/errors/reqresp.error.js +0 -21
  33. package/dest/errors/tx-pool.error.d.ts +8 -0
  34. package/dest/errors/tx-pool.error.d.ts.map +1 -0
  35. package/dest/errors/tx-pool.error.js +9 -0
  36. package/dest/index.d.ts +5 -2
  37. package/dest/index.d.ts.map +1 -1
  38. package/dest/index.js +3 -1
  39. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +165 -30
  40. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  41. package/dest/mem_pools/attestation_pool/attestation_pool.js +511 -3
  42. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
  43. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  44. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +680 -173
  45. package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
  46. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
  47. package/dest/mem_pools/attestation_pool/index.js +1 -2
  48. package/dest/mem_pools/attestation_pool/mocks.d.ts +234 -11
  49. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  50. package/dest/mem_pools/attestation_pool/mocks.js +21 -21
  51. package/dest/mem_pools/index.d.ts +3 -3
  52. package/dest/mem_pools/index.d.ts.map +1 -1
  53. package/dest/mem_pools/index.js +1 -1
  54. package/dest/mem_pools/instrumentation.d.ts +18 -12
  55. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  56. package/dest/mem_pools/instrumentation.js +74 -41
  57. package/dest/mem_pools/interface.d.ts +6 -7
  58. package/dest/mem_pools/interface.d.ts.map +1 -1
  59. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
  60. package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
  61. package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
  62. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +39 -0
  63. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
  64. package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +97 -0
  65. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
  66. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
  67. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
  68. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
  69. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
  70. package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
  71. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
  72. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
  73. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +94 -0
  74. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
  75. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
  76. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +97 -0
  77. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +11 -0
  78. package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
  79. package/dest/mem_pools/tx_pool_v2/eviction/index.js +12 -0
  80. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts +16 -0
  81. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.d.ts.map +1 -0
  82. package/dest/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.js +62 -0
  83. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +180 -0
  84. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
  85. package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
  86. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
  87. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  88. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
  89. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
  90. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  91. package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
  92. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
  93. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  94. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +78 -0
  95. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
  96. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
  97. package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +75 -0
  98. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
  99. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
  100. package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
  101. package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
  102. package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
  103. package/dest/mem_pools/tx_pool_v2/index.js +5 -0
  104. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
  105. package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
  106. package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
  107. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +218 -0
  108. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
  109. package/dest/mem_pools/tx_pool_v2/interfaces.js +10 -0
  110. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +137 -0
  111. package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
  112. package/dest/mem_pools/tx_pool_v2/tx_metadata.js +223 -0
  113. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
  114. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
  115. package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
  116. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
  117. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
  118. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +337 -0
  119. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +62 -0
  120. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
  121. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +167 -0
  122. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +78 -0
  123. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
  124. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +914 -0
  125. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +14 -6
  126. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  127. package/dest/msg_validators/attestation_validator/attestation_validator.js +106 -12
  128. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +24 -0
  129. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  130. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +75 -0
  131. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  132. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  133. package/dest/msg_validators/attestation_validator/index.js +1 -0
  134. package/dest/msg_validators/clock_tolerance.d.ts +32 -0
  135. package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
  136. package/dest/msg_validators/clock_tolerance.js +90 -0
  137. package/dest/msg_validators/index.d.ts +2 -2
  138. package/dest/msg_validators/index.d.ts.map +1 -1
  139. package/dest/msg_validators/index.js +1 -1
  140. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  141. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  142. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  143. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +15 -0
  144. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  145. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +14 -0
  146. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +15 -0
  147. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  148. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +20 -0
  149. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  150. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  151. package/dest/msg_validators/proposal_validator/index.js +3 -0
  152. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +26 -0
  153. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  154. package/dest/msg_validators/proposal_validator/proposal_validator.js +150 -0
  155. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +4 -4
  156. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -18
  158. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +4 -0
  159. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  160. package/dest/msg_validators/tx_validator/allowed_public_setup.js +31 -0
  161. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts +17 -0
  162. package/dest/msg_validators/tx_validator/allowed_setup_helpers.d.ts.map +1 -0
  163. package/dest/msg_validators/tx_validator/allowed_setup_helpers.js +24 -0
  164. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  165. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  166. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  167. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +20 -6
  168. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  169. package/dest/msg_validators/tx_validator/block_header_validator.js +7 -6
  170. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts +15 -0
  171. package/dest/msg_validators/tx_validator/cached_tx_validator.d.ts.map +1 -0
  172. package/dest/msg_validators/tx_validator/cached_tx_validator.js +19 -0
  173. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts +9 -0
  174. package/dest/msg_validators/tx_validator/contract_instance_validator.d.ts.map +1 -0
  175. package/dest/msg_validators/tx_validator/contract_instance_validator.js +48 -0
  176. package/dest/msg_validators/tx_validator/data_validator.d.ts +4 -1
  177. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  178. package/dest/msg_validators/tx_validator/data_validator.js +94 -87
  179. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +15 -6
  180. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  181. package/dest/msg_validators/tx_validator/double_spend_validator.js +24 -29
  182. package/dest/msg_validators/tx_validator/factory.d.ts +149 -0
  183. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  184. package/dest/msg_validators/tx_validator/factory.js +275 -0
  185. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts +10 -0
  186. package/dest/msg_validators/tx_validator/fee_payer_balance.d.ts.map +1 -0
  187. package/dest/msg_validators/tx_validator/fee_payer_balance.js +24 -0
  188. package/dest/msg_validators/tx_validator/gas_validator.d.ts +108 -0
  189. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  190. package/dest/msg_validators/tx_validator/gas_validator.js +194 -0
  191. package/dest/msg_validators/tx_validator/index.d.ts +13 -1
  192. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  193. package/dest/msg_validators/tx_validator/index.js +12 -0
  194. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -5
  195. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  196. package/dest/msg_validators/tx_validator/metadata_validator.js +40 -21
  197. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts +14 -0
  198. package/dest/msg_validators/tx_validator/nullifier_cache.d.ts.map +1 -0
  199. package/dest/msg_validators/tx_validator/nullifier_cache.js +24 -0
  200. package/dest/msg_validators/tx_validator/phases_validator.d.ts +35 -0
  201. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  202. package/dest/msg_validators/tx_validator/phases_validator.js +141 -0
  203. package/dest/msg_validators/tx_validator/size_validator.d.ts +8 -0
  204. package/dest/msg_validators/tx_validator/size_validator.d.ts.map +1 -0
  205. package/dest/msg_validators/tx_validator/size_validator.js +23 -0
  206. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  207. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  208. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  209. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +30 -0
  210. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  211. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  212. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +9 -0
  213. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  214. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  215. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +4 -2
  216. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  217. package/dest/msg_validators/tx_validator/tx_proof_validator.js +10 -7
  218. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts +48 -0
  219. package/dest/msg_validators/tx_validator/tx_validation_cache.d.ts.map +1 -0
  220. package/dest/msg_validators/tx_validator/tx_validation_cache.js +68 -0
  221. package/dest/services/data_store.d.ts +1 -1
  222. package/dest/services/data_store.d.ts.map +1 -1
  223. package/dest/services/data_store.js +14 -10
  224. package/dest/services/discv5/discV5_service.d.ts +11 -9
  225. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  226. package/dest/services/discv5/discV5_service.js +92 -38
  227. package/dest/services/dummy_service.d.ts +77 -18
  228. package/dest/services/dummy_service.d.ts.map +1 -1
  229. package/dest/services/dummy_service.js +139 -12
  230. package/dest/services/encoding.d.ts +30 -7
  231. package/dest/services/encoding.d.ts.map +1 -1
  232. package/dest/services/encoding.js +88 -12
  233. package/dest/services/gossipsub/index.d.ts +3 -0
  234. package/dest/services/gossipsub/index.d.ts.map +1 -0
  235. package/dest/services/gossipsub/index.js +2 -0
  236. package/dest/services/gossipsub/scoring.d.ts +21 -3
  237. package/dest/services/gossipsub/scoring.d.ts.map +1 -1
  238. package/dest/services/gossipsub/scoring.js +24 -7
  239. package/dest/services/gossipsub/topic_score_params.d.ts +184 -0
  240. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
  241. package/dest/services/gossipsub/topic_score_params.js +363 -0
  242. package/dest/services/index.d.ts +6 -1
  243. package/dest/services/index.d.ts.map +1 -1
  244. package/dest/services/index.js +5 -0
  245. package/dest/services/libp2p/instrumentation.d.ts +22 -0
  246. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  247. package/dest/services/libp2p/instrumentation.js +136 -0
  248. package/dest/services/libp2p/libp2p_service.d.ts +165 -111
  249. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  250. package/dest/services/libp2p/libp2p_service.js +1517 -379
  251. package/dest/services/peer-manager/interface.d.ts +23 -0
  252. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  253. package/dest/services/peer-manager/interface.js +1 -0
  254. package/dest/services/peer-manager/metrics.d.ts +14 -3
  255. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  256. package/dest/services/peer-manager/metrics.js +50 -12
  257. package/dest/services/peer-manager/peer_manager.d.ts +108 -24
  258. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  259. package/dest/services/peer-manager/peer_manager.js +583 -85
  260. package/dest/services/peer-manager/peer_scoring.d.ts +12 -2
  261. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  262. package/dest/services/peer-manager/peer_scoring.js +99 -13
  263. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +44 -0
  264. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -0
  265. package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +534 -0
  266. package/dest/services/reqresp/batch-tx-requester/config.d.ts +17 -0
  267. package/dest/services/reqresp/batch-tx-requester/config.d.ts.map +1 -0
  268. package/dest/services/reqresp/batch-tx-requester/config.js +27 -0
  269. package/dest/services/reqresp/batch-tx-requester/interface.d.ts +50 -0
  270. package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -0
  271. package/dest/services/reqresp/batch-tx-requester/interface.js +1 -0
  272. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +35 -0
  273. package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -0
  274. package/dest/services/reqresp/batch-tx-requester/missing_txs.js +136 -0
  275. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts +62 -0
  276. package/dest/services/reqresp/batch-tx-requester/peer_collection.d.ts.map +1 -0
  277. package/dest/services/reqresp/batch-tx-requester/peer_collection.js +176 -0
  278. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts +11 -0
  279. package/dest/services/reqresp/batch-tx-requester/tx_validator.d.ts.map +1 -0
  280. package/dest/services/reqresp/batch-tx-requester/tx_validator.js +7 -0
  281. package/dest/services/reqresp/config.d.ts +13 -11
  282. package/dest/services/reqresp/config.d.ts.map +1 -1
  283. package/dest/services/reqresp/config.js +18 -4
  284. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +32 -17
  285. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  286. package/dest/services/reqresp/connection-sampler/connection_sampler.js +154 -84
  287. package/dest/services/reqresp/constants.d.ts +12 -0
  288. package/dest/services/reqresp/constants.d.ts.map +1 -0
  289. package/dest/services/reqresp/constants.js +7 -0
  290. package/dest/services/reqresp/index.d.ts +3 -2
  291. package/dest/services/reqresp/index.d.ts.map +1 -1
  292. package/dest/services/reqresp/index.js +2 -1
  293. package/dest/services/reqresp/interface.d.ts +88 -30
  294. package/dest/services/reqresp/interface.d.ts.map +1 -1
  295. package/dest/services/reqresp/interface.js +61 -38
  296. package/dest/services/reqresp/metrics.d.ts +6 -5
  297. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  298. package/dest/services/reqresp/metrics.js +16 -21
  299. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  300. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  301. package/dest/services/reqresp/protocols/auth.js +71 -0
  302. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +35 -0
  303. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  304. package/dest/services/reqresp/protocols/block_txs/bitvector.js +88 -0
  305. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +13 -0
  306. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  307. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +60 -0
  308. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +75 -0
  309. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  310. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +139 -0
  311. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  312. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  313. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  314. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  315. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  316. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  317. package/dest/services/reqresp/protocols/index.d.ts +3 -2
  318. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  319. package/dest/services/reqresp/protocols/index.js +2 -1
  320. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  321. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  322. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  323. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  324. package/dest/services/reqresp/protocols/status.js +76 -5
  325. package/dest/services/reqresp/protocols/tx.d.ts +20 -4
  326. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  327. package/dest/services/reqresp/protocols/tx.js +52 -6
  328. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  329. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +10 -7
  330. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  331. package/dest/services/reqresp/rate-limiter/rate_limiter.js +20 -10
  332. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  333. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  334. package/dest/services/reqresp/rate-limiter/rate_limits.js +16 -6
  335. package/dest/services/reqresp/reqresp.d.ts +32 -91
  336. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  337. package/dest/services/reqresp/reqresp.js +695 -355
  338. package/dest/services/reqresp/status.d.ts +10 -4
  339. package/dest/services/reqresp/status.d.ts.map +1 -1
  340. package/dest/services/reqresp/status.js +9 -2
  341. package/dest/services/service.d.ts +76 -23
  342. package/dest/services/service.d.ts.map +1 -1
  343. package/dest/services/tx_collection/config.d.ts +25 -0
  344. package/dest/services/tx_collection/config.d.ts.map +1 -0
  345. package/dest/services/tx_collection/config.js +59 -0
  346. package/dest/services/tx_collection/file_store_tx_collection.d.ts +37 -0
  347. package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
  348. package/dest/services/tx_collection/file_store_tx_collection.js +127 -0
  349. package/dest/services/tx_collection/file_store_tx_source.d.ts +38 -0
  350. package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
  351. package/dest/services/tx_collection/file_store_tx_source.js +100 -0
  352. package/dest/services/tx_collection/index.d.ts +4 -0
  353. package/dest/services/tx_collection/index.d.ts.map +1 -0
  354. package/dest/services/tx_collection/index.js +3 -0
  355. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  356. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  357. package/dest/services/tx_collection/instrumentation.js +30 -0
  358. package/dest/services/tx_collection/request_tracker.d.ts +53 -0
  359. package/dest/services/tx_collection/request_tracker.d.ts.map +1 -0
  360. package/dest/services/tx_collection/request_tracker.js +84 -0
  361. package/dest/services/tx_collection/tx_collection.d.ts +104 -0
  362. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  363. package/dest/services/tx_collection/tx_collection.js +356 -0
  364. package/dest/services/tx_collection/tx_collection_sink.d.ts +40 -0
  365. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  366. package/dest/services/tx_collection/tx_collection_sink.js +108 -0
  367. package/dest/services/tx_collection/tx_source.d.ts +24 -0
  368. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  369. package/dest/services/tx_collection/tx_source.js +50 -0
  370. package/dest/services/tx_file_store/config.d.ts +16 -0
  371. package/dest/services/tx_file_store/config.d.ts.map +1 -0
  372. package/dest/services/tx_file_store/config.js +22 -0
  373. package/dest/services/tx_file_store/index.d.ts +4 -0
  374. package/dest/services/tx_file_store/index.d.ts.map +1 -0
  375. package/dest/services/tx_file_store/index.js +3 -0
  376. package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
  377. package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
  378. package/dest/services/tx_file_store/instrumentation.js +29 -0
  379. package/dest/services/tx_file_store/tx_file_store.d.ts +46 -0
  380. package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
  381. package/dest/services/tx_file_store/tx_file_store.js +142 -0
  382. package/dest/services/tx_provider.d.ts +53 -0
  383. package/dest/services/tx_provider.d.ts.map +1 -0
  384. package/dest/services/tx_provider.js +223 -0
  385. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  386. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  387. package/dest/services/tx_provider_instrumentation.js +34 -0
  388. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  389. package/dest/test-helpers/get-ports.d.ts +1 -1
  390. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  391. package/dest/test-helpers/index.d.ts +4 -1
  392. package/dest/test-helpers/index.d.ts.map +1 -1
  393. package/dest/test-helpers/index.js +3 -0
  394. package/dest/test-helpers/make-enrs.d.ts +1 -1
  395. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  396. package/dest/test-helpers/make-enrs.js +4 -5
  397. package/dest/test-helpers/make-test-p2p-clients.d.ts +35 -8
  398. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  399. package/dest/test-helpers/make-test-p2p-clients.js +89 -17
  400. package/dest/test-helpers/mock-pubsub.d.ts +99 -0
  401. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  402. package/dest/test-helpers/mock-pubsub.js +231 -0
  403. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  404. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  405. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  406. package/dest/test-helpers/reqresp-nodes.d.ts +17 -15
  407. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  408. package/dest/test-helpers/reqresp-nodes.js +73 -40
  409. package/dest/test-helpers/test_tx_provider.d.ts +42 -0
  410. package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
  411. package/dest/test-helpers/test_tx_provider.js +44 -0
  412. package/dest/test-helpers/testbench-utils.d.ts +161 -0
  413. package/dest/test-helpers/testbench-utils.d.ts.map +1 -0
  414. package/dest/test-helpers/testbench-utils.js +391 -0
  415. package/dest/testbench/p2p_client_testbench_worker.d.ts +26 -2
  416. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  417. package/dest/testbench/p2p_client_testbench_worker.js +310 -95
  418. package/dest/testbench/parse_log_file.d.ts +1 -1
  419. package/dest/testbench/parse_log_file.js +4 -4
  420. package/dest/testbench/testbench.d.ts +1 -1
  421. package/dest/testbench/testbench.js +4 -4
  422. package/dest/testbench/worker_client_manager.d.ts +57 -11
  423. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  424. package/dest/testbench/worker_client_manager.js +283 -58
  425. package/dest/types/index.d.ts +4 -2
  426. package/dest/types/index.d.ts.map +1 -1
  427. package/dest/types/index.js +2 -0
  428. package/dest/util.d.ts +33 -20
  429. package/dest/util.d.ts.map +1 -1
  430. package/dest/util.js +98 -71
  431. package/dest/versioning.d.ts +6 -9
  432. package/dest/versioning.d.ts.map +1 -1
  433. package/dest/versioning.js +9 -25
  434. package/package.json +33 -27
  435. package/src/bootstrap/bootstrap.ts +42 -15
  436. package/src/client/factory.ts +242 -60
  437. package/src/client/index.ts +1 -0
  438. package/src/client/interface.ts +239 -0
  439. package/src/client/p2p_client.ts +527 -460
  440. package/src/client/test/p2p_client.batch_tx_requester.bench.README.md +197 -0
  441. package/src/config.ts +518 -127
  442. package/src/enr/generate-enr.ts +39 -6
  443. package/src/errors/attestation-pool.error.ts +13 -0
  444. package/src/errors/p2p-service.error.ts +11 -0
  445. package/src/errors/reqresp.error.ts +0 -25
  446. package/src/errors/tx-pool.error.ts +12 -0
  447. package/src/index.ts +5 -1
  448. package/src/mem_pools/attestation_pool/attestation_pool.ts +605 -29
  449. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +828 -201
  450. package/src/mem_pools/attestation_pool/index.ts +9 -2
  451. package/src/mem_pools/attestation_pool/mocks.ts +32 -19
  452. package/src/mem_pools/index.ts +2 -2
  453. package/src/mem_pools/instrumentation.ts +79 -47
  454. package/src/mem_pools/interface.ts +5 -7
  455. package/src/mem_pools/tx_pool_v2/README.md +283 -0
  456. package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
  457. package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +112 -0
  458. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
  459. package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
  460. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +122 -0
  461. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +125 -0
  462. package/src/mem_pools/tx_pool_v2/eviction/index.ts +28 -0
  463. package/src/mem_pools/tx_pool_v2/eviction/insufficient_fee_per_gas_eviction_rule.ts +65 -0
  464. package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +219 -0
  465. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
  466. package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
  467. package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +91 -0
  468. package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +99 -0
  469. package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +32 -0
  470. package/src/mem_pools/tx_pool_v2/index.ts +12 -0
  471. package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
  472. package/src/mem_pools/tx_pool_v2/interfaces.ts +250 -0
  473. package/src/mem_pools/tx_pool_v2/tx_metadata.ts +349 -0
  474. package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
  475. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +430 -0
  476. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +238 -0
  477. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1090 -0
  478. package/src/msg_validators/attestation_validator/README.md +49 -0
  479. package/src/msg_validators/attestation_validator/attestation_validator.ts +105 -15
  480. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +101 -0
  481. package/src/msg_validators/attestation_validator/index.ts +1 -0
  482. package/src/msg_validators/clock_tolerance.ts +121 -0
  483. package/src/msg_validators/index.ts +1 -1
  484. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  485. package/src/msg_validators/proposal_validator/README.md +123 -0
  486. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +30 -0
  487. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +41 -0
  488. package/src/msg_validators/proposal_validator/index.ts +3 -0
  489. package/src/msg_validators/proposal_validator/proposal_validator.ts +159 -0
  490. package/src/msg_validators/tx_validator/README.md +127 -0
  491. package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +8 -17
  492. package/src/msg_validators/tx_validator/allowed_public_setup.ts +30 -0
  493. package/src/msg_validators/tx_validator/allowed_setup_helpers.ts +31 -0
  494. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  495. package/src/msg_validators/tx_validator/block_header_validator.ts +23 -10
  496. package/src/msg_validators/tx_validator/cached_tx_validator.ts +31 -0
  497. package/src/msg_validators/tx_validator/contract_instance_validator.ts +56 -0
  498. package/src/msg_validators/tx_validator/data_validator.ts +138 -71
  499. package/src/msg_validators/tx_validator/double_spend_validator.ts +31 -23
  500. package/src/msg_validators/tx_validator/factory.ts +478 -0
  501. package/src/msg_validators/tx_validator/fee_payer_balance.ts +44 -0
  502. package/src/msg_validators/tx_validator/gas_validator.ts +268 -0
  503. package/src/msg_validators/tx_validator/index.ts +12 -0
  504. package/src/msg_validators/tx_validator/metadata_validator.ts +80 -24
  505. package/src/msg_validators/tx_validator/nullifier_cache.ts +30 -0
  506. package/src/msg_validators/tx_validator/phases_validator.ts +173 -0
  507. package/src/msg_validators/tx_validator/size_validator.ts +22 -0
  508. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  509. package/src/msg_validators/tx_validator/timestamp_validator.ts +57 -0
  510. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +22 -0
  511. package/src/msg_validators/tx_validator/tx_proof_validator.ts +16 -8
  512. package/src/msg_validators/tx_validator/tx_validation_cache.ts +101 -0
  513. package/src/services/data_store.ts +14 -19
  514. package/src/services/discv5/discV5_service.ts +118 -39
  515. package/src/services/dummy_service.ts +196 -20
  516. package/src/services/encoding.ts +95 -11
  517. package/src/services/gossipsub/README.md +641 -0
  518. package/src/services/gossipsub/index.ts +2 -0
  519. package/src/services/gossipsub/scoring.ts +29 -5
  520. package/src/services/gossipsub/topic_score_params.ts +519 -0
  521. package/src/services/index.ts +5 -0
  522. package/src/services/libp2p/instrumentation.ts +140 -0
  523. package/src/services/libp2p/libp2p_service.ts +1373 -438
  524. package/src/services/peer-manager/interface.ts +29 -0
  525. package/src/services/peer-manager/metrics.ts +62 -12
  526. package/src/services/peer-manager/peer_manager.ts +695 -83
  527. package/src/services/peer-manager/peer_scoring.ts +96 -7
  528. package/src/services/reqresp/README.md +215 -0
  529. package/src/services/reqresp/batch-tx-requester/README.md +344 -0
  530. package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +660 -0
  531. package/src/services/reqresp/batch-tx-requester/config.ts +40 -0
  532. package/src/services/reqresp/batch-tx-requester/interface.ts +61 -0
  533. package/src/services/reqresp/batch-tx-requester/missing_txs.ts +168 -0
  534. package/src/services/reqresp/batch-tx-requester/peer_collection.ts +249 -0
  535. package/src/services/reqresp/batch-tx-requester/tx_validator.ts +24 -0
  536. package/src/services/reqresp/config.ts +27 -10
  537. package/src/services/reqresp/connection-sampler/connection_sampler.ts +166 -95
  538. package/src/services/reqresp/constants.ts +14 -0
  539. package/src/services/reqresp/index.ts +2 -0
  540. package/src/services/reqresp/interface.ts +116 -59
  541. package/src/services/reqresp/metrics.ts +39 -28
  542. package/src/services/reqresp/protocols/auth.ts +83 -0
  543. package/src/services/reqresp/protocols/block_txs/bitvector.ts +107 -0
  544. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +80 -0
  545. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +171 -0
  546. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  547. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  548. package/src/services/reqresp/protocols/index.ts +2 -1
  549. package/src/services/reqresp/protocols/status.ts +121 -5
  550. package/src/services/reqresp/protocols/tx.ts +56 -8
  551. package/src/services/reqresp/rate-limiter/rate_limiter.ts +25 -12
  552. package/src/services/reqresp/rate-limiter/rate_limits.ts +16 -6
  553. package/src/services/reqresp/reqresp.ts +397 -422
  554. package/src/services/reqresp/status.ts +12 -3
  555. package/src/services/service.ts +104 -28
  556. package/src/services/tx_collection/config.ts +89 -0
  557. package/src/services/tx_collection/file_store_tx_collection.ts +153 -0
  558. package/src/services/tx_collection/file_store_tx_source.ts +129 -0
  559. package/src/services/tx_collection/index.ts +3 -0
  560. package/src/services/tx_collection/instrumentation.ts +35 -0
  561. package/src/services/tx_collection/request_tracker.ts +127 -0
  562. package/src/services/tx_collection/tx_collection.ts +468 -0
  563. package/src/services/tx_collection/tx_collection_sink.ts +125 -0
  564. package/src/services/tx_collection/tx_source.ts +57 -0
  565. package/src/services/tx_file_store/config.ts +37 -0
  566. package/src/services/tx_file_store/index.ts +3 -0
  567. package/src/services/tx_file_store/instrumentation.ts +36 -0
  568. package/src/services/tx_file_store/tx_file_store.ts +163 -0
  569. package/src/services/tx_provider.ts +238 -0
  570. package/src/services/tx_provider_instrumentation.ts +54 -0
  571. package/src/test-helpers/index.ts +3 -0
  572. package/src/test-helpers/make-enrs.ts +4 -5
  573. package/src/test-helpers/make-test-p2p-clients.ts +117 -26
  574. package/src/test-helpers/mock-pubsub.ts +311 -0
  575. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  576. package/src/test-helpers/reqresp-nodes.ts +101 -62
  577. package/src/test-helpers/test_tx_provider.ts +69 -0
  578. package/src/test-helpers/testbench-utils.ts +453 -0
  579. package/src/testbench/p2p_client_testbench_worker.ts +477 -95
  580. package/src/testbench/parse_log_file.ts +4 -4
  581. package/src/testbench/testbench.ts +4 -4
  582. package/src/testbench/worker_client_manager.ts +366 -63
  583. package/src/types/index.ts +2 -0
  584. package/src/util.ts +128 -93
  585. package/src/versioning.ts +11 -34
  586. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -22
  587. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
  588. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -112
  589. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -17
  590. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  591. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -129
  592. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -66
  593. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  594. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +0 -245
  595. package/dest/mem_pools/tx_pool/index.d.ts +0 -4
  596. package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
  597. package/dest/mem_pools/tx_pool/index.js +0 -3
  598. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
  599. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  600. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
  601. package/dest/mem_pools/tx_pool/priority.d.ts +0 -8
  602. package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
  603. package/dest/mem_pools/tx_pool/priority.js +0 -10
  604. package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -66
  605. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
  606. package/dest/mem_pools/tx_pool/tx_pool.js +0 -3
  607. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
  608. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  609. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +0 -169
  610. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
  611. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  612. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
  613. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  614. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  615. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  616. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
  617. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
  618. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +0 -88
  619. package/dest/services/reqresp/protocols/block.d.ts +0 -4
  620. package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
  621. package/dest/services/reqresp/protocols/block.js +0 -8
  622. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -159
  623. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -161
  624. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +0 -309
  625. package/src/mem_pools/tx_pool/index.ts +0 -3
  626. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
  627. package/src/mem_pools/tx_pool/priority.ts +0 -13
  628. package/src/mem_pools/tx_pool/tx_pool.ts +0 -76
  629. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +0 -130
  630. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
  631. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
  632. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +0 -94
  633. package/src/services/reqresp/protocols/block.ts +0 -15
@@ -4,6 +4,7 @@ import { sleep } from '@aztec/foundation/sleep';
4
4
  import type { ChainConfig } from '@aztec/stdlib/config';
5
5
 
6
6
  import { type ChildProcess, fork } from 'child_process';
7
+ import { existsSync } from 'fs';
7
8
  import path from 'path';
8
9
  import { fileURLToPath } from 'url';
9
10
 
@@ -11,23 +12,45 @@ import { type P2PConfig, getP2PDefaultConfig } from '../config.js';
11
12
  import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-private-keys.js';
12
13
  import { getPorts } from '../test-helpers/get-ports.js';
13
14
  import { makeEnr, makeEnrs } from '../test-helpers/make-enrs.js';
15
+ import { BENCHMARK_CONSTANTS } from '../test-helpers/testbench-utils.js';
16
+ import type { BenchReqRespCommand, BenchResultMessage, DistributionPattern } from './p2p_client_testbench_worker.js';
14
17
 
15
18
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
- const workerPath = path.join(__dirname, '../../dest/testbench/p2p_client_testbench_worker.js');
19
+ const p2pRoot = path.resolve(__dirname, '../..');
20
+ const workerTsPath = path.join(__dirname, 'p2p_client_testbench_worker.ts');
21
+ const workerJsPath = path.join(p2pRoot, 'dest/testbench/p2p_client_testbench_worker.js');
22
+ const tsconfigPath = path.join(p2pRoot, 'tsconfig.json');
17
23
 
18
24
  const testChainConfig: ChainConfig = {
19
25
  l1ChainId: 31337,
20
- version: 1,
21
- l1Contracts: {
22
- rollupAddress: EthAddress.random(),
23
- },
26
+ rollupVersion: 1,
27
+ rollupAddress: EthAddress.random(),
24
28
  };
25
29
 
30
+ export interface ReqRespBenchmarkConfig {
31
+ txCount: number;
32
+ distribution: DistributionPattern;
33
+ timeoutMs: number;
34
+ pinnedPeerIndex?: number;
35
+ blockNumber?: number;
36
+ seed?: number;
37
+ }
38
+
39
+ export interface ReqRespBenchmarkResult {
40
+ txCount: number;
41
+ distribution: DistributionPattern;
42
+ durationMs: number;
43
+ fetchedCount: number;
44
+ success: boolean;
45
+ error?: string;
46
+ }
47
+
26
48
  class WorkerClientManager {
27
49
  public processes: ChildProcess[] = [];
28
50
  public peerIdPrivateKeys: string[] = [];
29
51
  public peerEnrs: string[] = [];
30
52
  public ports: number[] = [];
53
+ public peerIds: string[] = [];
31
54
  private p2pConfig: Partial<P2PConfig>;
32
55
  private logger: Logger;
33
56
  private messageReceivedByClient: number[] = [];
@@ -40,47 +63,65 @@ class WorkerClientManager {
40
63
  destroy() {
41
64
  this.cleanup().catch((error: Error) => {
42
65
  this.logger.error('Failed to cleanup worker client manager', error);
43
- process.exit(1);
44
66
  });
45
67
  }
46
68
 
47
69
  /**
48
- * Creates address strings from a port
49
- */
50
- private getAddresses(port: number) {
51
- return {
52
- addr: `127.0.0.1:${port}`,
53
- listenAddr: `0.0.0.0:${port}`,
54
- };
55
- }
56
-
57
- /**
58
- * Creates a client configuration object
70
+ * Creates a client configuration object for IPC.
71
+ * Note: We send the raw peerIdPrivateKey string instead of SecretValue
72
+ * because SecretValue.toJSON() returns '[Redacted]', losing the value.
73
+ * The worker must re-wrap it in SecretValue.
74
+ * We also omit priceBumpPercentage since it's a bigint and can't be
75
+ * serialized over IPC (which uses JSON under the hood).
59
76
  */
60
- private createClientConfig(clientIndex: number, port: number, otherNodes: string[]) {
61
- const { addr, listenAddr } = this.getAddresses(port);
62
-
63
- return {
77
+ private createClientConfig(
78
+ clientIndex: number,
79
+ port: number,
80
+ otherNodes: string[],
81
+ ): Omit<P2PConfig, 'peerIdPrivateKey' | 'priceBumpPercentage'> & { peerIdPrivateKey: string } & Partial<ChainConfig> {
82
+ const { priceBumpPercentage: _, ...config } = {
64
83
  ...getP2PDefaultConfig(),
65
84
  p2pEnabled: true,
66
85
  peerIdPrivateKey: this.peerIdPrivateKeys[clientIndex],
67
- tcpListenAddress: listenAddr,
68
- udpListenAddress: listenAddr,
69
- tcpAnnounceAddress: addr,
70
- udpAnnounceAddress: addr,
86
+ listenAddress: '127.0.0.1',
87
+ p2pIp: '127.0.0.1',
88
+ p2pPort: port,
71
89
  bootstrapNodes: [...otherNodes],
72
90
  ...this.p2pConfig,
73
91
  };
92
+ return config as Omit<P2PConfig, 'peerIdPrivateKey' | 'priceBumpPercentage'> & {
93
+ peerIdPrivateKey: string;
94
+ } & Partial<ChainConfig>;
74
95
  }
75
96
 
76
97
  /**
77
- * Spawns a worker process and returns a promise that resolves when the worker is ready
98
+ * Spawns a worker process and returns a promise that resolves when the worker is ready.
99
+ * Config uses raw string for peerIdPrivateKey (not SecretValue) for IPC serialization.
78
100
  */
79
101
  private spawnWorkerProcess(
80
- config: P2PConfig & Partial<ChainConfig>,
102
+ config: Omit<P2PConfig, 'peerIdPrivateKey' | 'priceBumpPercentage'> & {
103
+ peerIdPrivateKey: string;
104
+ } & Partial<ChainConfig>,
81
105
  clientIndex: number,
82
106
  ): [ChildProcess, Promise<void>] {
83
- const childProcess = fork(workerPath);
107
+ const useCompiled = existsSync(workerJsPath);
108
+ const workerPath = useCompiled ? workerJsPath : workerTsPath;
109
+
110
+ const execArgv = [...process.execArgv];
111
+ if (!useCompiled && !execArgv.includes('ts-node/esm')) {
112
+ execArgv.push('--loader', 'ts-node/esm');
113
+ }
114
+
115
+ const env = {
116
+ ...process.env,
117
+ TS_NODE_PROJECT: tsconfigPath,
118
+ };
119
+
120
+ const childProcess = fork(workerPath, {
121
+ cwd: p2pRoot,
122
+ execArgv,
123
+ env,
124
+ });
84
125
  childProcess.send({ type: 'START', config, clientIndex });
85
126
 
86
127
  // Handle unexpected child process exit
@@ -98,74 +139,131 @@ class WorkerClientManager {
98
139
 
99
140
  // Create ready signal promise
100
141
  const readySignal = new Promise<void>((resolve, reject) => {
101
- // Set a timeout to avoid hanging indefinitely
142
+ let resolved = false;
143
+
102
144
  const timeout = setTimeout(() => {
145
+ if (resolved) {
146
+ return;
147
+ }
148
+ resolved = true;
149
+ childProcess.off('message', messageHandler);
150
+ childProcess.off('exit', exitHandler);
103
151
  reject(new Error(`Timeout waiting for worker ${clientIndex} to be ready`));
104
- }, 30000); // 30 second timeout
152
+ }, BENCHMARK_CONSTANTS.WORKER_READY_TIMEOUT_MS);
105
153
 
106
- childProcess.once('message', (msg: any) => {
107
- clearTimeout(timeout);
154
+ const messageHandler = (msg: any) => {
155
+ if (resolved) {
156
+ return;
157
+ }
158
+ // Only handle READY or ERROR messages; ignore others (e.g., GOSSIP_RECEIVED)
108
159
  if (msg.type === 'READY') {
160
+ resolved = true;
161
+ clearTimeout(timeout);
162
+ childProcess.off('message', messageHandler);
163
+ childProcess.off('exit', exitHandler);
164
+ if (typeof msg.peerId === 'string') {
165
+ this.peerIds[clientIndex] = msg.peerId;
166
+ }
109
167
  resolve();
110
- }
111
- // For future use
112
- if (msg.type === 'ERROR') {
168
+ } else if (msg.type === 'ERROR') {
169
+ resolved = true;
170
+ clearTimeout(timeout);
171
+ childProcess.off('message', messageHandler);
172
+ childProcess.off('exit', exitHandler);
113
173
  reject(new Error(msg.error));
114
174
  }
115
- });
175
+ // Ignore other message types and keep waiting for READY/ERROR
176
+ };
116
177
 
117
- // Also resolve/reject if process exits before sending message
118
- childProcess.once('exit', code => {
178
+ const exitHandler = (code: number | null) => {
179
+ if (resolved) {
180
+ return;
181
+ }
182
+ resolved = true;
119
183
  clearTimeout(timeout);
184
+ childProcess.off('message', messageHandler);
120
185
  if (code === 0) {
121
186
  resolve();
122
187
  } else {
123
188
  reject(new Error(`Worker ${clientIndex} exited with code ${code} before becoming ready`));
124
189
  }
125
- });
190
+ };
191
+
192
+ childProcess.on('message', messageHandler);
193
+ childProcess.once('exit', exitHandler);
126
194
  });
127
195
 
128
196
  return [childProcess, readySignal];
129
197
  }
130
198
 
131
199
  /**
132
- * Creates a number of worker clients in separate processes
133
- * All are configured to connect to each other and overrided with the test specific config
200
+ * Creates a number of worker clients in separate processes.
201
+ * All are configured to connect to each other and overridden with the test-specific config.
134
202
  *
135
203
  * @param numberOfClients - The number of clients to create
204
+ * @param options - Optional overrides for seeding/bootstrapping strategy
136
205
  * @returns The ENRs of the created clients
137
206
  */
138
- async makeWorkerClients(numberOfClients: number) {
207
+ async makeWorkerClients(
208
+ numberOfClients: number,
209
+ options: {
210
+ bootstrapMode?: 'subset' | 'all';
211
+ seedPeerLimit?: number;
212
+ batchSize?: number;
213
+ batchDelayMs?: number;
214
+ } = {},
215
+ ) {
139
216
  try {
217
+ const bootstrapMode = options.bootstrapMode ?? (this.p2pConfig.bootstrapNodesAsFullPeers ? 'all' : 'subset');
218
+ const seedPeerLimit = options.seedPeerLimit ?? 10;
219
+ const batchSize = options.batchSize ?? (bootstrapMode === 'all' ? Math.min(5, numberOfClients) : numberOfClients);
220
+ const batchDelayMs = options.batchDelayMs ?? (bootstrapMode === 'all' ? 500 : 0);
221
+
140
222
  this.messageReceivedByClient = new Array(numberOfClients).fill(0);
141
223
  this.peerIdPrivateKeys = generatePeerIdPrivateKeys(numberOfClients);
142
224
  this.ports = await getPorts(numberOfClients);
143
225
  this.peerEnrs = await makeEnrs(this.peerIdPrivateKeys, this.ports, testChainConfig);
226
+ this.peerIds = new Array(numberOfClients);
144
227
 
145
228
  this.processes = [];
146
229
  const readySignals: Promise<void>[] = [];
147
230
 
148
- for (let i = 0; i < numberOfClients; i++) {
149
- this.logger.info(`Creating client ${i}`);
231
+ for (let batchStart = 0; batchStart < numberOfClients; batchStart += batchSize) {
232
+ const batchEnd = Math.min(batchStart + batchSize, numberOfClients);
233
+ const batchPromises: Promise<void>[] = [];
150
234
 
151
- // Maximum seed with 10 other peers to allow peer discovery to connect them at a smoother rate
152
- const otherNodes = this.peerEnrs.filter((_, ind) => ind < Math.min(i, 10));
235
+ for (let i = batchStart; i < batchEnd; i++) {
236
+ this.logger.info(`Creating client ${i}`);
153
237
 
154
- const config = this.createClientConfig(i, this.ports[i], otherNodes);
155
- const [childProcess, readySignal] = this.spawnWorkerProcess(config, i);
238
+ const otherNodes =
239
+ bootstrapMode === 'all'
240
+ ? this.peerEnrs.filter((_, ind) => ind !== i)
241
+ : this.peerEnrs.filter((_, ind) => ind < Math.min(i, seedPeerLimit));
156
242
 
157
- readySignals.push(readySignal);
158
- this.processes.push(childProcess);
243
+ const config = this.createClientConfig(i, this.ports[i], otherNodes);
244
+ const [childProcess, readySignal] = this.spawnWorkerProcess(config, i);
245
+
246
+ readySignals.push(readySignal);
247
+ batchPromises.push(readySignal);
248
+ this.processes.push(childProcess);
249
+ }
250
+
251
+ await Promise.all(batchPromises);
252
+
253
+ if (batchEnd < numberOfClients && batchDelayMs > 0) {
254
+ await sleep(batchDelayMs);
255
+ }
159
256
  }
160
257
 
161
- // Wait for peers to all connect with each other
162
- await sleep(10000);
258
+ await sleep(BENCHMARK_CONSTANTS.PEER_DISCOVERY_WAIT_MS);
163
259
 
164
- // Wait for all peers to be booted up with timeout
165
260
  await Promise.race([
166
261
  Promise.all(readySignals),
167
262
  new Promise((_, reject) =>
168
- setTimeout(() => reject(new Error('Timeout waiting for all workers to be ready')), 30000),
263
+ setTimeout(
264
+ () => reject(new Error('Timeout waiting for all workers to be ready')),
265
+ BENCHMARK_CONSTANTS.WORKER_READY_TIMEOUT_MS,
266
+ ),
169
267
  ),
170
268
  ]);
171
269
 
@@ -216,16 +314,20 @@ class WorkerClientManager {
216
314
  (_, ind) => ind !== clientIndex && ind < Math.min(this.peerEnrs.length, 10),
217
315
  );
218
316
 
317
+ this.logger.info(`Changing port for client ${clientIndex} to ${newPort} with other nodes `, otherNodes);
318
+
219
319
  const config = this.createClientConfig(clientIndex, newPort, otherNodes);
220
320
  const [childProcess, readySignal] = this.spawnWorkerProcess(config, clientIndex);
221
321
 
222
322
  this.processes[clientIndex] = childProcess;
223
323
 
224
- // Wait for the process to be ready with a timeout
225
324
  await Promise.race([
226
325
  readySignal,
227
326
  new Promise((_, reject) =>
228
- setTimeout(() => reject(new Error(`Timeout waiting for client ${clientIndex} to be ready`)), 30000),
327
+ setTimeout(
328
+ () => reject(new Error(`Timeout waiting for client ${clientIndex} to be ready`)),
329
+ BENCHMARK_CONSTANTS.WORKER_READY_TIMEOUT_MS,
330
+ ),
229
331
  ),
230
332
  ]);
231
333
  } catch (error) {
@@ -245,15 +347,14 @@ class WorkerClientManager {
245
347
  }
246
348
 
247
349
  return new Promise<void>(resolve => {
248
- // Set a timeout for the graceful exit
249
350
  const forceKillTimeout = setTimeout(() => {
250
351
  this.logger.warn(`Process ${index} didn't exit gracefully, force killing...`);
251
352
  try {
252
- process.kill('SIGKILL'); // Force kill
353
+ process.kill('SIGKILL');
253
354
  } catch (e) {
254
355
  this.logger.error(`Error force killing process ${index}:`, e);
255
356
  }
256
- }, 10000); // 10 second timeout for graceful exit
357
+ }, BENCHMARK_CONSTANTS.GRACEFUL_SHUTDOWN_TIMEOUT_MS);
257
358
 
258
359
  // Listen for process exit
259
360
  process.once('exit', () => {
@@ -264,7 +365,7 @@ class WorkerClientManager {
264
365
  // Try to gracefully stop the process
265
366
  try {
266
367
  process.send({ type: 'STOP' });
267
- } catch (e) {
368
+ } catch {
268
369
  // If sending the message fails, force kill immediately
269
370
  clearTimeout(forceKillTimeout);
270
371
  try {
@@ -286,7 +387,6 @@ class WorkerClientManager {
286
387
  // Create array of promises for each process termination
287
388
  const terminationPromises = this.processes.map((process, index) => this.terminateProcess(process, index));
288
389
 
289
- // Wait for all processes to terminate with a timeout
290
390
  try {
291
391
  await Promise.race([
292
392
  Promise.all(terminationPromises),
@@ -298,12 +398,12 @@ class WorkerClientManager {
298
398
  if (!p.killed) {
299
399
  p.kill('SIGKILL');
300
400
  }
301
- } catch (e) {
401
+ } catch {
302
402
  // Ignore errors when force killing
303
403
  }
304
404
  });
305
405
  resolve();
306
- }, 30000); // 30 second timeout for all processes
406
+ }, BENCHMARK_CONSTANTS.CLEANUP_TIMEOUT_MS);
307
407
  }),
308
408
  ]);
309
409
  } catch (error) {
@@ -311,8 +411,211 @@ class WorkerClientManager {
311
411
  }
312
412
 
313
413
  this.processes = [];
414
+ this.peerIds = [];
314
415
  this.logger.info('All worker processes cleaned up');
315
416
  }
417
+
418
+ /**
419
+ * Checks that the aggregator (client 0) has sufficient peer connections before running a benchmark.
420
+ * This prevents benchmark cases from starting with degraded connectivity after a previous case
421
+ * caused connection failures.
422
+ */
423
+ async waitForConnectivity(minPeers: number, timeoutMs: number = 15_000): Promise<number> {
424
+ const waitInterval = 1000;
425
+ let waited = 0;
426
+
427
+ while (waited < timeoutMs) {
428
+ const count = await this.getPeerCount(0, 5000);
429
+ if (count >= minPeers) {
430
+ this.logger.info(`Connectivity check passed: ${count}/${minPeers} peers connected`);
431
+ return count;
432
+ }
433
+ this.logger.debug(`Waiting for connectivity: ${count}/${minPeers} (waited ${waited}ms)`);
434
+ await sleep(waitInterval);
435
+ waited += waitInterval;
436
+ }
437
+
438
+ const finalCount = await this.getPeerCount(0, 5000);
439
+ this.logger.warn(`Connectivity check: only ${finalCount}/${minPeers} peers after ${timeoutMs}ms`);
440
+ return finalCount;
441
+ }
442
+
443
+ private getPeerCount(clientIndex: number, timeoutMs: number): Promise<number> {
444
+ return new Promise<number>(resolve => {
445
+ let resolved = false;
446
+
447
+ const handler = (msg: any) => {
448
+ if (resolved) {
449
+ return;
450
+ }
451
+ if (msg.type === 'PEER_COUNT') {
452
+ resolved = true;
453
+ clearTimeout(timeout);
454
+ this.processes[clientIndex].off('message', handler);
455
+ resolve(msg.count as number);
456
+ }
457
+ };
458
+
459
+ const timeout = setTimeout(() => {
460
+ if (resolved) {
461
+ return;
462
+ }
463
+ resolved = true;
464
+ this.processes[clientIndex].off('message', handler);
465
+ resolve(0);
466
+ }, timeoutMs);
467
+
468
+ this.processes[clientIndex].on('message', handler);
469
+ this.processes[clientIndex].send({ type: 'GET_PEER_COUNT' });
470
+ });
471
+ }
472
+
473
+ /**
474
+ * Run a req/resp benchmark across all worker clients.
475
+ *
476
+ * This sends a BENCH_REQRESP command to all workers:
477
+ * - Aggregator (client 0) runs the collector and returns timing results
478
+ * - Responders (clients 1..N) populate their tx pools based on distribution
479
+ *
480
+ * All workers generate the same txs deterministically from a shared seed,
481
+ * then filter based on their peerIndex and distribution pattern.
482
+ */
483
+ async runReqRespBenchmark(config: ReqRespBenchmarkConfig): Promise<ReqRespBenchmarkResult> {
484
+ const peerCount = this.processes.length;
485
+ if (peerCount < 2) {
486
+ throw new Error('Need at least 2 peers to run req/resp benchmark');
487
+ }
488
+
489
+ const seed = config.seed ?? Date.now();
490
+ const blockNumber = config.blockNumber ?? 1;
491
+ const pinnedPeerId = config.pinnedPeerIndex !== undefined ? this.peerIds[config.pinnedPeerIndex] : undefined;
492
+
493
+ this.logger.info(`Starting req/resp benchmark: txCount=${config.txCount}, distribution=${config.distribution}`);
494
+
495
+ const readyPromises: Promise<void>[] = [];
496
+
497
+ for (let i = 1; i < peerCount; i++) {
498
+ const cmd: BenchReqRespCommand = {
499
+ type: 'BENCH_REQRESP',
500
+ txCount: config.txCount,
501
+ peerCount,
502
+ distribution: config.distribution,
503
+ timeoutMs: config.timeoutMs,
504
+ isAggregator: false,
505
+ peerIndex: i,
506
+ pinnedPeerIndex: config.pinnedPeerIndex,
507
+ pinnedPeerId,
508
+ blockNumber,
509
+ seed,
510
+ };
511
+
512
+ this.processes[i].send(cmd);
513
+ readyPromises.push(this.waitForBenchReady(i, 30000));
514
+ }
515
+
516
+ await Promise.all(readyPromises);
517
+ this.logger.info('All responder peers ready, starting aggregator benchmark...');
518
+
519
+ const aggregatorCmd: BenchReqRespCommand = {
520
+ type: 'BENCH_REQRESP',
521
+ txCount: config.txCount,
522
+ peerCount,
523
+ distribution: config.distribution,
524
+ timeoutMs: config.timeoutMs,
525
+ isAggregator: true,
526
+ peerIndex: 0,
527
+ pinnedPeerIndex: config.pinnedPeerIndex,
528
+ pinnedPeerId,
529
+ blockNumber,
530
+ seed,
531
+ };
532
+
533
+ this.processes[0].send(aggregatorCmd);
534
+ const aggregatorBudgetMs = config.timeoutMs + BENCHMARK_CONSTANTS.MAX_PEER_WAIT_MS + 30000;
535
+ const result = await this.waitForBenchResult(0, aggregatorBudgetMs);
536
+
537
+ this.logger.info(
538
+ `Benchmark complete: fetched=${result.fetchedCount}/${config.txCount}, duration=${result.durationMs.toFixed(0)}ms, success=${result.success}`,
539
+ );
540
+
541
+ return {
542
+ txCount: config.txCount,
543
+ distribution: config.distribution,
544
+ durationMs: result.durationMs,
545
+ fetchedCount: result.fetchedCount,
546
+ success: result.success,
547
+ error: result.error,
548
+ };
549
+ }
550
+
551
+ private waitForBenchReady(clientIndex: number, timeoutMs: number): Promise<void> {
552
+ return new Promise((resolve, reject) => {
553
+ let resolved = false;
554
+
555
+ const handler = (msg: any) => {
556
+ if (resolved) {
557
+ return;
558
+ }
559
+ if (msg.type === 'BENCH_READY') {
560
+ resolved = true;
561
+ clearTimeout(timeout);
562
+ this.processes[clientIndex].off('message', handler);
563
+ resolve();
564
+ } else if (msg.type === 'ERROR') {
565
+ resolved = true;
566
+ clearTimeout(timeout);
567
+ this.processes[clientIndex].off('message', handler);
568
+ reject(new Error(`Client ${clientIndex} error: ${msg.error}`));
569
+ }
570
+ };
571
+
572
+ const timeout = setTimeout(() => {
573
+ if (resolved) {
574
+ return;
575
+ }
576
+ resolved = true;
577
+ this.processes[clientIndex].off('message', handler);
578
+ reject(new Error(`Timeout waiting for BENCH_READY from client ${clientIndex}`));
579
+ }, timeoutMs);
580
+
581
+ this.processes[clientIndex].on('message', handler);
582
+ });
583
+ }
584
+
585
+ private waitForBenchResult(clientIndex: number, timeoutMs: number): Promise<BenchResultMessage> {
586
+ return new Promise((resolve, reject) => {
587
+ let resolved = false;
588
+
589
+ const handler = (msg: any) => {
590
+ if (resolved) {
591
+ return;
592
+ }
593
+ if (msg.type === 'BENCH_RESULT') {
594
+ resolved = true;
595
+ clearTimeout(timeout);
596
+ this.processes[clientIndex].off('message', handler);
597
+ resolve(msg as BenchResultMessage);
598
+ } else if (msg.type === 'ERROR') {
599
+ resolved = true;
600
+ clearTimeout(timeout);
601
+ this.processes[clientIndex].off('message', handler);
602
+ reject(new Error(`Client ${clientIndex} error: ${msg.error}`));
603
+ }
604
+ };
605
+
606
+ const timeout = setTimeout(() => {
607
+ if (resolved) {
608
+ return;
609
+ }
610
+ resolved = true;
611
+ this.processes[clientIndex].off('message', handler);
612
+ reject(new Error(`Timeout waiting for BENCH_RESULT from client ${clientIndex}`));
613
+ }, timeoutMs);
614
+
615
+ this.processes[clientIndex].on('message', handler);
616
+ });
617
+ }
316
618
  }
317
619
 
318
620
  export { WorkerClientManager, testChainConfig };
621
+ export type { DistributionPattern } from './p2p_client_testbench_worker.js';
@@ -17,6 +17,7 @@ export enum PeerEvent {
17
17
  export enum Discv5Event {
18
18
  DISCOVERED = 'discovered',
19
19
  ENR_ADDED = 'enrAdded',
20
+ MULTIADDR_UPDATED = 'multiaddrUpdated',
20
21
  }
21
22
 
22
23
  /**
@@ -34,3 +35,4 @@ export enum GossipSubEvent {
34
35
  * Aztec network specific types
35
36
  */
36
37
  export const AZTEC_ENR_KEY = 'aztec';
38
+ export const AZTEC_ENR_CLIENT_VERSION_KEY = 'ver';