@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.1142ef1

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 (443) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +1 -1
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +22 -9
  4. package/dest/client/factory.d.ts +15 -5
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +60 -25
  7. package/dest/client/index.d.ts +2 -1
  8. package/dest/client/index.d.ts.map +1 -1
  9. package/dest/client/index.js +1 -0
  10. package/dest/client/interface.d.ts +170 -0
  11. package/dest/client/interface.d.ts.map +1 -0
  12. package/dest/client/interface.js +9 -0
  13. package/dest/client/p2p_client.d.ts +75 -193
  14. package/dest/client/p2p_client.d.ts.map +1 -1
  15. package/dest/client/p2p_client.js +757 -228
  16. package/dest/config.d.ts +148 -125
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +180 -34
  19. package/dest/enr/generate-enr.d.ts +11 -3
  20. package/dest/enr/generate-enr.d.ts.map +1 -1
  21. package/dest/enr/generate-enr.js +27 -5
  22. package/dest/enr/index.d.ts +1 -1
  23. package/dest/errors/attestation-pool.error.d.ts +7 -0
  24. package/dest/errors/attestation-pool.error.d.ts.map +1 -0
  25. package/dest/errors/attestation-pool.error.js +12 -0
  26. package/dest/errors/reqresp.error.d.ts +1 -1
  27. package/dest/errors/reqresp.error.d.ts.map +1 -1
  28. package/dest/index.d.ts +4 -1
  29. package/dest/index.d.ts.map +1 -1
  30. package/dest/index.js +2 -0
  31. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -25
  32. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  34. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  35. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +288 -174
  36. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  37. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +29 -11
  38. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  39. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +168 -62
  40. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +24 -10
  41. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  42. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +133 -82
  43. package/dest/mem_pools/attestation_pool/mocks.d.ts +232 -11
  44. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  45. package/dest/mem_pools/attestation_pool/mocks.js +15 -20
  46. package/dest/mem_pools/index.d.ts +1 -1
  47. package/dest/mem_pools/instrumentation.d.ts +16 -12
  48. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  49. package/dest/mem_pools/instrumentation.js +55 -40
  50. package/dest/mem_pools/interface.d.ts +3 -4
  51. package/dest/mem_pools/interface.d.ts.map +1 -1
  52. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +70 -16
  53. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  54. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +452 -142
  55. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +18 -0
  56. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  57. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +56 -0
  58. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +83 -0
  59. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  60. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +5 -0
  61. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +15 -0
  62. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +88 -0
  64. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  65. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  67. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  68. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +76 -0
  70. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  71. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  73. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  74. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  75. package/dest/mem_pools/tx_pool/index.js +0 -1
  76. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  77. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  78. package/dest/mem_pools/tx_pool/priority.js +7 -2
  79. package/dest/mem_pools/tx_pool/tx_pool.d.ts +72 -11
  80. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  81. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  82. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  83. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +276 -45
  84. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +7 -5
  85. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  86. package/dest/msg_validators/attestation_validator/attestation_validator.js +48 -10
  87. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  88. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  89. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +64 -0
  90. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  91. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  92. package/dest/msg_validators/attestation_validator/index.js +1 -0
  93. package/dest/msg_validators/index.d.ts +2 -2
  94. package/dest/msg_validators/index.d.ts.map +1 -1
  95. package/dest/msg_validators/index.js +1 -1
  96. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  97. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  98. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  99. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  100. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  101. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  102. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  103. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  104. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  105. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  106. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  107. package/dest/msg_validators/proposal_validator/index.js +3 -0
  108. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  109. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  110. package/dest/msg_validators/proposal_validator/proposal_validator.js +80 -0
  111. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  112. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  113. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +183 -0
  114. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  115. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  116. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
  117. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  118. package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
  119. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  120. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  121. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  122. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
  123. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  124. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
  125. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  126. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  127. package/dest/msg_validators/tx_validator/data_validator.js +56 -86
  128. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -3
  129. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  130. package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
  131. package/dest/msg_validators/tx_validator/factory.d.ts +16 -0
  132. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  133. package/dest/msg_validators/tx_validator/factory.js +74 -0
  134. package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
  135. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  136. package/dest/msg_validators/tx_validator/gas_validator.js +115 -0
  137. package/dest/msg_validators/tx_validator/index.d.ts +8 -1
  138. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  139. package/dest/msg_validators/tx_validator/index.js +7 -0
  140. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +9 -5
  141. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  142. package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
  143. package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
  144. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  145. package/dest/msg_validators/tx_validator/phases_validator.js +93 -0
  146. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  147. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  148. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  149. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +13 -0
  150. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  151. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  152. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +8 -0
  153. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  154. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  155. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
  156. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  157. package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
  158. package/dest/services/data_store.d.ts +1 -1
  159. package/dest/services/data_store.d.ts.map +1 -1
  160. package/dest/services/discv5/discV5_service.d.ts +10 -9
  161. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  162. package/dest/services/discv5/discV5_service.js +63 -36
  163. package/dest/services/dummy_service.d.ts +54 -11
  164. package/dest/services/dummy_service.d.ts.map +1 -1
  165. package/dest/services/dummy_service.js +91 -5
  166. package/dest/services/encoding.d.ts +26 -7
  167. package/dest/services/encoding.d.ts.map +1 -1
  168. package/dest/services/encoding.js +76 -6
  169. package/dest/services/gossipsub/scoring.d.ts +1 -1
  170. package/dest/services/index.d.ts +5 -1
  171. package/dest/services/index.d.ts.map +1 -1
  172. package/dest/services/index.js +4 -0
  173. package/dest/services/libp2p/instrumentation.d.ts +20 -0
  174. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  175. package/dest/services/libp2p/instrumentation.js +111 -0
  176. package/dest/services/libp2p/libp2p_service.d.ts +102 -96
  177. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  178. package/dest/services/libp2p/libp2p_service.js +1307 -301
  179. package/dest/services/peer-manager/interface.d.ts +23 -0
  180. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  181. package/dest/services/peer-manager/interface.js +1 -0
  182. package/dest/services/peer-manager/metrics.d.ts +11 -2
  183. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  184. package/dest/services/peer-manager/metrics.js +29 -12
  185. package/dest/services/peer-manager/peer_manager.d.ts +103 -23
  186. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  187. package/dest/services/peer-manager/peer_manager.js +551 -82
  188. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  189. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  190. package/dest/services/peer-manager/peer_scoring.js +37 -2
  191. package/dest/services/reqresp/config.d.ts +11 -9
  192. package/dest/services/reqresp/config.d.ts.map +1 -1
  193. package/dest/services/reqresp/config.js +18 -4
  194. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +2 -2
  195. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  196. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +10 -6
  197. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +31 -17
  198. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  199. package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
  200. package/dest/services/reqresp/index.d.ts +3 -2
  201. package/dest/services/reqresp/index.d.ts.map +1 -1
  202. package/dest/services/reqresp/index.js +2 -1
  203. package/dest/services/reqresp/interface.d.ts +73 -24
  204. package/dest/services/reqresp/interface.d.ts.map +1 -1
  205. package/dest/services/reqresp/interface.js +46 -27
  206. package/dest/services/reqresp/metrics.d.ts +1 -1
  207. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  208. package/dest/services/reqresp/metrics.js +5 -21
  209. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  210. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  211. package/dest/services/reqresp/protocols/auth.js +71 -0
  212. package/dest/services/reqresp/protocols/block.d.ts +6 -1
  213. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  214. package/dest/services/reqresp/protocols/block.js +30 -6
  215. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
  216. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  217. package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
  218. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
  219. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  220. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
  221. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +47 -0
  222. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  223. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
  224. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  225. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  226. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  227. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  228. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  229. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  230. package/dest/services/reqresp/protocols/index.d.ts +3 -1
  231. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  232. package/dest/services/reqresp/protocols/index.js +2 -0
  233. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  234. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  235. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  236. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  237. package/dest/services/reqresp/protocols/status.js +75 -5
  238. package/dest/services/reqresp/protocols/tx.d.ts +14 -4
  239. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  240. package/dest/services/reqresp/protocols/tx.js +34 -6
  241. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  242. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
  243. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  244. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
  245. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  246. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  247. package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
  248. package/dest/services/reqresp/reqresp.d.ts +24 -66
  249. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  250. package/dest/services/reqresp/reqresp.js +699 -230
  251. package/dest/services/reqresp/status.d.ts +10 -4
  252. package/dest/services/reqresp/status.d.ts.map +1 -1
  253. package/dest/services/reqresp/status.js +9 -2
  254. package/dest/services/service.d.ts +37 -20
  255. package/dest/services/service.d.ts.map +1 -1
  256. package/dest/services/tx_collection/config.d.ts +25 -0
  257. package/dest/services/tx_collection/config.d.ts.map +1 -0
  258. package/dest/services/tx_collection/config.js +58 -0
  259. package/dest/services/tx_collection/fast_tx_collection.d.ts +51 -0
  260. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
  261. package/dest/services/tx_collection/fast_tx_collection.js +300 -0
  262. package/dest/services/tx_collection/index.d.ts +3 -0
  263. package/dest/services/tx_collection/index.d.ts.map +1 -0
  264. package/dest/services/tx_collection/index.js +2 -0
  265. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  266. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  267. package/dest/services/tx_collection/instrumentation.js +24 -0
  268. package/dest/services/tx_collection/slow_tx_collection.d.ts +53 -0
  269. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
  270. package/dest/services/tx_collection/slow_tx_collection.js +177 -0
  271. package/dest/services/tx_collection/tx_collection.d.ts +110 -0
  272. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  273. package/dest/services/tx_collection/tx_collection.js +128 -0
  274. package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
  275. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  276. package/dest/services/tx_collection/tx_collection_sink.js +111 -0
  277. package/dest/services/tx_collection/tx_source.d.ts +18 -0
  278. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  279. package/dest/services/tx_collection/tx_source.js +31 -0
  280. package/dest/services/tx_provider.d.ts +51 -0
  281. package/dest/services/tx_provider.d.ts.map +1 -0
  282. package/dest/services/tx_provider.js +219 -0
  283. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  284. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  285. package/dest/services/tx_provider_instrumentation.js +34 -0
  286. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  287. package/dest/test-helpers/get-ports.d.ts +1 -1
  288. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  289. package/dest/test-helpers/index.d.ts +2 -1
  290. package/dest/test-helpers/index.d.ts.map +1 -1
  291. package/dest/test-helpers/index.js +1 -0
  292. package/dest/test-helpers/make-enrs.d.ts +1 -1
  293. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  294. package/dest/test-helpers/make-enrs.js +4 -5
  295. package/dest/test-helpers/make-test-p2p-clients.d.ts +33 -5
  296. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  297. package/dest/test-helpers/make-test-p2p-clients.js +86 -16
  298. package/dest/test-helpers/mock-pubsub.d.ts +59 -0
  299. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  300. package/dest/test-helpers/mock-pubsub.js +130 -0
  301. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  302. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  303. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  304. package/dest/test-helpers/reqresp-nodes.d.ts +15 -11
  305. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  306. package/dest/test-helpers/reqresp-nodes.js +62 -28
  307. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  308. package/dest/testbench/p2p_client_testbench_worker.js +124 -35
  309. package/dest/testbench/parse_log_file.d.ts +1 -1
  310. package/dest/testbench/parse_log_file.js +4 -4
  311. package/dest/testbench/testbench.d.ts +1 -1
  312. package/dest/testbench/testbench.js +4 -4
  313. package/dest/testbench/worker_client_manager.d.ts +1 -6
  314. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  315. package/dest/testbench/worker_client_manager.js +17 -20
  316. package/dest/types/index.d.ts +4 -2
  317. package/dest/types/index.d.ts.map +1 -1
  318. package/dest/types/index.js +2 -0
  319. package/dest/util.d.ts +24 -16
  320. package/dest/util.d.ts.map +1 -1
  321. package/dest/util.js +75 -69
  322. package/dest/versioning.d.ts +4 -4
  323. package/dest/versioning.d.ts.map +1 -1
  324. package/dest/versioning.js +8 -3
  325. package/package.json +32 -27
  326. package/src/bootstrap/bootstrap.ts +27 -11
  327. package/src/client/factory.ts +139 -53
  328. package/src/client/index.ts +1 -0
  329. package/src/client/interface.ts +213 -0
  330. package/src/client/p2p_client.ts +471 -385
  331. package/src/config.ts +299 -134
  332. package/src/enr/generate-enr.ts +39 -6
  333. package/src/errors/attestation-pool.error.ts +13 -0
  334. package/src/index.ts +4 -0
  335. package/src/mem_pools/attestation_pool/attestation_pool.ts +119 -24
  336. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +344 -201
  337. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +233 -72
  338. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +199 -96
  339. package/src/mem_pools/attestation_pool/mocks.ts +21 -16
  340. package/src/mem_pools/instrumentation.ts +71 -48
  341. package/src/mem_pools/interface.ts +2 -4
  342. package/src/mem_pools/tx_pool/README.md +255 -0
  343. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +537 -155
  344. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +71 -0
  345. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +93 -0
  346. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +108 -0
  347. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  348. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +91 -0
  349. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  350. package/src/mem_pools/tx_pool/index.ts +0 -1
  351. package/src/mem_pools/tx_pool/priority.ts +9 -2
  352. package/src/mem_pools/tx_pool/tx_pool.ts +75 -10
  353. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +225 -36
  354. package/src/msg_validators/attestation_validator/attestation_validator.ts +60 -14
  355. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +88 -0
  356. package/src/msg_validators/attestation_validator/index.ts +1 -0
  357. package/src/msg_validators/index.ts +1 -1
  358. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  359. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  360. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  361. package/src/msg_validators/proposal_validator/index.ts +3 -0
  362. package/src/msg_validators/proposal_validator/proposal_validator.ts +92 -0
  363. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +206 -0
  364. package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
  365. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  366. package/src/msg_validators/tx_validator/block_header_validator.ts +5 -5
  367. package/src/msg_validators/tx_validator/data_validator.ts +89 -69
  368. package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
  369. package/src/msg_validators/tx_validator/factory.ts +110 -0
  370. package/src/msg_validators/tx_validator/gas_validator.ts +134 -0
  371. package/src/msg_validators/tx_validator/index.ts +7 -0
  372. package/src/msg_validators/tx_validator/metadata_validator.ts +67 -22
  373. package/src/msg_validators/tx_validator/phases_validator.ts +116 -0
  374. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  375. package/src/msg_validators/tx_validator/timestamp_validator.ts +49 -0
  376. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
  377. package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
  378. package/src/services/discv5/discV5_service.ts +84 -38
  379. package/src/services/dummy_service.ts +153 -9
  380. package/src/services/encoding.ts +83 -6
  381. package/src/services/index.ts +4 -0
  382. package/src/services/libp2p/instrumentation.ts +113 -0
  383. package/src/services/libp2p/libp2p_service.ts +1120 -329
  384. package/src/services/peer-manager/interface.ts +29 -0
  385. package/src/services/peer-manager/metrics.ts +38 -12
  386. package/src/services/peer-manager/peer_manager.ts +657 -80
  387. package/src/services/peer-manager/peer_scoring.ts +42 -3
  388. package/src/services/reqresp/config.ts +26 -9
  389. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
  390. package/src/services/reqresp/connection-sampler/connection_sampler.ts +150 -95
  391. package/src/services/reqresp/index.ts +2 -0
  392. package/src/services/reqresp/interface.ts +92 -37
  393. package/src/services/reqresp/metrics.ts +11 -24
  394. package/src/services/reqresp/protocols/auth.ts +83 -0
  395. package/src/services/reqresp/protocols/block.ts +26 -4
  396. package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
  397. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
  398. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
  399. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  400. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  401. package/src/services/reqresp/protocols/index.ts +2 -0
  402. package/src/services/reqresp/protocols/status.ts +119 -5
  403. package/src/services/reqresp/protocols/tx.ts +36 -8
  404. package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
  405. package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
  406. package/src/services/reqresp/reqresp.ts +387 -256
  407. package/src/services/reqresp/status.ts +12 -3
  408. package/src/services/service.ts +61 -22
  409. package/src/services/tx_collection/config.ts +84 -0
  410. package/src/services/tx_collection/fast_tx_collection.ts +341 -0
  411. package/src/services/tx_collection/index.ts +2 -0
  412. package/src/services/tx_collection/instrumentation.ts +26 -0
  413. package/src/services/tx_collection/slow_tx_collection.ts +233 -0
  414. package/src/services/tx_collection/tx_collection.ts +216 -0
  415. package/src/services/tx_collection/tx_collection_sink.ts +129 -0
  416. package/src/services/tx_collection/tx_source.ts +37 -0
  417. package/src/services/tx_provider.ts +232 -0
  418. package/src/services/tx_provider_instrumentation.ts +48 -0
  419. package/src/test-helpers/index.ts +1 -0
  420. package/src/test-helpers/make-enrs.ts +4 -5
  421. package/src/test-helpers/make-test-p2p-clients.ts +111 -21
  422. package/src/test-helpers/mock-pubsub.ts +188 -0
  423. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  424. package/src/test-helpers/reqresp-nodes.ts +87 -36
  425. package/src/testbench/p2p_client_testbench_worker.ts +182 -32
  426. package/src/testbench/parse_log_file.ts +4 -4
  427. package/src/testbench/testbench.ts +4 -4
  428. package/src/testbench/worker_client_manager.ts +23 -24
  429. package/src/types/index.ts +2 -0
  430. package/src/util.ts +105 -91
  431. package/src/versioning.ts +11 -4
  432. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
  433. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  434. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -141
  435. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
  436. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  437. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +0 -21
  438. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  439. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  440. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  441. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -174
  442. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +0 -29
  443. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,8 +1,10 @@
