@libp2p/kad-dht 15.0.2-32627c876 → 15.0.2-3df5bf2da

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 (70) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/constants.d.ts +1 -1
  4. package/dist/src/constants.d.ts.map +1 -1
  5. package/dist/src/constants.js +1 -1
  6. package/dist/src/constants.js.map +1 -1
  7. package/dist/src/content-fetching/index.d.ts.map +1 -1
  8. package/dist/src/content-fetching/index.js +26 -6
  9. package/dist/src/content-fetching/index.js.map +1 -1
  10. package/dist/src/content-routing/index.d.ts.map +1 -1
  11. package/dist/src/content-routing/index.js +84 -38
  12. package/dist/src/content-routing/index.js.map +1 -1
  13. package/dist/src/index.d.ts +55 -10
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +1 -0
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/kad-dht.d.ts +3 -1
  18. package/dist/src/kad-dht.d.ts.map +1 -1
  19. package/dist/src/kad-dht.js +12 -8
  20. package/dist/src/kad-dht.js.map +1 -1
  21. package/dist/src/network.d.ts +3 -5
  22. package/dist/src/network.d.ts.map +1 -1
  23. package/dist/src/network.js +10 -8
  24. package/dist/src/network.js.map +1 -1
  25. package/dist/src/peer-distance-list.d.ts +4 -3
  26. package/dist/src/peer-distance-list.d.ts.map +1 -1
  27. package/dist/src/peer-distance-list.js +9 -2
  28. package/dist/src/peer-distance-list.js.map +1 -1
  29. package/dist/src/peer-routing/index.d.ts +7 -5
  30. package/dist/src/peer-routing/index.d.ts.map +1 -1
  31. package/dist/src/peer-routing/index.js +57 -45
  32. package/dist/src/peer-routing/index.js.map +1 -1
  33. package/dist/src/providers.js +4 -4
  34. package/dist/src/providers.js.map +1 -1
  35. package/dist/src/query/events.d.ts +17 -6
  36. package/dist/src/query/events.d.ts.map +1 -1
  37. package/dist/src/query/events.js +18 -0
  38. package/dist/src/query/events.js.map +1 -1
  39. package/dist/src/query/manager.d.ts +0 -4
  40. package/dist/src/query/manager.d.ts.map +1 -1
  41. package/dist/src/query/manager.js +20 -9
  42. package/dist/src/query/manager.js.map +1 -1
  43. package/dist/src/query/query-path.d.ts +7 -11
  44. package/dist/src/query/query-path.d.ts.map +1 -1
  45. package/dist/src/query/query-path.js +67 -45
  46. package/dist/src/query/query-path.js.map +1 -1
  47. package/dist/src/query/types.d.ts +6 -5
  48. package/dist/src/query/types.d.ts.map +1 -1
  49. package/dist/src/rpc/handlers/get-providers.js +1 -1
  50. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  51. package/dist/src/utils.d.ts +1 -0
  52. package/dist/src/utils.d.ts.map +1 -1
  53. package/dist/src/utils.js +4 -0
  54. package/dist/src/utils.js.map +1 -1
  55. package/package.json +13 -12
  56. package/src/constants.ts +1 -1
  57. package/src/content-fetching/index.ts +26 -6
  58. package/src/content-routing/index.ts +91 -47
  59. package/src/index.ts +62 -10
  60. package/src/kad-dht.ts +12 -8
  61. package/src/network.ts +18 -12
  62. package/src/peer-distance-list.ts +13 -3
  63. package/src/peer-routing/index.ts +61 -48
  64. package/src/providers.ts +4 -4
  65. package/src/query/events.ts +41 -6
  66. package/src/query/manager.ts +23 -14
  67. package/src/query/query-path.ts +83 -65
  68. package/src/query/types.ts +7 -5
  69. package/src/rpc/handlers/get-providers.ts +1 -1
  70. package/src/utils.ts +9 -0
@@ -40,7 +40,7 @@ export class GetProvidersHandler {
40
40
  };
41
41
  return info;
42
42
  })),
43
- this.peerRouting.getCloserPeersOffline(msg.key, this.peerId)
43
+ this.peerRouting.getCloserPeersOffline(msg.key, peerId)
44
44
  ]);
