@aztec/p2p 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.76.0

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 (262) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +38 -0
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -0
  3. package/dest/bootstrap/bootstrap.js +31 -38
  4. package/dest/client/factory.d.ts +21 -0
  5. package/dest/client/factory.d.ts.map +1 -0
  6. package/dest/client/factory.js +13 -11
  7. package/dest/client/index.d.ts +3 -0
  8. package/dest/client/index.d.ts.map +1 -0
  9. package/dest/client/index.js +1 -0
  10. package/dest/client/p2p_client.d.ts +332 -0
  11. package/dest/client/p2p_client.d.ts.map +1 -0
  12. package/dest/client/p2p_client.js +535 -513
  13. package/dest/config.d.ts +187 -0
  14. package/dest/config.d.ts.map +1 -0
  15. package/dest/config.js +64 -53
  16. package/dest/errors/reqresp.error.d.ts +28 -0
  17. package/dest/errors/reqresp.error.d.ts.map +1 -0
  18. package/dest/errors/reqresp.error.js +10 -6
  19. package/dest/index.d.ts +9 -0
  20. package/dest/index.d.ts.map +1 -0
  21. package/dest/index.js +1 -0
  22. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +57 -0
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -0
  24. package/dest/mem_pools/attestation_pool/attestation_pool.js +2 -6
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +3 -0
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -0
  27. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +32 -64
  28. package/dest/mem_pools/attestation_pool/index.d.ts +3 -0
  29. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -0
  30. package/dest/mem_pools/attestation_pool/index.js +1 -0
  31. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +22 -0
  32. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -0
  33. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +19 -22
  34. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +17 -0
  35. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -0
  36. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +26 -22
  37. package/dest/mem_pools/attestation_pool/mocks.d.ts +18 -0
  38. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -0
  39. package/dest/mem_pools/attestation_pool/mocks.js +6 -10
  40. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts +7 -0
  41. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts.map +1 -0
  42. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js +2 -1
  43. package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts +4 -0
  44. package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts.map +1 -0
  45. package/dest/mem_pools/epoch_proof_quote_pool/index.js +1 -0
  46. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts +12 -0
  47. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts.map +1 -0
  48. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.js +4 -5
  49. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts +8 -0
  50. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts.map +1 -0
  51. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.js +3 -2
  52. package/dest/mem_pools/index.d.ts +5 -0
  53. package/dest/mem_pools/index.d.ts.map +1 -0
  54. package/dest/mem_pools/index.js +2 -1
  55. package/dest/mem_pools/instrumentation.d.ts +31 -0
  56. package/dest/mem_pools/instrumentation.d.ts.map +1 -0
  57. package/dest/mem_pools/instrumentation.js +42 -37
  58. package/dest/mem_pools/interface.d.ts +13 -0
  59. package/dest/mem_pools/interface.d.ts.map +1 -0
  60. package/dest/mem_pools/interface.js +2 -3
  61. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +66 -0
  62. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -0
  63. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +134 -127
  64. package/dest/mem_pools/tx_pool/index.d.ts +4 -0
  65. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -0
  66. package/dest/mem_pools/tx_pool/index.js +1 -0
  67. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +56 -0
  68. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -0
  69. package/dest/mem_pools/tx_pool/memory_tx_pool.js +43 -45
  70. package/dest/mem_pools/tx_pool/priority.d.ts +8 -0
  71. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -0
  72. package/dest/mem_pools/tx_pool/priority.js +3 -1
  73. package/dest/mem_pools/tx_pool/tx_pool.d.ts +66 -0
  74. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -0
  75. package/dest/mem_pools/tx_pool/tx_pool.js +2 -3
  76. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +7 -0
  77. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -0
  78. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +37 -107
  79. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +8 -0
  80. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -0
  81. package/dest/msg_validators/attestation_validator/attestation_validator.js +3 -3
  82. package/dest/msg_validators/attestation_validator/index.d.ts +2 -0
  83. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -0
  84. package/dest/msg_validators/attestation_validator/index.js +1 -0
  85. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +8 -0
  86. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -0
  87. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +2 -2
  88. package/dest/msg_validators/block_proposal_validator/index.d.ts +2 -0
  89. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +1 -0
  90. package/dest/msg_validators/block_proposal_validator/index.js +1 -0
  91. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts +8 -0
  92. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts.map +1 -0
  93. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.js +2 -2
  94. package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts +2 -0
  95. package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts.map +1 -0
  96. package/dest/msg_validators/epoch_proof_quote_validator/index.js +1 -0
  97. package/dest/msg_validators/index.d.ts +4 -0
  98. package/dest/msg_validators/index.d.ts.map +1 -0
  99. package/dest/msg_validators/index.js +1 -0
  100. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +7 -0
  101. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -0
  102. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +11 -9
  103. package/dest/msg_validators/tx_validator/block_header_validator.d.ts +11 -0
  104. package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -0
  105. package/dest/msg_validators/tx_validator/block_header_validator.js +12 -17
  106. package/dest/msg_validators/tx_validator/data_validator.d.ts +6 -0
  107. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -0
  108. package/dest/msg_validators/tx_validator/data_validator.js +32 -41
  109. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +12 -0
  110. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -0
  111. package/dest/msg_validators/tx_validator/double_spend_validator.js +14 -22
  112. package/dest/msg_validators/tx_validator/index.d.ts +7 -0
  113. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -0
  114. package/dest/msg_validators/tx_validator/index.js +1 -0
  115. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +10 -0
  116. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -0
  117. package/dest/msg_validators/tx_validator/metadata_validator.js +26 -29
  118. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +8 -0
  119. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -0
  120. package/dest/msg_validators/tx_validator/tx_proof_validator.js +12 -17
  121. package/dest/services/data_store.d.ts +27 -0
  122. package/dest/services/data_store.d.ts.map +1 -0
  123. package/dest/services/data_store.js +57 -57
  124. package/dest/services/discv5/discV5_service.d.ts +40 -0
  125. package/dest/services/discv5/discV5_service.d.ts.map +1 -0
  126. package/dest/services/discv5/discV5_service.js +82 -43
  127. package/dest/services/dummy_service.d.ts +83 -0
  128. package/dest/services/dummy_service.d.ts.map +1 -0
  129. package/dest/services/dummy_service.js +59 -40
  130. package/dest/services/encoding.d.ts +31 -0
  131. package/dest/services/encoding.d.ts.map +1 -0
  132. package/dest/services/encoding.js +9 -10
  133. package/dest/services/index.d.ts +3 -0
  134. package/dest/services/index.d.ts.map +1 -0
  135. package/dest/services/index.js +1 -0
  136. package/dest/services/libp2p/libp2p_logger.d.ts +7 -0
  137. package/dest/services/libp2p/libp2p_logger.d.ts.map +1 -0
  138. package/dest/services/libp2p/libp2p_logger.js +67 -0
  139. package/dest/services/libp2p/libp2p_service.d.ts +225 -0
  140. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -0
  141. package/dest/services/libp2p/libp2p_service.js +727 -709
  142. package/dest/services/peer-manager/metrics.d.ts +12 -0
  143. package/dest/services/peer-manager/metrics.d.ts.map +1 -0
  144. package/dest/services/peer-manager/metrics.js +7 -14
  145. package/dest/services/peer-manager/peer_manager.d.ts +76 -0
  146. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -0
  147. package/dest/services/peer-manager/peer_manager.js +342 -340
  148. package/dest/services/peer-manager/peer_scoring.d.ts +28 -0
  149. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -0
  150. package/dest/services/peer-manager/peer_scoring.js +18 -20
  151. package/dest/services/reqresp/config.d.ts +16 -0
  152. package/dest/services/reqresp/config.d.ts.map +1 -0
  153. package/dest/services/reqresp/config.js +5 -4
  154. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +45 -0
  155. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -0
  156. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +28 -35
  157. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +61 -0
  158. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -0
  159. package/dest/services/reqresp/connection-sampler/connection_sampler.js +59 -60
  160. package/dest/services/reqresp/index.d.ts +6 -0
  161. package/dest/services/reqresp/index.d.ts.map +1 -0
  162. package/dest/services/reqresp/index.js +3 -1
  163. package/dest/services/reqresp/interface.d.ts +116 -0
  164. package/dest/services/reqresp/interface.d.ts.map +1 -0
  165. package/dest/services/reqresp/interface.js +30 -25
  166. package/dest/services/reqresp/metrics.d.ts +15 -0
  167. package/dest/services/reqresp/metrics.d.ts.map +1 -0
  168. package/dest/services/reqresp/metrics.js +10 -23
  169. package/dest/services/reqresp/protocols/block.d.ts +4 -0
  170. package/dest/services/reqresp/protocols/block.d.ts.map +1 -0
  171. package/dest/services/reqresp/protocols/block.js +2 -1
  172. package/dest/services/reqresp/protocols/goodbye.d.ts +51 -0
  173. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -0
  174. package/dest/services/reqresp/protocols/goodbye.js +41 -36
  175. package/dest/services/reqresp/protocols/index.d.ts +9 -0
  176. package/dest/services/reqresp/protocols/index.d.ts.map +1 -0
  177. package/dest/services/reqresp/protocols/index.js +3 -1
  178. package/dest/services/reqresp/protocols/ping.d.ts +9 -0
  179. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -0
  180. package/dest/services/reqresp/protocols/ping.js +3 -1
  181. package/dest/services/reqresp/protocols/status.d.ts +9 -0
  182. package/dest/services/reqresp/protocols/status.d.ts.map +1 -0
  183. package/dest/services/reqresp/protocols/status.js +3 -1
  184. package/dest/services/reqresp/protocols/tx.d.ts +13 -0
  185. package/dest/services/reqresp/protocols/tx.d.ts.map +1 -0
  186. package/dest/services/reqresp/protocols/tx.js +8 -5
  187. package/dest/services/reqresp/rate-limiter/index.d.ts +2 -0
  188. package/dest/services/reqresp/rate-limiter/index.d.ts.map +1 -0
  189. package/dest/services/reqresp/rate-limiter/index.js +1 -0
  190. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +102 -0
  191. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -0
  192. package/dest/services/reqresp/rate-limiter/rate_limiter.js +35 -39
  193. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +3 -0
  194. package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -0
  195. package/dest/services/reqresp/rate-limiter/rate_limits.js +17 -16
  196. package/dest/services/reqresp/reqresp.d.ts +166 -0
  197. package/dest/services/reqresp/reqresp.d.ts.map +1 -0
  198. package/dest/services/reqresp/reqresp.js +463 -460
  199. package/dest/services/reqresp/status.d.ts +31 -0
  200. package/dest/services/reqresp/status.d.ts.map +1 -0
  201. package/dest/services/reqresp/status.js +17 -16
  202. package/dest/services/service.d.ts +86 -0
  203. package/dest/services/service.d.ts.map +1 -0
  204. package/dest/services/service.js +4 -3
  205. package/dest/services/types.d.ts +32 -0
  206. package/dest/services/types.d.ts.map +1 -0
  207. package/dest/services/types.js +19 -20
  208. package/dest/test-helpers/generate-peer-id-private-keys.d.ts +7 -0
  209. package/dest/test-helpers/generate-peer-id-private-keys.d.ts.map +1 -0
  210. package/dest/test-helpers/generate-peer-id-private-keys.js +15 -0
  211. package/dest/test-helpers/get-ports.d.ts +7 -0
  212. package/dest/test-helpers/get-ports.d.ts.map +1 -0
  213. package/dest/test-helpers/get-ports.js +8 -0
  214. package/dest/test-helpers/index.d.ts +6 -0
  215. package/dest/test-helpers/index.d.ts.map +1 -0
  216. package/dest/test-helpers/index.js +6 -0
  217. package/dest/test-helpers/make-enrs.d.ts +16 -0
  218. package/dest/test-helpers/make-enrs.d.ts.map +1 -0
  219. package/dest/test-helpers/make-enrs.js +35 -0
  220. package/dest/test-helpers/make-test-p2p-clients.d.ts +37 -0
  221. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -0
  222. package/dest/test-helpers/make-test-p2p-clients.js +71 -0
  223. package/dest/test-helpers/reqresp-nodes.d.ts +55 -0
  224. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -0
  225. package/dest/test-helpers/reqresp-nodes.js +183 -0
  226. package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -0
  227. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -0
  228. package/dest/testbench/p2p_client_testbench_worker.js +125 -0
  229. package/dest/util.d.ts +53 -0
  230. package/dest/util.d.ts.map +1 -0
  231. package/dest/util.js +34 -23
  232. package/dest/versioning.d.ts +12 -0
  233. package/dest/versioning.d.ts.map +1 -0
  234. package/dest/versioning.js +38 -0
  235. package/package.json +11 -9
  236. package/src/bootstrap/bootstrap.ts +9 -3
  237. package/src/client/factory.ts +12 -5
  238. package/src/config.ts +56 -29
  239. package/src/mem_pools/index.ts +3 -3
  240. package/src/mem_pools/instrumentation.ts +2 -3
  241. package/src/msg_validators/attestation_validator/attestation_validator.ts +3 -3
  242. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +3 -3
  243. package/src/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.ts +3 -3
  244. package/src/services/discv5/discV5_service.ts +67 -18
  245. package/src/services/dummy_service.ts +2 -0
  246. package/src/services/libp2p/libp2p_logger.ts +78 -0
  247. package/src/services/libp2p/libp2p_service.ts +47 -10
  248. package/src/services/reqresp/protocols/goodbye.ts +1 -1
  249. package/src/services/reqresp/reqresp.ts +9 -1
  250. package/src/services/service.ts +2 -0
  251. package/src/services/types.ts +2 -10
  252. package/src/test-helpers/generate-peer-id-private-keys.ts +15 -0
  253. package/src/test-helpers/get-ports.ts +8 -0
  254. package/src/test-helpers/index.ts +5 -0
  255. package/src/test-helpers/make-enrs.ts +44 -0
  256. package/src/test-helpers/make-test-p2p-clients.ts +124 -0
  257. package/src/{mocks/index.ts → test-helpers/reqresp-nodes.ts} +10 -5
  258. package/src/testbench/README.md +20 -0
  259. package/src/testbench/p2p_client_testbench_worker.ts +156 -0
  260. package/src/testbench/scripts/run_testbench.sh +7 -0
  261. package/src/versioning.ts +50 -0
  262. package/dest/mocks/index.js +0 -190
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The error codes for the ReqResp protocol
3
+ */
4
+ export declare enum ReqRespStatus {
5
+ SUCCESS = 0,
6
+ RATE_LIMIT_EXCEEDED = 1,
7
+ BADLY_FORMED_REQUEST = 2,
8
+ UNKNOWN = 127
9
+ }
10
+ export declare class ReqRespStatusError extends Error {
11
+ /**
12
+ * The status code
13
+ */
14
+ status: ReqRespStatus;
15
+ constructor(status: ReqRespStatus);
16
+ }
17
+ /**
18
+ * Parse the status chunk
19
+ * @param chunk
20
+ * @returns
21
+ *
22
+ * @throws ReqRespStatusError if the chunk is not valid
23
+ */
24
+ export declare function parseStatusChunk(chunk: Uint8Array): ReqRespStatus;
25
+ /**
26
+ * Pretty print the ReqResp status
27
+ * @param status
28
+ * @returns
29
+ */
30
+ export declare function prettyPrintReqRespStatus(status: ReqRespStatus): "SUCCESS" | "RATE_LIMIT_EXCEEDED" | "BADLY_FORMED_REQUEST" | "UNKNOWN";
31
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa;IACvB,OAAO,IAAI;IACX,mBAAmB,IAAI;IACvB,oBAAoB,IAAI;IACxB,OAAO,MAAM;CACd;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;gBAEV,MAAM,EAAE,aAAa;CAIlC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAWjE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,0EAW7D"}
@@ -1,17 +1,15 @@
1
1
  /**
2
2
  * The error codes for the ReqResp protocol
3
- */ export var ReqRespStatus = /*#__PURE__*/ function(ReqRespStatus) {
3
+ */
4
+ export var ReqRespStatus;
5
+ (function (ReqRespStatus) {
4
6
  ReqRespStatus[ReqRespStatus["SUCCESS"] = 0] = "SUCCESS";
5
7
  ReqRespStatus[ReqRespStatus["RATE_LIMIT_EXCEEDED"] = 1] = "RATE_LIMIT_EXCEEDED";
6
8
  ReqRespStatus[ReqRespStatus["BADLY_FORMED_REQUEST"] = 2] = "BADLY_FORMED_REQUEST";
7
9
  ReqRespStatus[ReqRespStatus["UNKNOWN"] = 127] = "UNKNOWN";
8
- return ReqRespStatus;
9
- }({});
10
+ })(ReqRespStatus || (ReqRespStatus = {}));
10
11
  export class ReqRespStatusError extends Error {
11
- /**
12
- * The status code
13
- */ status;
14
- constructor(status){
12
+ constructor(status) {
15
13
  super(`ReqResp Error: ${prettyPrintReqRespStatus(status)}`);
16
14
  this.status = status;
17
15
  }
@@ -22,14 +20,15 @@ export class ReqRespStatusError extends Error {
22
20
  * @returns
23
21
  *
24
22
  * @throws ReqRespStatusError if the chunk is not valid
25
- */ export function parseStatusChunk(chunk) {
23
+ */
24
+ export function parseStatusChunk(chunk) {
26
25
  if (chunk.length !== 1) {
27
- throw new ReqRespStatusError(127);
26
+ throw new ReqRespStatusError(ReqRespStatus.UNKNOWN);
28
27
  }
29
28
  const status = chunk[0];
30
29
  // Check if status is a valid ReqRespStatus value
31
30
  if (!(status in ReqRespStatus)) {
32
- throw new ReqRespStatusError(127);
31
+ throw new ReqRespStatusError(ReqRespStatus.UNKNOWN);
33
32
  }
34
33
  return status;
35
34
  }
@@ -37,15 +36,17 @@ export class ReqRespStatusError extends Error {
37
36
  * Pretty print the ReqResp status
38
37
  * @param status
39
38
  * @returns
40
- */ export function prettyPrintReqRespStatus(status) {
41
- switch(status){
42
- case 0:
39
+ */
40
+ export function prettyPrintReqRespStatus(status) {
41
+ switch (status) {
42
+ case ReqRespStatus.SUCCESS:
43
43
  return 'SUCCESS';
44
- case 1:
44
+ case ReqRespStatus.RATE_LIMIT_EXCEEDED:
45
45
  return 'RATE_LIMIT_EXCEEDED';
46
- case 2:
46
+ case ReqRespStatus.BADLY_FORMED_REQUEST:
47
47
  return 'BADLY_FORMED_REQUEST';
48
- case 127:
48
+ case ReqRespStatus.UNKNOWN:
49
49
  return 'UNKNOWN';
50
50
  }
51
51
  }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3Avc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2Qix1REFBVyxDQUFBO0lBQ1gsK0VBQXVCLENBQUE7SUFDdkIsaUZBQXdCLENBQUE7SUFDeEIseURBQWEsQ0FBQTtBQUNmLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUVELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0lBTTNDLFlBQVksTUFBcUI7UUFDL0IsS0FBSyxDQUFDLGtCQUFrQix3QkFBd0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWlCO0lBQ2hELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsaURBQWlEO0lBQ2pELElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU8sTUFBdUIsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUFxQjtJQUM1RCxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxhQUFhLENBQUMsT0FBTztZQUN4QixPQUFPLFNBQVMsQ0FBQztRQUNuQixLQUFLLGFBQWEsQ0FBQyxtQkFBbUI7WUFDcEMsT0FBTyxxQkFBcUIsQ0FBQztRQUMvQixLQUFLLGFBQWEsQ0FBQyxvQkFBb0I7WUFDckMsT0FBTyxzQkFBc0IsQ0FBQztRQUNoQyxLQUFLLGFBQWEsQ0FBQyxPQUFPO1lBQ3hCLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,86 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import type { BlockAttestation, BlockProposal, Gossipable, PeerInfo } from '@aztec/circuit-types';
3
+ import type { ENR } from '@chainsafe/enr';
4
+ import type { PeerId } from '@libp2p/interface';
5
+ import type EventEmitter from 'events';
6
+ import { type ReqRespSubProtocol, type SubProtocolMap } from './reqresp/interface.js';
7
+ export declare enum PeerDiscoveryState {
8
+ RUNNING = "running",
9
+ STOPPED = "stopped"
10
+ }
11
+ /**
12
+ * The interface for a P2P service implementation.
13
+ */
14
+ export interface P2PService {
15
+ /**
16
+ * Starts the service.
17
+ * @returns An empty promise.
18
+ */
19
+ start(): Promise<void>;
20
+ /**
21
+ * Stops the service.
22
+ * @returns An empty promise.
23
+ */
24
+ stop(): Promise<void>;
25
+ /**
26
+ * Called to have the given transaction propagated through the P2P network.
27
+ * @param message - The message to be propagated.
28
+ */
29
+ propagate<T extends Gossipable>(message: T): void;
30
+ /**
31
+ * Request information from peers via the request response protocol.
32
+ *
33
+ * @param protocol - The request response protocol to use
34
+ * @param request - The request type, corresponding to the protocol
35
+ * @returns The response type, corresponding to the protocol
36
+ */
37
+ sendRequest<Protocol extends ReqRespSubProtocol>(protocol: Protocol, request: InstanceType<SubProtocolMap[Protocol]['request']>): Promise<InstanceType<SubProtocolMap[Protocol]['response']> | undefined>;
38
+ /**
39
+ * Send a batch of requests to peers, and return the responses
40
+ *
41
+ * @param protocol - The request response protocol to use
42
+ * @param requests - The requests to send to the peers
43
+ * @returns The responses to the requests
44
+ */
45
+ sendBatchRequest<Protocol extends ReqRespSubProtocol>(protocol: Protocol, requests: InstanceType<SubProtocolMap[Protocol]['request']>[]): Promise<InstanceType<SubProtocolMap[Protocol]['response']>[] | undefined>;
46
+ registerBlockReceivedCallback(callback: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
47
+ getEnr(): ENR | undefined;
48
+ getPeers(includePending?: boolean): PeerInfo[];
49
+ }
50
+ /**
51
+ * The interface for a peer discovery service implementation.
52
+ */
53
+ export interface PeerDiscoveryService extends EventEmitter {
54
+ /**
55
+ * Starts the service.
56
+ * */
57
+ start(): Promise<void>;
58
+ /**
59
+ * Stops the service.
60
+ * */
61
+ stop(): Promise<void>;
62
+ /**
63
+ * Gets all peers.
64
+ * @returns An array of peer ENRs.
65
+ */
66
+ getAllPeers(): ENR[];
67
+ /**
68
+ * Runs findRandomNode query.
69
+ */
70
+ runRandomNodesQuery(): Promise<void>;
71
+ /**
72
+ * Checks if the given peer is a bootstrap peer.
73
+ * @param peerId - The peer ID to check.
74
+ * @returns True if the peer is a bootstrap peer.
75
+ */
76
+ isBootstrapPeer(peerId: PeerId): boolean;
77
+ /**
78
+ * Event emitted when a new peer is discovered.
79
+ */
80
+ on(event: 'peer:discovered', listener: (enr: ENR) => void): this;
81
+ emit(event: 'peer:discovered', enr: ENR): boolean;
82
+ getStatus(): PeerDiscoveryState;
83
+ getEnr(): ENR | undefined;
84
+ bootstrapNodes: string[];
85
+ }
86
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEtF,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EAC7C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACzD,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE3E;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EAClD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC5D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAG7E,6BAA6B,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAE/G,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD;;SAEK;IACL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;SAEK;IACL,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,GAAG,EAAE,CAAC;IAErB;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAElD,SAAS,IAAI,kBAAkB,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B"}
@@ -1,5 +1,6 @@
1
- export var PeerDiscoveryState = /*#__PURE__*/ function(PeerDiscoveryState) {
1
+ export var PeerDiscoveryState;
2
+ (function (PeerDiscoveryState) {
2
3
  PeerDiscoveryState["RUNNING"] = "running";
3
4
  PeerDiscoveryState["STOPPED"] = "stopped";
4
- return PeerDiscoveryState;
5
- }({});
5
+ })(PeerDiscoveryState || (PeerDiscoveryState = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIseUNBQW1CLENBQUE7SUFDbkIseUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHN0IifQ==
@@ -0,0 +1,32 @@
1
+ /***************************************************
2
+ * Events
3
+ ***************************************************/
4
+ /**
5
+ * Events emitted from the libp2p node.
6
+ */
7
+ export declare enum PeerEvent {
8
+ DISCOVERED = "peer:discovered",
9
+ CONNECTED = "peer:connect",
10
+ DISCONNECTED = "peer:disconnect"
11
+ }
12
+ /**
13
+ * Events emitted from the Discv5 service.
14
+ */
15
+ export declare enum Discv5Event {
16
+ DISCOVERED = "discovered",
17
+ ENR_ADDED = "enrAdded"
18
+ }
19
+ /**
20
+ * Events emitted from the GossipSub protocol.
21
+ */
22
+ export declare enum GossipSubEvent {
23
+ MESSAGE = "gossipsub:message"
24
+ }
25
+ /***************************************************
26
+ * Types
27
+ ***************************************************/
28
+ /**
29
+ * Aztec network specific types
30
+ */
31
+ export declare const AZTEC_ENR_KEY = "aztec";
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.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,36 +1,35 @@
1
1
  /***************************************************
2
2
  * Events
3
- ***************************************************/ /**
3
+ ***************************************************/
4
+ /**
4
5
  * Events emitted from the libp2p node.
5
- */ export var PeerEvent = /*#__PURE__*/ function(PeerEvent) {
6
+ */
7
+ export var PeerEvent;
8
+ (function (PeerEvent) {
6
9
  PeerEvent["DISCOVERED"] = "peer:discovered";
7
10
  PeerEvent["CONNECTED"] = "peer:connect";
8
11
  PeerEvent["DISCONNECTED"] = "peer:disconnect";
9
- return PeerEvent;
10
- }({});
12
+ })(PeerEvent || (PeerEvent = {}));
11
13
  /**
12
14
  * Events emitted from the Discv5 service.
13
- */ export var Discv5Event = /*#__PURE__*/ function(Discv5Event) {
15
+ */
16
+ export var Discv5Event;
17
+ (function (Discv5Event) {
14
18
  Discv5Event["DISCOVERED"] = "discovered";
15
19
  Discv5Event["ENR_ADDED"] = "enrAdded";
16
- return Discv5Event;
17
- }({});
20
+ })(Discv5Event || (Discv5Event = {}));
18
21
  /**
19
22
  * Events emitted from the GossipSub protocol.
20
- */ export var GossipSubEvent = /*#__PURE__*/ function(GossipSubEvent) {
23
+ */
24
+ export var GossipSubEvent;
25
+ (function (GossipSubEvent) {
21
26
  GossipSubEvent["MESSAGE"] = "gossipsub:message";
22
- return GossipSubEvent;
23
- }({});
27
+ })(GossipSubEvent || (GossipSubEvent = {}));
24
28
  /***************************************************
25
29
  * Types
26
- ***************************************************/ /**
30
+ ***************************************************/
31
+ /**
27
32
  * Aztec network specific types
28
- */ export const AZTEC_ENR_KEY = 'aztec_network';
29
- export var AztecENR = /*#__PURE__*/ function(AztecENR) {
30
- AztecENR[AztecENR["devnet"] = 1] = "devnet";
31
- AztecENR[AztecENR["testnet"] = 2] = "testnet";
32
- AztecENR[AztecENR["mainnet"] = 3] = "mainnet";
33
- return AztecENR;
34
- }({});
35
- // TODO: Make this an env var
36
- export const AZTEC_NET = 1;
33
+ */
34
+ export const AZTEC_ENR_KEY = 'aztec';
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O3FEQUVxRDtBQUVyRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsMkNBQThCLENBQUE7SUFDOUIsdUNBQTBCLENBQUE7SUFDMUIsNkNBQWdDLENBQUE7QUFDbEMsQ0FBQyxFQUpXLFNBQVMsS0FBVCxTQUFTLFFBSXBCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHdDQUF5QixDQUFBO0lBQ3pCLHFDQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN4QiwrQ0FBNkIsQ0FBQTtBQUMvQixDQUFDLEVBRlcsY0FBYyxLQUFkLGNBQWMsUUFFekI7QUFFRDs7cURBRXFEO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyJ9
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Generate a list of peer id private keys
3
+ * @param numberOfPeers - The number of peer id private keys to generate
4
+ * @returns A list of peer id private keys
5
+ */
6
+ export declare function generatePeerIdPrivateKeys(numberOfPeers: number): string[];
7
+ //# sourceMappingURL=generate-peer-id-private-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-peer-id-private-keys.d.ts","sourceRoot":"","sources":["../../src/test-helpers/generate-peer-id-private-keys.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAOzE"}
@@ -0,0 +1,15 @@
1
+ import { generatePrivateKey } from 'viem/accounts';
2
+ /**
3
+ * Generate a list of peer id private keys
4
+ * @param numberOfPeers - The number of peer id private keys to generate
5
+ * @returns A list of peer id private keys
6
+ */
7
+ export function generatePeerIdPrivateKeys(numberOfPeers) {
8
+ const peerIdPrivateKeys = [];
9
+ for (let i = 0; i < numberOfPeers; i++) {
10
+ // magic number is multiaddr prefix: https://multiformats.io/multiaddr/
11
+ peerIdPrivateKeys.push('08021220' + generatePrivateKey().slice(2, 68));
12
+ }
13
+ return peerIdPrivateKeys;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcGVlci1pZC1wcml2YXRlLWtleXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1oZWxwZXJzL2dlbmVyYXRlLXBlZXItaWQtcHJpdmF0ZS1rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGFBQXFCO0lBQzdELE1BQU0saUJBQWlCLEdBQWEsRUFBRSxDQUFDO0lBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN2Qyx1RUFBdUU7UUFDdkUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxpQkFBaUIsQ0FBQztBQUMzQixDQUFDIn0=
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get a list of ports for a given number of peers
3
+ * @param numberOfPeers - The number of peers to get ports for
4
+ * @returns A list of ports
5
+ */
6
+ export declare const getPorts: (numberOfPeers: number) => Promise<number[]>;
7
+ //# sourceMappingURL=get-ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-ports.d.ts","sourceRoot":"","sources":["../../src/test-helpers/get-ports.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,QAAQ,kBAAmB,MAAM,sBAAwE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import getPort from 'get-port';
2
+ /**
3
+ * Get a list of ports for a given number of peers
4
+ * @param numberOfPeers - The number of peers to get ports for
5
+ * @returns A list of ports
6
+ */
7
+ export const getPorts = (numberOfPeers) => Promise.all(Array.from({ length: numberOfPeers }, () => getPort()));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy9nZXQtcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sVUFBVSxDQUFDO0FBRS9COzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxhQUFxQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ export * from './generate-peer-id-private-keys.js';
2
+ export * from './get-ports.js';
3
+ export * from './make-enrs.js';
4
+ export * from './make-test-p2p-clients.js';
5
+ export * from './reqresp-nodes.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './generate-peer-id-private-keys.js';
2
+ export * from './get-ports.js';
3
+ export * from './make-enrs.js';
4
+ export * from './make-test-p2p-clients.js';
5
+ export * from './reqresp-nodes.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQkFBb0IsQ0FBQyJ9
@@ -0,0 +1,16 @@
1
+ import { type ChainConfig } from '@aztec/circuit-types/config';
2
+ /**
3
+ * Make a list of ENRs for a given list of p2p private keys and ports
4
+ * @param p2pPrivateKeys - The private keys of the p2p nodes
5
+ * @param ports - The ports of the p2p nodes
6
+ * @returns A list of ENRs
7
+ */
8
+ export declare function makeEnrs(p2pPrivateKeys: string[], ports: number[], config: ChainConfig): Promise<string[]>;
9
+ /**
10
+ * Make an ENR for a given p2p private key and port
11
+ * @param p2pPrivateKey - The private key of the p2p node
12
+ * @param port - The port of the p2p node
13
+ * @returns The ENR of the p2p node
14
+ */
15
+ export declare function makeEnr(p2pPrivateKey: string, port: number, config: ChainConfig): Promise<string>;
16
+ //# sourceMappingURL=make-enrs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-enrs.d.ts","sourceRoot":"","sources":["../../src/test-helpers/make-enrs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAQ/D;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,qBAM5F;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,mBAerF"}
@@ -0,0 +1,35 @@
1
+ import { SignableENR } from '@chainsafe/enr';
2
+ import { multiaddr } from '@multiformats/multiaddr';
3
+ import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey } from '../util.js';
4
+ import { setAztecEnrKey } from '../versioning.js';
5
+ /**
6
+ * Make a list of ENRs for a given list of p2p private keys and ports
7
+ * @param p2pPrivateKeys - The private keys of the p2p nodes
8
+ * @param ports - The ports of the p2p nodes
9
+ * @returns A list of ENRs
10
+ */
11
+ export async function makeEnrs(p2pPrivateKeys, ports, config) {
12
+ return await Promise.all(p2pPrivateKeys.map((pk, i) => {
13
+ return makeEnr(pk, ports[i], config);
14
+ }));
15
+ }
16
+ /**
17
+ * Make an ENR for a given p2p private key and port
18
+ * @param p2pPrivateKey - The private key of the p2p node
19
+ * @param port - The port of the p2p node
20
+ * @returns The ENR of the p2p node
21
+ */
22
+ export async function makeEnr(p2pPrivateKey, port, config) {
23
+ const peerId = await createLibP2PPeerIdFromPrivateKey(p2pPrivateKey);
24
+ const enr = SignableENR.createFromPeerId(peerId);
25
+ const udpAnnounceAddress = `127.0.0.1:${port}`;
26
+ const tcpAnnounceAddress = `127.0.0.1:${port}`;
27
+ const udpPublicAddr = multiaddr(convertToMultiaddr(udpAnnounceAddress, 'udp'));
28
+ const tcpPublicAddr = multiaddr(convertToMultiaddr(tcpAnnounceAddress, 'tcp'));
29
+ // ENRS must include the network and a discoverable address (udp for discv5)
30
+ setAztecEnrKey(enr, config);
31
+ enr.setLocationMultiaddr(udpPublicAddr);
32
+ enr.setLocationMultiaddr(tcpPublicAddr);
33
+ return enr.encodeTxt();
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1lbnJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy9tYWtlLWVucnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRLENBQUMsY0FBd0IsRUFBRSxLQUFlLEVBQUUsTUFBbUI7SUFDM0YsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3RCLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDM0IsT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUMsYUFBcUIsRUFBRSxJQUFZLEVBQUUsTUFBbUI7SUFDcEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQ0FBZ0MsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRSxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakQsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLElBQUksRUFBRSxDQUFDO0lBQy9DLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxJQUFJLEVBQUUsQ0FBQztJQUMvQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUvRSw0RUFBNEU7SUFDNUUsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3pCLENBQUMifQ==
@@ -0,0 +1,37 @@
1
+ import { P2PClientType, type WorldStateSynchronizer } from '@aztec/circuit-types';
2
+ import { type EpochCache } from '@aztec/epoch-cache';
3
+ import { type Logger } from '@aztec/foundation/log';
4
+ import { type P2PClient } from '../client/p2p_client.js';
5
+ import { type P2PConfig } from '../config.js';
6
+ import { type AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
7
+ import { type EpochProofQuotePool } from '../mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js';
8
+ import { type TxPool } from '../mem_pools/tx_pool/index.js';
9
+ interface MakeTestP2PClientOptions {
10
+ mockAttestationPool: AttestationPool;
11
+ mockEpochProofQuotePool: EpochProofQuotePool;
12
+ mockTxPool: TxPool;
13
+ mockEpochCache: EpochCache;
14
+ mockWorldState: WorldStateSynchronizer;
15
+ alwaysTrueVerifier?: boolean;
16
+ p2pBaseConfig: P2PConfig;
17
+ p2pConfigOverrides?: Partial<P2PConfig>;
18
+ logger?: Logger;
19
+ }
20
+ /**
21
+ * Creates a single P2P client for testing purposes.
22
+ * @param peerIdPrivateKey - The private key of the peer.
23
+ * @param port - The port to run the client on.
24
+ * @param peers - The peers to connect to.
25
+ * @param options - The options for the client.
26
+ * @returns The created client.
27
+ */
28
+ export declare function makeTestP2PClient(peerIdPrivateKey: string, port: number, peers: string[], { alwaysTrueVerifier, p2pBaseConfig, p2pConfigOverrides, mockAttestationPool, mockEpochProofQuotePool, mockTxPool, mockEpochCache, mockWorldState, logger, }: MakeTestP2PClientOptions): Promise<P2PClient<P2PClientType.Full>>;
29
+ /**
30
+ * Creates a number of P2P clients for testing purposes.
31
+ * @param numberOfPeers - The number of clients to create.
32
+ * @param options - The options for the clients.
33
+ * @returns The created clients.
34
+ */
35
+ export declare function makeTestP2PClients(numberOfPeers: number, testConfig: MakeTestP2PClientOptions): Promise<P2PClient<P2PClientType.Full>[]>;
36
+ export {};
37
+ //# sourceMappingURL=make-test-p2p-clients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-test-p2p-clients.d.ts","sourceRoot":"","sources":["../../src/test-helpers/make-test-p2p-clients.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+DAA+D,CAAC;AACzG,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAM5D,UAAU,wBAAwB;IAChC,mBAAmB,EAAE,eAAe,CAAC;IACrC,uBAAuB,EAAE,mBAAmB,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,UAAU,CAAC;IAC3B,cAAc,EAAE,sBAAsB,CAAC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,SAAS,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,EACE,kBAAyB,EACzB,aAAa,EACb,kBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,cAAc,EACd,MAAwC,GACzC,EAAE,wBAAwB,0CA8C5B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB,4CAiBnG"}
@@ -0,0 +1,71 @@
1
+ import { MockL2BlockSource } from '@aztec/archiver/test';
2
+ import { P2PClientType } from '@aztec/circuit-types';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
5
+ import { createP2PClient } from '../client/index.js';
6
+ import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-private-keys.js';
7
+ import { getPorts } from './get-ports.js';
8
+ import { makeEnrs } from './make-enrs.js';
9
+ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp-nodes.js';
10
+ /**
11
+ * Creates a single P2P client for testing purposes.
12
+ * @param peerIdPrivateKey - The private key of the peer.
13
+ * @param port - The port to run the client on.
14
+ * @param peers - The peers to connect to.
15
+ * @param options - The options for the client.
16
+ * @returns The created client.
17
+ */
18
+ export async function makeTestP2PClient(peerIdPrivateKey, port, peers, { alwaysTrueVerifier = true, p2pBaseConfig, p2pConfigOverrides = {}, mockAttestationPool, mockEpochProofQuotePool, mockTxPool, mockEpochCache, mockWorldState, logger = createLogger('p2p-test-client'), }) {
19
+ const addr = `127.0.0.1:${port}`;
20
+ const listenAddr = `0.0.0.0:${port}`;
21
+ // Filter nodes so that we only dial active peers
22
+ const config = {
23
+ ...p2pBaseConfig,
24
+ p2pEnabled: true,
25
+ peerIdPrivateKey,
26
+ tcpListenAddress: listenAddr, // run on port 0
27
+ udpListenAddress: listenAddr,
28
+ tcpAnnounceAddress: addr,
29
+ udpAnnounceAddress: addr,
30
+ bootstrapNodes: peers,
31
+ peerCheckIntervalMS: 1000,
32
+ maxPeerCount: 10,
33
+ ...p2pConfigOverrides,
34
+ };
35
+ const l2BlockSource = new MockL2BlockSource();
36
+ await l2BlockSource.createBlocks(100);
37
+ const proofVerifier = alwaysTrueVerifier ? new AlwaysTrueCircuitVerifier() : new AlwaysFalseCircuitVerifier();
38
+ const kvStore = await openTmpStore('test');
39
+ const deps = {
40
+ txPool: mockTxPool,
41
+ attestationPool: mockAttestationPool,
42
+ epochProofQuotePool: mockEpochProofQuotePool,
43
+ store: kvStore,
44
+ logger,
45
+ };
46
+ const client = await createP2PClient(P2PClientType.Full, config, l2BlockSource, proofVerifier, mockWorldState, mockEpochCache, undefined, deps);
47
+ await client.start();
48
+ return client;
49
+ }
50
+ /**
51
+ * Creates a number of P2P clients for testing purposes.
52
+ * @param numberOfPeers - The number of clients to create.
53
+ * @param options - The options for the clients.
54
+ * @returns The created clients.
55
+ */
56
+ export async function makeTestP2PClients(numberOfPeers, testConfig) {
57
+ const clients = [];
58
+ const peerIdPrivateKeys = generatePeerIdPrivateKeys(numberOfPeers);
59
+ const ports = await getPorts(numberOfPeers);
60
+ const peerEnrs = await makeEnrs(peerIdPrivateKeys, ports, testConfig.p2pBaseConfig);
61
+ for (let i = 0; i < numberOfPeers; i++) {
62
+ const client = await makeTestP2PClient(peerIdPrivateKeys[i], ports[i], peerEnrs, {
63
+ ...testConfig,
64
+ logger: createLogger(`p2p:${i}`),
65
+ });
66
+ clients.push(client);
67
+ }
68
+ await Promise.all(clients.map(client => client.isReady()));
69
+ return clients;
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS10ZXN0LXAycC1jbGllbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy9tYWtlLXRlc3QtcDJwLWNsaWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBK0IsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRixPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU1yRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBYzNGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxnQkFBd0IsRUFDeEIsSUFBWSxFQUNaLEtBQWUsRUFDZixFQUNFLGtCQUFrQixHQUFHLElBQUksRUFDekIsYUFBYSxFQUNiLGtCQUFrQixHQUFHLEVBQUUsRUFDdkIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixVQUFVLEVBQ1YsY0FBYyxFQUNkLGNBQWMsRUFDZCxNQUFNLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEdBQ2Y7SUFFM0IsTUFBTSxJQUFJLEdBQUcsYUFBYSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxNQUFNLFVBQVUsR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO0lBRXJDLGlEQUFpRDtJQUVqRCxNQUFNLE1BQU0sR0FBZ0M7UUFDMUMsR0FBRyxhQUFhO1FBQ2hCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLGdCQUFnQjtRQUNoQixnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCO1FBQzlDLGdCQUFnQixFQUFFLFVBQVU7UUFDNUIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixrQkFBa0IsRUFBRSxJQUFJO1FBQ3hCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLG1CQUFtQixFQUFFLElBQUk7UUFDekIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsR0FBRyxrQkFBa0I7S0FDUyxDQUFDO0lBRWpDLE1BQU0sYUFBYSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztJQUM5QyxNQUFNLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUkseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO0lBQzlHLE1BQU0sT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sSUFBSSxHQUFHO1FBQ1gsTUFBTSxFQUFFLFVBQStCO1FBQ3ZDLGVBQWUsRUFBRSxtQkFBaUQ7UUFDbEUsbUJBQW1CLEVBQUUsdUJBQXlEO1FBQzlFLEtBQUssRUFBRSxPQUFPO1FBQ2QsTUFBTTtLQUNQLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FDbEMsYUFBYSxDQUFDLElBQUksRUFDbEIsTUFBTSxFQUNOLGFBQWEsRUFDYixhQUFhLEVBQ2IsY0FBYyxFQUNkLGNBQWMsRUFDZCxTQUFTLEVBQ1QsSUFBSSxDQUNMLENBQUM7SUFDRixNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVyQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFDLGFBQXFCLEVBQUUsVUFBb0M7SUFDbEcsTUFBTSxPQUFPLEdBQWdCLEVBQUUsQ0FBQztJQUNoQyxNQUFNLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFcEYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0saUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRTtZQUMvRSxHQUFHLFVBQVU7WUFDYixNQUFNLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==
@@ -0,0 +1,55 @@
1
+ import { type ClientProtocolCircuitVerifier, type L2BlockSource, type P2PClientType, type Tx, type WorldStateSynchronizer } from '@aztec/circuit-types';
2
+ import { type ChainConfig } from '@aztec/circuit-types/config';
3
+ import { type EpochCache } from '@aztec/epoch-cache';
4
+ import { type TelemetryClient } from '@aztec/telemetry-client';
5
+ import { type PeerId } from '@libp2p/interface';
6
+ import { type Libp2p } from 'libp2p';
7
+ import { BootstrapNode } from '../bootstrap/bootstrap.js';
8
+ import { type BootnodeConfig } from '../config.js';
9
+ import { type MemPools } from '../mem_pools/interface.js';
10
+ import { LibP2PService } from '../services/libp2p/libp2p_service.js';
11
+ import { type PeerScoring } from '../services/peer-manager/peer_scoring.js';
12
+ import { type ReqRespSubProtocolHandlers, type ReqRespSubProtocolValidators } from '../services/reqresp/interface.js';
13
+ import { ReqResp } from '../services/reqresp/reqresp.js';
14
+ /**
15
+ * Creates a libp2p node, pre configured.
16
+ * @param boostrapAddrs - an optional list of bootstrap addresses
17
+ * @returns Lip2p node
18
+ */
19
+ export declare function createLibp2pNode(boostrapAddrs?: string[], peerId?: PeerId, port?: number, enableGossipSub?: boolean, start?: boolean): Promise<Libp2p>;
20
+ /**
21
+ * Test Libp2p service
22
+ * P2P functionality is operational, however everything else is default
23
+ *
24
+ *
25
+ */
26
+ export declare function createTestLibP2PService<T extends P2PClientType>(clientType: T, boostrapAddrs: string[] | undefined, l2BlockSource: L2BlockSource, worldStateSynchronizer: WorldStateSynchronizer, epochCache: EpochCache, mempools: MemPools<T>, telemetry: TelemetryClient, port?: number, peerId?: PeerId, chainConfig?: ChainConfig): Promise<LibP2PService<T>>;
27
+ /**
28
+ * A p2p / req resp node pairing the req node will always contain the p2p node.
29
+ * they are provided as a pair to allow access the p2p node directly
30
+ */
31
+ export type ReqRespNode = {
32
+ p2p: Libp2p;
33
+ req: ReqResp;
34
+ };
35
+ export declare const MOCK_SUB_PROTOCOL_HANDLERS: ReqRespSubProtocolHandlers;
36
+ export declare const MOCK_SUB_PROTOCOL_VALIDATORS: ReqRespSubProtocolValidators;
37
+ /**
38
+ * @param numberOfNodes - the number of nodes to create
39
+ * @returns An array of the created nodes
40
+ */
41
+ export declare const createNodes: (peerScoring: PeerScoring, numberOfNodes: number) => Promise<ReqRespNode[]>;
42
+ export declare const startNodes: (nodes: ReqRespNode[], subProtocolHandlers?: ReqRespSubProtocolHandlers, subProtocolValidators?: ReqRespSubProtocolValidators) => Promise<void>;
43
+ export declare const stopNodes: (nodes: ReqRespNode[]) => Promise<void>;
44
+ export declare const createReqResp: (peerScoring: PeerScoring) => Promise<ReqRespNode>;
45
+ export declare const connectToPeers: (nodes: ReqRespNode[]) => Promise<void>;
46
+ export declare class AlwaysTrueCircuitVerifier implements ClientProtocolCircuitVerifier {
47
+ verifyProof(_tx: Tx): Promise<boolean>;
48
+ }
49
+ export declare class AlwaysFalseCircuitVerifier implements ClientProtocolCircuitVerifier {
50
+ verifyProof(_tx: Tx): Promise<boolean>;
51
+ }
52
+ export declare function createBootstrapNodeConfig(privateKey: string, port: number, chainConfig: ChainConfig): BootnodeConfig;
53
+ export declare function createBootstrapNodeFromPrivateKey(privateKey: string, port: number, telemetry?: TelemetryClient, chainConfig?: ChainConfig): Promise<BootstrapNode>;
54
+ export declare function createBootstrapNode(port: number, telemetry?: TelemetryClient, chainConfig?: ChainConfig): Promise<BootstrapNode>;
55
+ //# sourceMappingURL=reqresp-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"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"}