@trust402/sdk 0.2.6 → 0.3.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.
- package/dist/trust402.d.ts +7 -7
- package/dist/trust402.d.ts.map +1 -1
- package/dist/trust402.js +17 -11
- package/dist/trust402.js.map +1 -1
- package/package.json +1 -1
- package/dist/trust402.test.d.ts +0 -2
- package/dist/trust402.test.d.ts.map +0 -1
- package/dist/trust402.test.js +0 -308
- package/dist/trust402.test.js.map +0 -1
package/dist/trust402.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export type PriceInput = Readonly<{
|
|
|
21
21
|
* the circuit's expected inputs. Witness builders for known circuits
|
|
22
22
|
* are exported as convenience utilities (see below).
|
|
23
23
|
*/
|
|
24
|
-
export type
|
|
24
|
+
export type PublishInput = Readonly<{
|
|
25
25
|
/** Circuit ID registered with the Lemma API. */
|
|
26
26
|
circuitId: string;
|
|
27
27
|
/** Witness fields passed to prover.prove(). */
|
|
@@ -44,7 +44,7 @@ export type Trust402PublishInput = Readonly<{
|
|
|
44
44
|
environment?: "sandbox" | "production";
|
|
45
45
|
}>;
|
|
46
46
|
/** Full listing returned after successful publish. */
|
|
47
|
-
export type
|
|
47
|
+
export type Listing = Readonly<{
|
|
48
48
|
listingRoot: string;
|
|
49
49
|
schemaId: string;
|
|
50
50
|
commitment: string;
|
|
@@ -66,7 +66,7 @@ export type Trust402Listing = Readonly<{
|
|
|
66
66
|
createdAt: number;
|
|
67
67
|
}>;
|
|
68
68
|
/** Payload for blog-article content type. */
|
|
69
|
-
export type
|
|
69
|
+
export type Article = Readonly<{
|
|
70
70
|
author: string;
|
|
71
71
|
body: string;
|
|
72
72
|
published: number;
|
|
@@ -74,7 +74,7 @@ export type BlogArticlePayload = Readonly<{
|
|
|
74
74
|
lang: string;
|
|
75
75
|
}>;
|
|
76
76
|
/** Result of a witness builder — the witness record plus the commitment. */
|
|
77
|
-
export type
|
|
77
|
+
export type Witness = Readonly<{
|
|
78
78
|
witness: Readonly<Record<string, string>>;
|
|
79
79
|
commitment: string;
|
|
80
80
|
}>;
|
|
@@ -85,14 +85,14 @@ export type WitnessResult = Readonly<{
|
|
|
85
85
|
* authorHash, published, integrityHash, words, langCode, commitment
|
|
86
86
|
* where commitment = poseidon5([authorHash, published, integrityHash, words, langCode])
|
|
87
87
|
*/
|
|
88
|
-
export declare const
|
|
88
|
+
export declare const blogArticle: (payload: Article) => Witness;
|
|
89
89
|
/**
|
|
90
90
|
* Build witness for content-commitment-v1.2 circuit.
|
|
91
91
|
*
|
|
92
92
|
* Uses the canonical normalizer: bytes → fieldElements → poseidon2
|
|
93
93
|
* reduction → poseidon1.
|
|
94
94
|
*/
|
|
95
|
-
export declare const
|
|
95
|
+
export declare const contentCommitment: (bytes: Uint8Array) => Witness;
|
|
96
96
|
/** Compute a sha256-based CID from raw bytes. */
|
|
97
97
|
export declare const computeCid: (bytes: Uint8Array) => string;
|
|
98
98
|
/**
|
|
@@ -106,7 +106,7 @@ export declare const computeCid: (bytes: Uint8Array) => string;
|
|
|
106
106
|
* Circuit-agnostic: the caller chooses the circuitId and builds the
|
|
107
107
|
* witness. Use the exported witness builders for known circuits.
|
|
108
108
|
*/
|
|
109
|
-
export declare const publish: (client: LemmaClient, input:
|
|
109
|
+
export declare const publish: (client: LemmaClient, input: PublishInput) => Promise<Listing>;
|
|
110
110
|
/**
|
|
111
111
|
* Detect content type from a browser File object.
|
|
112
112
|
* Used by dashboard before publish to show a badge.
|
package/dist/trust402.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust402.d.ts","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiFrD,gDAAgD;AAChD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"trust402.d.ts","sourceRoot":"","sources":["../src/trust402.ts"],"names":[],"mappings":"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"}
|
package/dist/trust402.js
CHANGED
|
@@ -71,7 +71,7 @@ const langToCode = (lang) => LANG_MAP[lang.toLowerCase()] ?? 0n;
|
|
|
71
71
|
* authorHash, published, integrityHash, words, langCode, commitment
|
|
72
72
|
* where commitment = poseidon5([authorHash, published, integrityHash, words, langCode])
|
|
73
73
|
*/
|
|
74
|
-
export const
|
|
74
|
+
export const blogArticle = (payload) => {
|
|
75
75
|
const authorHash = toScalar(payload.author);
|
|
76
76
|
const published = BigInt(payload.published);
|
|
77
77
|
const integrityHash = toScalar(payload.body);
|
|
@@ -97,7 +97,7 @@ export const buildBlogArticleWitness = (payload) => {
|
|
|
97
97
|
* Uses the canonical normalizer: bytes → fieldElements → poseidon2
|
|
98
98
|
* reduction → poseidon1.
|
|
99
99
|
*/
|
|
100
|
-
export const
|
|
100
|
+
export const contentCommitment = (bytes) => {
|
|
101
101
|
const elements = bytesToFieldElements(bytes);
|
|
102
102
|
const fileHash = reduceElements(elements, (inputs) => poseidon2(inputs));
|
|
103
103
|
const commitment = poseidon1([fileHash]);
|
|
@@ -136,28 +136,34 @@ export const publish = async (client, input) => {
|
|
|
136
136
|
]);
|
|
137
137
|
const { prove } = prover;
|
|
138
138
|
const { register: registerDocument } = documents;
|
|
139
|
-
|
|
139
|
+
const chainId = input.environment === "production" ? 8453 : 84532;
|
|
140
|
+
// ── 1. Compute docHash = Poseidon2(commitment, chainId) ──
|
|
141
|
+
// Binding chainId into docHash makes Sandbox/Production documents distinct,
|
|
142
|
+
// preventing INSERT OR IGNORE collisions when the same content is registered
|
|
143
|
+
// on multiple chains.
|
|
144
|
+
const docHash = bigintToHex(poseidon2([BigInt(input.commitment), BigInt(chainId)]));
|
|
145
|
+
// ── 2. Generate per-schema proof ──
|
|
140
146
|
const proof = await prove(client, {
|
|
141
147
|
circuitId: input.circuitId,
|
|
142
148
|
witness: input.witness,
|
|
143
149
|
});
|
|
144
|
-
// ──
|
|
150
|
+
// ── 3. Register document ──
|
|
145
151
|
await registerDocument(client, {
|
|
146
|
-
docHash
|
|
152
|
+
docHash,
|
|
147
153
|
schema: input.circuitId,
|
|
148
154
|
cid: input.cid ?? "",
|
|
149
155
|
issuerId: input.did,
|
|
150
156
|
subjectId: input.did,
|
|
151
|
-
chainId
|
|
157
|
+
chainId,
|
|
152
158
|
commitments: {
|
|
153
159
|
scheme: "poseidon",
|
|
154
|
-
root:
|
|
155
|
-
leaves: [
|
|
160
|
+
root: docHash,
|
|
161
|
+
leaves: [docHash],
|
|
156
162
|
randomness: "0x0",
|
|
157
163
|
},
|
|
158
164
|
revocation: { root: "" },
|
|
159
165
|
});
|
|
160
|
-
// ──
|
|
166
|
+
// ── 4. Submit proof ──
|
|
161
167
|
// Trust402-specific HTTP call: environment rides as a query param so the
|
|
162
168
|
// proof body stays a clean SubmitProofRequest and the Trust402 proxy uses
|
|
163
169
|
// it for billing network selection. We call the proxy directly rather than
|
|
@@ -183,7 +189,7 @@ export const publish = async (client, input) => {
|
|
|
183
189
|
method: "POST",
|
|
184
190
|
headers: proofHeaders,
|
|
185
191
|
body: JSON.stringify({
|
|
186
|
-
docHash
|
|
192
|
+
docHash,
|
|
187
193
|
circuitId: input.circuitId,
|
|
188
194
|
proof: proof.proof,
|
|
189
195
|
inputs: [input.commitment],
|
|
@@ -208,7 +214,7 @@ export const publish = async (client, input) => {
|
|
|
208
214
|
const errBody = await proofRes.json().catch(() => ({}));
|
|
209
215
|
throw new Error(`HTTP ${String(proofRes.status)}: ${JSON.stringify(errBody)} (apiBase: ${client.apiBase}; apiKey: ${client.apiKey ? "set" : "unset"})`);
|
|
210
216
|
}
|
|
211
|
-
// ──
|
|
217
|
+
// ── 5. Compute listingRoot (deterministic identifier, no ZK proof) ──
|
|
212
218
|
const schemaIdScalar = toScalar(input.circuitId);
|
|
213
219
|
const priceUsdc = toScalar(input.price.amount);
|
|
214
220
|
const didScalar = toScalar(input.did);
|
package/dist/trust402.js.map
CHANGED
|
@@ -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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"}
|
package/package.json
CHANGED
package/dist/trust402.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trust402.test.d.ts","sourceRoot":"","sources":["../src/trust402.test.ts"],"names":[],"mappings":""}
|
package/dist/trust402.test.js
DELETED
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
-
import { publish, detectContentType, buildBlogArticleWitness, buildContentCommitmentWitness, computeCid, } from "./trust402.js";
|
|
3
|
-
import { create, toScalar } from "@lemmaoracle/sdk";
|
|
4
|
-
import { poseidon5 } from "poseidon-lite";
|
|
5
|
-
// ---------------------------------------------------------------------------
|
|
6
|
-
// detectContentType
|
|
7
|
-
// ---------------------------------------------------------------------------
|
|
8
|
-
describe("detectContentType", () => {
|
|
9
|
-
it("detects image from MIME prefix", () => {
|
|
10
|
-
expect(detectContentType({ type: "image/png", name: "photo.png" })).toBe("image");
|
|
11
|
-
expect(detectContentType({ type: "image/jpeg", name: "img.jpg" })).toBe("image");
|
|
12
|
-
});
|
|
13
|
-
it("detects video from MIME prefix", () => {
|
|
14
|
-
expect(detectContentType({ type: "video/mp4", name: "vid.mp4" })).toBe("video");
|
|
15
|
-
});
|
|
16
|
-
it("detects CSV from exact MIME match", () => {
|
|
17
|
-
expect(detectContentType({ type: "text/csv", name: "data.csv" })).toBe("csv");
|
|
18
|
-
});
|
|
19
|
-
it("detects code from JSON MIME", () => {
|
|
20
|
-
expect(detectContentType({
|
|
21
|
-
type: "application/json",
|
|
22
|
-
name: "config.json",
|
|
23
|
-
})).toBe("code");
|
|
24
|
-
});
|
|
25
|
-
it("detects code from markdown", () => {
|
|
26
|
-
expect(detectContentType({
|
|
27
|
-
type: "text/markdown",
|
|
28
|
-
name: "readme.md",
|
|
29
|
-
})).toBe("code");
|
|
30
|
-
});
|
|
31
|
-
it("falls back to extension detection when MIME is unknown", () => {
|
|
32
|
-
expect(detectContentType({
|
|
33
|
-
type: "application/octet-stream",
|
|
34
|
-
name: "data.csv",
|
|
35
|
-
})).toBe("csv");
|
|
36
|
-
expect(detectContentType({
|
|
37
|
-
type: "application/octet-stream",
|
|
38
|
-
name: "script.py",
|
|
39
|
-
})).toBe("code");
|
|
40
|
-
});
|
|
41
|
-
it("returns generic for unknown types", () => {
|
|
42
|
-
expect(detectContentType({
|
|
43
|
-
type: "application/octet-stream",
|
|
44
|
-
name: "file.xyz",
|
|
45
|
-
})).toBe("generic");
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
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
|
|
118
|
-
// ---------------------------------------------------------------------------
|
|
119
|
-
describe("trust402.publish", () => {
|
|
120
|
-
beforeEach(() => {
|
|
121
|
-
vi.clearAllMocks();
|
|
122
|
-
});
|
|
123
|
-
/** Mock client that returns circuit metadata with no artifacts. */
|
|
124
|
-
const setupMocks = () => {
|
|
125
|
-
const mockFetch = vi.fn().mockImplementation((url) => {
|
|
126
|
-
if (url.includes("/v1/circuits/")) {
|
|
127
|
-
return Promise.resolve({
|
|
128
|
-
ok: true,
|
|
129
|
-
json: () => Promise.resolve({
|
|
130
|
-
circuitId: url.split("/v1/circuits/")[1],
|
|
131
|
-
schema: "test-schema",
|
|
132
|
-
}),
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
if (url.includes("/v1/proofs")) {
|
|
136
|
-
return Promise.resolve({
|
|
137
|
-
ok: true,
|
|
138
|
-
json: () => Promise.resolve({
|
|
139
|
-
status: "received",
|
|
140
|
-
verificationId: "verif-001",
|
|
141
|
-
}),
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
if (url.includes("/v1/documents")) {
|
|
145
|
-
return Promise.resolve({
|
|
146
|
-
ok: true,
|
|
147
|
-
json: () => Promise.resolve({
|
|
148
|
-
status: "registered",
|
|
149
|
-
docHash: "mock-doc-hash",
|
|
150
|
-
}),
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
return Promise.resolve({ ok: false });
|
|
154
|
-
});
|
|
155
|
-
const c = create({ apiBase: "http://localhost:8787" });
|
|
156
|
-
c.fetcher = mockFetch;
|
|
157
|
-
return c;
|
|
158
|
-
};
|
|
159
|
-
// ── Blog article via witness builder ───────────────────────────────
|
|
160
|
-
describe("blog-article circuit", () => {
|
|
161
|
-
const payload = Object.freeze({
|
|
162
|
-
author: "did:ethr:0xabc123",
|
|
163
|
-
body: "Zero-knowledge proofs enable privacy-preserving verification on decentralized networks.",
|
|
164
|
-
published: 1714069800,
|
|
165
|
-
words: 13,
|
|
166
|
-
lang: "en",
|
|
167
|
-
});
|
|
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
|
-
};
|
|
179
|
-
it("publishes a blog-article listing successfully", async () => {
|
|
180
|
-
const client = setupMocks();
|
|
181
|
-
const listing = await publish(client, makeInput());
|
|
182
|
-
expect(listing).toHaveProperty("listingRoot");
|
|
183
|
-
expect(listing).toHaveProperty("commitment");
|
|
184
|
-
expect(listing).toHaveProperty("perSchemaProof");
|
|
185
|
-
expect(listing.schemaId).toBe("blog-article-v1.2");
|
|
186
|
-
expect(listing.did).toBe("did:ethr:0xabc123");
|
|
187
|
-
expect(listing.perSchemaProof.circuitId).toBe("blog-article-v1.2");
|
|
188
|
-
expect(listing.perSchemaProof.inputs.length).toBeGreaterThan(0);
|
|
189
|
-
expect(listing.metadata).toEqual({ title: "My Blog Post", version: "1.0.0" });
|
|
190
|
-
expect(listing.cid).toBeUndefined();
|
|
191
|
-
});
|
|
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());
|
|
196
|
-
expect(listing1.commitment).toBe(listing2.commitment);
|
|
197
|
-
});
|
|
198
|
-
it("generates unique listingRoots per call (random salt)", async () => {
|
|
199
|
-
const client = setupMocks();
|
|
200
|
-
const listing1 = await publish(client, makeInput());
|
|
201
|
-
const listing2 = await publish(client, makeInput());
|
|
202
|
-
expect(listing1.commitment).toBe(listing2.commitment);
|
|
203
|
-
expect(listing1.listingRoot).not.toBe(listing2.listingRoot);
|
|
204
|
-
});
|
|
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);
|
|
215
|
-
});
|
|
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());
|
|
234
|
-
expect(listing.schemaId).toBe("content-commitment-v1.2");
|
|
235
|
-
expect(listing.perSchemaProof.circuitId).toBe("content-commitment-v1.2");
|
|
236
|
-
expect(listing.cid).toMatch(/^sha256:[0-9a-f]{64}$/);
|
|
237
|
-
});
|
|
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());
|
|
242
|
-
expect(listing1.cid).toBe(listing2.cid);
|
|
243
|
-
expect(listing1.commitment).toBe(listing2.commitment);
|
|
244
|
-
});
|
|
245
|
-
it("passes environment as a query parameter on the proof submission URL", 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
|
-
expect(String(proofCall[0])).toContain("/v1/proofs?environment=production");
|
|
253
|
-
const body = JSON.parse(proofCall[1].body);
|
|
254
|
-
expect(body.environment).toBeUndefined();
|
|
255
|
-
expect(listing.environment).toBe("production");
|
|
256
|
-
});
|
|
257
|
-
it("omits the environment query parameter when not set", async () => {
|
|
258
|
-
const client = setupMocks();
|
|
259
|
-
const listing = await publish(client, makeInput());
|
|
260
|
-
const mockFetch = client.fetcher;
|
|
261
|
-
const proofCall = mockFetch.mock.calls.find((call) => String(call[0]).includes("/v1/proofs") &&
|
|
262
|
-
call[1]?.method === "POST");
|
|
263
|
-
expect(proofCall).toBeDefined();
|
|
264
|
-
expect(String(proofCall[0])).not.toContain("environment=");
|
|
265
|
-
const body = JSON.parse(proofCall[1].body);
|
|
266
|
-
expect(body.environment).toBeUndefined();
|
|
267
|
-
expect(listing.environment).toBeUndefined();
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
// ── Custom circuit (any circuitId) ──────────────────────────────────
|
|
271
|
-
describe("custom circuit", () => {
|
|
272
|
-
it("accepts arbitrary circuitId and witness", async () => {
|
|
273
|
-
const client = setupMocks();
|
|
274
|
-
const input = Object.freeze({
|
|
275
|
-
circuitId: "blog-article-v1",
|
|
276
|
-
witness: Object.freeze({
|
|
277
|
-
foo: "0x1",
|
|
278
|
-
bar: "42",
|
|
279
|
-
commitment: "0xabc",
|
|
280
|
-
}),
|
|
281
|
-
commitment: "0xabc",
|
|
282
|
-
price: Object.freeze({ amount: 5000, currency: "USDC" }),
|
|
283
|
-
did: "did:pkh:eip155:8453:0xdead",
|
|
284
|
-
});
|
|
285
|
-
const listing = await publish(client, input);
|
|
286
|
-
expect(listing.schemaId).toBe("blog-article-v1");
|
|
287
|
-
expect(listing.commitment).toBe("0xabc");
|
|
288
|
-
expect(listing.perSchemaProof.circuitId).toBe("blog-article-v1");
|
|
289
|
-
});
|
|
290
|
-
});
|
|
291
|
-
// ── Error handling ──────────────────────────────────────────────────
|
|
292
|
-
describe("error handling", () => {
|
|
293
|
-
it("throws when prover.prove fails", async () => {
|
|
294
|
-
const mockFetch = vi.fn().mockRejectedValue(new Error("Network error"));
|
|
295
|
-
const client = create({ apiBase: "http://localhost:8787" });
|
|
296
|
-
client.fetcher = mockFetch;
|
|
297
|
-
const input = Object.freeze({
|
|
298
|
-
circuitId: "content-commitment-v1.2",
|
|
299
|
-
witness: Object.freeze({ fileHash: "0x1", commitment: "0x2" }),
|
|
300
|
-
commitment: "0x2",
|
|
301
|
-
price: Object.freeze({ amount: 100, currency: "USDC" }),
|
|
302
|
-
did: "did:ethr:0xerr",
|
|
303
|
-
});
|
|
304
|
-
await expect(publish(client, input)).rejects.toThrow();
|
|
305
|
-
});
|
|
306
|
-
});
|
|
307
|
-
});
|
|
308
|
-
//# sourceMappingURL=trust402.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trust402.test.js","sourceRoot":"","sources":["../src/trust402.test.ts"],"names":[],"mappings":"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"}
|