@origintrail-official/dkg-core 0.0.1-dev.1773506972.23bf9c0
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/LICENSE +201 -0
- package/README.md +33 -0
- package/dist/constants.d.ts +25 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +57 -0
- package/dist/constants.js.map +1 -0
- package/dist/crypto/canonicalize.d.ts +12 -0
- package/dist/crypto/canonicalize.d.ts.map +1 -0
- package/dist/crypto/canonicalize.js +43 -0
- package/dist/crypto/canonicalize.js.map +1 -0
- package/dist/crypto/ed25519.d.ts +9 -0
- package/dist/crypto/ed25519.d.ts.map +1 -0
- package/dist/crypto/ed25519.js +14 -0
- package/dist/crypto/ed25519.js.map +1 -0
- package/dist/crypto/hashing.d.ts +2 -0
- package/dist/crypto/hashing.d.ts.map +1 -0
- package/dist/crypto/hashing.js +5 -0
- package/dist/crypto/hashing.js.map +1 -0
- package/dist/crypto/index.d.ts +6 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +6 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/merkle.d.ts +19 -0
- package/dist/crypto/merkle.d.ts.map +1 -0
- package/dist/crypto/merkle.js +103 -0
- package/dist/crypto/merkle.js.map +1 -0
- package/dist/crypto/oracle-verify.d.ts +45 -0
- package/dist/crypto/oracle-verify.d.ts.map +1 -0
- package/dist/crypto/oracle-verify.js +76 -0
- package/dist/crypto/oracle-verify.js.map +1 -0
- package/dist/discovery.d.ts +23 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +61 -0
- package/dist/discovery.js.map +1 -0
- package/dist/event-bus.d.ts +38 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +75 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/genesis.d.ts +51 -0
- package/dist/genesis.d.ts.map +1 -0
- package/dist/genesis.js +159 -0
- package/dist/genesis.js.map +1 -0
- package/dist/gossipsub-manager.d.ts +17 -0
- package/dist/gossipsub-manager.d.ts.map +1 -0
- package/dist/gossipsub-manager.js +69 -0
- package/dist/gossipsub-manager.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +35 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +48 -0
- package/dist/logger.js.map +1 -0
- package/dist/node.d.ts +47 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +307 -0
- package/dist/node.js.map +1 -0
- package/dist/proto/access.d.ts +22 -0
- package/dist/proto/access.d.ts.map +1 -0
- package/dist/proto/access.js +26 -0
- package/dist/proto/access.js.map +1 -0
- package/dist/proto/discover.d.ts +19 -0
- package/dist/proto/discover.d.ts.map +1 -0
- package/dist/proto/discover.js +24 -0
- package/dist/proto/discover.js.map +1 -0
- package/dist/proto/finalization.d.ts +28 -0
- package/dist/proto/finalization.d.ts.map +1 -0
- package/dist/proto/finalization.js +42 -0
- package/dist/proto/finalization.js.map +1 -0
- package/dist/proto/index.d.ts +9 -0
- package/dist/proto/index.d.ts.map +1 -0
- package/dist/proto/index.js +9 -0
- package/dist/proto/index.js.map +1 -0
- package/dist/proto/ka-update.d.ts +27 -0
- package/dist/proto/ka-update.d.ts.map +1 -0
- package/dist/proto/ka-update.js +55 -0
- package/dist/proto/ka-update.js.map +1 -0
- package/dist/proto/message.d.ts +21 -0
- package/dist/proto/message.d.ts.map +1 -0
- package/dist/proto/message.js +18 -0
- package/dist/proto/message.js.map +1 -0
- package/dist/proto/publish.d.ts +50 -0
- package/dist/proto/publish.d.ts.map +1 -0
- package/dist/proto/publish.js +44 -0
- package/dist/proto/publish.js.map +1 -0
- package/dist/proto/query.d.ts +27 -0
- package/dist/proto/query.d.ts.map +1 -0
- package/dist/proto/query.js +32 -0
- package/dist/proto/query.js.map +1 -0
- package/dist/proto/workspace.d.ts +34 -0
- package/dist/proto/workspace.d.ts.map +1 -0
- package/dist/proto/workspace.js +37 -0
- package/dist/proto/workspace.js.map +1 -0
- package/dist/protocol-router.d.ts +23 -0
- package/dist/protocol-router.d.ts.map +1 -0
- package/dist/protocol-router.js +127 -0
- package/dist/protocol-router.js.map +1 -0
- package/dist/rate-limiter.d.ts +33 -0
- package/dist/rate-limiter.d.ts.map +1 -0
- package/dist/rate-limiter.js +80 -0
- package/dist/rate-limiter.js.map +1 -0
- package/dist/retry.d.ts +21 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +42 -0
- package/dist/retry.js.map +1 -0
- package/dist/sparql-safe.d.ts +59 -0
- package/dist/sparql-safe.d.ts.map +1 -0
- package/dist/sparql-safe.js +118 -0
- package/dist/sparql-safe.js.map +1 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface OracleTripleProof {
|
|
2
|
+
tripleHash: string;
|
|
3
|
+
leafIndex: number;
|
|
4
|
+
siblings: string[];
|
|
5
|
+
merkleRoot: string;
|
|
6
|
+
batchId: string;
|
|
7
|
+
}
|
|
8
|
+
export interface OracleProvedTriple {
|
|
9
|
+
subject: string;
|
|
10
|
+
predicate: string;
|
|
11
|
+
object: string;
|
|
12
|
+
proof: OracleTripleProof;
|
|
13
|
+
}
|
|
14
|
+
export interface OracleVerificationInfo {
|
|
15
|
+
chainId: string;
|
|
16
|
+
contextGraphId: string;
|
|
17
|
+
batchIds: string[];
|
|
18
|
+
merkleRoots: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
export interface VerifyResult {
|
|
21
|
+
valid: boolean;
|
|
22
|
+
tripleResults: Array<{
|
|
23
|
+
subject: string;
|
|
24
|
+
predicate: string;
|
|
25
|
+
object: string;
|
|
26
|
+
hashValid: boolean;
|
|
27
|
+
proofValid: boolean;
|
|
28
|
+
batchId: string;
|
|
29
|
+
}>;
|
|
30
|
+
unverifiedBatches: string[];
|
|
31
|
+
}
|
|
32
|
+
export declare function hexToBytes(hex: string): Uint8Array;
|
|
33
|
+
/**
|
|
34
|
+
* Client-side verification of Context Oracle responses.
|
|
35
|
+
*
|
|
36
|
+
* For each proved triple:
|
|
37
|
+
* 1. Re-hashes (subject, predicate, object) → tripleHash
|
|
38
|
+
* 2. Walks the Merkle proof to recompute the root
|
|
39
|
+
* 3. Compares against the expected merkleRoot from verification info
|
|
40
|
+
*
|
|
41
|
+
* The caller must separately verify that the merkleRoots match what's stored
|
|
42
|
+
* on-chain (via getBatchMerkleRoot on KnowledgeAssetsStorage).
|
|
43
|
+
*/
|
|
44
|
+
export declare function verifyOracleResponse(triples: OracleProvedTriple[], verification: OracleVerificationInfo): VerifyResult;
|
|
45
|
+
//# sourceMappingURL=oracle-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle-verify.d.ts","sourceRoot":"","sources":["../../src/crypto/oracle-verify.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,KAAK,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAUlD;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,YAAY,EAAE,sBAAsB,GACnC,YAAY,CAgDd"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { MerkleTree } from './merkle.js';
|
|
2
|
+
import { hashTriple } from './canonicalize.js';
|
|
3
|
+
export function hexToBytes(hex) {
|
|
4
|
+
const clean = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
5
|
+
if (clean.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(clean)) {
|
|
6
|
+
throw new Error(`Invalid hex string: "${hex.slice(0, 20)}${hex.length > 20 ? '...' : ''}"`);
|
|
7
|
+
}
|
|
8
|
+
const bytes = new Uint8Array(clean.length / 2);
|
|
9
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
10
|
+
bytes[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
|
|
11
|
+
}
|
|
12
|
+
return bytes;
|
|
13
|
+
}
|
|
14
|
+
function bytesEqual(a, b) {
|
|
15
|
+
if (a.length !== b.length)
|
|
16
|
+
return false;
|
|
17
|
+
for (let i = 0; i < a.length; i++) {
|
|
18
|
+
if (a[i] !== b[i])
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Client-side verification of Context Oracle responses.
|
|
25
|
+
*
|
|
26
|
+
* For each proved triple:
|
|
27
|
+
* 1. Re-hashes (subject, predicate, object) → tripleHash
|
|
28
|
+
* 2. Walks the Merkle proof to recompute the root
|
|
29
|
+
* 3. Compares against the expected merkleRoot from verification info
|
|
30
|
+
*
|
|
31
|
+
* The caller must separately verify that the merkleRoots match what's stored
|
|
32
|
+
* on-chain (via getBatchMerkleRoot on KnowledgeAssetsStorage).
|
|
33
|
+
*/
|
|
34
|
+
export function verifyOracleResponse(triples, verification) {
|
|
35
|
+
const tripleResults = [];
|
|
36
|
+
const verifiedBatches = new Set();
|
|
37
|
+
for (const t of triples) {
|
|
38
|
+
const recomputedHash = hashTriple(t.subject, t.predicate, t.object);
|
|
39
|
+
const expectedHash = hexToBytes(t.proof.tripleHash);
|
|
40
|
+
const hashValid = bytesEqual(recomputedHash, expectedHash);
|
|
41
|
+
const root = hexToBytes(t.proof.merkleRoot);
|
|
42
|
+
const siblings = t.proof.siblings.map(hexToBytes);
|
|
43
|
+
const proofValid = MerkleTree.verify(root, recomputedHash, siblings, t.proof.leafIndex);
|
|
44
|
+
verifiedBatches.add(t.proof.batchId);
|
|
45
|
+
tripleResults.push({
|
|
46
|
+
subject: t.subject,
|
|
47
|
+
predicate: t.predicate,
|
|
48
|
+
object: t.object,
|
|
49
|
+
hashValid,
|
|
50
|
+
proofValid,
|
|
51
|
+
batchId: t.proof.batchId,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const expectedRoot = (batchId) => verification.merkleRoots[batchId];
|
|
55
|
+
const unverifiedBatches = [];
|
|
56
|
+
for (const batchId of verifiedBatches) {
|
|
57
|
+
const onChainRoot = expectedRoot(batchId);
|
|
58
|
+
if (!onChainRoot) {
|
|
59
|
+
unverifiedBatches.push(batchId);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const rootBytes = hexToBytes(onChainRoot);
|
|
63
|
+
for (let i = 0; i < tripleResults.length; i++) {
|
|
64
|
+
const tr = tripleResults[i];
|
|
65
|
+
if (tr.batchId === batchId && tr.proofValid) {
|
|
66
|
+
const proofRoot = hexToBytes(triples[i].proof.merkleRoot);
|
|
67
|
+
if (!bytesEqual(proofRoot, rootBytes)) {
|
|
68
|
+
tr.proofValid = false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const valid = tripleResults.every(t => t.hashValid && t.proofValid) && unverifiedBatches.length === 0;
|
|
74
|
+
return { valid, tripleResults, unverifiedBatches };
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=oracle-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle-verify.js","sourceRoot":"","sources":["../../src/crypto/oracle-verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAqC/C,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,CAAa,EAAE,CAAa;IAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA6B,EAC7B,YAAoC;IAEpC,MAAM,aAAa,GAAkC,EAAE,CAAC;IACxD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAExF,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErC,aAAa,CAAC,IAAI,CAAC;YACjB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS;YACT,UAAU;YACV,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;oBACtC,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC;IAEtG,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DKGNode } from './node.js';
|
|
2
|
+
import type { ConnectionInfo, EventBus } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Thin wrapper that connects libp2p peer discovery events to the DKG EventBus
|
|
5
|
+
* and exposes typed connection metadata including transport type.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PeerDiscoveryManager {
|
|
8
|
+
private readonly node;
|
|
9
|
+
private readonly eventBus;
|
|
10
|
+
constructor(node: DKGNode, eventBus: EventBus);
|
|
11
|
+
private setupListeners;
|
|
12
|
+
getPeers(): Promise<string[]>;
|
|
13
|
+
getConnections(): Promise<ConnectionInfo[]>;
|
|
14
|
+
/** Convenience: group connections by transport type. */
|
|
15
|
+
getConnectionSummary(): Promise<{
|
|
16
|
+
total: number;
|
|
17
|
+
direct: number;
|
|
18
|
+
relayed: number;
|
|
19
|
+
peers: Array<ConnectionInfo>;
|
|
20
|
+
}>;
|
|
21
|
+
private connectionToInfo;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAuB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGhF;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAM7C,OAAO,CAAC,cAAc;IA0BhB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,cAAc,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIjD,wDAAwD;IAClD,oBAAoB,IAAI,OAAO,CAAC;QACpC,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;KAC9B,CAAC;IAMF,OAAO,CAAC,gBAAgB;CAazB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { DKGEvent } from './event-bus.js';
|
|
2
|
+
/**
|
|
3
|
+
* Thin wrapper that connects libp2p peer discovery events to the DKG EventBus
|
|
4
|
+
* and exposes typed connection metadata including transport type.
|
|
5
|
+
*/
|
|
6
|
+
export class PeerDiscoveryManager {
|
|
7
|
+
node;
|
|
8
|
+
eventBus;
|
|
9
|
+
constructor(node, eventBus) {
|
|
10
|
+
this.node = node;
|
|
11
|
+
this.eventBus = eventBus;
|
|
12
|
+
this.setupListeners();
|
|
13
|
+
}
|
|
14
|
+
setupListeners() {
|
|
15
|
+
const libp2p = this.node.libp2p;
|
|
16
|
+
libp2p.addEventListener('peer:connect', (evt) => {
|
|
17
|
+
const peerId = evt.detail.toString();
|
|
18
|
+
this.eventBus.emit(DKGEvent.PEER_CONNECTED, { peerId });
|
|
19
|
+
});
|
|
20
|
+
libp2p.addEventListener('peer:disconnect', (evt) => {
|
|
21
|
+
const peerId = evt.detail.toString();
|
|
22
|
+
this.eventBus.emit(DKGEvent.PEER_DISCONNECTED, { peerId });
|
|
23
|
+
});
|
|
24
|
+
libp2p.addEventListener('connection:open', (evt) => {
|
|
25
|
+
const conn = evt.detail;
|
|
26
|
+
const info = this.connectionToInfo(conn);
|
|
27
|
+
this.eventBus.emit(DKGEvent.CONNECTION_OPEN, info);
|
|
28
|
+
});
|
|
29
|
+
libp2p.addEventListener('connection:close', (evt) => {
|
|
30
|
+
const conn = evt.detail;
|
|
31
|
+
const info = this.connectionToInfo(conn);
|
|
32
|
+
this.eventBus.emit(DKGEvent.CONNECTION_CLOSE, info);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async getPeers() {
|
|
36
|
+
return this.node.libp2p.getPeers().map((p) => p.toString());
|
|
37
|
+
}
|
|
38
|
+
async getConnections() {
|
|
39
|
+
return this.node.libp2p.getConnections().map((c) => this.connectionToInfo(c));
|
|
40
|
+
}
|
|
41
|
+
/** Convenience: group connections by transport type. */
|
|
42
|
+
async getConnectionSummary() {
|
|
43
|
+
const peers = await this.getConnections();
|
|
44
|
+
const direct = peers.filter((p) => p.transport === 'direct').length;
|
|
45
|
+
return { total: peers.length, direct, relayed: peers.length - direct, peers };
|
|
46
|
+
}
|
|
47
|
+
connectionToInfo(conn) {
|
|
48
|
+
const addr = conn.remoteAddr?.toString() ?? 'unknown';
|
|
49
|
+
const transport = addr.includes('/p2p-circuit')
|
|
50
|
+
? 'relayed'
|
|
51
|
+
: 'direct';
|
|
52
|
+
return {
|
|
53
|
+
peerId: conn.remotePeer.toString(),
|
|
54
|
+
remoteAddr: addr,
|
|
55
|
+
transport,
|
|
56
|
+
direction: conn.direction,
|
|
57
|
+
openedAt: conn.timeline?.open ?? Date.now(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EventBus } from './types.js';
|
|
2
|
+
export declare const DKGEvent: {
|
|
3
|
+
readonly KC_PUBLISHED: "kc:published";
|
|
4
|
+
readonly KC_CONFIRMED: "kc:confirmed";
|
|
5
|
+
readonly KC_DELETED: "kc:deleted";
|
|
6
|
+
readonly KA_UPDATED: "ka:updated";
|
|
7
|
+
readonly PEER_CONNECTED: "peer:connected";
|
|
8
|
+
readonly PEER_DISCONNECTED: "peer:disconnected";
|
|
9
|
+
readonly CONNECTION_OPEN: "connection:open";
|
|
10
|
+
readonly CONNECTION_CLOSE: "connection:close";
|
|
11
|
+
readonly CONNECTION_UPGRADED: "connection:upgraded";
|
|
12
|
+
readonly GOSSIP_MESSAGE: "gossip:message";
|
|
13
|
+
readonly PUBLISH_REQUEST: "publish:request";
|
|
14
|
+
readonly PUBLISH_ACK: "publish:ack";
|
|
15
|
+
readonly ACCESS_REQUEST: "access:request";
|
|
16
|
+
readonly ACCESS_RESPONSE: "access:response";
|
|
17
|
+
readonly MESSAGE_RECEIVED: "message:received";
|
|
18
|
+
readonly MESSAGE_SENT: "message:sent";
|
|
19
|
+
readonly AKA_SESSION_PROPOSED: "aka:session:proposed";
|
|
20
|
+
readonly AKA_SESSION_ACTIVATED: "aka:session:activated";
|
|
21
|
+
readonly AKA_SESSION_FINALIZED: "aka:session:finalized";
|
|
22
|
+
readonly AKA_SESSION_ABORTED: "aka:session:aborted";
|
|
23
|
+
readonly AKA_ROUND_STARTED: "aka:round:started";
|
|
24
|
+
readonly AKA_ROUND_FINALIZED: "aka:round:finalized";
|
|
25
|
+
readonly AKA_ROUND_TIMEOUT: "aka:round:timeout";
|
|
26
|
+
readonly PUBLISH_FAILED: "publish:failed";
|
|
27
|
+
readonly CONTEXT_GRAPH_REGISTRATION_FAILED: "context-graph:registration:failed";
|
|
28
|
+
};
|
|
29
|
+
export type DKGEventType = (typeof DKGEvent)[keyof typeof DKGEvent];
|
|
30
|
+
export declare class TypedEventBus implements EventBus {
|
|
31
|
+
private listeners;
|
|
32
|
+
emit(event: string, data: unknown): void;
|
|
33
|
+
on(event: string, handler: (data: unknown) => void): void;
|
|
34
|
+
off(event: string, handler: (data: unknown) => void): void;
|
|
35
|
+
once(event: string, handler: (data: unknown) => void): void;
|
|
36
|
+
removeAllListeners(event?: string): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,SAAS,CAAmD;IAEpE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAYxC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IASzD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAO1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAQ3D,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;CAOzC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export const DKGEvent = {
|
|
2
|
+
KC_PUBLISHED: 'kc:published',
|
|
3
|
+
KC_CONFIRMED: 'kc:confirmed',
|
|
4
|
+
KC_DELETED: 'kc:deleted',
|
|
5
|
+
KA_UPDATED: 'ka:updated',
|
|
6
|
+
PEER_CONNECTED: 'peer:connected',
|
|
7
|
+
PEER_DISCONNECTED: 'peer:disconnected',
|
|
8
|
+
CONNECTION_OPEN: 'connection:open',
|
|
9
|
+
CONNECTION_CLOSE: 'connection:close',
|
|
10
|
+
CONNECTION_UPGRADED: 'connection:upgraded',
|
|
11
|
+
GOSSIP_MESSAGE: 'gossip:message',
|
|
12
|
+
PUBLISH_REQUEST: 'publish:request',
|
|
13
|
+
PUBLISH_ACK: 'publish:ack',
|
|
14
|
+
ACCESS_REQUEST: 'access:request',
|
|
15
|
+
ACCESS_RESPONSE: 'access:response',
|
|
16
|
+
MESSAGE_RECEIVED: 'message:received',
|
|
17
|
+
MESSAGE_SENT: 'message:sent',
|
|
18
|
+
AKA_SESSION_PROPOSED: 'aka:session:proposed',
|
|
19
|
+
AKA_SESSION_ACTIVATED: 'aka:session:activated',
|
|
20
|
+
AKA_SESSION_FINALIZED: 'aka:session:finalized',
|
|
21
|
+
AKA_SESSION_ABORTED: 'aka:session:aborted',
|
|
22
|
+
AKA_ROUND_STARTED: 'aka:round:started',
|
|
23
|
+
AKA_ROUND_FINALIZED: 'aka:round:finalized',
|
|
24
|
+
AKA_ROUND_TIMEOUT: 'aka:round:timeout',
|
|
25
|
+
PUBLISH_FAILED: 'publish:failed',
|
|
26
|
+
CONTEXT_GRAPH_REGISTRATION_FAILED: 'context-graph:registration:failed',
|
|
27
|
+
};
|
|
28
|
+
export class TypedEventBus {
|
|
29
|
+
listeners = new Map();
|
|
30
|
+
emit(event, data) {
|
|
31
|
+
const handlers = this.listeners.get(event);
|
|
32
|
+
if (!handlers)
|
|
33
|
+
return;
|
|
34
|
+
for (const handler of handlers) {
|
|
35
|
+
try {
|
|
36
|
+
handler(data);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
console.error(`[EventBus] Handler error on "${event}":`, err instanceof Error ? err.message : err);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
on(event, handler) {
|
|
44
|
+
let handlers = this.listeners.get(event);
|
|
45
|
+
if (!handlers) {
|
|
46
|
+
handlers = new Set();
|
|
47
|
+
this.listeners.set(event, handlers);
|
|
48
|
+
}
|
|
49
|
+
handlers.add(handler);
|
|
50
|
+
}
|
|
51
|
+
off(event, handler) {
|
|
52
|
+
const handlers = this.listeners.get(event);
|
|
53
|
+
if (!handlers)
|
|
54
|
+
return;
|
|
55
|
+
handlers.delete(handler);
|
|
56
|
+
if (handlers.size === 0)
|
|
57
|
+
this.listeners.delete(event);
|
|
58
|
+
}
|
|
59
|
+
once(event, handler) {
|
|
60
|
+
const wrapper = (data) => {
|
|
61
|
+
this.off(event, wrapper);
|
|
62
|
+
handler(data);
|
|
63
|
+
};
|
|
64
|
+
this.on(event, wrapper);
|
|
65
|
+
}
|
|
66
|
+
removeAllListeners(event) {
|
|
67
|
+
if (event) {
|
|
68
|
+
this.listeners.delete(event);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.listeners.clear();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Genesis Knowledge — the DKG equivalent of a blockchain genesis block.
|
|
3
|
+
*
|
|
4
|
+
* Every DKG network begins with a deterministic set of RDF triples loaded into
|
|
5
|
+
* each node on first boot. The SHA-256 hash of the genesis content serves as
|
|
6
|
+
* the networkId, ensuring only nodes with identical genesis can peer.
|
|
7
|
+
*/
|
|
8
|
+
export interface GenesisQuad {
|
|
9
|
+
subject: string;
|
|
10
|
+
predicate: string;
|
|
11
|
+
object: string;
|
|
12
|
+
graph: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function getGenesisQuads(): GenesisQuad[];
|
|
15
|
+
export declare function computeNetworkId(): Promise<string>;
|
|
16
|
+
export declare function getGenesisRaw(): string;
|
|
17
|
+
export declare const SYSTEM_PARANETS: {
|
|
18
|
+
readonly AGENTS: "agents";
|
|
19
|
+
readonly ONTOLOGY: "ontology";
|
|
20
|
+
};
|
|
21
|
+
export declare const DKG_ONTOLOGY: {
|
|
22
|
+
readonly RDF_TYPE: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
|
|
23
|
+
readonly SCHEMA_NAME: "https://schema.org/name";
|
|
24
|
+
readonly SCHEMA_DESCRIPTION: "https://schema.org/description";
|
|
25
|
+
readonly DKG_AGENT: "https://dkg.network/ontology#Agent";
|
|
26
|
+
readonly DKG_CORE_NODE: "https://dkg.network/ontology#CoreNode";
|
|
27
|
+
readonly DKG_EDGE_NODE: "https://dkg.network/ontology#EdgeNode";
|
|
28
|
+
readonly DKG_PEER_ID: "https://dkg.network/ontology#peerId";
|
|
29
|
+
readonly DKG_PUBLIC_KEY: "https://dkg.network/ontology#publicKey";
|
|
30
|
+
readonly DKG_NODE_ROLE: "https://dkg.network/ontology#nodeRole";
|
|
31
|
+
readonly DKG_RELAY_ADDRESS: "https://dkg.network/ontology#relayAddress";
|
|
32
|
+
readonly DKG_PARANET: "https://dkg.network/ontology#Paranet";
|
|
33
|
+
readonly DKG_SYSTEM_PARANET: "https://dkg.network/ontology#SystemParanet";
|
|
34
|
+
readonly DKG_NETWORK: "https://dkg.network/ontology#Network";
|
|
35
|
+
readonly DKG_NETWORK_ID: "https://dkg.network/ontology#networkId";
|
|
36
|
+
readonly DKG_GENESIS_VERSION: "https://dkg.network/ontology#genesisVersion";
|
|
37
|
+
readonly DKG_CREATOR: "https://dkg.network/ontology#creator";
|
|
38
|
+
readonly DKG_CREATED_AT: "https://dkg.network/ontology#createdAt";
|
|
39
|
+
readonly DKG_GOSSIP_TOPIC: "https://dkg.network/ontology#gossipTopic";
|
|
40
|
+
readonly DKG_REPLICATION_POLICY: "https://dkg.network/ontology#replicationPolicy";
|
|
41
|
+
readonly ERC8004_CAPABILITY: "https://eips.ethereum.org/erc-8004#Capability";
|
|
42
|
+
readonly ERC8004_CAPABILITIES: "https://eips.ethereum.org/erc-8004#capabilities";
|
|
43
|
+
readonly PROV_GENERATED_BY: "http://www.w3.org/ns/prov#wasGeneratedBy";
|
|
44
|
+
readonly PROV_ACTIVITY: "http://www.w3.org/ns/prov#Activity";
|
|
45
|
+
readonly PROV_ASSOCIATED_WITH: "http://www.w3.org/ns/prov#wasAssociatedWith";
|
|
46
|
+
readonly PROV_AT_TIME: "http://www.w3.org/ns/prov#atTime";
|
|
47
|
+
readonly PROV_ENDED_AT_TIME: "http://www.w3.org/ns/prov#endedAtTime";
|
|
48
|
+
readonly SKILL_OFFERS: "https://dkg.origintrail.io/skill#offersSkill";
|
|
49
|
+
readonly SKILL_FRAMEWORK: "https://dkg.origintrail.io/skill#framework";
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=genesis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../src/genesis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AA4ED,wBAAgB,eAAe,IAAI,WAAW,EAAE,CAK/C;AAkBD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CASxD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bf,CAAC"}
|
package/dist/genesis.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Genesis Knowledge — the DKG equivalent of a blockchain genesis block.
|
|
3
|
+
*
|
|
4
|
+
* Every DKG network begins with a deterministic set of RDF triples loaded into
|
|
5
|
+
* each node on first boot. The SHA-256 hash of the genesis content serves as
|
|
6
|
+
* the networkId, ensuring only nodes with identical genesis can peer.
|
|
7
|
+
*/
|
|
8
|
+
const GENESIS_TRIG = `\
|
|
9
|
+
@prefix dkg: <https://dkg.network/ontology#> .
|
|
10
|
+
@prefix erc8004: <https://eips.ethereum.org/erc-8004#> .
|
|
11
|
+
@prefix prov: <http://www.w3.org/ns/prov#> .
|
|
12
|
+
@prefix schema: <https://schema.org/> .
|
|
13
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
14
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
15
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
16
|
+
|
|
17
|
+
<did:dkg:network:v9-testnet>
|
|
18
|
+
a dkg:Network ;
|
|
19
|
+
schema:name "DKG V9 Testnet" ;
|
|
20
|
+
dkg:genesisVersion "1"^^xsd:integer ;
|
|
21
|
+
dkg:createdAt "2026-02-24T00:00:00Z"^^xsd:dateTime ;
|
|
22
|
+
dkg:systemParanets <did:dkg:paranet:agents> ;
|
|
23
|
+
dkg:systemParanets <did:dkg:paranet:ontology> .
|
|
24
|
+
`;
|
|
25
|
+
const GENESIS_AGENTS_GRAPH = 'did:dkg:paranet:agents';
|
|
26
|
+
const GENESIS_ONTOLOGY_GRAPH = 'did:dkg:paranet:ontology';
|
|
27
|
+
const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
|
|
28
|
+
const RDFS = 'http://www.w3.org/2000/01/rdf-schema#';
|
|
29
|
+
const XSD = 'http://www.w3.org/2001/XMLSchema#';
|
|
30
|
+
const SCHEMA = 'https://schema.org/';
|
|
31
|
+
const DKG = 'https://dkg.network/ontology#';
|
|
32
|
+
const ERC8004 = 'https://eips.ethereum.org/erc-8004#';
|
|
33
|
+
const PROV = 'http://www.w3.org/ns/prov#';
|
|
34
|
+
function q(graph, s, p, o) {
|
|
35
|
+
return { subject: s, predicate: p, object: o, graph };
|
|
36
|
+
}
|
|
37
|
+
function buildGenesisQuads() {
|
|
38
|
+
const quads = [];
|
|
39
|
+
const DEFAULT = '';
|
|
40
|
+
const AG = GENESIS_AGENTS_GRAPH;
|
|
41
|
+
const OG = GENESIS_ONTOLOGY_GRAPH;
|
|
42
|
+
// --- Default graph: network definition ---
|
|
43
|
+
quads.push(q(DEFAULT, 'did:dkg:network:v9-testnet', `${RDF}type`, `${DKG}Network`));
|
|
44
|
+
quads.push(q(DEFAULT, 'did:dkg:network:v9-testnet', `${SCHEMA}name`, '"DKG V9 Testnet"'));
|
|
45
|
+
quads.push(q(DEFAULT, 'did:dkg:network:v9-testnet', `${DKG}genesisVersion`, '"1"'));
|
|
46
|
+
quads.push(q(DEFAULT, 'did:dkg:network:v9-testnet', `${DKG}createdAt`, '"2026-02-24T00:00:00Z"'));
|
|
47
|
+
quads.push(q(DEFAULT, 'did:dkg:network:v9-testnet', `${DKG}systemParanets`, `did:dkg:paranet:agents`));
|
|
48
|
+
quads.push(q(DEFAULT, 'did:dkg:network:v9-testnet', `${DKG}systemParanets`, `did:dkg:paranet:ontology`));
|
|
49
|
+
// --- Agents paranet definition ---
|
|
50
|
+
quads.push(q(AG, 'did:dkg:paranet:agents', `${RDF}type`, `${DKG}Paranet`));
|
|
51
|
+
quads.push(q(AG, 'did:dkg:paranet:agents', `${RDF}type`, `${DKG}SystemParanet`));
|
|
52
|
+
quads.push(q(AG, 'did:dkg:paranet:agents', `${SCHEMA}name`, '"Agent Registry"'));
|
|
53
|
+
quads.push(q(AG, 'did:dkg:paranet:agents', `${SCHEMA}description`, '"System paranet for agent discovery and profiles"'));
|
|
54
|
+
quads.push(q(AG, 'did:dkg:paranet:agents', `${DKG}gossipTopic`, '"dkg/paranet/agents/publish"'));
|
|
55
|
+
quads.push(q(AG, 'did:dkg:paranet:agents', `${DKG}replicationPolicy`, '"full"'));
|
|
56
|
+
// --- Ontology paranet definition ---
|
|
57
|
+
quads.push(q(OG, 'did:dkg:paranet:ontology', `${RDF}type`, `${DKG}Paranet`));
|
|
58
|
+
quads.push(q(OG, 'did:dkg:paranet:ontology', `${RDF}type`, `${DKG}SystemParanet`));
|
|
59
|
+
quads.push(q(OG, 'did:dkg:paranet:ontology', `${SCHEMA}name`, '"Ontology Registry"'));
|
|
60
|
+
quads.push(q(OG, 'did:dkg:paranet:ontology', `${SCHEMA}description`, '"System paranet for shared ontology and paranet definitions"'));
|
|
61
|
+
quads.push(q(OG, 'did:dkg:paranet:ontology', `${DKG}gossipTopic`, '"dkg/paranet/ontology/publish"'));
|
|
62
|
+
quads.push(q(OG, 'did:dkg:paranet:ontology', `${DKG}replicationPolicy`, '"full"'));
|
|
63
|
+
// --- Ontology class definitions ---
|
|
64
|
+
quads.push(q(OG, `${DKG}Network`, `${RDF}type`, `${RDFS}Class`));
|
|
65
|
+
quads.push(q(OG, `${DKG}Paranet`, `${RDF}type`, `${RDFS}Class`));
|
|
66
|
+
quads.push(q(OG, `${DKG}SystemParanet`, `${RDF}type`, `${RDFS}Class`));
|
|
67
|
+
quads.push(q(OG, `${DKG}SystemParanet`, `${RDFS}subClassOf`, `${DKG}Paranet`));
|
|
68
|
+
quads.push(q(OG, `${DKG}Agent`, `${RDF}type`, `${RDFS}Class`));
|
|
69
|
+
quads.push(q(OG, `${DKG}Agent`, `${RDFS}subClassOf`, `${ERC8004}Agent`));
|
|
70
|
+
quads.push(q(OG, `${DKG}Agent`, `${RDFS}subClassOf`, `${PROV}Agent`));
|
|
71
|
+
quads.push(q(OG, `${DKG}CoreNode`, `${RDF}type`, `${RDFS}Class`));
|
|
72
|
+
quads.push(q(OG, `${DKG}CoreNode`, `${RDFS}subClassOf`, `${DKG}Agent`));
|
|
73
|
+
quads.push(q(OG, `${DKG}EdgeNode`, `${RDF}type`, `${RDFS}Class`));
|
|
74
|
+
quads.push(q(OG, `${DKG}EdgeNode`, `${RDFS}subClassOf`, `${DKG}Agent`));
|
|
75
|
+
quads.push(q(OG, `${DKG}KnowledgeAsset`, `${RDF}type`, `${RDFS}Class`));
|
|
76
|
+
quads.push(q(OG, `${DKG}KnowledgeAsset`, `${RDFS}subClassOf`, `${PROV}Entity`));
|
|
77
|
+
quads.push(q(OG, `${DKG}KnowledgeCollection`, `${RDF}type`, `${RDFS}Class`));
|
|
78
|
+
// Properties
|
|
79
|
+
quads.push(q(OG, `${DKG}peerId`, `${RDF}type`, `${RDF}Property`));
|
|
80
|
+
quads.push(q(OG, `${DKG}publicKey`, `${RDF}type`, `${RDF}Property`));
|
|
81
|
+
quads.push(q(OG, `${DKG}nodeRole`, `${RDF}type`, `${RDF}Property`));
|
|
82
|
+
quads.push(q(OG, `${DKG}paranet`, `${RDF}type`, `${RDF}Property`));
|
|
83
|
+
quads.push(q(OG, `${DKG}gossipTopic`, `${RDF}type`, `${RDF}Property`));
|
|
84
|
+
quads.push(q(OG, `${DKG}relayAddress`, `${RDF}type`, `${RDF}Property`));
|
|
85
|
+
quads.push(q(OG, `${DKG}genesisVersion`, `${RDF}type`, `${RDF}Property`));
|
|
86
|
+
quads.push(q(OG, `${DKG}networkId`, `${RDF}type`, `${RDF}Property`));
|
|
87
|
+
return quads;
|
|
88
|
+
}
|
|
89
|
+
let _cachedQuads = null;
|
|
90
|
+
let _cachedNetworkId = null;
|
|
91
|
+
export function getGenesisQuads() {
|
|
92
|
+
if (!_cachedQuads) {
|
|
93
|
+
_cachedQuads = buildGenesisQuads();
|
|
94
|
+
}
|
|
95
|
+
return _cachedQuads;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Canonical representation of genesis for hashing.
|
|
99
|
+
* Sorted N-Quads lines to ensure deterministic output.
|
|
100
|
+
*/
|
|
101
|
+
function canonicalGenesisString() {
|
|
102
|
+
const quads = getGenesisQuads();
|
|
103
|
+
const lines = quads.map(q => {
|
|
104
|
+
const s = q.subject.startsWith('"') ? q.subject : `<${q.subject}>`;
|
|
105
|
+
const p = `<${q.predicate}>`;
|
|
106
|
+
const o = q.object.startsWith('"') ? q.object : `<${q.object}>`;
|
|
107
|
+
const g = q.graph ? `<${q.graph}>` : '';
|
|
108
|
+
return g ? `${s} ${p} ${o} ${g} .` : `${s} ${p} ${o} .`;
|
|
109
|
+
});
|
|
110
|
+
return lines.sort().join('\n');
|
|
111
|
+
}
|
|
112
|
+
export async function computeNetworkId() {
|
|
113
|
+
if (_cachedNetworkId)
|
|
114
|
+
return _cachedNetworkId;
|
|
115
|
+
const data = new TextEncoder().encode(canonicalGenesisString());
|
|
116
|
+
const hashBuffer = await globalThis.crypto.subtle.digest('SHA-256', data);
|
|
117
|
+
const hashArray = new Uint8Array(hashBuffer);
|
|
118
|
+
const hex = Array.from(hashArray).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
119
|
+
_cachedNetworkId = hex;
|
|
120
|
+
return hex;
|
|
121
|
+
}
|
|
122
|
+
export function getGenesisRaw() {
|
|
123
|
+
return GENESIS_TRIG;
|
|
124
|
+
}
|
|
125
|
+
export const SYSTEM_PARANETS = {
|
|
126
|
+
AGENTS: 'agents',
|
|
127
|
+
ONTOLOGY: 'ontology',
|
|
128
|
+
};
|
|
129
|
+
export const DKG_ONTOLOGY = {
|
|
130
|
+
RDF_TYPE: `${RDF}type`,
|
|
131
|
+
SCHEMA_NAME: `${SCHEMA}name`,
|
|
132
|
+
SCHEMA_DESCRIPTION: `${SCHEMA}description`,
|
|
133
|
+
DKG_AGENT: `${DKG}Agent`,
|
|
134
|
+
DKG_CORE_NODE: `${DKG}CoreNode`,
|
|
135
|
+
DKG_EDGE_NODE: `${DKG}EdgeNode`,
|
|
136
|
+
DKG_PEER_ID: `${DKG}peerId`,
|
|
137
|
+
DKG_PUBLIC_KEY: `${DKG}publicKey`,
|
|
138
|
+
DKG_NODE_ROLE: `${DKG}nodeRole`,
|
|
139
|
+
DKG_RELAY_ADDRESS: `${DKG}relayAddress`,
|
|
140
|
+
DKG_PARANET: `${DKG}Paranet`,
|
|
141
|
+
DKG_SYSTEM_PARANET: `${DKG}SystemParanet`,
|
|
142
|
+
DKG_NETWORK: `${DKG}Network`,
|
|
143
|
+
DKG_NETWORK_ID: `${DKG}networkId`,
|
|
144
|
+
DKG_GENESIS_VERSION: `${DKG}genesisVersion`,
|
|
145
|
+
DKG_CREATOR: `${DKG}creator`,
|
|
146
|
+
DKG_CREATED_AT: `${DKG}createdAt`,
|
|
147
|
+
DKG_GOSSIP_TOPIC: `${DKG}gossipTopic`,
|
|
148
|
+
DKG_REPLICATION_POLICY: `${DKG}replicationPolicy`,
|
|
149
|
+
ERC8004_CAPABILITY: `${ERC8004}Capability`,
|
|
150
|
+
ERC8004_CAPABILITIES: `${ERC8004}capabilities`,
|
|
151
|
+
PROV_GENERATED_BY: `${PROV}wasGeneratedBy`,
|
|
152
|
+
PROV_ACTIVITY: `${PROV}Activity`,
|
|
153
|
+
PROV_ASSOCIATED_WITH: `${PROV}wasAssociatedWith`,
|
|
154
|
+
PROV_AT_TIME: `${PROV}atTime`,
|
|
155
|
+
PROV_ENDED_AT_TIME: `${PROV}endedAtTime`,
|
|
156
|
+
SKILL_OFFERS: 'https://dkg.origintrail.io/skill#offersSkill',
|
|
157
|
+
SKILL_FRAMEWORK: 'https://dkg.origintrail.io/skill#framework',
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=genesis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genesis.js","sourceRoot":"","sources":["../src/genesis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DKGNode } from './node.js';
|
|
2
|
+
import type { EventBus } from './types.js';
|
|
3
|
+
export type GossipMessageHandler = (topic: string, data: Uint8Array, from: string) => void;
|
|
4
|
+
export declare class GossipSubManager {
|
|
5
|
+
private readonly node;
|
|
6
|
+
private readonly eventBus;
|
|
7
|
+
private topicHandlers;
|
|
8
|
+
constructor(node: DKGNode, eventBus: EventBus);
|
|
9
|
+
private setupListener;
|
|
10
|
+
subscribe(topic: string): void;
|
|
11
|
+
unsubscribe(topic: string): void;
|
|
12
|
+
publish(topic: string, data: Uint8Array): Promise<void>;
|
|
13
|
+
onMessage(topic: string, handler: GossipMessageHandler): void;
|
|
14
|
+
offMessage(topic: string, handler: GossipMessageHandler): void;
|
|
15
|
+
get subscribedTopics(): string[];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=gossipsub-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gossipsub-manager.d.ts","sourceRoot":"","sources":["../src/gossipsub-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,KACT,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,aAAa,CAAgD;gBAEzD,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAM7C,OAAO,CAAC,aAAa;IAwBrB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAS7D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAO9D,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAE/B;CACF"}
|