1
1
  import { timesParallel } from '@aztec/foundation/collection';
2
+ import { SecretValue } from '@aztec/foundation/config';
3
+ import { createLogger } from '@aztec/foundation/log';
2
4
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
3
5
  import { emptyChainConfig } from '@aztec/stdlib/config';
6
+ import { compressComponentVersions } from '@aztec/stdlib/versioning';
4
7
  import { getTelemetryClient } from '@aztec/telemetry-client';
5
- import { SignableENR } from '@chainsafe/enr';
6
8
  import { gossipsub } from '@chainsafe/libp2p-gossipsub';
7
9
  import { noise } from '@chainsafe/libp2p-noise';
8
10
  import { yamux } from '@chainsafe/libp2p-yamux';
@@ -11,15 +13,19 @@ import { identify } from '@libp2p/identify';
11
13
  import { createSecp256k1PeerId } from '@libp2p/peer-id-factory';
12
14
  import { tcp } from '@libp2p/tcp';
13
15
  import { multiaddr } from '@multiformats/multiaddr';
16
+ import { SignableENR } from '@nethermindeth/enr';
14
17
  import getPort from 'get-port';
15
18
  import { createLibp2p } from 'libp2p';
16
19
  import { BootstrapNode } from '../bootstrap/bootstrap.js';
