@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.03f7ef2

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 (387) 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 +157 -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 -190
  14. package/dest/client/p2p_client.d.ts.map +1 -1
  15. package/dest/client/p2p_client.js +381 -183
  16. package/dest/config.d.ts +151 -125
  17. package/dest/config.d.ts.map +1 -1
  18. package/dest/config.js +183 -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 +68 -8
  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 +216 -65
  36. package/dest/mem_pools/attestation_pool/index.d.ts +1 -1
  37. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +21 -6
  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 +127 -26
  40. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +19 -6
  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 +111 -21
  43. package/dest/mem_pools/attestation_pool/mocks.d.ts +227 -7
  44. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  45. package/dest/mem_pools/attestation_pool/mocks.js +10 -16
  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 +57 -35
  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 +64 -14
  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 +472 -97
  55. package/dest/mem_pools/tx_pool/index.d.ts +1 -1
  56. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +36 -11
  57. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
  58. package/dest/mem_pools/tx_pool/memory_tx_pool.js +137 -36
  59. package/dest/mem_pools/tx_pool/priority.d.ts +1 -1
  60. package/dest/mem_pools/tx_pool/priority.js +1 -1
  61. package/dest/mem_pools/tx_pool/tx_pool.d.ts +67 -10
  62. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  63. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +1 -1
  64. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  65. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +273 -42
  66. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -2
  67. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  68. package/dest/msg_validators/attestation_validator/attestation_validator.js +45 -9
  69. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +20 -0
  70. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -0
  71. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +67 -0
  72. package/dest/msg_validators/attestation_validator/index.d.ts +2 -1
  73. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -1
  74. package/dest/msg_validators/attestation_validator/index.js +1 -0
  75. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +6 -2
  76. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -1
  77. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +73 -12
  78. package/dest/msg_validators/block_proposal_validator/index.d.ts +1 -1
  79. package/dest/msg_validators/index.d.ts +1 -1
  80. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts +10 -0
  81. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.d.ts.map +1 -0
  82. package/dest/msg_validators/msg_seen_validator/msg_seen_validator.js +36 -0
  83. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +1 -1
  84. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts +3 -0
  86. package/dest/msg_validators/tx_validator/allowed_public_setup.d.ts.map +1 -0
  87. package/dest/msg_validators/tx_validator/allowed_public_setup.js +27 -0
  88. package/dest/msg_validators/tx_validator/archive_cache.d.ts +14 -0
  89. package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -0
  90. package/dest/msg_validators/tx_validator/archive_cache.js +22 -0
  91. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +2 -2
  92. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
  93. package/dest/msg_validators/tx_validator/block_header_validator.js +4 -4
  94. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  95. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  96. package/dest/msg_validators/tx_validator/data_validator.js +56 -86
  97. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +1 -3
  98. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  99. package/dest/msg_validators/tx_validator/double_spend_validator.js +21 -27
  100. package/dest/msg_validators/tx_validator/factory.d.ts +16 -0
  101. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  102. package/dest/msg_validators/tx_validator/factory.js +74 -0
  103. package/dest/msg_validators/tx_validator/gas_validator.d.ts +11 -0
  104. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -0
  105. package/dest/msg_validators/tx_validator/gas_validator.js +115 -0
  106. package/dest/msg_validators/tx_validator/index.d.ts +8 -1
  107. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -1
  108. package/dest/msg_validators/tx_validator/index.js +7 -0
  109. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +9 -5
  110. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  111. package/dest/msg_validators/tx_validator/metadata_validator.js +39 -20
  112. package/dest/msg_validators/tx_validator/phases_validator.d.ts +14 -0
  113. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -0
  114. package/dest/msg_validators/tx_validator/phases_validator.js +93 -0
  115. package/dest/msg_validators/tx_validator/test_utils.d.ts +17 -0
  116. package/dest/msg_validators/tx_validator/test_utils.d.ts.map +1 -0
  117. package/dest/msg_validators/tx_validator/test_utils.js +22 -0
  118. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +13 -0
  119. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -0
  120. package/dest/msg_validators/tx_validator/timestamp_validator.js +32 -0
  121. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts +8 -0
  122. package/dest/msg_validators/tx_validator/tx_permitted_validator.d.ts.map +1 -0
  123. package/dest/msg_validators/tx_validator/tx_permitted_validator.js +24 -0
  124. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +1 -1
  125. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -1
  126. package/dest/msg_validators/tx_validator/tx_proof_validator.js +6 -5
  127. package/dest/services/data_store.d.ts +1 -1
  128. package/dest/services/data_store.d.ts.map +1 -1
  129. package/dest/services/discv5/discV5_service.d.ts +10 -9
  130. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  131. package/dest/services/discv5/discV5_service.js +63 -36
  132. package/dest/services/dummy_service.d.ts +50 -11
  133. package/dest/services/dummy_service.d.ts.map +1 -1
  134. package/dest/services/dummy_service.js +88 -5
  135. package/dest/services/encoding.d.ts +26 -7
  136. package/dest/services/encoding.d.ts.map +1 -1
  137. package/dest/services/encoding.js +74 -6
  138. package/dest/services/gossipsub/scoring.d.ts +1 -1
  139. package/dest/services/index.d.ts +5 -1
  140. package/dest/services/index.d.ts.map +1 -1
  141. package/dest/services/index.js +4 -0
  142. package/dest/services/libp2p/instrumentation.d.ts +20 -0
  143. package/dest/services/libp2p/instrumentation.d.ts.map +1 -0
  144. package/dest/services/libp2p/instrumentation.js +164 -0
  145. package/dest/services/libp2p/libp2p_service.d.ts +78 -89
  146. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  147. package/dest/services/libp2p/libp2p_service.js +695 -248
  148. package/dest/services/peer-manager/interface.d.ts +23 -0
  149. package/dest/services/peer-manager/interface.d.ts.map +1 -0
  150. package/dest/services/peer-manager/interface.js +1 -0
  151. package/dest/services/peer-manager/metrics.d.ts +6 -2
  152. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  153. package/dest/services/peer-manager/metrics.js +22 -2
  154. package/dest/services/peer-manager/peer_manager.d.ts +102 -22
  155. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  156. package/dest/services/peer-manager/peer_manager.js +549 -72
  157. package/dest/services/peer-manager/peer_scoring.d.ts +7 -2
  158. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  159. package/dest/services/peer-manager/peer_scoring.js +40 -2
  160. package/dest/services/reqresp/config.d.ts +11 -9
  161. package/dest/services/reqresp/config.d.ts.map +1 -1
  162. package/dest/services/reqresp/config.js +18 -4
  163. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +2 -2
  164. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  165. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +10 -6
  166. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +31 -17
  167. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  168. package/dest/services/reqresp/connection-sampler/connection_sampler.js +142 -84
  169. package/dest/services/reqresp/index.d.ts +3 -2
  170. package/dest/services/reqresp/index.d.ts.map +1 -1
  171. package/dest/services/reqresp/index.js +2 -1
  172. package/dest/services/reqresp/interface.d.ts +73 -24
  173. package/dest/services/reqresp/interface.d.ts.map +1 -1
  174. package/dest/services/reqresp/interface.js +46 -27
  175. package/dest/services/reqresp/metrics.d.ts +1 -1
  176. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  177. package/dest/services/reqresp/protocols/auth.d.ts +43 -0
  178. package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
  179. package/dest/services/reqresp/protocols/auth.js +71 -0
  180. package/dest/services/reqresp/protocols/block.d.ts +6 -1
  181. package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
  182. package/dest/services/reqresp/protocols/block.js +30 -6
  183. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
  184. package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
  185. package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
  186. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
  187. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
  188. package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
  189. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +47 -0
  190. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
  191. package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
  192. package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
  193. package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
  194. package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
  195. package/dest/services/reqresp/protocols/goodbye.d.ts +3 -5
  196. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  197. package/dest/services/reqresp/protocols/goodbye.js +7 -7
  198. package/dest/services/reqresp/protocols/index.d.ts +3 -1
  199. package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
  200. package/dest/services/reqresp/protocols/index.js +2 -0
  201. package/dest/services/reqresp/protocols/ping.d.ts +1 -3
  202. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  203. package/dest/services/reqresp/protocols/status.d.ts +40 -7
  204. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  205. package/dest/services/reqresp/protocols/status.js +73 -5
  206. package/dest/services/reqresp/protocols/tx.d.ts +14 -4
  207. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
  208. package/dest/services/reqresp/protocols/tx.js +34 -6
  209. package/dest/services/reqresp/rate-limiter/index.d.ts +1 -1
  210. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +6 -4
  211. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  212. package/dest/services/reqresp/rate-limiter/rate_limiter.js +10 -2
  213. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +1 -1
  214. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
  215. package/dest/services/reqresp/rate-limiter/rate_limits.js +21 -1
  216. package/dest/services/reqresp/reqresp.d.ts +24 -66
  217. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  218. package/dest/services/reqresp/reqresp.js +298 -207
  219. package/dest/services/reqresp/status.d.ts +10 -4
  220. package/dest/services/reqresp/status.d.ts.map +1 -1
  221. package/dest/services/reqresp/status.js +9 -2
  222. package/dest/services/service.d.ts +23 -19
  223. package/dest/services/service.d.ts.map +1 -1
  224. package/dest/services/tx_collection/config.d.ts +25 -0
  225. package/dest/services/tx_collection/config.d.ts.map +1 -0
  226. package/dest/services/tx_collection/config.js +58 -0
  227. package/dest/services/tx_collection/fast_tx_collection.d.ts +51 -0
  228. package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
  229. package/dest/services/tx_collection/fast_tx_collection.js +300 -0
  230. package/dest/services/tx_collection/index.d.ts +3 -0
  231. package/dest/services/tx_collection/index.d.ts.map +1 -0
  232. package/dest/services/tx_collection/index.js +2 -0
  233. package/dest/services/tx_collection/instrumentation.d.ts +10 -0
  234. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
  235. package/dest/services/tx_collection/instrumentation.js +34 -0
  236. package/dest/services/tx_collection/slow_tx_collection.d.ts +53 -0
  237. package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
  238. package/dest/services/tx_collection/slow_tx_collection.js +177 -0
  239. package/dest/services/tx_collection/tx_collection.d.ts +110 -0
  240. package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
  241. package/dest/services/tx_collection/tx_collection.js +128 -0
  242. package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
  243. package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
  244. package/dest/services/tx_collection/tx_collection_sink.js +111 -0
  245. package/dest/services/tx_collection/tx_source.d.ts +18 -0
  246. package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
  247. package/dest/services/tx_collection/tx_source.js +31 -0
  248. package/dest/services/tx_provider.d.ts +51 -0
  249. package/dest/services/tx_provider.d.ts.map +1 -0
  250. package/dest/services/tx_provider.js +217 -0
  251. package/dest/services/tx_provider_instrumentation.d.ts +16 -0
  252. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
  253. package/dest/services/tx_provider_instrumentation.js +47 -0
  254. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +1 -1
  255. package/dest/test-helpers/get-ports.d.ts +1 -1
  256. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  257. package/dest/test-helpers/index.d.ts +2 -1
  258. package/dest/test-helpers/index.d.ts.map +1 -1
  259. package/dest/test-helpers/index.js +1 -0
  260. package/dest/test-helpers/make-enrs.d.ts +1 -1
  261. package/dest/test-helpers/make-enrs.d.ts.map +1 -1
  262. package/dest/test-helpers/make-enrs.js +4 -5
  263. package/dest/test-helpers/make-test-p2p-clients.d.ts +33 -5
  264. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  265. package/dest/test-helpers/make-test-p2p-clients.js +86 -16
  266. package/dest/test-helpers/mock-pubsub.d.ts +59 -0
  267. package/dest/test-helpers/mock-pubsub.d.ts.map +1 -0
  268. package/dest/test-helpers/mock-pubsub.js +130 -0
  269. package/dest/test-helpers/mock-tx-helpers.d.ts +12 -0
  270. package/dest/test-helpers/mock-tx-helpers.d.ts.map +1 -0
  271. package/dest/test-helpers/mock-tx-helpers.js +19 -0
  272. package/dest/test-helpers/reqresp-nodes.d.ts +15 -11
  273. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  274. package/dest/test-helpers/reqresp-nodes.js +62 -28
  275. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  276. package/dest/testbench/p2p_client_testbench_worker.js +103 -29
  277. package/dest/testbench/parse_log_file.d.ts +1 -1
  278. package/dest/testbench/parse_log_file.js +4 -4
  279. package/dest/testbench/testbench.d.ts +1 -1
  280. package/dest/testbench/testbench.js +4 -4
  281. package/dest/testbench/worker_client_manager.d.ts +1 -6
  282. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  283. package/dest/testbench/worker_client_manager.js +11 -19
  284. package/dest/types/index.d.ts +4 -2
  285. package/dest/types/index.d.ts.map +1 -1
  286. package/dest/types/index.js +2 -0
  287. package/dest/util.d.ts +24 -16
  288. package/dest/util.d.ts.map +1 -1
  289. package/dest/util.js +75 -69
  290. package/dest/versioning.d.ts +4 -4
  291. package/dest/versioning.d.ts.map +1 -1
  292. package/dest/versioning.js +8 -3
  293. package/package.json +32 -27
  294. package/src/bootstrap/bootstrap.ts +27 -11
  295. package/src/client/factory.ts +139 -53
  296. package/src/client/index.ts +1 -0
  297. package/src/client/interface.ts +198 -0
  298. package/src/client/p2p_client.ts +484 -348
  299. package/src/config.ts +305 -134
  300. package/src/enr/generate-enr.ts +39 -6
  301. package/src/errors/attestation-pool.error.ts +13 -0
  302. package/src/index.ts +4 -0
  303. package/src/mem_pools/attestation_pool/attestation_pool.ts +75 -7
  304. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +266 -67
  305. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +174 -35
  306. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +156 -30
  307. package/src/mem_pools/attestation_pool/mocks.ts +13 -12
  308. package/src/mem_pools/instrumentation.ts +70 -40
  309. package/src/mem_pools/interface.ts +2 -4
  310. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +555 -110
  311. package/src/mem_pools/tx_pool/memory_tx_pool.ts +160 -46
  312. package/src/mem_pools/tx_pool/priority.ts +1 -1
  313. package/src/mem_pools/tx_pool/tx_pool.ts +69 -9
  314. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +224 -35
  315. package/src/msg_validators/attestation_validator/attestation_validator.ts +54 -11
  316. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +91 -0
  317. package/src/msg_validators/attestation_validator/index.ts +1 -0
  318. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +82 -14
  319. package/src/msg_validators/msg_seen_validator/msg_seen_validator.ts +36 -0
  320. package/src/msg_validators/tx_validator/allowed_public_setup.ts +35 -0
  321. package/src/msg_validators/tx_validator/archive_cache.ts +28 -0
  322. package/src/msg_validators/tx_validator/block_header_validator.ts +5 -5
  323. package/src/msg_validators/tx_validator/data_validator.ts +81 -69
  324. package/src/msg_validators/tx_validator/double_spend_validator.ts +19 -17
  325. package/src/msg_validators/tx_validator/factory.ts +110 -0
  326. package/src/msg_validators/tx_validator/gas_validator.ts +134 -0
  327. package/src/msg_validators/tx_validator/index.ts +7 -0
  328. package/src/msg_validators/tx_validator/metadata_validator.ts +59 -22
  329. package/src/msg_validators/tx_validator/phases_validator.ts +116 -0
  330. package/src/msg_validators/tx_validator/test_utils.ts +43 -0
  331. package/src/msg_validators/tx_validator/timestamp_validator.ts +47 -0
  332. package/src/msg_validators/tx_validator/tx_permitted_validator.ts +17 -0
  333. package/src/msg_validators/tx_validator/tx_proof_validator.ts +6 -5
  334. package/src/services/discv5/discV5_service.ts +84 -38
  335. package/src/services/dummy_service.ts +147 -9
  336. package/src/services/encoding.ts +81 -6
  337. package/src/services/index.ts +4 -0
  338. package/src/services/libp2p/instrumentation.ts +167 -0
  339. package/src/services/libp2p/libp2p_service.ts +865 -298
  340. package/src/services/peer-manager/interface.ts +29 -0
  341. package/src/services/peer-manager/metrics.ts +26 -1
  342. package/src/services/peer-manager/peer_manager.ts +654 -78
  343. package/src/services/peer-manager/peer_scoring.ts +46 -3
  344. package/src/services/reqresp/config.ts +26 -9
  345. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +12 -6
  346. package/src/services/reqresp/connection-sampler/connection_sampler.ts +148 -95
  347. package/src/services/reqresp/index.ts +2 -0
  348. package/src/services/reqresp/interface.ts +92 -37
  349. package/src/services/reqresp/metrics.ts +4 -1
  350. package/src/services/reqresp/protocols/auth.ts +83 -0
  351. package/src/services/reqresp/protocols/block.ts +26 -4
  352. package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
  353. package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
  354. package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
  355. package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
  356. package/src/services/reqresp/protocols/goodbye.ts +9 -7
  357. package/src/services/reqresp/protocols/index.ts +2 -0
  358. package/src/services/reqresp/protocols/status.ts +118 -5
  359. package/src/services/reqresp/protocols/tx.ts +36 -8
  360. package/src/services/reqresp/rate-limiter/rate_limiter.ts +12 -3
  361. package/src/services/reqresp/rate-limiter/rate_limits.ts +21 -1
  362. package/src/services/reqresp/reqresp.ts +387 -256
  363. package/src/services/reqresp/status.ts +12 -3
  364. package/src/services/service.ts +45 -21
  365. package/src/services/tx_collection/config.ts +84 -0
  366. package/src/services/tx_collection/fast_tx_collection.ts +341 -0
  367. package/src/services/tx_collection/index.ts +2 -0
  368. package/src/services/tx_collection/instrumentation.ts +43 -0
  369. package/src/services/tx_collection/slow_tx_collection.ts +233 -0
  370. package/src/services/tx_collection/tx_collection.ts +216 -0
  371. package/src/services/tx_collection/tx_collection_sink.ts +129 -0
  372. package/src/services/tx_collection/tx_source.ts +37 -0
  373. package/src/services/tx_provider.ts +229 -0
  374. package/src/services/tx_provider_instrumentation.ts +61 -0
  375. package/src/test-helpers/index.ts +1 -0
  376. package/src/test-helpers/make-enrs.ts +4 -5
  377. package/src/test-helpers/make-test-p2p-clients.ts +111 -21
  378. package/src/test-helpers/mock-pubsub.ts +188 -0
  379. package/src/test-helpers/mock-tx-helpers.ts +24 -0
  380. package/src/test-helpers/reqresp-nodes.ts +87 -36
  381. package/src/testbench/p2p_client_testbench_worker.ts +151 -25
  382. package/src/testbench/parse_log_file.ts +4 -4
  383. package/src/testbench/testbench.ts +4 -4
  384. package/src/testbench/worker_client_manager.ts +17 -23
  385. package/src/types/index.ts +2 -0
  386. package/src/util.ts +105 -91
  387. package/src/versioning.ts +11 -4
