@libp2p/kad-dht 14.0.2 → 14.1.0-0a3406a05
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +36 -0
- package/dist/index.min.js +2 -2
- package/dist/src/constants.d.ts +4 -3
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +8 -3
- package/dist/src/constants.js.map +1 -1
- package/dist/src/content-fetching/index.d.ts +1 -0
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +5 -3
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/index.d.ts +107 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +36 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +14 -1
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +76 -27
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/network.d.ts +1 -0
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +4 -5
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +9 -10
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +21 -50
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +51 -192
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/manager.d.ts +1 -1
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +8 -19
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query-self.d.ts +3 -1
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +17 -16
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/reprovider.d.ts +63 -0
- package/dist/src/reprovider.d.ts.map +1 -0
- package/dist/src/reprovider.js +161 -0
- package/dist/src/reprovider.js.map +1 -0
- package/dist/src/routing-table/closest-peers.d.ts +1 -0
- package/dist/src/routing-table/closest-peers.d.ts.map +1 -1
- package/dist/src/routing-table/closest-peers.js +7 -0
- package/dist/src/routing-table/closest-peers.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +1 -0
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +14 -11
- package/dist/src/routing-table/index.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +1 -0
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +3 -1
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +1 -0
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +3 -1
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts +1 -0
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +9 -10
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/utils.d.ts +20 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +87 -4
- package/dist/src/utils.js.map +1 -1
- package/package.json +12 -14
- package/src/constants.ts +11 -5
- package/src/content-fetching/index.ts +5 -3
- package/src/index.ts +116 -2
- package/src/kad-dht.ts +94 -41
- package/src/network.ts +5 -5
- package/src/peer-routing/index.ts +9 -11
- package/src/providers.ts +57 -244
- package/src/query/manager.ts +12 -28
- package/src/query-self.ts +20 -17
- package/src/reprovider.ts +226 -0
- package/src/routing-table/closest-peers.ts +9 -0
- package/src/routing-table/index.ts +16 -11
- package/src/rpc/handlers/get-value.ts +3 -1
- package/src/rpc/handlers/put-value.ts +3 -1
- package/src/rpc/index.ts +10 -10
- package/src/utils.ts +102 -4
- package/dist/typedoc-urls.json +0 -56
package/dist/src/utils.d.ts
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
import { Key } from 'interface-datastore/key';
|
2
|
+
import { CID } from 'multiformats/cid';
|
3
|
+
import type { Operation, OperationMetrics } from './kad-dht.js';
|
2
4
|
import type { PeerId, PeerInfo } from '@libp2p/interface';
|
3
5
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
4
6
|
export declare function removePrivateAddressesMapper(peer: PeerInfo): PeerInfo;
|
@@ -19,7 +21,7 @@ export declare function bufferToKey(buf: Uint8Array): Key;
|
|
19
21
|
/**
|
20
22
|
* Convert a Uint8Array to their SHA2-256 hash
|
21
23
|
*/
|
22
|
-
export declare function bufferToRecordKey(buf: Uint8Array): Key;
|
24
|
+
export declare function bufferToRecordKey(prefix: string, buf: Uint8Array): Key;
|
23
25
|
/**
|
24
26
|
* Generate the key for a public key.
|
25
27
|
*/
|
@@ -33,4 +35,21 @@ export declare function fromPublicKeyKey(key: Uint8Array): PeerId;
|
|
33
35
|
export declare function createPutRecord(key: Uint8Array, value: Uint8Array): Uint8Array;
|
34
36
|
export declare function debounce(callback: () => void, wait?: number): () => void;
|
35
37
|
export declare function multiaddrIsPublic(multiaddr: Multiaddr): boolean;
|
38
|
+
/**
|
39
|
+
* Parse the CID and provider peer id from the key
|
40
|
+
*/
|
41
|
+
export declare function parseProviderKey(key: Key): {
|
42
|
+
cid: CID;
|
43
|
+
peerId: PeerId;
|
44
|
+
};
|
45
|
+
/**
|
46
|
+
* Encode the given key its matching datastore key
|
47
|
+
*/
|
48
|
+
export declare function toProviderKey(prefix: string, cid: CID | string, peerId?: PeerId): Key;
|
49
|
+
export declare function readProviderTime(buf: Uint8Array): Date;
|
50
|
+
/**
|
51
|
+
* Wraps the passed generator function with timing metrics
|
52
|
+
*/
|
53
|
+
export declare function timeOperationGenerator(fn: (...args: any[]) => AsyncGenerator<any>, operationMetrics: OperationMetrics, type: Operation): (...args: any[]) => AsyncGenerator<any>;
|
54
|
+
export declare function timeOperationMethod(fn: (...args: any[]) => Promise<any>, operationMetrics: OperationMetrics, type: Operation): (...args: any[]) => Promise<any>;
|
36
55
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/src/utils.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;
|
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"}
|
package/dist/src/utils.js
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
import { peerIdFromMultihash } from '@libp2p/peer-id';
|
1
|
+
import { peerIdFromMultihash, peerIdFromString } from '@libp2p/peer-id';
|
2
2
|
import { Libp2pRecord } from '@libp2p/record';
|
3
3
|
import { isPrivateIp } from '@libp2p/utils/private-ip';
|
4
4
|
import { Key } from 'interface-datastore/key';
|
5
|
+
import { CID } from 'multiformats/cid';
|
6
|
+
import * as raw from 'multiformats/codecs/raw';
|
5
7
|
import * as Digest from 'multiformats/hashes/digest';
|
6
8
|
import { sha256 } from 'multiformats/hashes/sha2';
|
9
|
+
import * as varint from 'uint8-varint';
|
7
10
|
import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
|
8
11
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
9
12
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
10
|
-
import { RECORD_KEY_PREFIX } from './constants.js';
|
11
13
|
// const IPNS_PREFIX = uint8ArrayFromString('/ipns/')
|
12
14
|
const PK_PREFIX = uint8ArrayFromString('/pk/');
|
13
15
|
export function removePrivateAddressesMapper(peer) {
|
@@ -86,8 +88,8 @@ export function bufferToKey(buf) {
|
|
86
88
|
/**
|
87
89
|
* Convert a Uint8Array to their SHA2-256 hash
|
88
90
|
*/
|
89
|
-
export function bufferToRecordKey(buf) {
|
90
|
-
return new Key(`${
|
91
|
+
export function bufferToRecordKey(prefix, buf) {
|
92
|
+
return new Key(`${prefix}/${uint8ArrayToString(buf, 'base32')}`, false);
|
91
93
|
}
|
92
94
|
/**
|
93
95
|
* Generate the key for a public key.
|
@@ -150,4 +152,85 @@ export function multiaddrIsPublic(multiaddr) {
|
|
150
152
|
}
|
151
153
|
return false;
|
152
154
|
}
|
155
|
+
/**
|
156
|
+
* Parse the CID and provider peer id from the key
|
157
|
+
*/
|
158
|
+
export function parseProviderKey(key) {
|
159
|
+
const parts = key.toString().split('/');
|
160
|
+
const peerIdStr = parts.pop();
|
161
|
+
const cidStr = parts.pop();
|
162
|
+
if (peerIdStr == null || cidStr == null) {
|
163
|
+
throw new Error(`incorrectly formatted provider entry key in datastore: ${key.toString()}`);
|
164
|
+
}
|
165
|
+
return {
|
166
|
+
cid: CID.createV1(raw.code, Digest.decode(uint8ArrayFromString(cidStr, 'base32'))),
|
167
|
+
peerId: peerIdFromString(peerIdStr)
|
168
|
+
};
|
169
|
+
}
|
170
|
+
/**
|
171
|
+
* Encode the given key its matching datastore key
|
172
|
+
*/
|
173
|
+
export function toProviderKey(prefix, cid, peerId) {
|
174
|
+
const cidStr = typeof cid === 'string' ? cid : uint8ArrayToString(cid.multihash.bytes, 'base32');
|
175
|
+
const parts = [
|
176
|
+
prefix,
|
177
|
+
cidStr
|
178
|
+
];
|
179
|
+
if (peerId != null) {
|
180
|
+
parts.push(peerId.toString());
|
181
|
+
}
|
182
|
+
return new Key(parts.join('/'));
|
183
|
+
}
|
184
|
+
export function readProviderTime(buf) {
|
185
|
+
return new Date(varint.decode(buf));
|
186
|
+
}
|
187
|
+
/**
|
188
|
+
* Wraps the passed generator function with timing metrics
|
189
|
+
*/
|
190
|
+
export function timeOperationGenerator(fn, operationMetrics, type) {
|
191
|
+
return async function* (...args) {
|
192
|
+
const stopSuccessTimer = operationMetrics.queryTime?.timer(type);
|
193
|
+
const stopErrorTimer = operationMetrics.errorTime?.timer(type);
|
194
|
+
let errored = false;
|
195
|
+
try {
|
196
|
+
operationMetrics.queries?.increment({ [type]: true });
|
197
|
+
yield* fn(...args);
|
198
|
+
}
|
199
|
+
catch (err) {
|
200
|
+
errored = true;
|
201
|
+
stopErrorTimer?.();
|
202
|
+
operationMetrics.errors?.increment({ [type]: true });
|
203
|
+
throw err;
|
204
|
+
}
|
205
|
+
finally {
|
206
|
+
operationMetrics.queries?.decrement({ [type]: true });
|
207
|
+
if (!errored) {
|
208
|
+
stopSuccessTimer?.();
|
209
|
+
}
|
210
|
+
}
|
211
|
+
};
|
212
|
+
}
|
213
|
+
export function timeOperationMethod(fn, operationMetrics, type) {
|
214
|
+
return async function (...args) {
|
215
|
+
const stopSuccessTimer = operationMetrics?.queryTime?.timer(type);
|
216
|
+
const stopErrorTimer = operationMetrics?.errorTime?.timer(type);
|
217
|
+
let errored = false;
|
218
|
+
try {
|
219
|
+
operationMetrics.queries?.increment({ [type]: true });
|
220
|
+
return await fn(...args);
|
221
|
+
}
|
222
|
+
catch (err) {
|
223
|
+
errored = true;
|
224
|
+
stopErrorTimer?.();
|
225
|
+
operationMetrics.errors?.increment({ [type]: true });
|
226
|
+
throw err;
|
227
|
+
}
|
228
|
+
finally {
|
229
|
+
operationMetrics.queries?.decrement({ [type]: true });
|
230
|
+
if (!errored) {
|
231
|
+
stopSuccessTimer?.();
|
232
|
+
}
|
233
|
+
}
|
234
|
+
};
|
235
|
+
}
|
153
236
|
//# sourceMappingURL=utils.js.map
|
package/dist/src/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;
|
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": "14.0
|
3
|
+
"version": "14.1.0-0a3406a05",
|
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,16 +57,15 @@
|
|
57
57
|
"doc-check": "aegir doc-check"
|
58
58
|
},
|
59
59
|
"dependencies": {
|
60
|
-
"@libp2p/crypto": "
|
61
|
-
"@libp2p/interface": "
|
62
|
-
"@libp2p/interface-internal": "
|
63
|
-
"@libp2p/peer-collections": "
|
64
|
-
"@libp2p/peer-id": "
|
65
|
-
"@libp2p/record": "
|
66
|
-
"@libp2p/utils": "
|
60
|
+
"@libp2p/crypto": "5.0.6-0a3406a05",
|
61
|
+
"@libp2p/interface": "2.2.0-0a3406a05",
|
62
|
+
"@libp2p/interface-internal": "2.0.10-0a3406a05",
|
63
|
+
"@libp2p/peer-collections": "6.0.10-0a3406a05",
|
64
|
+
"@libp2p/peer-id": "5.0.7-0a3406a05",
|
65
|
+
"@libp2p/record": "4.0.4-0a3406a05",
|
66
|
+
"@libp2p/utils": "6.1.3-0a3406a05",
|
67
67
|
"@multiformats/multiaddr": "^12.2.3",
|
68
68
|
"any-signal": "^4.1.1",
|
69
|
-
"hashlru": "^2.3.0",
|
70
69
|
"interface-datastore": "^8.3.0",
|
71
70
|
"it-drain": "^3.0.7",
|
72
71
|
"it-length": "^3.0.6",
|
@@ -77,10 +76,10 @@
|
|
77
76
|
"it-pipe": "^3.0.1",
|
78
77
|
"it-protobuf-stream": "^1.1.3",
|
79
78
|
"it-take": "^3.0.5",
|
79
|
+
"mortice": "^3.0.4",
|
80
80
|
"multiformats": "^13.1.0",
|
81
81
|
"p-defer": "^4.0.1",
|
82
82
|
"p-event": "^6.0.1",
|
83
|
-
"p-queue": "^8.0.1",
|
84
83
|
"progress-events": "^1.0.0",
|
85
84
|
"protons-runtime": "^5.4.0",
|
86
85
|
"race-signal": "^1.0.2",
|
@@ -89,16 +88,15 @@
|
|
89
88
|
"uint8arrays": "^5.1.0"
|
90
89
|
},
|
91
90
|
"devDependencies": {
|
92
|
-
"@libp2p/interface-compliance-tests": "
|
93
|
-
"@libp2p/logger": "
|
94
|
-
"@libp2p/peer-store": "
|
91
|
+
"@libp2p/interface-compliance-tests": "6.1.8-0a3406a05",
|
92
|
+
"@libp2p/logger": "5.1.3-0a3406a05",
|
93
|
+
"@libp2p/peer-store": "11.0.10-0a3406a05",
|
95
94
|
"@types/lodash.random": "^3.2.9",
|
96
95
|
"@types/lodash.range": "^3.2.9",
|
97
96
|
"@types/sinon": "^17.0.3",
|
98
97
|
"@types/which": "^3.0.3",
|
99
98
|
"aegir": "^44.0.1",
|
100
99
|
"datastore-core": "^10.0.0",
|
101
|
-
"datastore-level": "^11.0.0",
|
102
100
|
"delay": "^6.0.0",
|
103
101
|
"execa": "^9.1.0",
|
104
102
|
"it-all": "^3.0.6",
|
package/src/constants.ts
CHANGED
@@ -15,15 +15,21 @@ export const MAX_RECORD_AGE = 36 * hour
|
|
15
15
|
|
16
16
|
export const PROTOCOL = '/ipfs/kad/1.0.0'
|
17
17
|
|
18
|
-
export const
|
18
|
+
export const PROVIDERS_VALIDITY = 24 * hour
|
19
19
|
|
20
|
-
export const
|
20
|
+
export const PROVIDERS_CLEANUP_INTERVAL = hour
|
21
21
|
|
22
|
-
|
22
|
+
// Re-run the provide operation when the expiry of our provider records is within this amount
|
23
|
+
export const REPROVIDE_THRESHOLD = 2 * hour
|
23
24
|
|
24
|
-
|
25
|
+
// How many reprovide operations to run at once
|
26
|
+
export const REPROVIDE_CONCURRENCY = 10
|
25
27
|
|
26
|
-
|
28
|
+
// How long to let the reprovide queue grow before we wait for capacity
|
29
|
+
export const REPROVIDE_MAX_QUEUE_SIZE = 16_384
|
30
|
+
|
31
|
+
// How often to check if records need reproviding
|
32
|
+
export const REPROVIDE_INTERVAL = hour
|
27
33
|
|
28
34
|
export const READ_MESSAGE_TIMEOUT = 10 * second
|
29
35
|
|
@@ -41,12 +41,14 @@ export class ContentFetching {
|
|
41
41
|
private readonly peerRouting: PeerRouting
|
42
42
|
private readonly queryManager: QueryManager
|
43
43
|
private readonly network: Network
|
44
|
+
private readonly datastorePrefix: string
|
44
45
|
|
45
46
|
constructor (components: KadDHTComponents, init: ContentFetchingInit) {
|
46
47
|
const { validators, selectors, peerRouting, queryManager, network, logPrefix } = init
|
47
48
|
|
48
49
|
this.components = components
|
49
50
|
this.log = components.logger.forComponent(`${logPrefix}:content-fetching`)
|
51
|
+
this.datastorePrefix = `/${init.logPrefix.replaceAll(':', '/')}/record`
|
50
52
|
this.validators = validators
|
51
53
|
this.selectors = selectors
|
52
54
|
this.peerRouting = peerRouting
|
@@ -61,7 +63,7 @@ export class ContentFetching {
|
|
61
63
|
async getLocal (key: Uint8Array): Promise<Libp2pRecord> {
|
62
64
|
this.log('getLocal %b', key)
|
63
65
|
|
64
|
-
const dsKey = bufferToRecordKey(key)
|
66
|
+
const dsKey = bufferToRecordKey(this.datastorePrefix, key)
|
65
67
|
|
66
68
|
this.log('fetching record for key %k', dsKey)
|
67
69
|
|
@@ -92,7 +94,7 @@ export class ContentFetching {
|
|
92
94
|
// correct ourself
|
93
95
|
if (this.components.peerId.equals(from)) {
|
94
96
|
try {
|
95
|
-
const dsKey = bufferToRecordKey(key)
|
97
|
+
const dsKey = bufferToRecordKey(this.datastorePrefix, key)
|
96
98
|
this.log(`Storing corrected record for key ${dsKey.toString()}`)
|
97
99
|
await this.components.datastore.put(dsKey, fixupRec.subarray())
|
98
100
|
} catch (err: any) {
|
@@ -136,7 +138,7 @@ export class ContentFetching {
|
|
136
138
|
const record = createPutRecord(key, value)
|
137
139
|
|
138
140
|
// store the record locally
|
139
|
-
const dsKey = bufferToRecordKey(key)
|
141
|
+
const dsKey = bufferToRecordKey(this.datastorePrefix, key)
|
140
142
|
this.log(`storing record for key ${dsKey.toString()}`)
|
141
143
|
await this.components.datastore.put(dsKey, record.subarray())
|
142
144
|
|
package/src/index.ts
CHANGED
@@ -78,12 +78,47 @@
|
|
78
78
|
*
|
79
79
|
* console.info(peerInfo) // peer id, multiaddrs
|
80
80
|
* ```
|
81
|
+
*
|
82
|
+
* @example Connecting to both a LAN-only DHT and the IPFS Amino DHT
|
83
|
+
*
|
84
|
+
* When using multiple DHTs, you should specify distinct datastore, metrics and
|
85
|
+
* log prefixes to ensure that data is kept separate for each instance.
|
86
|
+
*
|
87
|
+
* ```TypeScript
|
88
|
+
* import { kadDHT, removePublicAddressesMapper, removePrivateAddressesMapper } from '@libp2p/kad-dht'
|
89
|
+
* import { createLibp2p } from 'libp2p'
|
90
|
+
* import { peerIdFromString } from '@libp2p/peer-id'
|
91
|
+
*
|
92
|
+
* const node = await createLibp2p({
|
93
|
+
* services: {
|
94
|
+
* lanDHT: kadDHT({
|
95
|
+
* protocol: '/ipfs/lan/kad/1.0.0',
|
96
|
+
* peerInfoMapper: removePublicAddressesMapper,
|
97
|
+
* clientMode: false,
|
98
|
+
* logPrefix: 'libp2p:dht-lan',
|
99
|
+
* datastorePrefix: '/dht-lan',
|
100
|
+
* metricsPrefix: 'libp2p_dht_lan'
|
101
|
+
* }),
|
102
|
+
* aminoDHT: kadDHT({
|
103
|
+
* protocol: '/ipfs/kad/1.0.0',
|
104
|
+
* peerInfoMapper: removePrivateAddressesMapper,
|
105
|
+
* logPrefix: 'libp2p:dht-amino',
|
106
|
+
* datastorePrefix: '/dht-amino',
|
107
|
+
* metricsPrefix: 'libp2p_dht_amino'
|
108
|
+
* })
|
109
|
+
* }
|
110
|
+
* })
|
111
|
+
*
|
112
|
+
* const peerId = peerIdFromString('QmFoo')
|
113
|
+
* const peerInfo = await node.peerRouting.findPeer(peerId)
|
114
|
+
*
|
115
|
+
* console.info(peerInfo) // peer id, multiaddrs
|
116
|
+
* ```
|
81
117
|
*/
|
82
118
|
|
83
119
|
import { KadDHT as KadDHTClass } from './kad-dht.js'
|
84
120
|
import { MessageType } from './message/dht.js'
|
85
121
|
import { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper } from './utils.js'
|
86
|
-
import type { ProvidersInit } from './providers.js'
|
87
122
|
import type { Libp2pEvents, ComponentLogger, TypedEventTarget, Metrics, PeerId, PeerInfo, PeerStore, RoutingOptions, PrivateKey } from '@libp2p/interface'
|
88
123
|
import type { AddressManager, ConnectionManager, Registrar } from '@libp2p/interface-internal'
|
89
124
|
import type { AdaptiveTimeoutInit } from '@libp2p/utils/src/adaptive-timeout.js'
|
@@ -251,6 +286,12 @@ export interface KadDHT {
|
|
251
286
|
*/
|
252
287
|
provide(key: CID, options?: RoutingOptions): AsyncIterable<QueryEvent>
|
253
288
|
|
289
|
+
/**
|
290
|
+
* Provider records must be re-published every 24 hours - pass a previously
|
291
|
+
* provided CID here to not re-publish a record for it any more
|
292
|
+
*/
|
293
|
+
cancelReprovide(key: CID): Promise<void>
|
294
|
+
|
254
295
|
/**
|
255
296
|
* Store the passed value under the passed key on the DHT
|
256
297
|
*/
|
@@ -299,7 +340,61 @@ export type Selectors = Record<string, SelectFn>
|
|
299
340
|
*/
|
300
341
|
export type Validators = Record<string, ValidateFn>
|
301
342
|
|
302
|
-
export
|
343
|
+
export interface ProvidersInit {
|
344
|
+
/**
|
345
|
+
* @default 256
|
346
|
+
*/
|
347
|
+
cacheSize?: number
|
348
|
+
/**
|
349
|
+
* How often invalid records are cleaned. (in seconds)
|
350
|
+
*
|
351
|
+
* @default 5400
|
352
|
+
*/
|
353
|
+
cleanupInterval?: number
|
354
|
+
/**
|
355
|
+
* How long is a provider valid for. (in seconds)
|
356
|
+
*
|
357
|
+
* @default 86400
|
358
|
+
*/
|
359
|
+
provideValidity?: number
|
360
|
+
}
|
361
|
+
|
362
|
+
export interface ReProvideInit {
|
363
|
+
/**
|
364
|
+
* How many re-provide operations to run simultaneously
|
365
|
+
*
|
366
|
+
* @default 10
|
367
|
+
*/
|
368
|
+
concurrency?: number
|
369
|
+
|
370
|
+
/**
|
371
|
+
* How long to let the re-provide queue grow
|
372
|
+
*
|
373
|
+
* @default 16384
|
374
|
+
*/
|
375
|
+
maxQueueSize?: number
|
376
|
+
|
377
|
+
/**
|
378
|
+
* How long before the record expiry to re-provide in ms
|
379
|
+
*
|
380
|
+
* @default 7200000
|
381
|
+
*/
|
382
|
+
threshold?: number
|
383
|
+
|
384
|
+
/**
|
385
|
+
* How often to check which records need reproviding in ms
|
386
|
+
*
|
387
|
+
* @default 3600000
|
388
|
+
*/
|
389
|
+
interval?: number
|
390
|
+
|
391
|
+
/**
|
392
|
+
* How long provider records are valid for in ms
|
393
|
+
*
|
394
|
+
* @default 86400000
|
395
|
+
*/
|
396
|
+
validity?: number
|
397
|
+
}
|
303
398
|
|
304
399
|
export interface KadDHTInit {
|
305
400
|
/**
|
@@ -396,6 +491,20 @@ export interface KadDHTInit {
|
|
396
491
|
*/
|
397
492
|
logPrefix?: string
|
398
493
|
|
494
|
+
/**
|
495
|
+
* The datastore prefix to use
|
496
|
+
*
|
497
|
+
* @default "/dht"
|
498
|
+
*/
|
499
|
+
datastorePrefix?: string
|
500
|
+
|
501
|
+
/**
|
502
|
+
* The metrics prefix to use
|
503
|
+
*
|
504
|
+
* @default "libp2p_kad_dht"
|
505
|
+
*/
|
506
|
+
metricsPrefix?: string
|
507
|
+
|
399
508
|
/**
|
400
509
|
* Settings for how long to wait in ms when pinging DHT peers to decide if
|
401
510
|
* they should be evicted from the routing table or not.
|
@@ -459,6 +568,11 @@ export interface KadDHTInit {
|
|
459
568
|
*/
|
460
569
|
providers?: ProvidersInit
|
461
570
|
|
571
|
+
/**
|
572
|
+
* Initialization options for the Reprovider component
|
573
|
+
*/
|
574
|
+
reprovide?: ReProvideInit
|
575
|
+
|
462
576
|
/**
|
463
577
|
* For every incoming and outgoing PeerInfo, override address configuration
|
464
578
|
* with this filter.
|