@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
@@ -1,35 +1,33 @@
1
+ var _AztecDatastore_memoryDatastore, _AztecDatastore_dbDatastore, _AztecDatastore_batchOps;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { filter, map, sort, take } from '@aztec/foundation/iterable';
2
4
  import { Key } from 'interface-datastore';
3
5
  class KeyNotFoundError extends Error {
4
- code;
5
- constructor(message){
6
+ constructor(message) {
6
7
  super(message);
7
8
  this.code = 'ERR_NOT_FOUND';
8
9
  }
9
10
  }
10
11
  export class AztecDatastore {
11
- #memoryDatastore;
12
- #dbDatastore;
13
- #batchOps = [];
14
- maxMemoryItems;
15
- constructor(db, { maxMemoryItems } = {
16
- maxMemoryItems: 50
17
- }){
18
- this.#memoryDatastore = new Map();
19
- this.#dbDatastore = db.openMap('p2p_datastore');
12
+ constructor(db, { maxMemoryItems } = { maxMemoryItems: 50 }) {
13
+ _AztecDatastore_memoryDatastore.set(this, void 0);
14
+ _AztecDatastore_dbDatastore.set(this, void 0);
15
+ _AztecDatastore_batchOps.set(this, []);
16
+ __classPrivateFieldSet(this, _AztecDatastore_memoryDatastore, new Map(), "f");
17
+ __classPrivateFieldSet(this, _AztecDatastore_dbDatastore, db.openMap('p2p_datastore'), "f");
20
18
  this.maxMemoryItems = maxMemoryItems;
21
19
  }
22
20
  async has(key) {
23
- return this.#memoryDatastore.has(key.toString()) || await this.#dbDatastore.hasAsync(key.toString());
21
+ return __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").has(key.toString()) || (await __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").hasAsync(key.toString()));
24
22
  }
25
23
  async get(key) {
26
24
  const keyStr = key.toString();
27
- const memoryItem = this.#memoryDatastore.get(keyStr);
25
+ const memoryItem = __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").get(keyStr);
28
26
  if (memoryItem) {
29
27
  memoryItem.lastAccessedMs = Date.now();
30
28
  return memoryItem.data;
31
29
  }
32
- const dbItem = await this.#dbDatastore.getAsync(keyStr);
30
+ const dbItem = await __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").getAsync(keyStr);
33
31
  if (!dbItem) {
34
32
  throw new KeyNotFoundError(`Key not found`);
35
33
  }
@@ -39,71 +37,72 @@ export class AztecDatastore {
39
37
  return this._put(key, val);
40
38
  }
41
39
  async *putMany(source) {
42
- for await (const { key, value } of source){
40
+ for await (const { key, value } of source) {
43
41
  await this.put(key, value);
44
42
  yield key;
45
43
  }
46
44
  }
47
45
  async *getMany(source) {
48
- for await (const key of source){
46
+ for await (const key of source) {
49
47
  yield {
50
48
  key,
51
- value: await this.get(key)
49
+ value: await this.get(key),
52
50
  };
53
51
  }
54
52
  }
55
53
  async *deleteMany(source) {
56
- for await (const key of source){
54
+ for await (const key of source) {
57
55
  await this.delete(key);
58
56
  yield key;
59
57
  }
60
58
  }
61
59
  async delete(key) {
62
- this.#memoryDatastore.delete(key.toString());
63
- await this.#dbDatastore.delete(key.toString());
60
+ __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").delete(key.toString());
61
+ await __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").delete(key.toString());
64
62
  }
65
63
  batch() {
66
64
  return {
67
- put: (key, value)=>{
68
- this.#batchOps.push({
65
+ put: (key, value) => {
66
+ __classPrivateFieldGet(this, _AztecDatastore_batchOps, "f").push({
69
67
  type: 'put',
70
68
  key,
71
- value
69
+ value,
72
70
  });
73
71
  },
74
- delete: (key)=>{
75
- this.#batchOps.push({
72
+ delete: key => {
73
+ __classPrivateFieldGet(this, _AztecDatastore_batchOps, "f").push({
76
74
  type: 'del',
77
- key
75
+ key,
78
76
  });
79
77
  },
80
- commit: async ()=>{
81
- for (const op of this.#batchOps){
78
+ commit: async () => {
79
+ for (const op of __classPrivateFieldGet(this, _AztecDatastore_batchOps, "f")) {
82
80
  if (op.type === 'put' && op.value) {
83
81
  await this.put(op.key, op.value);
84
- } else if (op.type === 'del') {
82
+ }
83
+ else if (op.type === 'del') {
85
84
  await this.delete(op.key);
86
85
  }
87
86
  }
88
- this.#batchOps = []; // Clear operations after commit
89
- }
87
+ __classPrivateFieldSet(this, _AztecDatastore_batchOps, [], "f"); // Clear operations after commit
88
+ },
90
89
  };
91
90
  }
92
91
  query(q) {
93
92
  let it = this.all(); //
94
93
  const { prefix, filters, orders, offset, limit } = q;
95
94
  if (prefix != null) {
96
- it = filter(it, (e)=>e.key.toString().startsWith(`${prefix}`));
95
+ it = filter(it, e => e.key.toString().startsWith(`${prefix}`));
97
96
  }
98
97
  if (Array.isArray(filters)) {
99
- it = filters.reduce((it, f)=>filter(it, f), it);
98
+ it = filters.reduce((it, f) => filter(it, f), it);
100
99
  }
101
100
  if (Array.isArray(orders)) {
102
- it = orders.reduce((it, f)=>sort(it, f), it);
101
+ it = orders.reduce((it, f) => sort(it, f), it);
103
102
  }
104
103
  if (offset != null) {
105
104
  let i = 0;
106
- it = filter(it, ()=>i++ >= offset);
105
+ it = filter(it, () => i++ >= offset);
107
106
  }
108
107
  if (limit != null) {
109
108
  it = take(it, limit);
@@ -111,20 +110,20 @@ export class AztecDatastore {
111
110
  return it;
112
111
  }
113
112
  queryKeys(q) {
114
- let it = map(this.all(), ({ key })=>key);
113
+ let it = map(this.all(), ({ key }) => key);
115
114
  const { prefix, filters, orders, offset, limit } = q;
116
115
  if (prefix != null) {
117
- it = filter(it, (e)=>e.toString().startsWith(`${prefix}`));
116
+ it = filter(it, e => e.toString().startsWith(`${prefix}`));
118
117
  }
119
118
  if (Array.isArray(filters)) {
120
- it = filters.reduce((it, f)=>filter(it, f), it);
119
+ it = filters.reduce((it, f) => filter(it, f), it);
121
120
  }
122
121
  if (Array.isArray(orders)) {
123
- it = orders.reduce((it, f)=>sort(it, f), it);
122
+ it = orders.reduce((it, f) => sort(it, f), it);
124
123
  }
125
124
  if (offset != null) {
126
125
  let i = 0;
127
- it = filter(it, ()=>i++ >= offset);
126
+ it = filter(it, () => i++ >= offset);
128
127
  }
129
128
  if (limit != null) {
130
129
  it = take(it, limit);
@@ -133,48 +132,47 @@ export class AztecDatastore {
133
132
  }
134
133
  async _put(key, val) {
135
134
  const keyStr = key.toString();
136
- while(this.#memoryDatastore.size >= this.maxMemoryItems){
135
+ while (__classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").size >= this.maxMemoryItems) {
137
136
  this.pruneMemoryDatastore();
138
137
  }
139
- const memoryItem = this.#memoryDatastore.get(keyStr);
138
+ const memoryItem = __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").get(keyStr);
140
139
  if (memoryItem) {
141
140
  // update existing
142
141
  memoryItem.lastAccessedMs = Date.now();
143
142
  memoryItem.data = val;
144
- } else {
143
+ }
144
+ else {
145
145
  // new entry
146
- this.#memoryDatastore.set(keyStr, {
147
- data: val,
148
- lastAccessedMs: Date.now()
149
- });
146
+ __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").set(keyStr, { data: val, lastAccessedMs: Date.now() });
150
147
  }
151
148
  // Always add to DB
152
- await this.#dbDatastore.set(keyStr, val);
149
+ await __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").set(keyStr, val);
153
150
  return key;
154
151
  }
155
152
  async *all() {
156
- for (const [key, value] of this.#memoryDatastore.entries()){
153
+ for (const [key, value] of __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").entries()) {
157
154
  yield {
158
155
  key: new Key(key),
159
- value: value.data
156
+ value: value.data,
160
157
  };
161
158
  }
162
- for await (const [key, value] of this.#dbDatastore.entriesAsync()){
163
- if (!this.#memoryDatastore.has(key)) {
159
+ for await (const [key, value] of __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").entriesAsync()) {
160
+ if (!__classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").has(key)) {
164
161
  yield {
165
162
  key: new Key(key),
166
- value
163
+ value,
167
164
  };
168
165
  }
169
166
  }
170
167
  }
171
168
  /**
172
- * Prune memory store
173
- */ pruneMemoryDatastore() {
169
+ * Prune memory store
170
+ */
171
+ pruneMemoryDatastore() {
174
172
  let oldestAccessedMs = Date.now() + 1000;
175
173
  let oldestKey = undefined;
176
174
  let oldestValue = undefined;
177
- for (const [key, value] of this.#memoryDatastore){
175
+ for (const [key, value] of __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f")) {
178
176
  if (value.lastAccessedMs < oldestAccessedMs) {
179
177
  oldestAccessedMs = value.lastAccessedMs;
180
178
  oldestKey = key;
@@ -182,7 +180,9 @@ export class AztecDatastore {
182
180
  }
183
181
  }
184
182
  if (oldestKey && oldestValue) {
185
- this.#memoryDatastore.delete(oldestKey);
183
+ __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").delete(oldestKey);
186
184
  }
187
185
  }
188
186
  }
187
+ _AztecDatastore_memoryDatastore = new WeakMap(), _AztecDatastore_dbDatastore = new WeakMap(), _AztecDatastore_batchOps = new WeakMap();
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9kYXRhX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3JFLE9BQU8sRUFBOEIsR0FBRyxFQUF3QyxNQUFNLHFCQUFxQixDQUFDO0FBYzVHLE1BQU0sZ0JBQWlCLFNBQVEsS0FBSztJQUVsQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBWSxFQUFxQixFQUFFLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO1FBUDlFLGtEQUEwQztRQUMxQyw4Q0FBZ0Q7UUFFaEQsbUNBQXVCLEVBQUUsRUFBQztRQUt4Qix1QkFBQSxJQUFJLG1DQUFvQixJQUFJLEdBQUcsRUFBRSxNQUFBLENBQUM7UUFDbEMsdUJBQUEsSUFBSSwrQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBQSxDQUFDO1FBRWhELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVE7UUFDaEIsT0FBTyx1QkFBQSxJQUFJLHVDQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sdUJBQUEsSUFBSSxtQ0FBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVE7UUFDaEIsTUFBTSxNQUFN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
@@ -0,0 +1,40 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { type TelemetryClient } from '@aztec/telemetry-client';
3
+ import { ENR } from '@chainsafe/enr';
4
+ import type { PeerId } from '@libp2p/interface';
5
+ import EventEmitter from 'events';
6
+ import type { P2PConfig } from '../../config.js';
7
+ import { type PeerDiscoveryService, PeerDiscoveryState } from '../service.js';
8
+ /**
9
+ * Peer discovery service using Discv5.
10
+ */
11
+ export declare class DiscV5Service extends EventEmitter implements PeerDiscoveryService {
12
+ private peerId;
13
+ private config;
14
+ private logger;
15
+ /** The Discv5 instance */
16
+ private discv5;
17
+ /** This instance's ENR */
18
+ private enr;
19
+ /** Version identifiers. */
20
+ private versions;
21
+ /** UDP listen addr */
22
+ private listenMultiAddrUdp;
23
+ private currentState;
24
+ readonly bootstrapNodes: string[];
25
+ private bootstrapNodePeerIds;
26
+ private startTime;
27
+ constructor(peerId: PeerId, config: P2PConfig, telemetry?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger);
28
+ start(): Promise<void>;
29
+ runRandomNodesQuery(): Promise<void>;
30
+ getAllPeers(): ENR[];
31
+ getEnr(): ENR;
32
+ getPeerId(): PeerId;
33
+ getStatus(): PeerDiscoveryState;
34
+ isBootstrapPeer(peerId: PeerId): boolean;
35
+ stop(): Promise<void>;
36
+ private onEnrAdded;
37
+ private onDiscovered;
38
+ private validateEnr;
39
+ }
40
+ //# sourceMappingURL=discV5_service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":";AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGvG,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAK9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAqB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IAvBhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAE5C,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,sBAAsB;IACtB,OAAO,CAAC,kBAAkB,CAAY;IAEtC,OAAO,CAAC,YAAY,CAA8B;IAElD,SAAgB,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9C,OAAO,CAAC,oBAAoB,CAAgB;IAE5C,OAAO,CAAC,SAAS,CAAK;gBAGZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACzB,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC;IAyDxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,WAAW,IAAI,GAAG,EAAE;IAIpB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASpB,UAAU;IAOxB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;CA0BpB"}
@@ -1,3 +1,4 @@
1
+ import { checkCompressedComponentVersion } from '@aztec/circuit-types';
1
2
  import { createLogger } from '@aztec/foundation/log';
2
3
  import { sleep } from '@aztec/foundation/sleep';
3
4
  import { OtelMetricsAdapter, getTelemetryClient } from '@aztec/telemetry-client';
@@ -6,31 +7,29 @@ import { ENR, SignableENR } from '@chainsafe/enr';
6
7
  import { multiaddr } from '@multiformats/multiaddr';
7
8
  import EventEmitter from 'events';
8
9
  import { convertToMultiaddr } from '../../util.js';
10
+ import { setAztecEnrKey } from '../../versioning.js';
9
11
  import { PeerDiscoveryState } from '../service.js';
10
- import { AZTEC_ENR_KEY, AZTEC_NET, Discv5Event, PeerEvent } from '../types.js';
12
+ import { AZTEC_ENR_KEY, Discv5Event, PeerEvent } from '../types.js';
11
13
  const delayBeforeStart = 2000; // 2sec
12
14
  /**
13
15
  * Peer discovery service using Discv5.
14
- */ export class DiscV5Service extends EventEmitter {
15
- peerId;
16
- logger;
17
- /** The Discv5 instance */ discv5;
18
- /** This instance's ENR */ enr;
19
- /** UDP listen addr */ listenMultiAddrUdp;
20
- currentState;
21
- bootstrapNodes;
22
- bootstrapNodePeerIds;
23
- startTime;
24
- constructor(peerId, config, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service')){
25
- super(), this.peerId = peerId, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodePeerIds = [], this.startTime = 0;
16
+ */
17
+ export class DiscV5Service extends EventEmitter {
18
+ constructor(peerId, config, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service')) {
19
+ super();
20
+ this.peerId = peerId;
21
+ this.config = config;
22
+ this.logger = logger;
23
+ this.currentState = PeerDiscoveryState.STOPPED;
24
+ this.bootstrapNodes = [];
25
+ this.bootstrapNodePeerIds = [];
26
+ this.startTime = 0;
26
27
  const { tcpAnnounceAddress, udpAnnounceAddress, udpListenAddress, bootstrapNodes } = config;
27
- this.bootstrapNodes = bootstrapNodes;
28
+ this.bootstrapNodes = bootstrapNodes ?? [];
28
29
  // create ENR from PeerId
29
30
  this.enr = SignableENR.createFromPeerId(peerId);
30
31
  // Add aztec identification to ENR
31
- this.enr.set(AZTEC_ENR_KEY, Uint8Array.from([
32
- AZTEC_NET
33
- ]));
32
+ this.versions = setAztecEnrKey(this.enr, config);
34
33
  if (!tcpAnnounceAddress) {
35
34
  throw new Error('You need to provide at least a TCP announce address.');
36
35
  }
@@ -45,16 +44,27 @@ const delayBeforeStart = 2000; // 2sec
45
44
  this.discv5 = Discv5.create({
46
45
  enr: this.enr,
47
46
  peerId,
48
- bindAddrs: {
49
- ip4: this.listenMultiAddrUdp
50
- },
47
+ bindAddrs: { ip4: this.listenMultiAddrUdp },
51
48
  config: {
52
49
  lookupTimeout: 2000,
53
50
  requestTimeout: 2000,
54
- allowUnverifiedSessions: true
51
+ allowUnverifiedSessions: true,
55
52
  },
56
- metricsRegistry
53
+ metricsRegistry,
57
54
  });
55
+ // Hook onto the onEstablished method to check the peer's version from the ENR,
56
+ // so we don't add it to our dht if it doesn't have the correct version.
57
+ // In addition, we'll hook onto onDiscovered to to repeat the same check there,
58
+ // just in case. Note that not adding the peer to the dht could lead to it
59
+ // being "readded" constantly, we'll need to keep an eye on whether this
60
+ // turns out to be a problem or not.
61
+ const origOnEstablished = this.discv5.onEstablished.bind(this.discv5);
62
+ this.discv5.onEstablished = (...args) => {
63
+ const enr = args[1];
64
+ if (this.validateEnr(enr)) {
65
+ return origOnEstablished(...args);
66
+ }
67
+ };
58
68
  this.discv5.on(Discv5Event.DISCOVERED, this.onDiscovered.bind(this));
59
69
  this.discv5.on(Discv5Event.ENR_ADDED, this.onEnrAdded.bind(this));
60
70
  }
@@ -69,20 +79,30 @@ const delayBeforeStart = 2000; // 2sec
69
79
  nodeId: this.enr.nodeId,
70
80
  peerId: this.peerId,
71
81
  enrUdp: await this.enr.getFullMultiaddr('udp'),
72
- enrTcp: await this.enr.getFullMultiaddr('tcp')
82
+ enrTcp: await this.enr.getFullMultiaddr('tcp'),
83
+ versions: this.versions,
73
84
  });
74
85
  this.currentState = PeerDiscoveryState.RUNNING;
75
86
  // Add bootnode ENR if provided
76
87
  if (this.bootstrapNodes?.length) {
77
88
  // Do this conversion once since it involves an async function call
78
- this.bootstrapNodePeerIds = await Promise.all(this.bootstrapNodes.map((enr)=>ENR.decodeTxt(enr).peerId()));
79
- this.logger.info(`Adding bootstrap nodes ENRs: ${this.bootstrapNodes.join(', ')}`);
80
- try {
81
- this.bootstrapNodes.forEach((enr)=>{
89
+ const bootstrapNodesEnrs = this.bootstrapNodes.map(enr => ENR.decodeTxt(enr));
90
+ this.bootstrapNodePeerIds = await Promise.all(bootstrapNodesEnrs.map(enr => enr.peerId()));
91
+ this.logger.info(`Adding ${this.bootstrapNodes} bootstrap nodes ENRs: ${this.bootstrapNodes.join(', ')}`);
92
+ for (const enr of bootstrapNodesEnrs) {
93
+ try {
94
+ if (this.config.bootstrapNodeEnrVersionCheck) {
95
+ const value = enr.kvs.get(AZTEC_ENR_KEY);
96
+ if (!value) {
97
+ throw new Error('ENR does not contain aztec key');
98
+ }
99
+ checkCompressedComponentVersion(Buffer.from(value).toString(), this.versions);
100
+ }
82
101
  this.discv5.addEnr(enr);
83
- });
84
- } catch (e) {
85
- this.logger.error(`Error adding bootnode ENRs: ${e}`);
102
+ }
103
+ catch (e) {
104
+ this.logger.error(`Error adding bootratrap node ${enr.encodeTxt()}`, e);
105
+ }
86
106
  }
87
107
  }
88
108
  }
@@ -98,7 +118,8 @@ const delayBeforeStart = 2000; // 2sec
98
118
  }
99
119
  try {
100
120
  await this.discv5.findRandomNode();
101
- } catch (err) {
121
+ }
122
+ catch (err) {
102
123
  this.logger.error(`Error running discV5 random node query: ${err}`);
103
124
  }
104
125
  }
@@ -115,7 +136,7 @@ const delayBeforeStart = 2000; // 2sec
115
136
  return this.currentState;
116
137
  }
117
138
  isBootstrapPeer(peerId) {
118
- return this.bootstrapNodePeerIds.some((node)=>node.equals(peerId));
139
+ return this.bootstrapNodePeerIds.some(node => node.equals(peerId));
119
140
  }
120
141
  async stop() {
121
142
  await this.discv5.off(Discv5Event.DISCOVERED, this.onDiscovered);
@@ -126,22 +147,40 @@ const delayBeforeStart = 2000; // 2sec
126
147
  async onEnrAdded(enr) {
127
148
  const multiAddrTcp = await enr.getFullMultiaddr('tcp');
128
149
  const multiAddrUdp = await enr.getFullMultiaddr('udp');
129
- this.logger.debug(`Added ENR ${enr.encodeTxt()}`, {
130
- multiAddrTcp,
131
- multiAddrUdp,
132
- nodeId: enr.nodeId
133
- });
150
+ this.logger.debug(`Added ENR ${enr.encodeTxt()}`, { multiAddrTcp, multiAddrUdp, nodeId: enr.nodeId });
134
151
  this.onDiscovered(enr);
135
152
  }
136
153
  onDiscovered(enr) {
137
- // check the peer is an aztec peer
154
+ if (this.validateEnr(enr)) {
155
+ this.emit(PeerEvent.DISCOVERED, enr);
156
+ }
157
+ }
158
+ validateEnr(enr) {
159
+ // Check the peer is an aztec peer
138
160
  const value = enr.kvs.get(AZTEC_ENR_KEY);
139
- if (value) {
140
- const network = value[0];
141
- // check if the peer is on the same network
142
- if (network === AZTEC_NET) {
143
- this.emit(PeerEvent.DISCOVERED, enr);
161
+ if (!value) {
162
+ this.logger.warn(`Peer ${enr.nodeId} does not have aztec key in ENR`);
163
+ return false;
164
+ }
165
+ let compressedVersion;
166
+ try {
167
+ // And check it has the correct version
168
+ compressedVersion = Buffer.from(value).toString();
169
+ checkCompressedComponentVersion(compressedVersion, this.versions);
170
+ return true;
171
+ }
172
+ catch (err) {
173
+ if (err.name === 'ComponentsVersionsError') {
174
+ this.logger.warn(`Peer ${enr.nodeId} has incorrect version: ${err.message}`, {
175
+ compressedVersion,
176
+ expected: this.versions,
177
+ });
178
+ }
179
+ else {
180
+ this.logger.error(`Error checking peer version`, err);
144
181
  }
145
182
  }
183
+ return false;
146
184
  }
147
185
  }
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY1Y1X3NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZGlzY3Y1L2Rpc2NWNV9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsK0JBQStCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RyxPQUFPLEVBQUUsTUFBTSxFQUEyQixNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLFlBQVksTUFBTSxRQUFRLENBQUM7QUFHbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQTZCLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU87QUFFdEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFlBQVk7SUFvQjdDLFlBQ1UsTUFBYyxFQUNkLE1BQWlCLEVBQ3pCLFlBQTZCLGtCQUFrQixFQUFFLEVBQ3pDLFNBQVMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1FBRW5ELEtBQUssRUFBRSxDQUFDO1FBTEEsV0FBTSxHQUFOLE1B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
@@ -0,0 +1,83 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import type { BlockAttestation, BlockProposal, Gossipable, PeerInfo, TxHash } from '@aztec/circuit-types';
3
+ import type { PeerId } from '@libp2p/interface';
4
+ import EventEmitter from 'events';
5
+ import { type ReqRespSubProtocol, type SubProtocolMap } from './reqresp/interface.js';
6
+ import { type P2PService, type PeerDiscoveryService, PeerDiscoveryState } from './service.js';
7
+ /**
8
+ * A dummy implementation of the P2P Service.
9
+ */
10
+ export declare class DummyP2PService implements P2PService {
11
+ /** Returns an empty array for peers. */
12
+ getPeers(): PeerInfo[];
13
+ /**
14
+ * Starts the dummy implementation.
15
+ * @returns A resolved promise.
16
+ */
17
+ start(): Promise<void>;
18
+ /**
19
+ * Stops the dummy implementation.
20
+ * @returns A resolved promise.
21
+ */
22
+ stop(): Promise<void>;
23
+ /**
24
+ * Called to have the given message propagated through the P2P network.
25
+ * @param _ - The message to be propagated.
26
+ */
27
+ propagate<T extends Gossipable>(_: T): void;
28
+ /**
29
+ * Called upon receipt of settled transactions.
30
+ * @param _ - The hashes of the settled transactions.
31
+ */
32
+ settledTxs(_: TxHash[]): void;
33
+ /**
34
+ * Register a callback into the validator client for when a block proposal is received
35
+ */
36
+ registerBlockReceivedCallback(_: (block: BlockProposal) => Promise<BlockAttestation>): void;
37
+ /**
38
+ * Sends a request to a peer.
39
+ * @param _protocol - The protocol to send the request on.
40
+ * @param _request - The request to send.
41
+ * @returns The response from the peer, otherwise undefined.
42
+ */
43
+ sendRequest<Protocol extends ReqRespSubProtocol>(_protocol: Protocol, _request: InstanceType<SubProtocolMap[Protocol]['request']>): Promise<InstanceType<SubProtocolMap[Protocol]['response']> | undefined>;
44
+ /**
45
+ * Sends a batch request to a peer.
46
+ * @param _protocol - The protocol to send the request on.
47
+ * @param _requests - The requests to send.
48
+ * @returns The responses from the peer, otherwise undefined.
49
+ */
50
+ sendBatchRequest<Protocol extends ReqRespSubProtocol>(_protocol: Protocol, _requests: InstanceType<SubProtocolMap[Protocol]['request']>[]): Promise<InstanceType<SubProtocolMap[Protocol]['response']>[]>;
51
+ /**
52
+ * Returns the ENR of the peer.
53
+ * @returns The ENR of the peer, otherwise undefined.
54
+ */
55
+ getEnr(): undefined;
56
+ }
57
+ /**
58
+ * A dummy implementation of the Peer Discovery Service.
59
+ */
60
+ export declare class DummyPeerDiscoveryService extends EventEmitter implements PeerDiscoveryService {
61
+ private currentState;
62
+ bootstrapNodes: string[];
63
+ /**
64
+ * Starts the dummy implementation.
65
+ * @returns A resolved promise.
66
+ */
67
+ start(): Promise<void>;
68
+ /**
69
+ * Stops the dummy implementation.
70
+ * @returns A resolved promise.
71
+ */
72
+ stop(): Promise<void>;
73
+ /**
74
+ * Called to discover peers in the network.
75
+ * @returns An array of discovered peer addresses.
76
+ */
77
+ getAllPeers(): never[];
78
+ runRandomNodesQuery(): Promise<void>;
79
+ isBootstrapPeer(_: PeerId): boolean;
80
+ getStatus(): PeerDiscoveryState;
81
+ getEnr(): undefined;
82
+ }
83
+ //# sourceMappingURL=dummy_service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE1G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE9F;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,wCAAwC;IACxC,QAAQ,IAAI,QAAQ,EAAE;IAItB;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;IAE3C;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAE7B;;OAEG;IACI,6BAA6B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC;IAE3F;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EACpD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EACzD,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC7D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAIhE;;;OAGG;IACI,MAAM,IAAI,SAAS;CAG3B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAa,YAAW,oBAAoB;IACzF,OAAO,CAAC,YAAY,CAA8B;IAC3C,cAAc,EAAE,MAAM,EAAE,CAAM;IAErC;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,WAAW;IAIX,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,IAAI,kBAAkB;IAI/B,MAAM,IAAI,SAAS;CAG3B"}