@genkaku/protocol 0.1.1 → 0.1.3
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.
- package/dist/dial.d.ts +7 -0
- package/dist/dial.d.ts.map +1 -1
- package/dist/dial.js +42 -0
- package/dist/netconfig.d.ts.map +1 -1
- package/dist/netconfig.js +6 -1
- package/package.json +1 -1
package/dist/dial.d.ts
CHANGED
|
@@ -48,4 +48,11 @@ export declare function requestSettleCosign(node: Libp2p, addr: string, args: {
|
|
|
48
48
|
sig: `0x${string}` | null;
|
|
49
49
|
reason?: string;
|
|
50
50
|
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Tell a seed which addresses this worker can be reached on.
|
|
53
|
+
*
|
|
54
|
+
* Without this the seed can only answer with itself, which is no help to a cold
|
|
55
|
+
* client. A seed that does not implement the protocol is ignored.
|
|
56
|
+
*/
|
|
57
|
+
export declare function announceToSeed(node: Libp2p, seed: string, addrs: string[]): Promise<boolean>;
|
|
51
58
|
//# sourceMappingURL=dial.d.ts.map
|
package/dist/dial.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dial.d.ts","sourceRoot":"","sources":["../src/dial.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAEnE,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAGjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhG,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;IAC1C,uDAAuD;IACvD,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI,CAAA;IACpD,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;IACrC;6DACyD;IACzD,WAAW,CACT,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,EACzB,UAAU,CAAC,EAAE,KAAK,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwJrF;AAED,+EAA+E;AAC/E;;gEAEgE;AAChE,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDjF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAqB9E;AA4BD;+EAC+E;AAC/E,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"dial.d.ts","sourceRoot":"","sources":["../src/dial.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAEnE,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAGjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhG,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;IAC1C,uDAAuD;IACvD,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI,CAAA;IACpD,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;IACrC;6DACyD;IACzD,WAAW,CACT,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,EACzB,UAAU,CAAC,EAAE,KAAK,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwJrF;AAED,+EAA+E;AAC/E;;gEAEgE;AAChE,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDjF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAqB9E;AA4BD;+EAC+E;AAC/E,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkClF;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnF,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgCtE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAelG"}
|
package/dist/dial.js
CHANGED
|
@@ -237,6 +237,23 @@ async function fetchOfferBoard(node, addr) {
|
|
|
237
237
|
/** P4.5 seed discovery: ask a bootstrap seed which peers it currently sees.
|
|
238
238
|
* The seed is a pure matchmaker — one frame in, one frame out, no storage. */
|
|
239
239
|
export async function fetchSeedPeers(node, addr) {
|
|
240
|
+
// A seed addressed by URL is read over HTTP: its peer id changes whenever the
|
|
241
|
+
// process restarts, so a baked /p2p/<id> would rot. A libp2p multiaddr still
|
|
242
|
+
// takes the native path.
|
|
243
|
+
if (addr.startsWith('http://') || addr.startsWith('https://')) {
|
|
244
|
+
try {
|
|
245
|
+
const res = await fetch(`${addr.replace(/\/$/, '')}/peers`);
|
|
246
|
+
if (!res.ok)
|
|
247
|
+
return [];
|
|
248
|
+
const body = (await res.json());
|
|
249
|
+
return Array.isArray(body.peers)
|
|
250
|
+
? body.peers.filter((p) => typeof p === 'string' && p.startsWith('/'))
|
|
251
|
+
: [];
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return [];
|
|
255
|
+
}
|
|
256
|
+
}
|
|
240
257
|
const s = await node.dialProtocol(multiaddr(addr), '/genkaku/peers/0');
|
|
241
258
|
const reader = new FrameReader();
|
|
242
259
|
for await (const chunk of s.source) {
|
|
@@ -284,4 +301,29 @@ export async function requestSettleCosign(node, addr, args) {
|
|
|
284
301
|
}
|
|
285
302
|
return { ok: false, sig: null, reason: reply?.reason ?? 'worker did not co-sign' };
|
|
286
303
|
}
|
|
304
|
+
/**
|
|
305
|
+
* Tell a seed which addresses this worker can be reached on.
|
|
306
|
+
*
|
|
307
|
+
* Without this the seed can only answer with itself, which is no help to a cold
|
|
308
|
+
* client. A seed that does not implement the protocol is ignored.
|
|
309
|
+
*/
|
|
310
|
+
export async function announceToSeed(node, seed, addrs) {
|
|
311
|
+
if (addrs.length === 0)
|
|
312
|
+
return false;
|
|
313
|
+
const s = await node.dialProtocol(multiaddr(seed), '/genkaku/announce/0');
|
|
314
|
+
try {
|
|
315
|
+
s.sink([lpEncode({ proto: 'announce/0', addrs })]);
|
|
316
|
+
const reader = new FrameReader();
|
|
317
|
+
for await (const chunk of s.source) {
|
|
318
|
+
reader.push(chunk);
|
|
319
|
+
const f = reader.next();
|
|
320
|
+
if (f?.proto === 'announced/0')
|
|
321
|
+
return f.ok === true;
|
|
322
|
+
}
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
finally {
|
|
326
|
+
await s.close().catch(() => { });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
287
329
|
//# sourceMappingURL=dial.js.map
|
package/dist/netconfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"netconfig.d.ts","sourceRoot":"","sources":["../src/netconfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,MAAM,CAAA;AAEpD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,GAAG,IAAI,CAGzD,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAWhG,CAAA;AAED,eAAO,MAAM,QAAQ,+CAA+C,CAAA;
|
|
1
|
+
{"version":3,"file":"netconfig.d.ts","sourceRoot":"","sources":["../src/netconfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,MAAM,CAAA;AAEpD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,GAAG,IAAI,CAGzD,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAWhG,CAAA;AAED,eAAO,MAAM,QAAQ,+CAA+C,CAAA;AAgBpE,eAAO,MAAM,eAAe,EAAE,MAAM,EAQhC,CAAA;AAGJ,eAAO,MAAM,2BAA2B,KAAK,CAAA"}
|
package/dist/netconfig.js
CHANGED
|
@@ -25,7 +25,12 @@ export const TREASURY = '0x639a2B713041e15B0c5C18710536b661d5265b48';
|
|
|
25
25
|
// `GENKAKU_BOOTSTRAP_SEEDS` (comma-separated multiaddrs) is a DEVELOPMENT
|
|
26
26
|
// escape hatch for a LAN bring-up or a private deployment; it is empty in
|
|
27
27
|
// shipped builds and is never required for discovery to work.
|
|
28
|
-
|
|
28
|
+
// The live GenKaKu bootstrap seed. It is addressed by URL rather than by
|
|
29
|
+
// multiaddr because the process picks a new peer id on every restart; the URL
|
|
30
|
+
// answers with the addresses that are true right now.
|
|
31
|
+
const BAKED_SEEDS = [
|
|
32
|
+
'https://staging.genkaku.app/seed',
|
|
33
|
+
];
|
|
29
34
|
export const HARDCODED_SEEDS = (() => {
|
|
30
35
|
const fromEnv = (process.env.GENKAKU_BOOTSTRAP_SEEDS ?? '')
|
|
31
36
|
.split(',')
|
package/package.json
CHANGED