@trust402/sdk 0.1.10 → 0.2.1

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.
@@ -1,53 +1,47 @@
1
1
  /**
2
2
  * Trust402 SDK — proof orchestration for publishing content listings.
3
3
  *
4
- * One call (`publish`) generates a per-schema proof and returns
5
- * a full listing with a listingRoot identifier.
4
+ * `publish()` is circuit-agnostic: the caller provides `circuitId`,
5
+ * `witness`, and `commitment`, and publish() handles proof generation,
6
+ * document registration, proof submission, and listingRoot computation.
7
+ *
8
+ * Witness builders for known circuits (blog-article-v1.2,
9
+ * content-commitment-v1.2) are exported as convenience utilities.
6
10
  */
7
11
  import type { LemmaClient } from "@lemmaoracle/spec";
8
- /** Payload for blog-article content type. */
9
- export type BlogArticlePayload = Readonly<{
10
- author: string;
11
- body: string;
12
- published: number;
13
- words: number;
14
- lang: string;
15
- }>;
16
- /** Supported content input variants. */
17
- export type ContentInput = Readonly<{
18
- type: "file";
19
- name: string;
20
- bytes: Uint8Array;
21
- mimeType: string;
22
- }> | Readonly<{
23
- type: "blog-article";
24
- payload: BlogArticlePayload;
25
- }> | Readonly<{
26
- type: "generic";
27
- mimeType: string;
28
- payload: Uint8Array;
29
- }>;
30
12
  /** Price in USDC smallest unit (6 decimals). */
31
13
  export type PriceInput = Readonly<{
32
14
  amount: number;
33
15
  currency: "USDC";
34
16
  }>;
35
- /** Publish input — everything the seller provides. */
17
+ /**
18
+ * Publish input — circuit-agnostic.
19
+ *
20
+ * The caller is responsible for building the witness according to
21
+ * the circuit's expected inputs. Witness builders for known circuits
22
+ * are exported as convenience utilities (see below).
23
+ */
36
24
  export type Trust402PublishInput = Readonly<{
37
- content: ContentInput;
25
+ /** Circuit ID registered with the Lemma API. */
26
+ circuitId: string;
27
+ /** Witness fields passed to prover.prove(). */
28
+ witness: Readonly<Record<string, string>>;
29
+ /** Commitment — the public output that ties the witness to content. */
30
+ commitment: string;
31
+ /** Price in USDC smallest unit (6 decimals). */
38
32
  price: PriceInput;
33
+ /** Seller DID. */
39
34
  did: string;
35
+ /** Optional content CID (e.g. "sha256:..."). */
36
+ cid?: string;
37
+ /** Optional metadata. */
40
38
  metadata?: Readonly<{
41
39
  title?: string;
42
40
  version?: string;
43
41
  description?: string;
44
42
  }>;
45
- /**
46
- * Pre-computed commitment (0x-hex). When set, per-schema proof generation
47
- * is skipped. Use when the caller has already computed a commitment via an
48
- * unsupported content type or external circuit.
49
- */
50
- commitment?: string;
43
+ /** Listing environment — determines billing network (sandbox → base-sepolia, production → base). */
44
+ environment?: "sandbox" | "production";
51
45
  }>;
52
46
  /** Full listing returned after successful publish. */
53
47
  export type Trust402Listing = Readonly<{
@@ -67,14 +61,50 @@ export type Trust402Listing = Readonly<{
67
61
  version?: string;
68
62
  description?: string;
69
63
  }>;
64
+ /** Listing environment the proof was billed under. */
65
+ environment?: "sandbox" | "production";
70
66
  createdAt: number;
71
67
  }>;
68
+ /** Payload for blog-article content type. */
69
+ export type BlogArticlePayload = Readonly<{
70
+ author: string;
71
+ body: string;
72
+ published: number;
73
+ words: number;
74
+ lang: string;
75
+ }>;
76
+ /** Result of a witness builder — the witness record plus the commitment. */
77
+ export type WitnessResult = Readonly<{
78
+ witness: Readonly<Record<string, string>>;
79
+ commitment: string;
80
+ }>;
81
+ /**
82
+ * Build witness for blog-article-v1.2 circuit.
83
+ *
84
+ * Witness fields:
85
+ * authorHash, published, integrityHash, words, langCode, commitment
86
+ * where commitment = poseidon5([authorHash, published, integrityHash, words, langCode])
87
+ */
88
+ export declare const buildBlogArticleWitness: (payload: BlogArticlePayload) => WitnessResult;
89
+ /**
90
+ * Build witness for content-commitment-v1.2 circuit.
91
+ *
92
+ * Uses the canonical normalizer: bytes → fieldElements → poseidon2
93
+ * reduction → poseidon1.
94
+ */
95
+ export declare const buildContentCommitmentWitness: (bytes: Uint8Array) => WitnessResult;
96
+ /** Compute a sha256-based CID from raw bytes. */
97
+ export declare const computeCid: (bytes: Uint8Array) => string;
72
98
  /**
73
99
  * Publish a Trust402 listing.
74
100
  *
75
- * Generates a per-schema proof for the content, registers it with
76
- * Lemma, and returns a full listing with a deterministic listingRoot
77
- * identifier (Poseidon5 of schemaId, commitment, price, did, salt).
101
+ * Generates a per-schema proof via prover.prove(), registers the
102
+ * document, submits the proof, and returns a full listing with a
103
+ * deterministic listingRoot identifier (Poseidon5 of schemaId,
104
+ * commitment, price, did, salt).
105
+ *
106
+ * Circuit-agnostic: the caller chooses the circuitId and builds the
107
+ * witness. Use the exported witness builders for known circuits.
78
108
  */