17
20
  import { DiscV5Service } from '../services/discv5/discV5_service.js';
18
21
  import { LibP2PService } from '../services/libp2p/libp2p_service.js';
22
+ import { PeerManager } from '../services/peer-manager/peer_manager.js';
23
+ import { PeerScoring } from '../services/peer-manager/peer_scoring.js';
19
24
  import { ReqRespSubProtocol, noopValidator } from '../services/reqresp/interface.js';
20
- import { pingHandler, statusHandler } from '../services/reqresp/protocols/index.js';
25
+ import { pingHandler } from '../services/reqresp/protocols/index.js';
21
26
  import { ReqResp } from '../services/reqresp/reqresp.js';
22
27
  import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js';
28
+ import { getVersions } from '../versioning.js';
23
29
  /**
24
30
  * Creates a libp2p node, pre configured.
25
31
  * @param boostrapAddrs - an optional list of bootstrap addresses
@@ -30,10 +36,10 @@ import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js
30
36
  start,
31
37
  addresses: {
32
38
  listen: [
33
- `/ip4/0.0.0.0/tcp/${port}`
39
+ `/ip4/127.0.0.1/tcp/${port}`
34
40
  ],
35
41
  announce: [
36
- `/ip4/0.0.0.0/tcp/${port}`
42
+ `/ip4/127.0.0.1/tcp/${port}`
37
43
  ]
38
44
  },
39
45
  connectionEncryption: [
@@ -73,34 +79,42 @@ import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js
73
79
  * P2P functionality is operational, however everything else is default
74
80
  *
75
81
  *
76
- */ export async function createTestLibP2PService(clientType, boostrapAddrs = [], l2BlockSource, worldStateSynchronizer, epochCache, mempools, telemetry, port = 0, peerId, chainConfig = emptyChainConfig) {
82
+ */ export async function createTestLibP2PService(clientType, boostrapAddrs = [], archiver, worldStateSynchronizer, epochCache, mempools, telemetry, port = 0, peerId, chainConfig = emptyChainConfig) {
77
83
  peerId = peerId ?? await createSecp256k1PeerId();
78
84
  const config = {
79
- tcpAnnounceAddress: `127.0.0.1:${port}`,
80
- udpAnnounceAddress: `127.0.0.1:${port}`,
81
- tcpListenAddress: `0.0.0.0:${port}`,
82
- udpListenAddress: `0.0.0.0:${port}`,
85
+ p2pIp: `127.0.0.1`,
86
+ p2pPort: port,
83
87
  bootstrapNodes: boostrapAddrs,
84
88
  peerCheckIntervalMS: 1000,
85
89
  maxPeerCount: 5,
86
90
  p2pEnabled: true,
87
- peerIdPrivateKey: Buffer.from(peerId.privateKey).toString('hex'),
91
+ peerIdPrivateKey: new SecretValue(Buffer.from(peerId.privateKey).toString('hex')),
88
92
  bootstrapNodeEnrVersionCheck: false,
89
93
  ...chainConfig
90
94
  };
91
- const discoveryService = new DiscV5Service(peerId, config, telemetry);
95
+ const discoveryService = new DiscV5Service(peerId, config, 'test-reqresp-node', telemetry);
92
96
  const proofVerifier = new AlwaysTrueCircuitVerifier();
93
97
  // No bootstrap nodes provided as the libp2p service will register them in the constructor
94
98
  const p2pNode = await createLibp2pNode([], peerId, port, /*enable gossip */ true, /**start */ false);
95
- return new LibP2PService(clientType, config, p2pNode, discoveryService, mempools, l2BlockSource, epochCache, proofVerifier, worldStateSynchronizer, telemetry);
99
+ // Duplicated setup code from Libp2pService.new
100
+ const peerScoring = new PeerScoring(config);
101
+ const reqresp = new ReqResp(config, p2pNode, peerScoring);
102
+ const versions = getVersions(config);
103
+ const protocolVersion = compressComponentVersions(versions);
104
+ const peerManager = new PeerManager(p2pNode, discoveryService, config, telemetry, createLogger(`p2p:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
105
+ p2pNode.services.pubsub.score.params.appSpecificWeight = 10;
106
+ p2pNode.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
107
+ return new LibP2PService(clientType, config, p2pNode, discoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry);
96
108
  }
97
109
  // Mock sub protocol handlers
98
110
  export const MOCK_SUB_PROTOCOL_HANDLERS = {
99
111
  [ReqRespSubProtocol.PING]: pingHandler,
100
- [ReqRespSubProtocol.STATUS]: statusHandler,
112
+ [ReqRespSubProtocol.STATUS]: (_msg)=>Promise.resolve(Buffer.from('status')),
101
113
  [ReqRespSubProtocol.TX]: (_msg)=>Promise.resolve(Buffer.from('tx')),
102
114
  [ReqRespSubProtocol.GOODBYE]: (_msg)=>Promise.resolve(Buffer.from('goodbye')),
103
- [ReqRespSubProtocol.BLOCK]: (_msg)=>Promise.resolve(Buffer.from('block'))
115
+ [ReqRespSubProtocol.BLOCK]: (_msg)=>Promise.resolve(Buffer.from('block')),
116
+ [ReqRespSubProtocol.AUTH]: (_msg)=>Promise.resolve(Buffer.from('auth')),
117
+ [ReqRespSubProtocol.BLOCK_TXS]: (_msg)=>Promise.resolve(Buffer.from('block_txs'))
104
118
  };
105
119
  // By default, all requests are valid
106
120
  // If you want to test an invalid response, you can override the validator
@@ -109,13 +123,15 @@ export const MOCK_SUB_PROTOCOL_VALIDATORS = {
109
123
  [ReqRespSubProtocol.STATUS]: noopValidator,
110
124
  [ReqRespSubProtocol.TX]: noopValidator,
111
125
  [ReqRespSubProtocol.GOODBYE]: noopValidator,
112
- [ReqRespSubProtocol.BLOCK]: noopValidator
126
+ [ReqRespSubProtocol.BLOCK]: noopValidator,
127
+ [ReqRespSubProtocol.AUTH]: noopValidator,
128
+ [ReqRespSubProtocol.BLOCK_TXS]: noopValidator
113
129
  };
114
130
  /**
115
131
  * @param numberOfNodes - the number of nodes to create
116
132
  * @returns An array of the created nodes
117
- */ export const createNodes = (peerScoring, numberOfNodes)=>{
118
- return timesParallel(numberOfNodes, ()=>createReqResp(peerScoring));
133
+ */ export const createNodes = (peerScoring, numberOfNodes, rateLimits = {})=>{
134
+ return timesParallel(numberOfNodes, ()=>createReqResp(peerScoring, rateLimits));
119
135
  };
120
136
  export const startNodes = async (nodes, subProtocolHandlers = MOCK_SUB_PROTOCOL_HANDLERS, subProtocolValidators = MOCK_SUB_PROTOCOL_VALIDATORS)=>{
121
137
  for (const node of nodes){
@@ -130,13 +146,15 @@ export const stopNodes = async (nodes)=>{
130
146
  await Promise.all(stopPromises);
131
147
  };
132
148
  // Create a req resp node, exposing the underlying p2p node
133
- export const createReqResp = async (peerScoring)=>{
149
+ export const createReqResp = async (peerScoring, rateLimits = {})=>{
134
150
  const p2p = await createLibp2pNode();
135
151
  const config = {
136
152
  overallRequestTimeoutMs: 4000,
137
- individualRequestTimeoutMs: 2000
153
+ individualRequestTimeoutMs: 2000,
154
+ dialTimeoutMs: 1000,
155
+ p2pOptimisticNegotiation: false
138
156
  };
139
- const req = new ReqResp(config, p2p, peerScoring);
157
+ const req = new ReqResp(config, p2p, peerScoring, undefined, rateLimits);
140
158
  return {
141
159
  p2p,
142
160
  req
@@ -156,25 +174,41 @@ export const connectToPeers = async (nodes)=>{
156
174
  };
157
175
  // Mock circuit verifier for testing - reimplementation from bb to avoid dependency
158
176
  export class AlwaysTrueCircuitVerifier {
177
+ stop() {
178
+ return Promise.resolve();
179
+ }
159
180
  verifyProof(_tx) {
160
- return Promise.resolve(true);
181
+ return Promise.resolve({
182
+ valid: true,
183
+ durationMs: 0,
184
+ totalDurationMs: 0
185
+ });
161
186
  }
162
187
  }
163
188
  export class AlwaysFalseCircuitVerifier {
189
+ stop() {
190
+ return Promise.resolve();
191
+ }
164
192
  verifyProof(_tx) {
165
- return Promise.resolve(false);
193
+ return Promise.resolve({
194
+ valid: false,
195
+ durationMs: 0,
196
+ totalDurationMs: 0
197
+ });
166
198
  }
167
199
  }
168
200
  // Bootnodes
169
201
  export function createBootstrapNodeConfig(privateKey, port, chainConfig) {
170
202
  return {
171
203
  l1ChainId: chainConfig.l1ChainId,
172
- udpListenAddress: `0.0.0.0:${port}`,
173
- udpAnnounceAddress: `127.0.0.1:${port}`,
174
- peerIdPrivateKey: privateKey,
204
+ p2pIp: '127.0.0.1',
205
+ p2pPort: port,
206
+ peerIdPrivateKey: new SecretValue(privateKey),
175
207
  dataDirectory: undefined,
176
- dataStoreMapSizeKB: 0,
177
- bootstrapNodes: []
208
+ dataStoreMapSizeKb: 0,
209
+ bootstrapNodes: [],
210
+ listenAddress: '127.0.0.1',
211
+ queryForIp: false
178
212
  };
179
213
  }
180
214
  export function createBootstrapNodeFromPrivateKey(privateKey, port, telemetry = getTelemetryClient(), chainConfig = emptyChainConfig) {
@@ -189,7 +223,7 @@ export function createBootstrapNodeFromPrivateKey(privateKey, port, telemetry =
189
223
  */ export async function getBootstrapNodeEnr(privateKey, port) {
190
224
  const peerId = await createLibP2PPeerIdFromPrivateKey(privateKey);
191
225
  const enr = SignableENR.createFromPeerId(peerId);
192
- const listenAddrUdp = multiaddr(convertToMultiaddr(`127.0.0.1:${port}`, 'udp'));
226
+ const listenAddrUdp = multiaddr(convertToMultiaddr('127.0.0.1', port, 'udp'));
193
227
  enr.setLocationMultiaddr(listenAddrUdp);
194
228
  return enr;
195
229
  }
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=p2p_client_testbench_worker.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudF90ZXN0YmVuY2hfd29ya2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3AycF9jbGllbnRfdGVzdGJlbmNoX3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -3,19 +3,26 @@
3
3
  *
4
4
  * Used when running testbench commands
5
5
  */ import { MockL2BlockSource } from '@aztec/archiver/test';
6
+ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
7
+ import { SecretValue } from '@aztec/foundation/config';
6
8
  import { EthAddress } from '@aztec/foundation/eth-address';
7
9
  import { createLogger } from '@aztec/foundation/log';
8
10
  import { sleep } from '@aztec/foundation/sleep';
9
11
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
10
- import { P2PClientType } from '@aztec/stdlib/p2p';
12
+ import { P2PClientType, P2PMessage } from '@aztec/stdlib/p2p';
11
13
  import { Tx, TxStatus } from '@aztec/stdlib/tx';
14
+ import { getTelemetryClient } from '@aztec/telemetry-client';
15
+ import { TopicValidatorResult } from '@libp2p/interface';
16
+ import EventEmitter from 'events';
12
17
  import { createP2PClient } from '../index.js';
18
+ import { LibP2PService } from '../services/libp2p/libp2p_service.js';
13
19
  import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
14
20
  // Simple mock implementation
15
21
  function mockTxPool() {
16
22
  // Mock all methods
17
- return {
18
- addTxs: ()=>Promise.resolve(),
23
+ const pool = {
24
+ isEmpty: ()=>Promise.resolve(false),
25
+ addTxs: ()=>Promise.resolve(1),
19
26
  getTxByHash: ()=>Promise.resolve(undefined),
20
27
  getArchivedTxByHash: ()=>Promise.resolve(undefined),
21
28
  markAsMined: ()=>Promise.resolve(),
@@ -24,74 +31,156 @@ function mockTxPool() {
24
31
  getAllTxs: ()=>Promise.resolve([]),
25
32
  getAllTxHashes: ()=>Promise.resolve([]),
26
33
  getPendingTxHashes: ()=>Promise.resolve([]),
34
+ getPendingTxCount: ()=>Promise.resolve(0),
27
35
  getMinedTxHashes: ()=>Promise.resolve([]),
28
- getTxStatus: ()=>Promise.resolve(TxStatus.PENDING)
36
+ getTxStatus: ()=>Promise.resolve(TxStatus.PENDING),
37
+ getTxsByHash: ()=>Promise.resolve([]),
38
+ hasTxs: ()=>Promise.resolve([]),
39
+ hasTx: ()=>Promise.resolve(false),
40
+ updateConfig: ()=>{},
41
+ markTxsAsNonEvictable: ()=>Promise.resolve(),
42
+ clearNonEvictableTxs: ()=>Promise.resolve(),
43
+ cleanupDeletedMinedTxs: ()=>Promise.resolve(0)
29
44
  };
45
+ return Object.assign(new EventEmitter(), pool);
30
46
  }
31
47
  function mockAttestationPool() {
32
48
  return {
33
- addAttestations: ()=>Promise.resolve(),
34
- deleteAttestations: ()=>Promise.resolve(),
35
- deleteAttestationsOlderThan: ()=>Promise.resolve(),
36
- deleteAttestationsForSlot: ()=>Promise.resolve(),
37
- deleteAttestationsForSlotAndProposal: ()=>Promise.resolve(),
38
- getAttestationsForSlot: ()=>Promise.resolve([])
49
+ isEmpty: ()=>Promise.resolve(false),
50
+ addBlockProposal: ()=>Promise.resolve(),
51
+ getBlockProposal: ()=>Promise.resolve(undefined),
52
+ hasBlockProposal: ()=>Promise.resolve(false),
53
+ canAddProposal: ()=>Promise.resolve(true),
54
+ // Checkpoint attestation methods
55
+ addCheckpointProposal: ()=>Promise.resolve(),
56
+ getCheckpointProposal: ()=>Promise.resolve(undefined),
57
+ hasCheckpointProposal: ()=>Promise.resolve(false),
58
+ addCheckpointAttestations: ()=>Promise.resolve(),
59
+ getCheckpointAttestationsForSlot: ()=>Promise.resolve([]),
60
+ getCheckpointAttestationsForSlotAndProposal: ()=>Promise.resolve([]),
61
+ deleteCheckpointAttestationsOlderThan: ()=>Promise.resolve(),
62
+ hasReachedCheckpointProposalCap: ()=>Promise.resolve(false),
63
+ hasReachedCheckpointAttestationCap: ()=>Promise.resolve(false),
64
+ canAddCheckpointProposal: ()=>Promise.resolve(true),
65
+ canAddCheckpointAttestation: ()=>Promise.resolve(true),
66
+ hasCheckpointAttestation: ()=>Promise.resolve(false)
39
67
  };
40
68
  }
41
69
  function mockEpochCache() {
42
70
  return {
43
- getCommittee: ()=>Promise.resolve([]),
71
+ getCommittee: ()=>Promise.resolve({
72
+ committee: [],
73
+ seed: 1n,
74
+ epoch: EpochNumber.ZERO
75
+ }),
44
76
  getProposerIndexEncoding: ()=>'0x',
45
77
  getEpochAndSlotNow: ()=>({
46
- epoch: 0n,
47
- slot: 0n,
78
+ epoch: EpochNumber.ZERO,
79
+ slot: SlotNumber.ZERO,
48
80
  ts: 0n
49
81
  }),
50
82
  computeProposerIndex: ()=>0n,
51
- getProposerInCurrentOrNextSlot: ()=>Promise.resolve({
83
+ getProposerAttesterAddressInCurrentOrNextSlot: ()=>Promise.resolve({
52
84
  currentProposer: EthAddress.ZERO,
53
85
  nextProposer: EthAddress.ZERO,
54
- currentSlot: 0n,
55
- nextSlot: 0n
86
+ currentSlot: SlotNumber.ZERO,
87
+ nextSlot: SlotNumber.ZERO
88
+ }),
89
+ getProposerAttesterAddressInSlot: ()=>Promise.resolve(undefined),
90
+ getEpochAndSlotInNextL1Slot: ()=>({
91
+ epoch: EpochNumber.ZERO,
92
+ slot: SlotNumber.ZERO,
93
+ ts: 0n,
94
+ now: 0n
56
95
  }),
57
- isInCommittee: ()=>Promise.resolve(false)
96
+ isInCommittee: ()=>Promise.resolve(false),
97
+ getRegisteredValidators: ()=>Promise.resolve([]),
98
+ filterInCommittee: ()=>Promise.resolve([])
58
99
  };
59
100
  }
101
+ function mockWorldStateSynchronizer() {
102
+ return {
103
+ status: ()=>Promise.resolve({
104
+ syncSummary: {
105
+ latestBlockNumber: 0,
106
+ latestBlockHash: '',
107
+ finalizedBlockNumber: 0,
108
+ treesAreSynched: false,
109
+ oldestHistoricBlockNumber: 0
110
+ }
111
+ })
112
+ };
113
+ }
114
+ class TestLibP2PService extends LibP2PService {
115
+ disableTxValidation;
116
+ gossipMessageCount = 0;
117
+ constructor(clientType, config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:test:libp2p_service'), disableTxValidation = true){
118
+ super(clientType, config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
119
+ this.disableTxValidation = disableTxValidation;
120
+ }
121
+ getGossipMessageCount() {
122
+ return this.gossipMessageCount;
123
+ }
124
+ setDisableTxValidation(disable) {
125
+ this.disableTxValidation = disable;
126
+ }
127
+ async handleGossipedTx(payload, msgId, source) {
128
+ if (this.disableTxValidation) {
129
+ const p2pMessage = P2PMessage.fromMessageData(payload);
130
+ const tx = Tx.fromBuffer(p2pMessage.payload);
131
+ this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Accept);
132
+ const txHash = tx.getTxHash();
133
+ const txHashString = txHash.toString();
134
+ this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
135
+ await this.mempools.txPool.addTxs([
136
+ tx
137
+ ]);
138
+ } else {
139
+ await super.handleGossipedTx(payload, msgId, source);
140
+ }
141
+ }
142
+ async handleNewGossipMessage(msg, msgId, source) {
143
+ this.gossipMessageCount++;
144
+ process.send({
145
+ type: 'GOSSIP_RECEIVED',
146
+ count: this.gossipMessageCount
147
+ });
148
+ await super.handleNewGossipMessage(msg, msgId, source);
149
+ }
150
+ }
60
151
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
61
152
  process.on('message', async (msg)=>{
62
- const { type, config, clientIndex } = msg;
153
+ // Note: peerIdPrivateKey comes as a raw string (not SecretValue) because
154
+ // SecretValue's private fields can't be serialized via IPC
155
+ const { type, config: rawConfig, clientIndex } = msg;
63
156
  try {
64
157
  if (type === 'START') {
158
+ // Re-wrap the peerIdPrivateKey with SecretValue
159
+ const config = {
160
+ ...rawConfig,
161
+ peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined
162
+ };
65
163
  const txPool = mockTxPool();
66
164
  const attestationPool = mockAttestationPool();
67
165
  const epochCache = mockEpochCache();
68
- const worldState = {};
166
+ const worldState = mockWorldStateSynchronizer();
69
167
  const l2BlockSource = new MockL2BlockSource();
70
- await l2BlockSource.createBlocks(100);
71
168
  const proofVerifier = new AlwaysTrueCircuitVerifier();
72
169
  const kvStore = await openTmpStore(`test-${clientIndex}`);
73
170
  const logger = createLogger(`p2p:${clientIndex}`);
171
+ const telemetry = getTelemetryClient();
74
172
  const deps = {
75
173
  txPool,
76
174
  attestationPool,
77
175
  store: kvStore,
78
176
  logger
79
177
  };
80
- const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, worldState, epochCache, undefined, deps);
81
- // Create spy for gossip messages
82
- let gossipMessageCount = 0;
83
- client.p2pService.handleNewGossipMessage = (msg, msgId, source)=>{
84
- gossipMessageCount++;
85
- process.send({
86
- type: 'GOSSIP_RECEIVED',
87
- count: gossipMessageCount
88
- });
89
- return client.p2pService.constructor.prototype.handleNewGossipMessage.apply(client.p2pService, [
90
- msg,
91
- msgId,
92
- source
93
- ]);
94
- };
178
+ const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, worldState, epochCache, 'test-p2p-bench-worker', undefined, telemetry, deps);
179
+ // Create test service with validation disabled
180
+ // Note: Parameter order must match LibP2PService constructor
181
+ const testService = new TestLibP2PService(P2PClientType.Full, config, client.p2pService.node, client.p2pService.peerDiscoveryService, client.p2pService.reqresp, client.p2pService.peerManager, client.p2pService.mempools, client.p2pService.archiver, epochCache, proofVerifier, worldState, telemetry, logger, true);
182
+ // Replace the existing p2pService with our test version
183
+ client.p2pService = testService;
95
184
  await client.start();
96
185
  // Wait until the client is ready
97
186
  for(let i = 0; i < 100; i++){
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=parse_log_file.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VfbG9nX2ZpbGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0YmVuY2gvcGFyc2VfbG9nX2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -14,7 +14,7 @@ function getTimestamp(line) {
14
14
  return parseInt(timestampMatch[1], 10);
15
15
  }
16
16
  /**
17
- * Parses a single log line. If the line contains an "rpc.from" event,
17
+ * Parses a single log line. If the line contains an "Received tx" event,
18
18
  * it extracts the timestamp and the peer ID.
19
19
  */ function parseReceivedTx(line) {
20
20
  if (!line.includes('Received tx')) {
@@ -26,9 +26,9 @@ function getTimestamp(line) {
26
26
  logger.error('No timestamp found in received tx log');
27
27
  return null;
28
28
  }
29
- // TODO: this is not correct - it is just the tx hash for now
30
- // Extract the peer ID after "Received tx"
31
- const peerIdMatch = line.match(/p2p:(\d+):/);
29
+ // Extract the peer ID from the log line
30
+ // Example format: "module":"p2p:1","msg":"Received tx 0x0feeafa65f25fd8d613fe4aca44fd65fe41c149ef1941e2019d40925c40748f9 from external peer 16Uiu2HAm8w4oxXF3TwDKoGL9U66thMXWqCgPnb2CgkYwmUqFCWbC."
31
+ const peerIdMatch = line.match(/"module":"p2p:(\d+)"/);
32
32
  if (!peerIdMatch) {
33
33
  logger.error('No peer Number found in received tx log');
34
34
  return null;
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=testbench.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGJlbmNoLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3Rlc3RiZW5jaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,6 +1,6 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { sleep } from '@aztec/foundation/sleep';
3
- import { ClientIvcProof } from '@aztec/stdlib/proofs';
3
+ import { ChonkProof } from '@aztec/stdlib/proofs';
4
4
  import { mockTx } from '@aztec/stdlib/testing';
5
5
  import assert from 'assert';
6
6
  import path from 'path';
@@ -17,7 +17,7 @@ async function main() {
17
17
  }
18
18
  const configPath = path.join(__dirname, '../../testbench/configurations', configFile);
19
19
  const config = await import(configPath, {
20
- assert: {
20
+ with: {
21
21
  type: 'json'
22
22
  }
23
23
  });
@@ -34,7 +34,7 @@ async function main() {
34
34
  logger.info('Workers Ready');
35
35
  // Send tx from client 0
36
36
  const tx = await mockTx(1, {
37
- clientIvcProof: ClientIvcProof.random()
37
+ chonkProof: ChonkProof.random()
38
38
  });
39
39
  workerClientManager.processes[0].send({
40
40
  type: 'SEND_TX',
@@ -42,7 +42,7 @@ async function main() {
42
42
  });
43
43
  logger.info('Transaction sent from client 0');
44
44
  // Give time for message propagation
45
- await sleep(30000);
45
+ await sleep(10000);
46
46
  logger.info('Checking message propagation results');
47
47
  // Check message propagation results
48
48
  const numberOfClientsThatReceivedMessage = workerClientManager.numberOfClientsThatReceivedMessage();
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type { Logger } from '@aztec/foundation/log';
3
2
  import type { ChainConfig } from '@aztec/stdlib/config';
4
3
  import { type ChildProcess } from 'child_process';
@@ -14,10 +13,6 @@ declare class WorkerClientManager {
14
13
  private messageReceivedByClient;
15
14
  constructor(logger: Logger, p2pConfig: Partial<P2PConfig>);
16
15
  destroy(): void;
17
- /**
18
- * Creates address strings from a port
19
- */
20
- private getAddresses;
21
16
  /**
22
17
  * Creates a client configuration object
23
18
  */
@@ -53,4 +48,4 @@ declare class WorkerClientManager {
53
48
  cleanup(): Promise<void>;
54
49
  }
55
50
  export { WorkerClientManager, testChainConfig };
56
- //# sourceMappingURL=worker_client_manager.d.ts.map
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX2NsaWVudF9tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGJlbmNoL3dvcmtlcl9jbGllbnRfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFJeEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF1QixNQUFNLGNBQWMsQ0FBQztBQVFuRSxRQUFBLE1BQU0sZUFBZSxFQUFFLFdBTXRCLENBQUM7QUFFRixjQUFNLG1CQUFtQjtJQUNoQixTQUFTLEVBQUUsWUFBWSxFQUFFLENBQU07SUFDL0IsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQU07SUFDakMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFNO0lBQ3hCLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBTTtJQUM1QixPQUFPLENBQUMsU0FBUyxDQUFxQjtJQUN0QyxPQUFPLENBQUMsTUFBTSxDQUFTO0lBQ3ZCLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBZ0I7SUFFL0MsWUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBR3hEO0lBRUQsT0FBTyxTQUtOO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsa0JBQWtCO0lBaUIxQjs7T0FFRztJQUNILE9BQU8sQ0FBQyxrQkFBa0I7SUF5RDFCOzs7Ozs7T0FNRztJQUNHLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxNQUFNLHFCQXlDOUM7SUFFRCw0QkFBNEIsU0FFM0I7SUFFRCxrQ0FBa0MsV0FFakM7SUFFRDs7Ozs7T0FLRztJQUNHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQTRDcEQ7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxnQkFBZ0I7SUFzQ3hCOztPQUVHO0lBQ0csT0FBTyxrQkFnQ1o7Q0FDRjtBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAQnE,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;gBAEnC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;IAKzD,OAAO;IAOP;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoD1B;;;;;;OAMG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM;IA2C/C,4BAA4B;IAI5B,kCAAkC;IAIlC;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IA4CrD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACG,OAAO;CAiCd;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"worker_client_manager.d.ts","sourceRoot":"","sources":["../../src/testbench/worker_client_manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,cAAc,CAAC;AAQnE,QAAA,MAAM,eAAe,EAAE,WAMtB,CAAC;AAEF,cAAM,mBAAmB;IAChB,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,KAAK,EAAE,MAAM,EAAE,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAGxD;IAED,OAAO,SAKN;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyD1B;;;;;;OAMG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM,qBAyC9C;IAED,4BAA4B,SAE3B;IAED,kCAAkC,WAEjC;IAED;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBA4CpD;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACG,OAAO,kBAgCZ;CACF;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { SecretValue } from '@aztec/foundation/config';
1
2
  import { EthAddress } from '@aztec/foundation/eth-address';
2
3
  import { sleep } from '@aztec/foundation/sleep';
3
4
  import { fork } from 'child_process';
@@ -11,7 +12,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
11
12
  const workerPath = path.join(__dirname, '../../dest/testbench/p2p_client_testbench_worker.js');
12
13
  const testChainConfig = {
13
14
  l1ChainId: 31337,
14
- version: 1,
15
+ rollupVersion: 1,
15
16
  l1Contracts: {
16
17
  rollupAddress: EthAddress.random()
17
18
  }
@@ -35,25 +36,15 @@ class WorkerClientManager {
35
36
  });
36
37
  }
37
38
  /**
38
- * Creates address strings from a port
39
- */ getAddresses(port) {
40
- return {
41
- addr: `127.0.0.1:${port}`,
42
- listenAddr: `0.0.0.0:${port}`
43
- };
44
- }
45
- /**
46
39
  * Creates a client configuration object
47
40
  */ createClientConfig(clientIndex, port, otherNodes) {
48
- const { addr, listenAddr } = this.getAddresses(port);
49
41
  return {
50
42
  ...getP2PDefaultConfig(),
51
43
  p2pEnabled: true,
52
- peerIdPrivateKey: this.peerIdPrivateKeys[clientIndex],
53
- tcpListenAddress: listenAddr,
54
- udpListenAddress: listenAddr,
55
- tcpAnnounceAddress: addr,
56
- udpAnnounceAddress: addr,
44
+ peerIdPrivateKey: new SecretValue(this.peerIdPrivateKeys[clientIndex]),
45
+ listenAddress: '127.0.0.1',
46
+ p2pIp: '127.0.0.1',
47
+ p2pPort: port,
57
48
  bootstrapNodes: [
58
49
  ...otherNodes
59
50
  ],
@@ -64,9 +55,14 @@ class WorkerClientManager {
64
55
  * Spawns a worker process and returns a promise that resolves when the worker is ready
65
56
  */ spawnWorkerProcess(config, clientIndex) {
66
57
  const childProcess = fork(workerPath);
58
+ // Extract the raw peerIdPrivateKey value since SecretValue can't be serialized via IPC
59
+ const serializedConfig = {
60
+ ...config,
61
+ peerIdPrivateKey: config.peerIdPrivateKey?.getValue()
62
+ };
67
63
  childProcess.send({
68
64
  type: 'START',
69
- config,
65
+ config: serializedConfig,
70
66
  clientIndex
71
67
  });
72
68
  // Handle unexpected child process exit
@@ -177,6 +173,7 @@ class WorkerClientManager {
177
173
  this.peerEnrs[clientIndex] = await makeEnr(this.peerIdPrivateKeys[clientIndex], newPort, testChainConfig);
178
174
  // Maximum seed with 10 other peers to allow peer discovery to connect them at a smoother rate
179
175
  const otherNodes = this.peerEnrs.filter((_, ind)=>ind !== clientIndex && ind < Math.min(this.peerEnrs.length, 10));
176
+ this.logger.info(`Changing port for client ${clientIndex} to ${newPort} with other nodes `, otherNodes);
180
177
  const config = this.createClientConfig(clientIndex, newPort, otherNodes);
181
178
  const [childProcess, readySignal] = this.spawnWorkerProcess(config, clientIndex);
182
179
  this.processes[clientIndex] = childProcess;
@@ -207,7 +204,7 @@ class WorkerClientManager {
207
204
  } catch (e) {
208
205
  this.logger.error(`Error force killing process ${index}:`, e);
209
206
  }
210
- }, 10000); // 10 second timeout for graceful exit
207
+ }, 5000); // 5 second timeout for graceful exit
211
208
  // Listen for process exit
212
209
  process1.once('exit', ()=>{
213
210
  clearTimeout(forceKillTimeout);
@@ -218,7 +215,7 @@ class WorkerClientManager {
218
215
  process1.send({
219
216
  type: 'STOP'
220
217
  });
221
- } catch (e) {
218
+ } catch {
222
219
  // If sending the message fails, force kill immediately
223
220
  clearTimeout(forceKillTimeout);
224
221
  try {
@@ -248,12 +245,12 @@ class WorkerClientManager {
248
245
  if (!p.killed) {
249
246
  p.kill('SIGKILL');
250
247
  }
251
- } catch (e) {
248
+ } catch {
252
249
  // Ignore errors when force killing
253
250
  }
254
251
  });
255
252
  resolve();
256
- }, 30000); // 30 second timeout for all processes
253
+ }, 10000); // 10 second timeout for all processes
257
254
  })
258
255
  ]);
259
256
  } catch (error) {
@@ -14,7 +14,8 @@ export declare enum PeerEvent {
14
14
  */
15
15
  export declare enum Discv5Event {
16
16
  DISCOVERED = "discovered",
17
- ENR_ADDED = "enrAdded"
17
+ ENR_ADDED = "enrAdded",
18
+ MULTIADDR_UPDATED = "multiaddrUpdated"
18
19
  }
19
20
  /**
20
21
  * Events emitted from the GossipSub protocol.
@@ -29,4 +30,5 @@ export declare enum GossipSubEvent {
29
30
  * Aztec network specific types
30
31
  */
31
32
  export declare const AZTEC_ENR_KEY = "aztec";
32
- //# sourceMappingURL=index.d.ts.map
33
+ export declare const AZTEC_ENR_CLIENT_VERSION_KEY = "ver";
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7cURBRXFEO0FBRXJEOztHQUVHO0FBQ0gsb0JBQVksU0FBUztJQUNuQixVQUFVLG9CQUFvQjtJQUM5QixTQUFTLGlCQUFpQjtJQUMxQixZQUFZLG9CQUFvQjtDQUNqQztBQUVEOztHQUVHO0FBQ0gsb0JBQVksV0FBVztJQUNyQixVQUFVLGVBQWU7SUFDekIsU0FBUyxhQUFhO0lBQ3RCLGlCQUFpQixxQkFBcUI7Q0FDdkM7QUFFRDs7R0FFRztBQUNILG9CQUFZLGNBQWM7SUFDeEIsT0FBTyxzQkFBc0I7Q0FDOUI7QUFFRDs7cURBRXFEO0FBRXJEOztHQUVHO0FBQ0gsZUFBTyxNQUFNLGFBQWEsVUFBVSxDQUFDO0FBQ3JDLGVBQU8sTUFBTSw0QkFBNEIsUUFBUSxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;qDAEqD;AAErD;;GAEG;AACH,oBAAY,SAAS;IACnB,UAAU,oBAAoB;IAC9B,SAAS,iBAAiB;IAC1B,YAAY,oBAAoB;CACjC;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,SAAS,aAAa;CACvB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,OAAO,sBAAsB;CAC9B;AAED;;qDAEqD;AAErD;;GAEG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;qDAEqD;AAErD;;GAEG;AACH,oBAAY,SAAS;IACnB,UAAU,oBAAoB;IAC9B,SAAS,iBAAiB;IAC1B,YAAY,oBAAoB;CACjC;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,SAAS,aAAa;IACtB,iBAAiB,qBAAqB;CACvC;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,OAAO,sBAAsB;CAC9B;AAED;;qDAEqD;AAErD;;GAEG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,eAAO,MAAM,4BAA4B,QAAQ,CAAC"}