@libp2p/kad-dht 16.3.4-a04f5e0bf → 16.3.4-bd7f0cda6

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.
@@ -35,6 +35,11 @@ export declare class PeerDistanceList {
35
35
  * Add a peerId to the list.
36
36
  */
37
37
  addWithKadId(peer: PeerInfo, kadId: Uint8Array, path?: DisjointPath): void;
38
+ /**
39
+ * True if a peer with this (already-computed) kadId could still enter the
40
+ * list: under capacity, or strictly closer than the furthest entry.
41
+ */
42
+ canAddKadId(kadId: Uint8Array): boolean;
38
43
  /**
39
44
  * Indicates whether any of the peerIds passed as a parameter are closer
40
45
  * to the origin key than the furthest peerId in the PeerDistanceList.
@@ -1 +1 @@
1
- {"version":3,"file":"peer-distance-list.d.ts","sourceRoot":"","sources":["../../src/peer-distance-list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEvE,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,EAAE,YAAY,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IAEzC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IAEjC,OAAO,CAAC,aAAa,CAAgB;gBAExB,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAMvD;;OAEG;IACH,IAAI,MAAM,IAAK,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,KAAK,IAAK,YAAY,EAAE,CAE3B;IAED;;OAEG;IACG,GAAG,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,YAA6D,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtI;;OAEG;IACH,YAAY,CAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,YAA6D,GAAG,IAAI;IAsC3H;;;OAGG;IACG,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAYzE;;;OAGG;IACG,SAAS,CAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAS9E"}
1
+ {"version":3,"file":"peer-distance-list.d.ts","sourceRoot":"","sources":["../../src/peer-distance-list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEvE,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,EAAE,YAAY,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IAEzC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IAEjC,OAAO,CAAC,aAAa,CAAgB;gBAExB,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAMvD;;OAEG;IACH,IAAI,MAAM,IAAK,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,KAAK,IAAK,YAAY,EAAE,CAE3B;IAED;;OAEG;IACG,GAAG,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,YAA6D,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtI;;OAEG;IACH,YAAY,CAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,YAA6D,GAAG,IAAI;IAsC3H;;;OAGG;IACH,WAAW,CAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAWxC;;;OAGG;IACG,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAYzE;;;OAGG;IACG,SAAS,CAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAS9E"}
@@ -71,6 +71,18 @@ export class PeerDistanceList {
71
71
  }
72
72
  this.peerDistances = this.peerDistances.slice(0, this.capacity);
73
73
  }
74
+ /**
75
+ * True if a peer with this (already-computed) kadId could still enter the
76
+ * list: under capacity, or strictly closer than the furthest entry.
77
+ */
78
+ canAddKadId(kadId) {
79
+ if (this.peerDistances.length < this.capacity) {
80
+ return true;
81
+ }
82
+ const distance = uint8ArrayXor(this.originDhtKey, kadId);
83
+ const furthest = this.peerDistances[this.peerDistances.length - 1].distance;
84
+ return uint8ArrayXorCompare(distance, furthest) === -1;
85
+ }
74
86
  /**
75
87
  * Indicates whether any of the peerIds passed as a parameter are closer
76
88
  * to the origin key than the furthest peerId in the PeerDistanceList.
@@ -1 +1 @@
1
- {"version":3,"file":"peer-distance-list.js","sourceRoot":"","sources":["../../src/peer-distance-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer-distance-list.js","sourceRoot":"","sources":["../../src/peer-distance-list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7C,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IACrC,aAAa,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;gBAEpC,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAmBvE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAa7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAMpB,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;CA0I5G"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7C,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IACrC,aAAa,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;gBAEpC,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAmBvE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAa7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAMpB,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;CA2I5G"}
@@ -142,6 +142,7 @@ export class QueryManager {
142
142
  query: queryFunc,
143
143
  path: index,
144
144
  numPaths: peersToQuery.length,
145
+ kBucketSize: this.routingTable.kBucketSize,
145
146
  alpha: this.alpha,
146
147
  log,
147
148
  peersSeen,
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,11 @@ export interface QueryPathOptions extends RoutingOptions {
32
32
  * How many disjoint paths are in this query
33
33
  */
34
34
  numPaths: number;
35
+ /**
36
+ * The maximum number of closest peers to find - used as the capacity of the
37
+ * closest-peer set that drives lookup termination
38
+ */
39
+ kBucketSize: number;
35
40
  /**
36
41
  * Query log
37
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"query-path.d.ts","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAA0B,MAAM,mBAAmB,CAAA;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD;;OAEG;IACH,GAAG,EAAE,UAAU,CAAA;IAEf;;OAEG;IACH,aAAa,EAAE,MAAM,EAAE,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAEhB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,iBAAiB,EAAE,iBAAiB,CAAA;IAEpC;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;CACpB;AAMD;;;GAGG;AACH,wBAAwB,SAAS,CAAE,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAwJzG"}
1
+ {"version":3,"file":"query-path.d.ts","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAA0B,MAAM,mBAAmB,CAAA;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD;;OAEG;IACH,GAAG,EAAE,UAAU,CAAA;IAEf;;OAEG;IACH,aAAa,EAAE,MAAM,EAAE,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAEhB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,iBAAiB,EAAE,iBAAiB,CAAA;IAEpC;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;CACpB;AAMD;;;GAGG;AACH,wBAAwB,SAAS,CAAE,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAuKzG"}
@@ -3,6 +3,7 @@ import { Queue } from '@libp2p/utils';
3
3
  import { pushable } from 'it-pushable';
4
4
  import { xor as uint8ArrayXor } from 'uint8arrays/xor';
5
5
  import { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare';
6
+ import { PeerDistanceList } from "../peer-distance-list.js";
6
7
  import { convertPeerId, convertBuffer } from "../utils.js";
7
8
  import { pathEndedEvent, queryErrorEvent } from "./events.js";
8
9
  /**
@@ -10,7 +11,7 @@ import { pathEndedEvent, queryErrorEvent } from "./events.js";
10
11
  * every peer encountered that we have not seen before
11
12
  */
12
13
  export async function* queryPath(options) {
13
- const { key, startingPeers, ourPeerId, query, alpha, path, numPaths, log, peersSeen, connectionManager, signal } = options;
14
+ const { key, startingPeers, ourPeerId, query, alpha, path, numPaths, kBucketSize, log, peersSeen, connectionManager, signal } = options;
14
15
  const events = pushable({
15
16
  objectMode: true
16
17
  });
@@ -44,6 +45,8 @@ export async function* queryPath(options) {
44
45
  const kadId = await convertBuffer(key, {
45
46
  signal
46
47
  });
48
+ // closest peers that have responded on this path; drives lookup termination
49
+ const closest = new PeerDistanceList(kadId, kBucketSize);
47
50
  /**
48
51
  * Adds the passed peer to the query queue if it's not us and no other path
49
52
  * has passed through this peer
@@ -55,6 +58,10 @@ export async function* queryPath(options) {
55
58
  peersSeen.add(peer.id.toMultihash().bytes);
56
59
  const peerXor = uint8ArrayXor(peerKadId, kadId);
57
60
  queue.add(async () => {
61
+ if (!closest.canAddKadId(peerKadId)) {
62
+ log('skipping %p, path converged', peer.id);
63
+ return;
64
+ }
58
65
  try {
59
66
  for await (const event of query({
60
67
  ...options,
@@ -72,6 +79,7 @@ export async function* queryPath(options) {
72
79
  })) {
73
80
  // if there are closer peers and the query has not completed, continue the query
74
81
  if (event.name === 'PEER_RESPONSE') {
82
+ closest.addWithKadId(peer, peerKadId);
75
83
  for (const closerPeer of event.closer) {
76
84
  if (peersSeen.has(closerPeer.id.toMultihash().bytes)) { // eslint-disable-line max-depth
77
85
  log('already seen %p in query', closerPeer.id);
@@ -90,6 +98,10 @@ export async function* queryPath(options) {
90
98
  log('skipping %p as they are not closer to %b than %p', closerPeer.id, key, peer.id);
91
99
  continue;
92
100
  }
101
+ // skip queuing peers that can't enter the closest set (saves the dialability check)
102
+ if (!closest.canAddKadId(closerPeerKadId)) { // eslint-disable-line max-depth
103
+ continue;
104
+ }
93
105
  // dialability is the most expensive check so only run it for
94
106
  // peers we would actually query
95
107
  if (!(await connectionManager.isDialable(closerPeer.multiaddrs, {
@@ -1 +1 @@
1
- {"version":3,"file":"query-path.js","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-path.js","sourceRoot":"","sources":["../../../src/query/query-path.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": "16.3.4-a04f5e0bf",
3
+ "version": "16.3.4-bd7f0cda6",
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",
@@ -48,14 +48,14 @@
48
48
  "doc-check": "aegir doc-check"
49
49
  },
50
50
  "dependencies": {
51
- "@libp2p/crypto": "5.1.21-a04f5e0bf",
52
- "@libp2p/interface": "3.2.5-a04f5e0bf",
53
- "@libp2p/interface-internal": "3.1.8-a04f5e0bf",
54
- "@libp2p/peer-collections": "7.0.23-a04f5e0bf",
55
- "@libp2p/peer-id": "6.0.12-a04f5e0bf",
56
- "@libp2p/ping": "3.1.8-a04f5e0bf",
57
- "@libp2p/record": "4.0.15-a04f5e0bf",
58
- "@libp2p/utils": "7.2.4-a04f5e0bf",
51
+ "@libp2p/crypto": "5.1.21-bd7f0cda6",
52
+ "@libp2p/interface": "3.2.5-bd7f0cda6",
53
+ "@libp2p/interface-internal": "3.1.8-bd7f0cda6",
54
+ "@libp2p/peer-collections": "7.0.23-bd7f0cda6",
55
+ "@libp2p/peer-id": "6.0.12-bd7f0cda6",
56
+ "@libp2p/ping": "3.1.8-bd7f0cda6",
57
+ "@libp2p/record": "4.0.15-bd7f0cda6",
58
+ "@libp2p/utils": "7.2.4-bd7f0cda6",
59
59
  "@multiformats/multiaddr": "^13.0.3",
60
60
  "@multiformats/multiaddr-matcher": "^3.0.2",
61
61
  "any-signal": "^4.1.1",
@@ -81,8 +81,8 @@
81
81
  "uint8arrays": "^6.1.1"
82
82
  },
83
83
  "devDependencies": {
84
- "@libp2p/logger": "6.2.10-a04f5e0bf",
85
- "@libp2p/peer-store": "12.0.23-a04f5e0bf",
84
+ "@libp2p/logger": "6.2.10-bd7f0cda6",
85
+ "@libp2p/peer-store": "12.0.23-bd7f0cda6",
86
86
  "@types/lodash.random": "^3.2.9",
87
87
  "@types/lodash.range": "^3.2.9",
88
88
  "@types/sinon": "^21.0.1",
@@ -96,6 +96,21 @@ export class PeerDistanceList {
96
96
  this.peerDistances = this.peerDistances.slice(0, this.capacity)
97
97
  }
98
98
 
99
+ /**
100
+ * True if a peer with this (already-computed) kadId could still enter the
101
+ * list: under capacity, or strictly closer than the furthest entry.
102
+ */
103
+ canAddKadId (kadId: Uint8Array): boolean {
104
+ if (this.peerDistances.length < this.capacity) {
105
+ return true
106
+ }
107
+
108
+ const distance = uint8ArrayXor(this.originDhtKey, kadId)
109
+ const furthest = this.peerDistances[this.peerDistances.length - 1].distance
110
+
111
+ return uint8ArrayXorCompare(distance, furthest) === -1
112
+ }
113
+
99
114
  /**
100
115
  * Indicates whether any of the peerIds passed as a parameter are closer
101
116
  * to the origin key than the furthest peerId in the PeerDistanceList.
@@ -205,6 +205,7 @@ export class QueryManager implements Startable {
205
205
  query: queryFunc,
206
206
  path: index,
207
207
  numPaths: peersToQuery.length,
208
+ kBucketSize: this.routingTable.kBucketSize,
208
209
  alpha: this.alpha,
209
210
  log,
210
211
  peersSeen,
@@ -3,6 +3,7 @@ import { Queue } from '@libp2p/utils'
3
3
  import { pushable } from 'it-pushable'
4
4
  import { xor as uint8ArrayXor } from 'uint8arrays/xor'
5
5
  import { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare'
6
+ import { PeerDistanceList } from '../peer-distance-list.ts'
6
7
  import { convertPeerId, convertBuffer } from '../utils.ts'
7
8
  import { pathEndedEvent, queryErrorEvent } from './events.ts'
8
9
  import type { QueryEvent } from '../index.ts'
@@ -47,6 +48,12 @@ export interface QueryPathOptions extends RoutingOptions {
47
48
  */
48
49
  numPaths: number
49
50
 
51
+ /**
52
+ * The maximum number of closest peers to find - used as the capacity of the
53
+ * closest-peer set that drives lookup termination
54
+ */
55
+ kBucketSize: number
56
+
50
57
  /**
51
58
  * Query log
52
59
  */
@@ -77,7 +84,7 @@ interface QueryQueueOptions extends AbortOptions {
77
84
  * every peer encountered that we have not seen before
78
85
  */
79
86
  export async function * queryPath (options: QueryPathOptions): AsyncGenerator<QueryEvent, void, undefined> {
80
- const { key, startingPeers, ourPeerId, query, alpha, path, numPaths, log, peersSeen, connectionManager, signal } = options
87
+ const { key, startingPeers, ourPeerId, query, alpha, path, numPaths, kBucketSize, log, peersSeen, connectionManager, signal } = options
81
88
  const events = pushable<QueryEvent>({
82
89
  objectMode: true
83
90
  })
@@ -117,6 +124,9 @@ export async function * queryPath (options: QueryPathOptions): AsyncGenerator<Qu
117
124
  signal
118
125
  })
119
126
 
127
+ // closest peers that have responded on this path; drives lookup termination
128
+ const closest = new PeerDistanceList(kadId, kBucketSize)
129
+
120
130
  /**
121
131
  * Adds the passed peer to the query queue if it's not us and no other path
122
132
  * has passed through this peer
@@ -131,6 +141,11 @@ export async function * queryPath (options: QueryPathOptions): AsyncGenerator<Qu
131
141
  const peerXor = uint8ArrayXor(peerKadId, kadId)
132
142
 
133
143
  queue.add(async () => {
144
+ if (!closest.canAddKadId(peerKadId)) {
145
+ log('skipping %p, path converged', peer.id)
146
+ return
147
+ }
148
+
134
149
  try {
135
150
  for await (const event of query({
136
151
  ...options,
@@ -148,6 +163,8 @@ export async function * queryPath (options: QueryPathOptions): AsyncGenerator<Qu
148
163
  })) {
149
164
  // if there are closer peers and the query has not completed, continue the query
150
165
  if (event.name === 'PEER_RESPONSE') {
166
+ closest.addWithKadId(peer, peerKadId)
167
+
151
168
  for (const closerPeer of event.closer) {
152
169
  if (peersSeen.has(closerPeer.id.toMultihash().bytes)) { // eslint-disable-line max-depth
153
170
  log('already seen %p in query', closerPeer.id)
@@ -170,6 +187,11 @@ export async function * queryPath (options: QueryPathOptions): AsyncGenerator<Qu
170
187
  continue
171
188
  }
172
189
 
190
+ // skip queuing peers that can't enter the closest set (saves the dialability check)
191
+ if (!closest.canAddKadId(closerPeerKadId)) { // eslint-disable-line max-depth
192
+ continue
193
+ }
194
+
173
195
  // dialability is the most expensive check so only run it for
174
196
  // peers we would actually query
175
197
  if (!(await connectionManager.isDialable(closerPeer.multiaddrs, { // eslint-disable-line max-depth