79
109
  export declare const publish: (client: LemmaClient, input: Trust402PublishInput) => Promise<Trust402Listing>;
80
110
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"trust402.d.ts","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgFrD,6CAA6C;AAC7C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,wCAAwC;AACxC,MAAM,MAAM,YAAY,GACpB,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7E,QAAQ,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAC/D,QAAQ,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAEzE,gDAAgD;AAChD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExE,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChF,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAsIH;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAClB,QAAQ,WAAW,EACnB,OAAO,oBAAoB,KAC1B,OAAO,CAAC,eAAe,CAkGzB,CAAC;AAoBF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,KAAG,MA0BH,CAAC"}
1
+ {"version":3,"file":"trust402.d.ts","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"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"}
package/dist/trust402.js CHANGED
@@ -3,8 +3,7 @@ import { poseidon1, poseidon2, poseidon5 } from "poseidon-lite";
3
3
  import { sha256 } from "@noble/hashes/sha256";
4
4
  import { randomBytes } from "@noble/hashes/utils";
5
5
  /* ------------------------------------------------------------------ */
6
- /* Inlined normalizer helpers (from @lemmaoracle/content) */
7
- /* Inlined to avoid cross-package rootDir issues and circular deps. */
6
+ /* Normalizer helpers (for content-commitment witness builder) */
8
7
  /* ------------------------------------------------------------------ */
9
8
  /** Chunk size in bytes: 31 bytes = 248 bits < 254-bit field prime. */
10
9
  const CHUNK_SIZE = 31;
@@ -49,116 +48,86 @@ const reduceElements = (elements, poseidon2Fn) => {
49
48
  return acc;
50
49
  };
51
50
  /* ------------------------------------------------------------------ */
52
- /* Inlined crypto helpers (from @lemmaoracle/sdk platform) */
51
+ /* Hex / hash helpers */
53
52
  /* ------------------------------------------------------------------ */
54
53
  const bytesToHex = (bytes) => Array.from(bytes)
55
54
  .map((b) => b.toString(16).padStart(2, "0"))
56
55
  .join("");
57
56
  const sha256Hex = (data) => bytesToHex(sha256(data));
58
57
  const randomHex = (length = 32) => bytesToHex(randomBytes(length));
59
- const CONTENT_REGISTRY = {
60
- "blog-article": { circuitId: "blog-article-v1.2", needsCID: false },
61
- default: { circuitId: "content-commitment-v1.2", needsCID: true },
62
- };
63
- /* ------------------------------------------------------------------ */
64
- /* Language code map (ISO 639-1 → numeric code) */
65
- /* ------------------------------------------------------------------ */
58
+ const bigintToHex = (n) => `0x${n.toString(16)}`;
59
+ /** ISO 639-1 numeric code map. */
66
60
  const LANG_MAP = Object.freeze({
67
- en: 1n,
68
- ja: 2n,
69
- zh: 3n,
70
- ko: 4n,
71
- es: 5n,
72
- fr: 6n,
73
- de: 7n,
74
- pt: 8n,
75
- ru: 9n,
76
- ar: 10n,
77
- hi: 11n,
78
- it: 12n,
79
- nl: 13n,
80
- tr: 14n,
81
- vi: 15n,
82
- th: 16n,
83
- id: 17n,
84
- pl: 18n,
85
- uk: 19n,
86
- sv: 20n,
61
+ en: 1n, ja: 2n, zh: 3n, ko: 4n, es: 5n, fr: 6n,
62
+ de: 7n, pt: 8n, ru: 9n, ar: 10n, hi: 11n, it: 12n,
63
+ nl: 13n, tr: 14n, vi: 15n, th: 16n, id: 17n, pl: 18n,
64
+ uk: 19n, sv: 20n,
87
65
  });
88
66
  const langToCode = (lang) => LANG_MAP[lang.toLowerCase()] ?? 0n;
89
- /* ------------------------------------------------------------------ */
90
- /* Step 0: selectCircuit */
91
- /* ------------------------------------------------------------------ */
92
- /** Select the per-schema circuit and CID requirement for a content input. */
93
- const selectCircuit = (content) => content.type === "blog-article"
94
- ? CONTENT_REGISTRY["blog-article"]
95
- : CONTENT_REGISTRY.default;
96
- /* ------------------------------------------------------------------ */
97
- /* Witness Builders (internal, not exported) */
98
- /* ------------------------------------------------------------------ */
99
67
  /**
100
- * Build witness for blog-article-v1 circuit.
68
+ * Build witness for blog-article-v1.2 circuit.
101
69
  *
102
70
  * Witness fields:
103
71
  * authorHash, published, integrityHash, words, langCode, commitment
104
72
  * where commitment = poseidon5([authorHash, published, integrityHash, words, langCode])
105
73
  */
106
- const buildBlogArticleWitness = (payload) => {
74
+ export const buildBlogArticleWitness = (payload) => {
107
75
  const authorHash = toScalar(payload.author);
108
76
  const published = BigInt(payload.published);
109
77
  const integrityHash = toScalar(payload.body);
110
78
  const words = BigInt(payload.words);
111
79
  const langCode = langToCode(payload.lang);
112
80
  const commitment = poseidon5([authorHash, published, integrityHash, words, langCode]);
81
+ const commitmentHex = bigintToHex(commitment);
113
82
  return Object.freeze({
114
- authorHash: `0x${authorHash.toString(16)}`,
115
- published: published.toString(),
116
- integrityHash: `0x${integrityHash.toString(16)}`,
117
- words: words.toString(),
118
- langCode: langCode.toString(),
119
- commitment: `0x${commitment.toString(16)}`,
83
+ witness: Object.freeze({
84
+ authorHash: bigintToHex(authorHash),
85
+ published: published.toString(),
86
+ integrityHash: bigintToHex(integrityHash),
87
+ words: words.toString(),
88
+ langCode: langCode.toString(),
89
+ commitment: commitmentHex,
90
+ }),
91
+ commitment: commitmentHex,
120
92
  });
121
93
  };
122
94
  /**
123
- * Build witness for content-commitment-v1 circuit.
95
+ * Build witness for content-commitment-v1.2 circuit.
124
96
  *
125
- * Uses the canonical normalizer: bytes → fieldElements → poseidon2 reduction → poseidon1.
97
+ * Uses the canonical normalizer: bytes → fieldElements → poseidon2
98
+ * reduction → poseidon1.
126
99
  */
127
- const buildContentCommitmentWitness = (bytes) => {
100
+ export const buildContentCommitmentWitness = (bytes) => {
128
101
  const elements = bytesToFieldElements(bytes);
129
102
  const fileHash = reduceElements(elements, (inputs) => poseidon2(inputs));
130
103
  const commitment = poseidon1([fileHash]);
104
+ const commitmentHex = bigintToHex(commitment);
131
105
  return Object.freeze({
132
- fileHash: `0x${fileHash.toString(16)}`,
133
- commitment: `0x${commitment.toString(16)}`,
106
+ witness: Object.freeze({
107
+ fileHash: bigintToHex(fileHash),
108
+ commitment: commitmentHex,
109
+ }),
110
+ commitment: commitmentHex,
134
111
  });
135
112
  };
136
- /** Build the per-schema witness based on content type. */
137
- const buildPerSchemaWitness = (content) => content.type === "blog-article"
138
- ? {
139
- circuitId: "blog-article-v1.2",
140
- witness: buildBlogArticleWitness(content.payload),
141
- }
142
- : (() => {
143
- const bytes = content.type === "file" ? content.bytes : content.payload;
144
- return {
145
- circuitId: "content-commitment-v1.2",
146
- witness: buildContentCommitmentWitness(bytes),
147
- };
148
- })();
149
113
  /* ------------------------------------------------------------------ */
150
- /* Hex helpers */
114
+ /* CID helper */
151
115
  /* ------------------------------------------------------------------ */
152
- const bigintToHex = (n) => `0x${n.toString(16)}`;
116
+ /** Compute a sha256-based CID from raw bytes. */
117
+ export const computeCid = (bytes) => `sha256:${sha256Hex(bytes)}`;
153
118
  /* ------------------------------------------------------------------ */
154
119
  /* Main publish function */
155
120
  /* ------------------------------------------------------------------ */
156
121
  /**
157
122
  * Publish a Trust402 listing.
158
123
  *
159
- * Generates a per-schema proof for the content, registers it with
160
- * Lemma, and returns a full listing with a deterministic listingRoot
161
- * identifier (Poseidon5 of schemaId, commitment, price, did, salt).
124
+ * Generates a per-schema proof via prover.prove(), registers the
125
+ * document, submits the proof, and returns a full listing with a
126
+ * deterministic listingRoot identifier (Poseidon5 of schemaId,
127
+ * commitment, price, did, salt).
128
+ *
129
+ * Circuit-agnostic: the caller chooses the circuitId and builds the
130
+ * witness. Use the exported witness builders for known circuits.
162
131
  */
163
132
  export const publish = async (client, input) => {
164
133
  const [{ prover }, { proofs, documents }] = await Promise.all([
@@ -168,89 +137,68 @@ export const publish = async (client, input) => {
168
137
  const { prove } = prover;
169
138
  const { submit } = proofs;
170
139
  const { register: registerDocument } = documents;
171
- // ── Resolve commitment ──
172
- const externalCommitment = input.commitment !== undefined;
173
- const mapping = externalCommitment
174
- ? { circuitId: "external", needsCID: input.content.type !== "blog-article" }
175
- : selectCircuit(input.content);
176
- let commitment;
177
- let perSchemaProof;
178
- // Compute CID once — needed for documents.register.
179
- const cid = mapping.needsCID
180
- ? (() => {
181
- const bytes = input.content.type === "file"
182
- ? input.content.bytes
183
- : input.content.type === "generic"
184
- ? input.content.payload
185
- : undefined;
186
- return bytes !== undefined ? `sha256:${sha256Hex(bytes)}` : undefined;
187
- })()
188
- : undefined;
189
- if (externalCommitment) {
190
- commitment = input.commitment;
191
- perSchemaProof = null;
192
- }
193
- else {
194
- const { circuitId, witness: perSchemaWitness } = buildPerSchemaWitness(input.content);
195
- const proof = await prove(client, {
196
- circuitId,
197
- witness: perSchemaWitness,
198
- });
199
- commitment = perSchemaWitness.commitment;
200
- // Register the document before submitting the proof.
201
- await registerDocument(client, {
202
- docHash: commitment,
203
- schema: circuitId,
204
- cid: cid ?? "",
205
- issuerId: input.did,
206
- subjectId: input.did,
207
- commitments: {
208
- scheme: "poseidon",
209
- root: commitment,
210
- leaves: [commitment],
211
- randomness: "0x0",
212
- },
213
- revocation: { root: "" },
214
- });
215
- // Register per-schema proof
216
- await submit(client, {
217
- docHash: commitment,
218
- circuitId,
219
- proof: proof.proof,
220
- inputs: [commitment],
221
- });
222
- perSchemaProof = {
223
- circuitId,
224
- proof: proof.proof,
225
- inputs: [commitment],
226
- };
227
- }
228
- // ── Listing root (deterministic identifier, no ZK proof) ──
229
- // Previously wrapped in a listing-binding ZK proof which was removed
230
- // as redundant (crossCheckPassed already binds listing to proof).
231
- // The listingRoot formula is preserved for backward compat.
232
- const schemaId = toScalar(mapping.circuitId);
140
+ // ── 1. Generate per-schema proof ──
141
+ const proof = await prove(client, {
142
+ circuitId: input.circuitId,
143
+ witness: input.witness,
144
+ });
145
+ // ── 2. Register document ──
146
+ await registerDocument(client, {
147
+ docHash: input.commitment,
148
+ schema: input.circuitId,
149
+ cid: input.cid ?? "",
150
+ issuerId: input.did,
151
+ subjectId: input.did,
152
+ commitments: {
153
+ scheme: "poseidon",
154
+ root: input.commitment,
155
+ leaves: [input.commitment],
156
+ randomness: "0x0",
157
+ },
158
+ revocation: { root: "" },
159
+ });
160
+ // ── 3. Submit proof ──
161
+ await submit(client, {
162
+ docHash: input.commitment,
163
+ circuitId: input.circuitId,
164
+ proof: proof.proof,
165
+ inputs: [input.commitment],
166
+ environment: input.environment,
167
+ });
168
+ // ── 4. Compute listingRoot (deterministic identifier, no ZK proof) ──
169
+ const schemaIdScalar = toScalar(input.circuitId);
233
170
  const priceUsdc = toScalar(input.price.amount);
234
171
  const didScalar = toScalar(input.did);
235
172
  const salt = toScalar(randomHex(32));
236
- const listingRoot = poseidon5([schemaId, BigInt(commitment), priceUsdc, didScalar, salt]);
173
+ const listingRoot = poseidon5([
174
+ schemaIdScalar,
175
+ BigInt(input.commitment),
176
+ priceUsdc,
177
+ didScalar,
178
+ salt,
179
+ ]);
237
180
  const listingRootHex = bigintToHex(listingRoot);
238
181
  return Object.freeze({
239
182
  listingRoot: listingRootHex,
240
- schemaId: mapping.circuitId,
241
- commitment,
183
+ schemaId: input.circuitId,
184
+ commitment: input.commitment,
242
185
  did: input.did,
243
186
  price: input.price,
244
- cid,
245
- perSchemaProof,
187
+ cid: input.cid,
188
+ perSchemaProof: {
189
+ circuitId: input.circuitId,
190
+ proof: proof.proof,
191
+ inputs: [input.commitment],
192
+ },
246
193
  metadata: input.metadata,
194
+ environment: input.environment,
247
195
  createdAt: Date.now(),
248
196
  });
249
197
  };
250
198
  /* ------------------------------------------------------------------ */
251
- /* Content type detection utility */
199
+ /* Content type detection utility (UI helper) */
252
200
  /* ------------------------------------------------------------------ */
253
- /** MIME type → content type detection (for File-based input). */
201
+ /** MIME type → content type detection (for browser File objects). */
254
202
  const MIME_TO_CONTENT_TYPE = Object.freeze({
255
203
  "image/": "image",
256
204
  "video/": "video",
@@ -1 +1 @@
1
- {"version":3,"file":"trust402.js","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust402.js","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { publish, detectContentType } from "./trust402.js";
2
+ import { publish, detectContentType, buildBlogArticleWitness, buildContentCommitmentWitness, computeCid, } from "./trust402.js";
3
3
  import { create, toScalar } from "@lemmaoracle/sdk";
4
4
  import { poseidon5 } from "poseidon-lite";
5
5
  // ---------------------------------------------------------------------------
@@ -46,16 +46,82 @@ describe("detectContentType", () => {
46
46
  });
47
47
  });
48
48
  // ---------------------------------------------------------------------------
49
- // Witness builders (tested via publish with mocked prover / proofs)
49
+ // Witness builders
50
+ // ---------------------------------------------------------------------------
51
+ describe("buildBlogArticleWitness", () => {
52
+ const payload = Object.freeze({
53
+ author: "did:ethr:0xabc123",
54
+ body: "Zero-knowledge proofs enable privacy-preserving verification.",
55
+ published: 1714069800,
56
+ words: 8,
57
+ lang: "en",
58
+ });
59
+ it("returns witness with commitment field", () => {
60
+ const result = buildBlogArticleWitness(payload);
61
+ expect(result.witness).toHaveProperty("authorHash");
62
+ expect(result.witness).toHaveProperty("published");
63
+ expect(result.witness).toHaveProperty("integrityHash");
64
+ expect(result.witness).toHaveProperty("words");
65
+ expect(result.witness).toHaveProperty("langCode");
66
+ expect(result.witness).toHaveProperty("commitment");
67
+ expect(result.commitment).toBe(result.witness.commitment);
68
+ });
69
+ it("computes commitment as Poseidon5 of witness fields", () => {
70
+ const result = buildBlogArticleWitness(payload);
71
+ const authorHash = toScalar(payload.author);
72
+ const published = BigInt(payload.published);
73
+ const integrityHash = toScalar(payload.body);
74
+ const words = BigInt(payload.words);
75
+ const langCode = 1n; // "en"
76
+ const expected = `0x${poseidon5([authorHash, published, integrityHash, words, langCode]).toString(16)}`;
77
+ expect(result.commitment).toBe(expected);
78
+ });
79
+ it("is deterministic for same input", () => {
80
+ expect(buildBlogArticleWitness(payload).commitment).toBe(buildBlogArticleWitness(payload).commitment);
81
+ });
82
+ it("produces different commitments for different payloads", () => {
83
+ const different = buildBlogArticleWitness({ ...payload, body: "Different." });
84
+ expect(different.commitment).not.toBe(buildBlogArticleWitness(payload).commitment);
85
+ });
86
+ it("maps unknown language to 0", () => {
87
+ const result = buildBlogArticleWitness({ ...payload, lang: "xx" });
88
+ expect(result.witness.langCode).toBe("0");
89
+ });
90
+ });
91
+ describe("buildContentCommitmentWitness", () => {
92
+ const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]); // "Hello"
93
+ it("returns witness with fileHash and commitment", () => {
94
+ const result = buildContentCommitmentWitness(bytes);
95
+ expect(result.witness).toHaveProperty("fileHash");
96
+ expect(result.witness).toHaveProperty("commitment");
97
+ expect(result.commitment).toBe(result.witness.commitment);
98
+ });
99
+ it("is deterministic for same input", () => {
100
+ expect(buildContentCommitmentWitness(bytes).commitment).toBe(buildContentCommitmentWitness(bytes).commitment);
101
+ });
102
+ it("produces different commitments for different content", () => {
103
+ const different = new Uint8Array([0x57, 0x6f, 0x72, 0x6c, 0x64]); // "World"
104
+ expect(buildContentCommitmentWitness(bytes).commitment).not.toBe(buildContentCommitmentWitness(different).commitment);
105
+ });
106
+ });
107
+ describe("computeCid", () => {
108
+ it("returns sha256-prefixed hex CID", () => {
109
+ const cid = computeCid(new Uint8Array([1, 2, 3]));
110
+ expect(cid).toMatch(/^sha256:[0-9a-f]{64}$/);
111
+ });
112
+ it("is deterministic", () => {
113
+ expect(computeCid(new Uint8Array([1]))).toBe(computeCid(new Uint8Array([1])));
114
+ });
115
+ });
116
+ // ---------------------------------------------------------------------------
117
+ // publish
50
118
  // ---------------------------------------------------------------------------
51
119
  describe("trust402.publish", () => {
52
120
  beforeEach(() => {
53
121
  vi.clearAllMocks();
54
122
  });
55
- // ── Helpers ──────────────────────────────────────────────────────────
56
- /** Build a mock fetch that returns circuit metadata with no artifacts
57
- * (triggering fallback SHA-256 proving path). */
58
- const setupNoArtifactMocks = () => {
123
+ /** Mock client that returns circuit metadata with no artifacts. */
124
+ const setupMocks = () => {
59
125
  const mockFetch = vi.fn().mockImplementation((url) => {
60
126
  if (url.includes("/v1/circuits/")) {
61
127
  return Promise.resolve({
@@ -90,313 +156,151 @@ describe("trust402.publish", () => {
90
156
  c.fetcher = mockFetch;
91
157
  return c;
92
158
  };
93
- // ── Blog Article tests ──────────────────────────────────────────────
94
- describe("blog-article content", () => {
95
- const blogPayload = Object.freeze({
159
+ // ── Blog article via witness builder ───────────────────────────────
160
+ describe("blog-article circuit", () => {
161
+ const payload = Object.freeze({
96
162
  author: "did:ethr:0xabc123",
97
163
  body: "Zero-knowledge proofs enable privacy-preserving verification on decentralized networks.",
98
164
  published: 1714069800,
99
165
  words: 13,
100
166
  lang: "en",
101
167
  });
102
- const blogInput = Object.freeze({
103
- content: Object.freeze({
104
- type: "blog-article",
105
- payload: blogPayload,
106
- }),
107
- price: Object.freeze({ amount: 42000000, currency: "USDC" }),
108
- did: "did:ethr:0xabc123",
109
- metadata: Object.freeze({ title: "My Blog Post", version: "1.0.0" }),
110
- });
168
+ const makeInput = () => {
169
+ const { witness, commitment } = buildBlogArticleWitness(payload);
170
+ return Object.freeze({
171
+ circuitId: "blog-article-v1.2",
172
+ witness,
173
+ commitment,
174
+ price: Object.freeze({ amount: 42000000, currency: "USDC" }),
175
+ did: "did:ethr:0xabc123",
176
+ metadata: Object.freeze({ title: "My Blog Post", version: "1.0.0" }),
177
+ });
178
+ };
111
179
  it("publishes a blog-article listing successfully", async () => {
112
- const client = setupNoArtifactMocks();
113
- const listing = await publish(client, blogInput);
114
- // Shape
180
+ const client = setupMocks();
181
+ const listing = await publish(client, makeInput());
115
182
  expect(listing).toHaveProperty("listingRoot");
116
183
  expect(listing).toHaveProperty("commitment");
117
184
  expect(listing).toHaveProperty("perSchemaProof");
118
- expect(listing).toHaveProperty("did");
119
- expect(listing.did).toBe(blogInput.did);
120
185
  expect(listing.schemaId).toBe("blog-article-v1.2");
121
- expect(listing.price).toEqual(blogInput.price);
122
- expect(listing.cid).toBeUndefined(); // blog-article doesn't need CID
123
- // perSchemaProof
186
+ expect(listing.did).toBe("did:ethr:0xabc123");
124
187
  expect(listing.perSchemaProof.circuitId).toBe("blog-article-v1.2");
125
188
  expect(listing.perSchemaProof.inputs.length).toBeGreaterThan(0);
126
- // Metadata preserved
127
- expect(listing.metadata).toEqual(blogInput.metadata);
128
- // createdAt is a recent timestamp
129
- expect(listing.createdAt).toBeGreaterThan(0);
130
- expect(listing.createdAt).toBeLessThanOrEqual(Date.now());
189
+ expect(listing.metadata).toEqual({ title: "My Blog Post", version: "1.0.0" });
190
+ expect(listing.cid).toBeUndefined();
131
191
  });
132
- it("computes a deterministic commitment from blog article payload", async () => {
133
- const client = setupNoArtifactMocks();
134
- const listing1 = await publish(client, blogInput);
135
- const listing2 = await publish(client, blogInput);
136
- // Same input → same commitment
192
+ it("computes deterministic commitment from same witness", async () => {
193
+ const client = setupMocks();
194
+ const listing1 = await publish(client, makeInput());
195
+ const listing2 = await publish(client, makeInput());
137
196
  expect(listing1.commitment).toBe(listing2.commitment);
138
197
  });
139
- it("produces different commitments for different payloads", async () => {
140
- const client = setupNoArtifactMocks();
141
- const listing1 = await publish(client, blogInput);
142
- const differentPayload = Object.freeze({
143
- ...blogPayload,
144
- body: "A completely different article body.",
145
- });
146
- const differentInput = Object.freeze({
147
- ...blogInput,
148
- content: Object.freeze({
149
- type: "blog-article",
150
- payload: differentPayload,
151
- }),
152
- });
153
- const listing2 = await publish(client, differentInput);
154
- expect(listing1.commitment).not.toBe(listing2.commitment);
155
- });
156
- it("verifies the commitment matches Poseidon5 of witness fields", async () => {
157
- const client = setupNoArtifactMocks();
158
- const listing = await publish(client, blogInput);
159
- // Recompute commitment from payload
160
- const authorHash = toScalar(blogPayload.author);
161
- const published = BigInt(blogPayload.published);
162
- const integrityHash = toScalar(blogPayload.body);
163
- const words = BigInt(blogPayload.words);
164
- const langMap = { en: 1n };
165
- const langCode = langMap[blogPayload.lang] ?? 0n;
166
- const expectedCommitment = `0x${poseidon5([authorHash, published, integrityHash, words, langCode]).toString(16)}`;
167
- expect(listing.commitment).toBe(expectedCommitment);
168
- });
169
198
  it("generates unique listingRoots per call (random salt)", async () => {
170
- const client = setupNoArtifactMocks();
171
- const listing1 = await publish(client, blogInput);
172
- const listing2 = await publish(client, blogInput);
173
- // Same input → different listingRoots (random salt per call)
199
+ const client = setupMocks();
200
+ const listing1 = await publish(client, makeInput());
201
+ const listing2 = await publish(client, makeInput());
174
202
  expect(listing1.commitment).toBe(listing2.commitment);
175
203
  expect(listing1.listingRoot).not.toBe(listing2.listingRoot);
176
204
  });
177
- });
178
- // ── Content Commitment tests (generic bytes) ────────────────────────
179
- describe("content-commitment (generic) content", () => {
180
- const fileBytes = new Uint8Array([
181
- 0x48, 0x65, 0x6c, 0x6c, 0x6f, // "Hello"
182
- ]);
183
- const genericInput = Object.freeze({
184
- content: Object.freeze({
185
- type: "generic",
186
- mimeType: "text/plain",
187
- payload: fileBytes,
188
- }),
189
- price: Object.freeze({ amount: 10000000, currency: "USDC" }),
190
- did: "did:ethr:0xdef456",
205
+ it("verifies commitment matches Poseidon5 of witness fields", async () => {
206
+ const client = setupMocks();
207
+ const listing = await publish(client, makeInput());
208
+ const authorHash = toScalar(payload.author);
209
+ const published = BigInt(payload.published);
210
+ const integrityHash = toScalar(payload.body);
211
+ const words = BigInt(payload.words);
212
+ const langCode = 1n;
213
+ const expected = `0x${poseidon5([authorHash, published, integrityHash, words, langCode]).toString(16)}`;
214
+ expect(listing.commitment).toBe(expected);
191
215
  });
192
- it("publishes a generic content listing successfully", async () => {
193
- const client = setupNoArtifactMocks();
194
- const listing = await publish(client, genericInput);
216
+ });
217
+ // ── Content commitment via witness builder ──────────────────────────
218
+ describe("content-commitment circuit", () => {
219
+ const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
220
+ const makeInput = () => {
221
+ const { witness, commitment } = buildContentCommitmentWitness(bytes);
222
+ return Object.freeze({
223
+ circuitId: "content-commitment-v1.2",
224
+ witness,
225
+ commitment,
226
+ cid: computeCid(bytes),
227
+ price: Object.freeze({ amount: 10000000, currency: "USDC" }),
228
+ did: "did:ethr:0xdef456",
229
+ });
230
+ };
231
+ it("publishes a content-commitment listing with CID", async () => {
232
+ const client = setupMocks();
233
+ const listing = await publish(client, makeInput());
195
234
  expect(listing.schemaId).toBe("content-commitment-v1.2");
196
235
  expect(listing.perSchemaProof.circuitId).toBe("content-commitment-v1.2");
197
- // CID should be present for content-commitment
198
- expect(listing.cid).toBeDefined();
199
236
  expect(listing.cid).toMatch(/^sha256:[0-9a-f]{64}$/);
200
237
  });
201
- it("computes deterministic CID", async () => {
202
- const client = setupNoArtifactMocks();
203
- const listing1 = await publish(client, genericInput);
204
- const listing2 = await publish(client, genericInput);
238
+ it("computes deterministic CID and commitment", async () => {
239
+ const client = setupMocks();
240
+ const listing1 = await publish(client, makeInput());
241
+ const listing2 = await publish(client, makeInput());
205
242
  expect(listing1.cid).toBe(listing2.cid);
206
243
  expect(listing1.commitment).toBe(listing2.commitment);
207
244
  });
208
- it("produces different CIDs for different content", async () => {
209
- const client = setupNoArtifactMocks();
210
- const listing1 = await publish(client, genericInput);
211
- const differentInput = Object.freeze({
212
- ...genericInput,
213
- content: Object.freeze({
214
- type: "generic",
215
- mimeType: "text/plain",
216
- payload: new Uint8Array([0x57, 0x6f, 0x72, 0x6c, 0x64]), // "World"
217
- }),
218
- });
219
- const listing2 = await publish(client, differentInput);
220
- expect(listing1.cid).not.toBe(listing2.cid);
221
- expect(listing1.commitment).not.toBe(listing2.commitment);
245
+ it("passes environment through to the proof submission payload", async () => {
246
+ const client = setupMocks();
247
+ const listing = await publish(client, Object.freeze({ ...makeInput(), environment: "production" }));
248
+ const mockFetch = client.fetcher;
249
+ const proofCall = mockFetch.mock.calls.find((call) => String(call[0]).includes("/v1/proofs") &&
250
+ call[1]?.method === "POST");
251
+ expect(proofCall).toBeDefined();
252
+ const body = JSON.parse(proofCall[1].body);
253
+ expect(body.environment).toBe("production");
254
+ expect(listing.environment).toBe("production");
222
255
  });
223
- it("verifies commitment matches Poseidon1 of fileHash", async () => {
224
- const client = setupNoArtifactMocks();
225
- const listing = await publish(client, genericInput);
226
- // Recompute via inlined normalizer logic
227
- const { poseidon1, poseidon2 } = await import("poseidon-lite");
228
- const BN254_PRIME = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
229
- const CHUNK_SIZE = 31;
230
- const bytesToFieldElements = (data) => {
231
- const len = data.length;
232
- const padLen = CHUNK_SIZE - (len % CHUNK_SIZE);
233
- const paddedLen = len + padLen;
234
- const padded = new Uint8Array(paddedLen);
235
- padded.set(data);
236
- for (let i = len; i < paddedLen; i++)
237
- padded[i] = padLen;
238
- const numChunks = paddedLen / CHUNK_SIZE;
239
- const elements = new Array(numChunks);
240
- for (let i = 0; i < numChunks; i++) {
241
- const offset = i * CHUNK_SIZE;
242
- let val = 0n;
243
- for (let j = 0; j < CHUNK_SIZE; j++) {
244
- val = (val << 8n) | BigInt(padded[offset + j] ?? 0);
245
- }
246
- elements[i] = val;
247
- }
248
- return elements;
249
- };
250
- const reduceElements = (elements, fn) => {
251
- if (elements.length === 0)
252
- return 0n;
253
- let acc = elements[0] ?? 0n;
254
- for (let i = 1; i < elements.length; i++) {
255
- acc = fn([acc, elements[i] ?? 0n]);
256
- }
257
- return acc;
258
- };
259
- const elements = bytesToFieldElements(fileBytes);
260
- const fileHash = reduceElements(elements, (inputs) => poseidon2(inputs));
261
- const expectedCommitment = `0x${poseidon1([fileHash]).toString(16)}`;
262
- expect(listing.commitment).toBe(expectedCommitment);
256
+ it("omits environment from the submission payload when not set", async () => {
257
+ const client = setupMocks();
258
+ const listing = await publish(client, makeInput());
259
+ const mockFetch = client.fetcher;
260
+ const proofCall = mockFetch.mock.calls.find((call) => String(call[0]).includes("/v1/proofs") &&
261
+ call[1]?.method === "POST");
262
+ expect(proofCall).toBeDefined();
263
+ const body = JSON.parse(proofCall[1].body);
264
+ expect(body.environment).toBeUndefined();
265
+ expect(listing.environment).toBeUndefined();
263
266
  });
264
267
  });
265
- // ── File type (same as generic, just different input shape) ─────────
266
- describe("file content", () => {
267
- it("publishes a file listing with CID", async () => {
268
- const client = setupNoArtifactMocks();
269
- const fileBytes = new Uint8Array([1, 2, 3, 4, 5]);
270
- const fileInput = Object.freeze({
271
- content: Object.freeze({
272
- type: "file",
273
- name: "test.bin",
274
- bytes: fileBytes,
275
- mimeType: "application/octet-stream",
268
+ // ── Custom circuit (any circuitId) ──────────────────────────────────
269
+ describe("custom circuit", () => {
270
+ it("accepts arbitrary circuitId and witness", async () => {
271
+ const client = setupMocks();
272
+ const input = Object.freeze({
273
+ circuitId: "blog-article-v1",
274
+ witness: Object.freeze({
275
+ foo: "0x1",
276
+ bar: "42",
277
+ commitment: "0xabc",
276
278
  }),
277
- price: Object.freeze({ amount: 5000000, currency: "USDC" }),
278
- did: "did:ethr:0xfile001",
279
+ commitment: "0xabc",
280
+ price: Object.freeze({ amount: 5000, currency: "USDC" }),
281
+ did: "did:pkh:eip155:8453:0xdead",
279
282
  });
280
- const listing = await publish(client, fileInput);
281
- expect(listing.schemaId).toBe("content-commitment-v1.2");
282
- expect(listing.cid).toBeDefined();
283
- expect(listing.cid).toMatch(/^sha256:[0-9a-f]{64}$/);
283
+ const listing = await publish(client, input);
284
+ expect(listing.schemaId).toBe("blog-article-v1");
285
+ expect(listing.commitment).toBe("0xabc");
286
+ expect(listing.perSchemaProof.circuitId).toBe("blog-article-v1");
284
287
  });
285
288
  });
286
289
  // ── Error handling ──────────────────────────────────────────────────
287
290
  describe("error handling", () => {
288
- it("throws when circuit metadata fetch fails", async () => {
291
+ it("throws when prover.prove fails", async () => {
289
292
  const mockFetch = vi.fn().mockRejectedValue(new Error("Network error"));
290
293
  const client = create({ apiBase: "http://localhost:8787" });
291
294
  client.fetcher = mockFetch;
292
295
  const input = Object.freeze({
293
- content: Object.freeze({
294
- type: "generic",
295
- mimeType: "text/plain",
296
- payload: new Uint8Array([1]),
297
- }),
296
+ circuitId: "content-commitment-v1.2",
297
+ witness: Object.freeze({ fileHash: "0x1", commitment: "0x2" }),
298
+ commitment: "0x2",
298
299
  price: Object.freeze({ amount: 100, currency: "USDC" }),
299
300
  did: "did:ethr:0xerr",
300
301
  });
301
302
  await expect(publish(client, input)).rejects.toThrow();
302
303
  });
303
304
  });
304
- // ── Commitment override ─────────────────────────────────────────────
305
- describe("external commitment", () => {
306
- it("skips per-schema proof when commitment is provided", async () => {
307
- const client = setupNoArtifactMocks();
308
- const input = Object.freeze({
309
- content: Object.freeze({
310
- type: "generic",
311
- mimeType: "application/octet-stream",
312
- payload: new Uint8Array([1, 2, 3]),
313
- }),
314
- price: Object.freeze({ amount: 500, currency: "USDC" }),
315
- did: "did:ethr:0xext",
316
- commitment: "0xdeadbeef00000000000000000000000000000000000000000000000000000000",
317
- });
318
- const listing = await publish(client, input);
319
- expect(listing.schemaId).toBe("external");
320
- expect(listing.commitment).toBe("0xdeadbeef00000000000000000000000000000000000000000000000000000000");
321
- expect(listing.perSchemaProof).toBeNull();
322
- expect(listing.listingRoot).toBeDefined();
323
- });
324
- it("still computes CID when commitment is external", async () => {
325
- const client = setupNoArtifactMocks();
326
- const bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
327
- const input = Object.freeze({
328
- content: Object.freeze({
329
- type: "generic",
330
- mimeType: "text/plain",
331
- payload: bytes,
332
- }),
333
- price: Object.freeze({ amount: 100, currency: "USDC" }),
334
- did: "did:ethr:0xextcid",
335
- commitment: "0xdeadbeef00000000000000000000000000000000000000000000000000000000",
336
- });
337
- const listing = await publish(client, input);
338
- expect(listing.cid).toBeDefined();
339
- expect(listing.cid).toMatch(/^sha256:[0-9a-f]{64}$/);
340
- });
341
- it("does NOT call circuits or proofs endpoints for per-schema", async () => {
342
- const calls = [];
343
- const mockFetch = vi.fn().mockImplementation((url) => {
344
- calls.push(url);
345
- if (url.includes("/v1/circuits/")) {
346
- return Promise.resolve({
347
- ok: true,
348
- json: () => Promise.resolve({ circuitId: url.split("/v1/circuits/")[1], schema: "test" }),
349
- });
350
- }
351
- if (url.includes("/v1/proofs")) {
352
- return Promise.resolve({
353
- ok: true,
354
- json: () => Promise.resolve({ status: "received", verificationId: "v" }),
355
- });
356
- }
357
- if (url.includes("/v1/documents")) {
358
- return Promise.resolve({
359
- ok: true,
360
- json: () => Promise.resolve({ status: "registered", docHash: "mock" }),
361
- });
362
- }
363
- return Promise.resolve({ ok: false });
364
- });
365
- const client = create({ apiBase: "http://localhost:8787" });
366
- client.fetcher = mockFetch;
367
- const input = Object.freeze({
368
- content: Object.freeze({
369
- type: "generic",
370
- mimeType: "text/plain",
371
- payload: new Uint8Array([1]),
372
- }),
373
- price: Object.freeze({ amount: 100, currency: "USDC" }),
374
- did: "did:ethr:0xnocall",
375
- commitment: "0xdeadbeef00000000000000000000000000000000000000000000000000000000",
376
- });
377
- await publish(client, input);
378
- // Should not hit circuits/proofs endpoints (no proofs issued for external commitment)
379
- const proofCalls = calls.filter((u) => u.includes("/v1/proofs"));
380
- expect(proofCalls.length).toBe(0);
381
- });
382
- it("commitment override works with file type too", async () => {
383
- const client = setupNoArtifactMocks();
384
- const input = Object.freeze({
385
- content: Object.freeze({
386
- type: "file",
387
- name: "secret.bin",
388
- bytes: new Uint8Array([7, 8, 9]),
389
- mimeType: "application/octet-stream",
390
- }),
391
- price: Object.freeze({ amount: 1000, currency: "USDC" }),
392
- did: "did:ethr:0xfileext",
393
- commitment: "0xcafebabe00000000000000000000000000000000000000000000000000000000",
394
- });
395
- const listing = await publish(client, input);
396
- expect(listing.schemaId).toBe("external");
397
- expect(listing.perSchemaProof).toBeNull();
398
- expect(listing.cid).toBeDefined();
399
- });
400
- });
401
305
  });
402
306
  //# sourceMappingURL=trust402.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trust402.test.js","sourceRoot":"","sources":["../src/trust402.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust402.test.js","sourceRoot":"","sources":["../src/trust402.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trust402/sdk",
3
- "version": "0.1.10",
3
+ "version": "0.2.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",