45
45
  const response = {
46
46
  type: MessageType.GET_PROVIDERS,
@@ -1 +1 @@
1
- {"version":3,"file":"get-providers.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-providers.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-providers.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ export declare function keyForPublicKey(peerId: PeerId): Uint8Array;
29
29
  export declare function isPublicKeyKey(key: Uint8Array): boolean;
30
30
  export declare function isIPNSKey(key: Uint8Array): boolean;
31
31
  export declare function fromPublicKeyKey(key: Uint8Array): PeerId;
32
+ export declare function uint8ArrayToBigInt(buf: Uint8Array): bigint;
32
33
  /**
33
34
  * Create a new put record, encodes and signs it if enabled
34
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAQtC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAKxD,wBAAgB,4BAA4B,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAkCtE;AAED,wBAAgB,2BAA2B,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CA4BrE;AAED,wBAAgB,iBAAiB,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAE3D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAExE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAEvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAK3D;AAED,wBAAgB,cAAc,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAExD;AAED,wBAAgB,SAAS,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAK/E;AAED,wBAAgB,QAAQ,CAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,GAAE,MAAY,GAAG,MAAM,IAAI,CAO9E;AAUD,wBAAgB,iBAAiB,CAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAwBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,GAAG,GAAG;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAaxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAatF;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,CAAC,CAwBjL;AAED,wBAAgB,mBAAmB,CAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAwBhK"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAQtC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAKxD,wBAAgB,4BAA4B,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAkCtE;AAED,wBAAgB,2BAA2B,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CA4BrE;AAED,wBAAgB,iBAAiB,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAE3D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAExE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAEvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAK3D;AAED,wBAAgB,cAAc,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAExD;AAED,wBAAgB,SAAS,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAO3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAK/E;AAED,wBAAgB,QAAQ,CAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,GAAE,MAAY,GAAG,MAAM,IAAI,CAO9E;AAUD,wBAAgB,iBAAiB,CAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAwBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,GAAG,GAAG;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAaxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAatF;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,CAAC,CAwBjL;AAED,wBAAgB,mBAAmB,CAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAwBhK"}
package/dist/src/utils.js CHANGED
@@ -110,6 +110,10 @@ export function fromPublicKeyKey(key) {
110
110
  const multihash = Digest.decode(key.subarray(4));
111
111
  return peerIdFromMultihash(multihash);
112
112
  }
113
+ export function uint8ArrayToBigInt(buf) {
114
+ return BigInt(`0x${Array.from(buf)
115
+ .map(val => val.toString(16).padStart(2, '0')).join('')}`);
116
+ }
113
117
  /**
114
118
  * Create a new put record, encodes and signs it if enabled
115
119
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/kad-dht",
3
- "version": "15.0.2-32627c876",
3
+ "version": "15.0.2-3df5bf2da",
4
4
  "description": "JavaScript implementation of the Kad-DHT for libp2p",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/kad-dht#readme",
@@ -57,14 +57,14 @@
57
57
  "doc-check": "aegir doc-check"
58
58
  },
59
59
  "dependencies": {
60
- "@libp2p/crypto": "5.1.1-32627c876",
61
- "@libp2p/interface": "2.9.0-32627c876",
62
- "@libp2p/interface-internal": "2.3.11-32627c876",
63
- "@libp2p/peer-collections": "6.0.27-32627c876",
64
- "@libp2p/peer-id": "5.1.2-32627c876",
65
- "@libp2p/ping": "2.0.29-32627c876",
66
- "@libp2p/record": "4.0.5-32627c876",
67
- "@libp2p/utils": "6.6.2-32627c876",
60
+ "@libp2p/crypto": "5.1.1-3df5bf2da",
61
+ "@libp2p/interface": "2.9.0-3df5bf2da",
62
+ "@libp2p/interface-internal": "2.3.11-3df5bf2da",
63
+ "@libp2p/peer-collections": "6.0.27-3df5bf2da",
64
+ "@libp2p/peer-id": "5.1.2-3df5bf2da",
65
+ "@libp2p/ping": "2.0.29-3df5bf2da",
66
+ "@libp2p/record": "4.0.5-3df5bf2da",
67
+ "@libp2p/utils": "6.6.2-3df5bf2da",
68
68
  "@multiformats/multiaddr": "^12.3.3",
69
69
  "any-signal": "^4.1.1",
70
70
  "interface-datastore": "^8.3.1",
@@ -77,6 +77,7 @@
77
77
  "it-parallel": "^3.0.8",
78
78
  "it-pipe": "^3.0.1",
79
79
  "it-protobuf-stream": "^2.0.1",
80
+ "it-pushable": "^3.2.3",
80
81
  "it-take": "^3.0.6",
81
82
  "mortice": "^3.0.6",
82
83
  "multiformats": "^13.3.1",
@@ -90,9 +91,9 @@
90
91
  "uint8arrays": "^5.1.0"
91
92
  },
92
93
  "devDependencies": {
93
- "@libp2p/interface-compliance-tests": "6.4.5-32627c876",
94
- "@libp2p/logger": "5.1.15-32627c876",
95
- "@libp2p/peer-store": "11.1.4-32627c876",
94
+ "@libp2p/interface-compliance-tests": "6.4.5-3df5bf2da",
95
+ "@libp2p/logger": "5.1.15-3df5bf2da",
96
+ "@libp2p/peer-store": "11.1.4-3df5bf2da",
96
97
  "@types/lodash.random": "^3.2.9",
97
98
  "@types/lodash.range": "^3.2.9",
98
99
  "@types/sinon": "^17.0.3",
package/src/constants.ts CHANGED
@@ -36,7 +36,7 @@ export const GET_MANY_RECORD_COUNT = 16
36
36
  export const K = 20
37
37
 
38
38
  // Alpha is the concurrency for asynchronous requests
39
- export const ALPHA = 3
39
+ export const ALPHA = 10
40
40
 
41
41
  // How often we look for our closest DHT neighbors
42
42
  export const QUERY_SELF_INTERVAL = 5 * minute
@@ -129,7 +129,7 @@ export class ContentFetching {
129
129
  }
130
130
 
131
131
  if (!sentCorrection) {
132
- yield queryErrorEvent({ from, error: new QueryError('Value not put correctly') }, options)
132
+ throw new QueryError('Could not send correction')
133
133
  }
134
134
 
135
135
  this.log.error('Failed error correcting entry')
@@ -182,7 +182,11 @@ export class ContentFetching {
182
182
  }
183
183
 
184
184
  if (!(putEvent.record != null && uint8ArrayEquals(putEvent.record.value, Libp2pRecord.deserialize(record).value))) {
185
- events.push(queryErrorEvent({ from: event.peer.id, error: new QueryError('Value not put correctly') }, options))
185
+ events.push(queryErrorEvent({
186
+ from: event.peer.id,
187
+ error: new QueryError('Value not put correctly'),
188
+ path: putEvent.path
189
+ }, options))
186
190
  }
187
191
  }
188
192
 
@@ -212,6 +216,7 @@ export class ContentFetching {
212
216
  for await (const event of this.getMany(key, options)) {
213
217
  if (event.name === 'VALUE') {
214
218
  vals.push(event)
219
+ continue
215
220
  }
216
221
 
217
222
  yield event
@@ -242,7 +247,12 @@ export class ContentFetching {
242
247
 
243
248
  yield * this.sendCorrectionRecord(key, vals, best, {
244
249
  ...options,
245
- path: -1
250
+ path: {
251
+ index: -1,
252
+ queued: 0,
253
+ running: 0,
254
+ total: 0
255
+ }
246
256
  })
247
257
 
248
258
  yield vals[i]
@@ -259,7 +269,13 @@ export class ContentFetching {
259
269
 
260
270
  yield valueEvent({
261
271
  value: localRec.value,
262
- from: this.components.peerId
272
+ from: this.components.peerId,
273
+ path: {
274
+ index: -1,
275
+ running: 0,
276
+ queued: 0,
277
+ total: 0
278
+ }
263
279
  }, options)
264
280
  } catch (err: any) {
265
281
  this.log('error getting local value for %b', key, err)
@@ -268,7 +284,7 @@ export class ContentFetching {
268
284
  const self = this // eslint-disable-line @typescript-eslint/no-this-alias
269
285
 
270
286
  const getValueQuery: QueryFunc = async function * ({ peer, signal, path }) {
271
- for await (const event of self.peerRouting.getValueOrPeers(peer, key, {
287
+ for await (const event of self.peerRouting.getValueOrPeers(peer.id, key, {
272
288
  ...options,
273
289
  signal,
274
290
  path
@@ -276,7 +292,11 @@ export class ContentFetching {
276
292
  yield event
277
293
 
278
294
  if (event.name === 'PEER_RESPONSE' && (event.record != null)) {
279
- yield valueEvent({ from: peer, value: event.record.value }, options)
295
+ yield valueEvent({
296
+ from: peer.id,
297
+ value: event.record.value,
298
+ path
299
+ }, options)
280
300
  }
281
301
  }
282
302
  }
@@ -1,7 +1,6 @@
1
1
  import { PeerSet } from '@libp2p/peer-collections'
2
- import map from 'it-map'
3
- import parallel from 'it-parallel'
4
- import { pipe } from 'it-pipe'
2
+ import { Queue } from '@libp2p/utils/queue'
3
+ import { pushable } from 'it-pushable'
5
4
  import { ALPHA } from '../constants.js'
6
5
  import { MessageType } from '../message/dht.js'
7
6
  import { toPbPeerInfo } from '../message/utils.js'
@@ -10,7 +9,7 @@ import {
10
9
  peerResponseEvent,
11
10
  providerEvent
12
11
  } from '../query/events.js'
13
- import type { KadDHTComponents, PeerResponseEvent, ProviderEvent, QueryEvent } from '../index.js'
12
+ import type { FinalPeerEvent, KadDHTComponents, PeerResponseEvent, ProviderEvent, QueryEvent } from '../index.js'
14
13
  import type { Message } from '../message/dht.js'
15
14
  import type { Network } from '../network.js'
16
15
  import type { PeerRouting } from '../peer-routing/index.js'
@@ -98,54 +97,76 @@ export class ContentRouting {
98
97
  }
99
98
 
100
99
  let sent = 0
100
+ const self = this
101
+
102
+ async function * publishProviderRecord (event: FinalPeerEvent): AsyncGenerator<QueryEvent, void, undefined> {
103
+ try {
104
+ self.log('sending provider record for %s to %p', key, event.peer.id)
105
+
106
+ for await (const addProviderEvent of self.network.sendMessage(event.peer.id, msg, {
107
+ ...options,
108
+ path: event.path
109
+ })) {
110
+ if (addProviderEvent.name === 'PEER_RESPONSE') {
111
+ self.log('sent provider record for %s to %p', key, event.peer.id)
112
+ sent++
113
+ }
101
114
 
102
- const maybeNotifyPeer = (event: QueryEvent) => {
103
- return async () => {
104
- if (event.name !== 'FINAL_PEER') {
105
- return [event]
115
+ yield addProviderEvent
106
116
  }
117
+ } catch (err: any) {
118
+ self.log.error('error sending provide record to peer %p', event.peer.id, err)
119
+ yield queryErrorEvent({
120
+ from: event.peer.id,
121
+ error: err,
122
+ path: event.path
123
+ }, options)
124
+ }
125
+ }
107
126
 
108
- const events = []
127
+ const events = pushable<QueryEvent>({
128
+ objectMode: true
129
+ })
109
130
 
110
- this.log('putProvider %s to %p', key, event.peer.id)
131
+ const queue = new Queue({
132
+ concurrency: ALPHA
133
+ })
134
+ queue.addEventListener('idle', () => {
135
+ events.end()
136
+ })
137
+ queue.addEventListener('error', (err) => {
138
+ this.log.error('error publishing provider record to peer - %e', err)
139
+ })
111
140
 
112
- try {
113
- this.log('sending provider record for %s to %p', key, event.peer.id)
114
-
115
- for await (const sendEvent of this.network.sendMessage(event.peer.id, msg, {
116
- ...options,
117
- path: event.path ?? -1
118
- })) {
119
- if (sendEvent.name === 'PEER_RESPONSE') {
120
- this.log('sent provider record for %s to %p', key, event.peer.id)
121
- sent++
122
- }
123
-
124
- events.push(sendEvent)
125
- }
126
- } catch (err: any) {
127
- this.log.error('error sending provide record to peer %p', event.peer.id, err)
128
- events.push(queryErrorEvent({ from: event.peer.id, error: err }, options))
129
- }
141
+ queue.add(async () => {
142
+ const finalPeerEvents: FinalPeerEvent[] = []
130
143
 
131
- return events
132
- }
133
- }
144
+ for await (const event of this.peerRouting.getClosestPeers(target, options)) {
145
+ events.push(event)
134
146
 
135
- // Notify closest peers
136
- yield * pipe(
137
- this.peerRouting.getClosestPeers(target, options),
138
- (source) => map(source, (event) => maybeNotifyPeer(event)),
139
- (source) => parallel(source, {
140
- ordered: false,
141
- concurrency: ALPHA
142
- }),
143
- async function * (source) {
144
- for await (const events of source) {
145
- yield * events
147
+ if (event.name !== 'FINAL_PEER') {
148
+ continue
146
149
  }
150
+
151
+ finalPeerEvents.push(event)
147
152
  }
148
- )
153
+
154
+ finalPeerEvents.forEach(event => {
155
+ queue.add(async () => {
156
+ for await (const notifyEvent of publishProviderRecord(event)) {
157
+ events.push(notifyEvent)
158
+ }
159
+ })
160
+ .catch(err => {
161
+ this.log.error('error publishing provider record to peer - %e', err)
162
+ })
163
+ })
164
+ })
165
+ .catch(err => {
166
+ events.end(err)
167
+ })
168
+
169
+ yield * events
149
170
 
150
171
  this.log('sent provider records to %d peers', sent)
151
172
  }
@@ -184,8 +205,27 @@ export class ContentRouting {
184
205
  }
185
206
  }
186
207
 
187
- yield peerResponseEvent({ from: this.components.peerId, messageType: MessageType.GET_PROVIDERS, providers, path: -1 }, options)
188
- yield providerEvent({ from: this.components.peerId, providers }, options)
208
+ yield peerResponseEvent({
209
+ from: this.components.peerId,
210
+ messageType: MessageType.GET_PROVIDERS,
211
+ providers,
212
+ path: {
213
+ index: -1,
214
+ queued: 0,
215
+ running: 0,
216
+ total: 0
217
+ }
218
+ }, options)
219
+ yield providerEvent({
220
+ from: this.components.peerId,
221
+ providers,
222
+ path: {
223
+ index: -1,
224
+ queued: 0,
225
+ running: 0,
226
+ total: 0
227
+ }
228
+ }, options)
189
229
 
190
230
  found += providers.length
191
231
 
@@ -203,7 +243,7 @@ export class ContentRouting {
203
243
  key: target
204
244
  }
205
245
 
206
- yield * self.network.sendRequest(peer, request, {
246
+ yield * self.network.sendRequest(peer.id, request, {
207
247
  ...options,
208
248
  signal,
209
249
  path
@@ -230,7 +270,11 @@ export class ContentRouting {
230
270
  }
231
271
 
232
272
  if (newProviders.length > 0) {
233
- yield providerEvent({ from: event.from, providers: newProviders }, options)
273
+ yield providerEvent({
274
+ from: event.from,
275
+ providers: newProviders,
276
+ path: event.path
277
+ }, options)
234
278
 
235
279
  found += newProviders.length
236
280
 
package/src/index.ts CHANGED
@@ -157,7 +157,8 @@ export enum EventTypes {
157
157
  PROVIDER,
158
158
  VALUE,
159
159
  ADD_PEER,
160
- DIAL_PEER
160
+ DIAL_PEER,
161
+ PATH_ENDED
161
162
  }
162
163
 
163
164
  /**
@@ -183,6 +184,13 @@ export type DHTProgressEvents =
183
184
  ProgressEvent<'kad-dht:query:add-peer', AddPeerEvent> |
184
185
  ProgressEvent<'kad-dht:query:dial-peer', DialPeerEvent>
185
186
 
187
+ export interface DisjointPath {
188
+ index: number
189
+ queued: number
190
+ running: number
191
+ total: number
192
+ }
193
+
186
194
  /**
187
195
  * Emitted when sending queries to remote peers
188
196
  */
@@ -192,7 +200,7 @@ export interface SendQueryEvent {
192
200
  name: 'SEND_QUERY'
193
201
  messageName: keyof typeof MessageType
194
202
  messageType: MessageType
195
- path: number
203
+ path: DisjointPath
196
204
  }
197
205
 
198
206
  /**
@@ -208,7 +216,7 @@ export interface PeerResponseEvent {
208
216
  closer: PeerInfo[]
209
217
  providers: PeerInfo[]
210
218
  record?: DHTRecord
211
- path: number
219
+ path: DisjointPath
212
220
  }
213
221
 
214
222
  /**
@@ -219,7 +227,7 @@ export interface FinalPeerEvent {
219
227
  peer: PeerInfo
220
228
  type: EventTypes.FINAL_PEER
221
229
  name: 'FINAL_PEER'
222
- path: number
230
+ path: DisjointPath
223
231
  }
224
232
 
225
233
  /**
@@ -230,7 +238,7 @@ export interface QueryErrorEvent {
230
238
  type: EventTypes.QUERY_ERROR
231
239
  name: 'QUERY_ERROR'
232
240
  error: Error
233
- path?: number
241
+ path: DisjointPath
234
242
  }
235
243
 
236
244
  /**
@@ -241,6 +249,7 @@ export interface ProviderEvent {
241
249
  type: EventTypes.PROVIDER
242
250
  name: 'PROVIDER'
243
251
  providers: PeerInfo[]
252
+ path: DisjointPath
244
253
  }
245
254
 
246
255
  /**
@@ -251,6 +260,7 @@ export interface ValueEvent {
251
260
  type: EventTypes.VALUE
252
261
  name: 'VALUE'
253
262
  value: Uint8Array
263
+ path: DisjointPath
254
264
  }
255
265
 
256
266
  /**
@@ -260,21 +270,29 @@ export interface AddPeerEvent {
260
270
  type: EventTypes.ADD_PEER
261
271
  name: 'ADD_PEER'
262
272
  peer: PeerId
263
- path: number
273
+ path: DisjointPath
264
274
  }
265
275
 
266
276
  /**
267
- * Emitted when peers are dialled as part of a query
268
- *
269
- * @deprecated No longer emitted as sometimes connections are reused so it's not possible to say with certainty that a peer has been dialled
277
+ * Emitted when peers are dialled and a new stream is opened as part of a query
270
278
  */
271
279
  export interface DialPeerEvent {
272
280
  peer: PeerId
273
281
  type: EventTypes.DIAL_PEER
274
282
  name: 'DIAL_PEER'
283
+ path: DisjointPath
275
284
  }
276
285
 
277
- export type QueryEvent = SendQueryEvent | PeerResponseEvent | FinalPeerEvent | QueryErrorEvent | ProviderEvent | ValueEvent | AddPeerEvent | DialPeerEvent
286
+ /**
287
+ * Emitted when sending queries to remote peers
288
+ */
289
+ export interface PathEndedEvent {
290
+ type: EventTypes.PATH_ENDED
291
+ name: 'PATH_ENDED'
292
+ path: DisjointPath
293
+ }
294
+
295
+ export type QueryEvent = SendQueryEvent | PeerResponseEvent | FinalPeerEvent | QueryErrorEvent | ProviderEvent | ValueEvent | AddPeerEvent | DialPeerEvent | PathEndedEvent
278
296
 
279
297
  export interface RoutingTable {
280
298
  size: number
@@ -285,6 +303,24 @@ export interface PeerInfoMapper {
285
303
  }
286
304
 
287
305
  export interface KadDHT {
306
+ /**
307
+ * This is the maximum size of the k-buckets and how many peers are looked up
308
+ * when searching for peers close to a key.
309
+ */
310
+ readonly k: number
311
+
312
+ /**
313
+ * Query concurrency factor - this controls how many peers we contact in
314
+ * parallel during a query.
315
+ */
316
+ readonly a: number
317
+
318
+ /**
319
+ * From section 4.4 of the S/Kademlia paper - this is how many disjoint paths
320
+ * are used during a query.
321
+ */
322
+ readonly d: number
323
+
288
324
  /**
289
325
  * Get a value from the DHT, the final ValueEvent will be the best value
290
326
  */
@@ -443,6 +479,22 @@ export interface KadDHTInit {
443
479
  */
444
480
  kBucketSplitThreshold?: number
445
481
 
482
+ /**
483
+ * How many peers are queried in parallel during a query.
484
+ *
485
+ * @default 3
486
+ */
487
+ alpha?: number
488
+
489
+ /**
490
+ * How many disjoint paths are used during a query
491
+ *
492
+ * @see https://telematics.tm.kit.edu/publications/Files/267/SKademlia_2007.pdf - section 4.4
493
+ *
494
+ * @default alpha
495
+ */
496
+ disjointPaths?: number
497
+
446
498
  /**
447
499
  * How many bits of the KAD-ID of peers to use when creating the routing
448
500
  * table.
package/src/kad-dht.ts CHANGED
@@ -2,7 +2,7 @@ import { NotFoundError, TypedEventEmitter, contentRoutingSymbol, peerDiscoverySy
2
2
  import drain from 'it-drain'
3
3
  import createMortice from 'mortice'
4
4
  import pDefer from 'p-defer'
5
- import { PROTOCOL } from './constants.js'
5
+ import { ALPHA, PROTOCOL } from './constants.js'
6
6
  import { ContentFetching } from './content-fetching/index.js'
7
7
  import { ContentRouting as KADDHTContentRouting } from './content-routing/index.js'
8
8
  import { Network } from './network.js'
@@ -13,7 +13,7 @@ import { QuerySelf } from './query-self.js'
13
13
  import { selectors as recordSelectors } from './record/selectors.js'
14
14
  import { validators as recordValidators } from './record/validators.js'
15
15
  import { Reprovider } from './reprovider.js'
16
- import { RoutingTable } from './routing-table/index.js'
16
+ import { KBUCKET_SIZE, RoutingTable } from './routing-table/index.js'
17
17
  import { RoutingTableRefresh } from './routing-table/refresh.js'
18
18
  import { RPC } from './rpc/index.js'
19
19
  import { TopologyListener } from './topology-listener.js'
@@ -113,6 +113,9 @@ export interface OperationMetrics {
113
113
  * Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
114
114
  */
115
115
  export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements KadDHTInterface, Startable {
116
+ public readonly k: number
117
+ public readonly a: number
118
+ public readonly d: number
116
119
  public protocol: string
117
120
  public routingTable: RoutingTable
118
121
  public providers: Providers
@@ -122,7 +125,6 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
122
125
  public readonly components: KadDHTComponents
123
126
  private readonly log: Logger
124
127
  private running: boolean
125
- private readonly kBucketSize: number
126
128
  private clientMode: boolean
127
129
  private readonly validators: Validators
128
130
  private readonly selectors: Selectors
@@ -161,8 +163,10 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
161
163
  this.running = false
162
164
  this.components = components
163
165
  this.log = components.logger.forComponent(logPrefix)
166
+ this.k = init.kBucketSize ?? KBUCKET_SIZE
167
+ this.a = init.alpha ?? ALPHA
168
+ this.d = init.disjointPaths ?? this.a
164
169
  this.protocol = init.protocol ?? PROTOCOL
165
- this.kBucketSize = init.kBucketSize ?? 20
166
170
  this.clientMode = init.clientMode ?? true
167
171
  this.maxInboundStreams = init.maxInboundStreams ?? DEFAULT_MAX_INBOUND_STREAMS
168
172
  this.maxOutboundStreams = init.maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS
@@ -192,7 +196,7 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
192
196
  })
193
197
 
194
198
  this.routingTable = new RoutingTable(components, {
195
- kBucketSize: init.kBucketSize,
199
+ kBucketSize: this.k,
196
200
  pingOldContactTimeout: init.pingOldContactTimeout,
197
201
  pingOldContactConcurrency: init.pingOldContactConcurrency,
198
202
  pingOldContactMaxQueueSize: init.pingOldContactMaxQueueSize,
@@ -218,8 +222,8 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
218
222
  }
219
223
 
220
224
  this.queryManager = new QueryManager(components, {
221
- // Number of disjoint query paths to use - This is set to `kBucketSize/2` per the S/Kademlia paper
222
- disjointPaths: Math.ceil(this.kBucketSize / 2),
225
+ disjointPaths: this.d,
226
+ alpha: this.a,
223
227
  logPrefix,
224
228
  metricsPrefix,
225
229
  initialQuerySelfHasRun,
@@ -317,7 +321,7 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
317
321
 
318
322
  await this.onPeerConnect(peerData)
319
323
  }).catch(err => {
320
- this.log.error('could not add %p to routing table - %e', peerId, err)
324
+ this.log.error('could not add %p to routing table - %e - %e', peerId, err)
321
325
  })
322
326
  })
323
327