@aztec/p2p 0.0.0-test.1 → 0.0.1-commit.21caa21

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