@@ -5,28 +5,41 @@
5
5
  */
6
6
  import { MockL2BlockSource } from '@aztec/archiver/test';
7
7
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
8
+ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
8
9
  import { EthAddress } from '@aztec/foundation/eth-address';
9
10
  import { createLogger } from '@aztec/foundation/log';
10
11
  import { sleep } from '@aztec/foundation/sleep';
11
12
  import type { DataStoreConfig } from '@aztec/kv-store/config';
12
13
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
13
- import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
14
- import { P2PClientType } from '@aztec/stdlib/p2p';
14
+ import type { L2BlockSource } from '@aztec/stdlib/block';
15
+ import type { ContractDataSource } from '@aztec/stdlib/contract';
16
+ import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
17
+ import { P2PClientType, P2PMessage } from '@aztec/stdlib/p2p';
15
18
  import { Tx, TxStatus } from '@aztec/stdlib/tx';
19
+ import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
16
20
 
17
21
  import type { Message, PeerId } from '@libp2p/interface';
22
+ import { TopicValidatorResult } from '@libp2p/interface';
23
+ import EventEmitter from 'events';
18
24
 
19
25
  import type { P2PConfig } from '../config.js';
20
26
  import { createP2PClient } from '../index.js';
21
27
  import type { AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
28
+ import type { MemPools } from '../mem_pools/interface.js';
22
29
  import type { TxPool } from '../mem_pools/tx_pool/index.js';
30
+ import { LibP2PService } from '../services/libp2p/libp2p_service.js';
31
+ import type { PeerManager } from '../services/peer-manager/peer_manager.js';
32
+ import type { ReqResp } from '../services/reqresp/reqresp.js';
33
+ import type { PeerDiscoveryService } from '../services/service.js';
23
34
  import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
35
+ import type { PubSubLibp2p } from '../util.js';
24
36
 
25
37
  // Simple mock implementation
26
38
  function mockTxPool(): TxPool {
27
39
  // Mock all methods
28
- return {
29
- addTxs: () => Promise.resolve(),
40
+ const pool: Omit<TxPool, keyof EventEmitter> = {
41
+ isEmpty: () => Promise.resolve(false),
42
+ addTxs: () => Promise.resolve(1),
30
43
  getTxByHash: () => Promise.resolve(undefined),
31
44
  getArchivedTxByHash: () => Promise.resolve(undefined),
32
45
  markAsMined: () => Promise.resolve(),
@@ -35,55 +48,159 @@ function mockTxPool(): TxPool {
35
48
  getAllTxs: () => Promise.resolve([]),
36
49
  getAllTxHashes: () => Promise.resolve([]),
37
50
  getPendingTxHashes: () => Promise.resolve([]),
51
+ getPendingTxCount: () => Promise.resolve(0),
38
52
  getMinedTxHashes: () => Promise.resolve([]),
39
53
  getTxStatus: () => Promise.resolve(TxStatus.PENDING),
54
+ getTxsByHash: () => Promise.resolve([]),
55
+ hasTxs: () => Promise.resolve([]),
56
+ hasTx: () => Promise.resolve(false),
57
+ updateConfig: () => {},
58
+ markTxsAsNonEvictable: () => Promise.resolve(),
59
+ cleanupDeletedMinedTxs: () => Promise.resolve(0),
40
60
  };
61
+ return Object.assign(new EventEmitter(), pool);
41
62
  }
42
63
 
43
64
  function mockAttestationPool(): AttestationPool {
44
65
  return {
66
+ isEmpty: () => Promise.resolve(false),
45
67
  addAttestations: () => Promise.resolve(),
46
68
  deleteAttestations: () => Promise.resolve(),
47
69
  deleteAttestationsOlderThan: () => Promise.resolve(),
48
70
  deleteAttestationsForSlot: () => Promise.resolve(),
49
71
  deleteAttestationsForSlotAndProposal: () => Promise.resolve(),
50
72
  getAttestationsForSlot: () => Promise.resolve([]),
73
+ getAttestationsForSlotAndProposal: () => Promise.resolve([]),
74
+ addBlockProposal: () => Promise.resolve(),
75
+ getBlockProposal: () => Promise.resolve(undefined),
76
+ hasBlockProposal: () => Promise.resolve(false),
77
+ hasAttestation: () => Promise.resolve(false),
78
+ canAddProposal: () => Promise.resolve(true),
79
+ canAddAttestation: () => Promise.resolve(true),
51
80
  };
52
81
  }
53
82
 
54
83
  function mockEpochCache(): EpochCacheInterface {
55
84
  return {
56
- getCommittee: () => Promise.resolve([] as EthAddress[]),
85
+ getCommittee: () => Promise.resolve({ committee: [], seed: 1n, epoch: EpochNumber.ZERO }),
57
86
  getProposerIndexEncoding: () => '0x' as `0x${string}`,
58
- getEpochAndSlotNow: () => ({ epoch: 0n, slot: 0n, ts: 0n }),
87
+ getEpochAndSlotNow: () => ({ epoch: EpochNumber.ZERO, slot: SlotNumber.ZERO, ts: 0n }),
59
88
  computeProposerIndex: () => 0n,
60
- getProposerInCurrentOrNextSlot: () =>
89
+ getProposerAttesterAddressInCurrentOrNextSlot: () =>
61
90
  Promise.resolve({
62
91
  currentProposer: EthAddress.ZERO,
63
92
  nextProposer: EthAddress.ZERO,
64
- currentSlot: 0n,
65
- nextSlot: 0n,
93
+ currentSlot: SlotNumber.ZERO,
94
+ nextSlot: SlotNumber.ZERO,
66
95
  }),
96
+ getEpochAndSlotInNextL1Slot: () => ({ epoch: EpochNumber.ZERO, slot: SlotNumber.ZERO, ts: 0n, now: 0n }),
67
97
  isInCommittee: () => Promise.resolve(false),
98
+ getRegisteredValidators: () => Promise.resolve([]),
99
+ filterInCommittee: () => Promise.resolve([]),
68
100
  };
69
101
  }
70
102
 
103
+ function mockWorldStateSynchronizer(): WorldStateSynchronizer {
104
+ return {
105
+ status: () =>
106
+ Promise.resolve({
107
+ syncSummary: {
108
+ latestBlockNumber: 0,
109
+ latestBlockHash: '',
110
+ finalizedBlockNumber: 0,
111
+ treesAreSynched: false,
112
+ oldestHistoricBlockNumber: 0,
113
+ },
114
+ }),
115
+ } as WorldStateSynchronizer;
116
+ }
117
+
118
+ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends LibP2PService<T> {
119
+ private disableTxValidation: boolean;
120
+ private gossipMessageCount: number = 0;
121
+
122
+ constructor(
123
+ clientType: T,
124
+ config: P2PConfig,
125
+ node: PubSubLibp2p,
126
+ peerDiscoveryService: PeerDiscoveryService,
127
+ reqresp: ReqResp,
128
+ peerManager: PeerManager,
129
+ mempools: MemPools,
130
+ archiver: L2BlockSource & ContractDataSource,
131
+ epochCache: EpochCacheInterface,
132
+ proofVerifier: ClientProtocolCircuitVerifier,
133
+ worldStateSynchronizer: WorldStateSynchronizer,
134
+ telemetry: TelemetryClient,
135
+ logger = createLogger('p2p:test:libp2p_service'),
136
+ disableTxValidation = true,
137
+ ) {
138
+ super(
139
+ clientType,
140
+ config,
141
+ node,
142
+ peerDiscoveryService,
143
+ reqresp,
144
+ peerManager,
145
+ mempools,
146
+ archiver,
147
+ epochCache,
148
+ proofVerifier,
149
+ worldStateSynchronizer,
150
+ telemetry,
151
+ logger,
152
+ );
153
+ this.disableTxValidation = disableTxValidation;
154
+ }
155
+
156
+ public getGossipMessageCount(): number {
157
+ return this.gossipMessageCount;
158
+ }
159
+
160
+ public setDisableTxValidation(disable: boolean): void {
161
+ this.disableTxValidation = disable;
162
+ }
163
+
164
+ protected override async handleGossipedTx(payload: Buffer, msgId: string, source: PeerId) {
165
+ if (this.disableTxValidation) {
166
+ const p2pMessage = P2PMessage.fromMessageData(payload);
167
+ const tx = Tx.fromBuffer(p2pMessage.payload);
168
+ this.node.services.pubsub.reportMessageValidationResult(msgId, source.toString(), TopicValidatorResult.Accept);
169
+
170
+ const txHash = tx.getTxHash();
171
+ const txHashString = txHash.toString();
172
+ this.logger.verbose(`Received tx ${txHashString} from external peer ${source.toString()}.`);
173
+ await this.mempools.txPool.addTxs([tx]);
174
+ } else {
175
+ await super.handleGossipedTx(payload, msgId, source);
176
+ }
177
+ }
178
+
179
+ protected override async handleNewGossipMessage(msg: Message, msgId: string, source: PeerId) {
180
+ this.gossipMessageCount++;
181
+ process.send!({
182
+ type: 'GOSSIP_RECEIVED',
183
+ count: this.gossipMessageCount,
184
+ });
185
+ await super.handleNewGossipMessage(msg, msgId, source);
186
+ }
187
+ }
188
+
71
189
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
72
190
  process.on('message', async msg => {
73
191
  const { type, config, clientIndex } = msg as { type: string; config: P2PConfig; clientIndex: number };
74
-
75
192
  try {
76
193
  if (type === 'START') {
77
194
  const txPool = mockTxPool();
78
195
  const attestationPool = mockAttestationPool();
79
196
  const epochCache = mockEpochCache();
80
- const worldState = {} as WorldStateSynchronizer;
197
+ const worldState = mockWorldStateSynchronizer();
81
198
  const l2BlockSource = new MockL2BlockSource();
82
- await l2BlockSource.createBlocks(100);
83
199
 
84
200
  const proofVerifier = new AlwaysTrueCircuitVerifier();
85
201
  const kvStore = await openTmpStore(`test-${clientIndex}`);
86
202
  const logger = createLogger(`p2p:${clientIndex}`);
203
+ const telemetry = getTelemetryClient();
87
204
 
88
205
  const deps = {
89
206
  txPool,
@@ -99,23 +216,32 @@ process.on('message', async msg => {
99
216
  proofVerifier,
100
217
  worldState,
101
218
  epochCache,
219
+ 'test-p2p-bench-worker',
102
220
  undefined,
221
+ telemetry,
103
222
  deps,
104
223
  );
105
224
 
106
- // Create spy for gossip messages
107
- let gossipMessageCount = 0;
108
- (client as any).p2pService.handleNewGossipMessage = (msg: Message, msgId: string, source: PeerId) => {
109
- gossipMessageCount++;
110
- process.send!({
111
- type: 'GOSSIP_RECEIVED',
112
- count: gossipMessageCount,
113
- });
114
- return (client as any).p2pService.constructor.prototype.handleNewGossipMessage.apply(
115
- (client as any).p2pService,
116
- [msg, msgId, source],
117
- );
118
- };
225
+ // Create test service with validation disabled
226
+ const testService = new TestLibP2PService(
227
+ P2PClientType.Full,
228
+ config,
229
+ (client as any).p2pService.node,
230
+ (client as any).p2pService.peerDiscoveryService,
231
+ (client as any).p2pService.mempools,
232
+ (client as any).p2pService.reqresp,
233
+ (client as any).p2pService.peerManager,
234
+ (client as any).p2pService.archiver,
235
+ epochCache,
236
+ proofVerifier,
237
+ worldState,
238
+ telemetry,
239
+ logger,
240
+ true, // disable validation
241
+ );
242
+
243
+ // Replace the existing p2pService with our test version
244
+ (client as any).p2pService = testService;
119
245
 
120
246
  await client.start();
121
247
  // Wait until the client is ready
@@ -37,7 +37,7 @@ function getTimestamp(line: string): number | null {
37
37
  }
38
38
 
39
39
  /**
40
- * Parses a single log line. If the line contains an "rpc.from" event,
40
+ * Parses a single log line. If the line contains an "Received tx" event,
41
41
  * it extracts the timestamp and the peer ID.
42
42
  */
43
43
  function parseReceivedTx(line: string): LogEvent | null {
@@ -52,9 +52,9 @@ function parseReceivedTx(line: string): LogEvent | null {
52
52
  return null;
53
53
  }
54
54
 
55
- // TODO: this is not correct - it is just the tx hash for now
56
- // Extract the peer ID after "Received tx"
57
- const peerIdMatch = line.match(/p2p:(\d+):/);
55
+ // Extract the peer ID from the log line
56
+ // Example format: "module":"p2p:1","msg":"Received tx 0x0feeafa65f25fd8d613fe4aca44fd65fe41c149ef1941e2019d40925c40748f9 from external peer 16Uiu2HAm8w4oxXF3TwDKoGL9U66thMXWqCgPnb2CgkYwmUqFCWbC."
57
+ const peerIdMatch = line.match(/"module":"p2p:(\d+)"/);
58
58
  if (!peerIdMatch) {
59
59
  logger.error('No peer Number found in received tx log');
60
60
  return null;
@@ -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
 
6
6
  import assert from 'assert';
@@ -21,7 +21,7 @@ async function main() {
21
21
  }
22
22
 
23
23
  const configPath = path.join(__dirname, '../../testbench/configurations', configFile);
24
- const config = await import(configPath, { assert: { type: 'json' } });
24
+ const config = await import(configPath, { with: { type: 'json' } });
25
25
  const testConfig = { ...testChainConfig, ...config.default };
26
26
  const numberOfClients = config.default.numberOfClients;
27
27
 
@@ -35,14 +35,14 @@ async function main() {
35
35
 
36
36
  // Send tx from client 0
37
37
  const tx = await mockTx(1, {
38
- clientIvcProof: ClientIvcProof.random(),
38
+ chonkProof: ChonkProof.random(),
39
39
  });
40
40
 
41
41
  workerClientManager.processes[0].send({ type: 'SEND_TX', tx: tx.toBuffer() });
42
42
  logger.info('Transaction sent from client 0');
43
43
 
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
 
48
48
  // Check message propagation results
@@ -1,3 +1,4 @@
1
+ import { SecretValue } from '@aztec/foundation/config';
1
2
  import { EthAddress } from '@aztec/foundation/eth-address';
2
3
  import type { Logger } from '@aztec/foundation/log';
3
4
  import { sleep } from '@aztec/foundation/sleep';
@@ -17,7 +18,7 @@ const workerPath = path.join(__dirname, '../../dest/testbench/p2p_client_testben
17
18
 
18
19
  const testChainConfig: ChainConfig = {
19
20
  l1ChainId: 31337,
20
- version: 1,
21
+ rollupVersion: 1,
21
22
  l1Contracts: {
22
23
  rollupAddress: EthAddress.random(),
23
24
  },
@@ -44,30 +45,21 @@ class WorkerClientManager {
44
45
  });
45
46
  }
46
47
 
47
- /**
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
48
  /**
58
49
  * Creates a client configuration object
59
50
  */
60
- private createClientConfig(clientIndex: number, port: number, otherNodes: string[]) {
61
- const { addr, listenAddr } = this.getAddresses(port);
62
-
51
+ private createClientConfig(
52
+ clientIndex: number,
53
+ port: number,
54
+ otherNodes: string[],
55
+ ): P2PConfig & Partial<ChainConfig> {
63
56
  return {
64
57
  ...getP2PDefaultConfig(),
65
58
  p2pEnabled: true,
66
- peerIdPrivateKey: this.peerIdPrivateKeys[clientIndex],
67
- tcpListenAddress: listenAddr,
68
- udpListenAddress: listenAddr,
69
- tcpAnnounceAddress: addr,
70
- udpAnnounceAddress: addr,
59
+ peerIdPrivateKey: new SecretValue(this.peerIdPrivateKeys[clientIndex]),
60
+ listenAddress: '127.0.0.1',
61
+ p2pIp: '127.0.0.1',
62
+ p2pPort: port,
71
63
  bootstrapNodes: [...otherNodes],
72
64
  ...this.p2pConfig,
73
65
  };
@@ -216,6 +208,8 @@ class WorkerClientManager {
216
208
  (_, ind) => ind !== clientIndex && ind < Math.min(this.peerEnrs.length, 10),
217
209
  );
218
210
 
211
+ this.logger.info(`Changing port for client ${clientIndex} to ${newPort} with other nodes `, otherNodes);
212
+
219
213
  const config = this.createClientConfig(clientIndex, newPort, otherNodes);
220
214
  const [childProcess, readySignal] = this.spawnWorkerProcess(config, clientIndex);
221
215
 
@@ -253,7 +247,7 @@ class WorkerClientManager {
253
247
  } catch (e) {
254
248
  this.logger.error(`Error force killing process ${index}:`, e);
255
249
  }
256
- }, 10000); // 10 second timeout for graceful exit
250
+ }, 5000); // 5 second timeout for graceful exit
257
251
 
258
252
  // Listen for process exit
259
253
  process.once('exit', () => {
@@ -264,7 +258,7 @@ class WorkerClientManager {
264
258
  // Try to gracefully stop the process
265
259
  try {
266
260
  process.send({ type: 'STOP' });
267
- } catch (e) {
261
+ } catch {
268
262
  // If sending the message fails, force kill immediately
269
263
  clearTimeout(forceKillTimeout);
270
264
  try {
@@ -298,12 +292,12 @@ class WorkerClientManager {
298
292
  if (!p.killed) {
299
293
  p.kill('SIGKILL');
300
294
  }
301
- } catch (e) {
295
+ } catch {
302
296
  // Ignore errors when force killing
303
297
  }
304
298
  });
305
299
  resolve();
306
- }, 30000); // 30 second timeout for all processes
300
+ }, 10000); // 10 second timeout for all processes
307
301
  }),
308
302
  ]);
309
303
  } catch (error) {
@@ -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';