@pinionengineering/prover-client 0.6.0 → 0.8.0

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/client.d.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * Pass the full base URL including the path prefix, e.g.:
9
9
  * new PinionProverClient("https://hydrogen.pinion.build/prover", { getToken })
10
10
  */
11
- import type { AuditResult, ChallengeKeyInfo, CreateKeyResult, ParsedSetup, RawSetupResponse, TagJobListEntry, TagJobProgress, TagJobStatusResponse, TagResponse } from './types.js';
11
+ import type { AuditResult, ChallengeKeyInfo, CreateKeyResult, ParsedSetup, ProveJobStatusResponse, RawSetupResponse, TagJobListEntry, TagJobProgress, TagJobStatusResponse, TagResponse } from './types.js';
12
12
  export interface PinionProverClientOptions {
13
13
  /**
14
14
  * Returns a JWT Bearer token for authenticated endpoints, or null/undefined
@@ -43,8 +43,28 @@ export interface TagOptions {
43
43
  pollIntervalMs?: number;
44
44
  /** Give up and throw TagTimeoutError after this long. Default 10 minutes. */
45
45
  timeoutMs?: number;
46
- /** Called after every status poll with the latest progress, if present. */
47
- onProgress?: (progress: TagJobProgress) => void;
46
+ /**
47
+ * Called after every status poll with the latest progress and the raw
48
+ * status string ("tag-queued" | "tag-planning" | "tag-running" |
49
+ * "tag-merging" | "tag-done" | "tag-failed"). The server populates
50
+ * progress on every poll regardless of status, including "tag-queued"
51
+ * before any work has started (as {total_blocks: 0, completed_blocks: 0})
52
+ * — check `status` if you need to distinguish "not started yet" from
53
+ * "actively running".
54
+ */
55
+ onProgress?: (progress: TagJobProgress, status: string) => void;
56
+ }
57
+ /** Options for prove()'s internal job-status polling. */
58
+ export interface ProveOptions {
59
+ /** Milliseconds between GET /prove/:job_id polls. Default 500. */
60
+ pollIntervalMs?: number;
61
+ /**
62
+ * Give up and throw ProveTimeoutError after this long. Default 60
63
+ * seconds — much shorter than tag()'s default, since a proof round is one
64
+ * bounded crypto operation over the sampled blocks, not a per-block loop
65
+ * over an entire file.
66
+ */
67
+ timeoutMs?: number;
48
68
  }
49
69
  export declare class PinionProverClient {
50
70
  private readonly baseUrl;
@@ -107,15 +127,34 @@ export declare class PinionProverClient {
107
127
  /**
108
128
  * POST /prove — unauthenticated, the server resolves the account from key_id.
109
129
  *
110
- * Returns the raw proof bytes. Most callers should use audit() instead,
111
- * which also cryptographically verifies the response.
130
+ * Proving is asynchronous: this posts the challenge, then polls GET
131
+ * /prove/:job_id until the job reaches a terminal state, so the returned
132
+ * promise resolves only once a proof is actually ready (matching the
133
+ * pre-async blocking behavior). Returns the raw proof bytes. Most callers
134
+ * should use audit() instead, which also cryptographically verifies the
135
+ * response.
112
136
  *
113
137
  * @param keyId Challenge key ID.
114
138
  * @param roots CID strings to prove, in the same order as the challenge.
115
139
  * @param challenge base64(JSON(WireChallenge)) from buildChallenge().
116
- * @param challengeId Optional idempotency key echoed back in the response.
140
+ * @param challengeId Optional idempotency key. If a caller's own retry
141
+ * logic re-calls prove() for what is logically the
142
+ * same request (e.g. after a timeout with an unclear
143
+ * outcome), passing the same challengeId across those
144
+ * attempts makes the server return the original job
145
+ * instead of starting a redundant one. Leave unset for
146
+ * normal audit rounds — each is a fresh, independently
147
+ * random challenge, which should never be deduped
148
+ * against a previous one.
149
+ *
150
+ * Throws PinNotActiveError (409, checked synchronously before any job is
151
+ * created), ProveFailedError if the job reaches "prove-failed", or
152
+ * ProveTimeoutError if it doesn't reach a terminal state within
153
+ * options.timeoutMs.
117
154
  */
118
- prove(keyId: string, roots: string[], challenge: string, challengeId?: string): Promise<Uint8Array>;
155
+ prove(keyId: string, roots: string[], challenge: string, challengeId?: string, options?: ProveOptions): Promise<Uint8Array>;
156
+ /** Poll the status of a proof job started by prove(). Exposed for callers that want to observe progress without waiting on prove()'s full promise. */
157
+ proveStatus(jobId: string): Promise<ProveJobStatusResponse>;
119
158
  /**
120
159
  * Run one audit round against a pre-fetched setup.
121
160
  *
@@ -149,6 +188,20 @@ export declare class ProverError extends Error {
149
188
  readonly body: string;
150
189
  constructor(status: number, body: string);
151
190
  }
191
+ /**
192
+ * Thrown when a response has a successful HTTP status but a body that
193
+ * isn't valid JSON — this is what an infra problem often looks like from
194
+ * the client's perspective (a proxy's HTML error page returned with a 200,
195
+ * a response cut off mid-stream), as opposed to a clean non-2xx status
196
+ * (which surfaces as ProverError instead). bodyPreview is truncated to 200
197
+ * characters so a large unexpected body doesn't bloat error logs/messages.
198
+ */
199
+ export declare class MalformedResponseError extends Error {
200
+ readonly status: number;
201
+ readonly bodyPreview: string;
202
+ readonly cause?: unknown | undefined;
203
+ constructor(status: number, bodyPreview: string, cause?: unknown | undefined);
204
+ }
152
205
  /**
153
206
  * Thrown by prove() when the server returns 409 because a pin is no longer
154
207
  * in the "pinned" lifecycle state. The caller should refresh the key's setup
@@ -170,6 +223,18 @@ export declare class TagTimeoutError extends Error {
170
223
  readonly lastStatus: string;
171
224
  constructor(jobId: string, lastStatus: string);
172
225
  }
226
+ /** Thrown by prove() when the async proof job reaches the "prove-failed" state. */
227
+ export declare class ProveFailedError extends Error {
228
+ readonly jobId: string;
229
+ readonly reason: string;
230
+ constructor(jobId: string, reason: string);
231
+ }
232
+ /** Thrown by prove() when the job hasn't reached a terminal state within the configured timeout. */
233
+ export declare class ProveTimeoutError extends Error {
234
+ readonly jobId: string;
235
+ readonly lastStatus: string;
236
+ constructor(jobId: string, lastStatus: string);
237
+ }
173
238
  /**
174
239
  * Decode a raw /setup response into a ParsedSetup.
175
240
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * new PinionProverClient("https://hydrogen.pinion.build/prover", { getToken })
10
10
  */
11
11
  import { buildChallenge, base64ToBytes, superBlockId } from './challenge.js';
12
- import { verifyProof, parseClientSetup } from './verify.js';
12
+ import { verifyProofResult, parseClientSetup } from './verify.js';
13
13
  import { CID } from 'multiformats/cid';
14
14
  export class PinionProverClient {
15
15
  baseUrl;
@@ -87,7 +87,7 @@ export class PinionProverClient {
87
87
  for (;;) {
88
88
  const status = await this.tagStatus(jobId);
89
89
  if (status.progress)
90
- options.onProgress?.(status.progress);
90
+ options.onProgress?.(status.progress, status.status);
91
91
  if (status.status === 'tag-done') {
92
92
  return { block_ids: status.block_ids, block_count: status.block_count };
93
93
  }
@@ -128,15 +128,34 @@ export class PinionProverClient {
128
128
  /**
129
129
  * POST /prove — unauthenticated, the server resolves the account from key_id.
130
130
  *
131
- * Returns the raw proof bytes. Most callers should use audit() instead,
132
- * which also cryptographically verifies the response.
131
+ * Proving is asynchronous: this posts the challenge, then polls GET
132
+ * /prove/:job_id until the job reaches a terminal state, so the returned
133
+ * promise resolves only once a proof is actually ready (matching the
134
+ * pre-async blocking behavior). Returns the raw proof bytes. Most callers
135
+ * should use audit() instead, which also cryptographically verifies the
136
+ * response.
133
137
  *
134
138
  * @param keyId Challenge key ID.
135
139
  * @param roots CID strings to prove, in the same order as the challenge.
136
140
  * @param challenge base64(JSON(WireChallenge)) from buildChallenge().
137
- * @param challengeId Optional idempotency key echoed back in the response.
141
+ * @param challengeId Optional idempotency key. If a caller's own retry
142
+ * logic re-calls prove() for what is logically the
143
+ * same request (e.g. after a timeout with an unclear
144
+ * outcome), passing the same challengeId across those
145
+ * attempts makes the server return the original job
146
+ * instead of starting a redundant one. Leave unset for
147
+ * normal audit rounds — each is a fresh, independently
148
+ * random challenge, which should never be deduped
149
+ * against a previous one.
150
+ *
151
+ * Throws PinNotActiveError (409, checked synchronously before any job is
152
+ * created), ProveFailedError if the job reaches "prove-failed", or
153
+ * ProveTimeoutError if it doesn't reach a terminal state within
154
+ * options.timeoutMs.
138
155
  */
139
- async prove(keyId, roots, challenge, challengeId) {
156
+ async prove(keyId, roots, challenge, challengeId, options = {}) {
157
+ const pollIntervalMs = options.pollIntervalMs ?? 500;
158
+ const timeoutMs = options.timeoutMs ?? 60 * 1000;
140
159
  const resp = await fetch(`${this.baseUrl}/prove`, {
141
160
  method: 'POST',
142
161
  headers: { 'Content-Type': 'application/json' },
@@ -149,8 +168,25 @@ export class PinionProverClient {
149
168
  if (!resp.ok) {
150
169
  throw new ProverError(resp.status, await resp.text().catch(() => ''));
151
170
  }
152
- const pr = await resp.json();
153
- return base64ToBytes(pr.proof);
171
+ const { job_id: jobId } = await parseJsonBody(resp);
172
+ const deadline = Date.now() + timeoutMs;
173
+ for (;;) {
174
+ const status = await this.proveStatus(jobId);
175
+ if (status.status === 'prove-done') {
176
+ return base64ToBytes(status.proof ?? '');
177
+ }
178
+ if (status.status === 'prove-failed') {
179
+ throw new ProveFailedError(jobId, status.error ?? 'unknown error');
180
+ }
181
+ if (Date.now() >= deadline) {
182
+ throw new ProveTimeoutError(jobId, status.status);
183
+ }
184
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
185
+ }
186
+ }
187
+ /** Poll the status of a proof job started by prove(). Exposed for callers that want to observe progress without waiting on prove()'s full promise. */
188
+ async proveStatus(jobId) {
189
+ return this.get(`/prove/${encodeURIComponent(jobId)}`);
154
190
  }
155
191
  /**
156
192
  * Run one audit round against a pre-fetched setup.
@@ -190,13 +226,13 @@ export class PinionProverClient {
190
226
  const challengeSize = Math.max(1, Math.round((challengePct / 100) * allBlockIds.length));
191
227
  const challenge = buildChallenge(challengeSize, allBlockIds.length);
192
228
  const proofBytes = await this.prove(keyId, targetRoots, challenge);
193
- const pass = verifyProof({
229
+ const verification = verifyProofResult({
194
230
  clientSetup: setup.clientSetup,
195
231
  blockIds: allBlockIds,
196
232
  challenge,
197
233
  proofBytes,
198
234
  });
199
- return { pass, blocksChecked: challengeSize, keyId, roots: targetRoots };
235
+ return { pass: verification.verified, verification, blocksChecked: challengeSize, keyId, roots: targetRoots };
200
236
  }
201
237
  // ---------------------------------------------------------------------------
202
238
  // HTTP helpers
@@ -207,7 +243,7 @@ export class PinionProverClient {
207
243
  });
208
244
  if (!resp.ok)
209
245
  throw await this.httpError(resp);
210
- return resp.json();
246
+ return parseJsonBody(resp);
211
247
  }
212
248
  async post(path, body) {
213
249
  const resp = await fetch(`${this.baseUrl}${path}`, {
@@ -219,7 +255,7 @@ export class PinionProverClient {
219
255
  throw await this.httpError(resp);
220
256
  if (resp.status === 204)
221
257
  return undefined;
222
- return resp.json();
258
+ return parseJsonBody(resp);
223
259
  }
224
260
  async authDelete(path) {
225
261
  const resp = await fetch(`${this.baseUrl}${path}`, {
@@ -239,6 +275,26 @@ export class PinionProverClient {
239
275
  }
240
276
  }
241
277
  // ---------------------------------------------------------------------------
278
+ // Shared response parsing
279
+ // ---------------------------------------------------------------------------
280
+ /**
281
+ * Parses resp's body as JSON, throwing MalformedResponseError (rather than
282
+ * a raw, untyped SyntaxError) if it isn't well-formed — e.g. a proxy or
283
+ * load balancer returning an HTML error page with a 200 status, or a
284
+ * response truncated mid-body. A non-2xx status is expected to have already
285
+ * been handled by the caller before this is reached; this only guards
286
+ * against a *successful* response whose body isn't what it claims to be.
287
+ */
288
+ async function parseJsonBody(resp) {
289
+ const text = await resp.text();
290
+ try {
291
+ return JSON.parse(text);
292
+ }
293
+ catch (cause) {
294
+ throw new MalformedResponseError(resp.status, text.slice(0, 200), cause);
295
+ }
296
+ }
297
+ // ---------------------------------------------------------------------------
242
298
  // Errors
243
299
  // ---------------------------------------------------------------------------
244
300
  export class ProverError extends Error {
@@ -251,6 +307,26 @@ export class ProverError extends Error {
251
307
  this.name = 'ProverError';
252
308
  }
253
309
  }
310
+ /**
311
+ * Thrown when a response has a successful HTTP status but a body that
312
+ * isn't valid JSON — this is what an infra problem often looks like from
313
+ * the client's perspective (a proxy's HTML error page returned with a 200,
314
+ * a response cut off mid-stream), as opposed to a clean non-2xx status
315
+ * (which surfaces as ProverError instead). bodyPreview is truncated to 200
316
+ * characters so a large unexpected body doesn't bloat error logs/messages.
317
+ */
318
+ export class MalformedResponseError extends Error {
319
+ status;
320
+ bodyPreview;
321
+ cause;
322
+ constructor(status, bodyPreview, cause) {
323
+ super(`pinion-prover: malformed response body (HTTP ${status}): ${bodyPreview}`);
324
+ this.status = status;
325
+ this.bodyPreview = bodyPreview;
326
+ this.cause = cause;
327
+ this.name = 'MalformedResponseError';
328
+ }
329
+ }
254
330
  /**
255
331
  * Thrown by prove() when the server returns 409 because a pin is no longer
256
332
  * in the "pinned" lifecycle state. The caller should refresh the key's setup
@@ -286,6 +362,28 @@ export class TagTimeoutError extends Error {
286
362
  this.name = 'TagTimeoutError';
287
363
  }
288
364
  }
365
+ /** Thrown by prove() when the async proof job reaches the "prove-failed" state. */
366
+ export class ProveFailedError extends Error {
367
+ jobId;
368
+ reason;
369
+ constructor(jobId, reason) {
370
+ super(`prove job ${jobId} failed: ${reason}`);
371
+ this.jobId = jobId;
372
+ this.reason = reason;
373
+ this.name = 'ProveFailedError';
374
+ }
375
+ }
376
+ /** Thrown by prove() when the job hasn't reached a terminal state within the configured timeout. */
377
+ export class ProveTimeoutError extends Error {
378
+ jobId;
379
+ lastStatus;
380
+ constructor(jobId, lastStatus) {
381
+ super(`prove job ${jobId} timed out (last status: ${lastStatus})`);
382
+ this.jobId = jobId;
383
+ this.lastStatus = lastStatus;
384
+ this.name = 'ProveTimeoutError';
385
+ }
386
+ }
289
387
  // ---------------------------------------------------------------------------
290
388
  // Setup parsing (exported for use without the full client)
291
389
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export { PinionProverClient, ProverError, PinNotActiveError, TagFailedError, TagTimeoutError, parseSetupResponse, } from './client.js';
2
- export type { PinionProverClientOptions, AuditOptions, TagOptions } from './client.js';
3
- export { verifyProof, parseClientSetup } from './verify.js';
1
+ export { PinionProverClient, ProverError, MalformedResponseError, PinNotActiveError, TagFailedError, TagTimeoutError, ProveFailedError, ProveTimeoutError, parseSetupResponse, } from './client.js';
2
+ export type { PinionProverClientOptions, AuditOptions, TagOptions, ProveOptions } from './client.js';
3
+ export { verifyProof, verifyProofResult, parseClientSetup } from './verify.js';
4
4
  export type { VerifyParams } from './verify.js';
5
5
  export { buildChallenge, deriveIndicesAndCoeffs, blockHashG1, superBlockId, base64ToBytes, uint8ToBase64, BN254_ORDER, } from './challenge.js';
6
6
  export { g1FromBytes, g2FromBytes, g1ScalarMult, g1Add, atePairing, fp12Equal, bytesToBigInt, G1_BASE, G2_BASE, } from './bn254.js';
7
7
  export type { G1Point, G2Point, Fp12Elem } from './bn254.js';
8
- export type { WireClientSetup, WireChallenge, WireProof, ProveResponse, RawTaggedRoot, RawSetupResponse, ParsedRoot, ParsedSetup, ChallengeKeyInfo, CreateKeyResponse, CreateKeyResult, TagResponse, TagJobResponse, TagJobProgress, TagJobStatusResponse, TagJobListEntry, TagJobListResponse, AuditResult, } from './types.js';
8
+ export type { WireClientSetup, WireChallenge, WireProof, ProveResponse, ProveJobResponse, ProveJobStatusResponse, RawTaggedRoot, RawSetupResponse, ParsedRoot, ParsedSetup, ChallengeKeyInfo, CreateKeyResponse, CreateKeyResult, TagResponse, TagJobResponse, TagJobProgress, TagJobStatusResponse, TagJobListEntry, TagJobListResponse, ProofVerificationResult, AuditResult, } from './types.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGvF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG7D,YAAY,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGrG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG7D,YAAY,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,GACZ,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // High-level client
2
- export { PinionProverClient, ProverError, PinNotActiveError, TagFailedError, TagTimeoutError, parseSetupResponse, } from './client.js';
2
+ export { PinionProverClient, ProverError, MalformedResponseError, PinNotActiveError, TagFailedError, TagTimeoutError, ProveFailedError, ProveTimeoutError, parseSetupResponse, } from './client.js';
3
3
  // Verification
4
- export { verifyProof, parseClientSetup } from './verify.js';
4
+ export { verifyProof, verifyProofResult, parseClientSetup } from './verify.js';
5
5
  // Challenge construction
6
6
  export { buildChallenge, deriveIndicesAndCoeffs, blockHashG1, superBlockId, base64ToBytes, uint8ToBase64, BN254_ORDER, } from './challenge.js';
7
7
  // BN254 primitives (for advanced use / other protocols)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG5D,yBAAyB;AACzB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,wDAAwD;AACxD,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/E,yBAAyB;AACzB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,wDAAwD;AACxD,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,YAAY,CAAC"}
package/dist/types.d.ts CHANGED
@@ -36,11 +36,40 @@ export interface WireProof {
36
36
  sigma: string;
37
37
  mu: string[];
38
38
  }
39
- /** JSON response from POST /prove. */
39
+ /**
40
+ * JSON response from POST /prove.
41
+ *
42
+ * @deprecated Proving is now asynchronous. POST /prove returns a
43
+ * ProveJobResponse immediately; poll GET /prove/:job_id for a
44
+ * ProveJobStatusResponse, which carries these same fields once done.
45
+ */
40
46
  export interface ProveResponse {
41
47
  challenge_id: string;
42
48
  proof: string;
43
49
  }
50
+ /** Returned by POST /prove: the proof job has been created and queued. */
51
+ export interface ProveJobResponse {
52
+ job_id: string;
53
+ }
54
+ /**
55
+ * Raw status response from GET /prove/:job_id. This endpoint is
56
+ * unauthenticated, same as POST /prove — job_id is a fresh, unguessable
57
+ * identifier (or, when the request carried a challenge_id, deterministic
58
+ * from (key_id, challenge_id)), so possession of it is the only
59
+ * authorization this route needs.
60
+ *
61
+ * `status` is one of "prove-queued" | "prove-running" | "prove-done" |
62
+ * "prove-failed". `challenge_id` echoes the value from the original
63
+ * request. `proof` is populated only once `status` is "prove-done" — the
64
+ * same field ProveResponse used to return synchronously. `error` is
65
+ * populated only once `status` is "prove-failed".
66
+ */
67
+ export interface ProveJobStatusResponse {
68
+ status: string;
69
+ challenge_id?: string;
70
+ proof?: string;
71
+ error?: string;
72
+ }
44
73
  /**
45
74
  * One root entry in the setup response. Exactly one of block_ids/block_count
46
75
  * is populated: block_ids for protocols addressed by real IPFS block CID
@@ -173,10 +202,47 @@ export interface TagJobListEntry {
173
202
  export interface TagJobListResponse {
174
203
  jobs: TagJobListEntry[];
175
204
  }
205
+ /**
206
+ * Result of verifyProofResult() (see verify.ts). Distinguishes a genuine
207
+ * cryptographic failure from one that couldn't even be evaluated:
208
+ *
209
+ * - { verified: false, reason: 'pairing-mismatch' } means the pairing
210
+ * equation was evaluated and did not hold — the server either does not
211
+ * hold the data or returned a deliberately bad proof. This is the only
212
+ * case that should ever be reported to a user as evidence of possible
213
+ * data loss.
214
+ * - { verified: false, reason: 'malformed-input', cause } means the
215
+ * equation was never evaluated at all — proofBytes wasn't valid
216
+ * WireProof JSON, a curve point failed to decode, etc. This is what an
217
+ * infra error looks like from here: a 5xx with an HTML body, a proxy
218
+ * timeout page, a truncated response — none of which say anything about
219
+ * whether the server actually holds the data.
220
+ *
221
+ * verifyProof() collapses both false cases into a plain `false`, which is
222
+ * why it's the deprecated, lower-fidelity option.
223
+ */
224
+ export type ProofVerificationResult = {
225
+ verified: true;
226
+ } | {
227
+ verified: false;
228
+ reason: 'pairing-mismatch';
229
+ } | {
230
+ verified: false;
231
+ reason: 'malformed-input';
232
+ cause: unknown;
233
+ };
176
234
  /** Result of a complete audit round (challenge → prove → cryptographic verify). */
177
235
  export interface AuditResult {
178
236
  /** true only if the pairing check e(σ,G₂) == e(A,v) passed. */
179
237
  pass: boolean;
238
+ /**
239
+ * The richer verification outcome pass was derived from — check this to
240
+ * distinguish a real cryptographic failure (reason: 'pairing-mismatch')
241
+ * from one that couldn't be evaluated at all (reason: 'malformed-input').
242
+ * Only the former should ever be reported to a user as evidence of
243
+ * possible data loss.
244
+ */
245
+ verification: ProofVerificationResult;
180
246
  /** Number of blocks sampled in this challenge round. */
181
247
  blocksChecked: number;
182
248
  keyId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/verify.d.ts CHANGED
@@ -24,7 +24,7 @@
24
24
  *
25
25
  * Ports verifyPubCore() in storage-proofs/por/sw/pub.go.
26
26
  */
27
- import type { WireClientSetup } from './types.js';
27
+ import type { WireClientSetup, ProofVerificationResult } from './types.js';
28
28
  export interface VerifyParams {
29
29
  /**
30
30
  * The parsed WireClientSetup from the client_setup blob.
@@ -48,15 +48,30 @@ export interface VerifyParams {
48
48
  */
49
49
  proofBytes: Uint8Array;
50
50
  }
51
+ /**
52
+ * Cryptographically verify a storage proof returned by pinion-prover,
53
+ * distinguishing a real pairing-equation failure from one that couldn't be
54
+ * evaluated at all (malformed/truncated response, wrong shape, etc.) —
55
+ * see ProofVerificationResult's doc comment for why that distinction
56
+ * matters. This is what the website's StorageHealthContext should call
57
+ * instead of checking resp.ok alone — HTTP 200 only proves the server
58
+ * responded, not that it holds the data, and even a successful response
59
+ * doesn't guarantee proofBytes is well-formed enough to evaluate.
60
+ */
61
+ export declare function verifyProofResult(params: VerifyParams): ProofVerificationResult;
51
62
  /**
52
63
  * Cryptographically verify a storage proof returned by pinion-prover.
53
64
  *
54
65
  * Returns true if and only if the pairing equation holds. A false result means
55
- * the server either does not hold the data or returned a malformed proof.
66
+ * the server either does not hold the data, returned a deliberately bad proof,
67
+ * OR the response couldn't even be parsed as a proof at all — those last two
68
+ * cases are indistinguishable through this function.
56
69
  *
57
- * This is what the website's StorageHealthContext should call instead of
58
- * checking resp.ok alone HTTP 200 only proves the server responded, not that
59
- * it holds the data.
70
+ * @deprecated Use verifyProofResult() instead it distinguishes a genuine
71
+ * cryptographic failure ({ reason: 'pairing-mismatch' }) from a
72
+ * malformed/unevaluable response ({ reason: 'malformed-input' }, e.g. an
73
+ * infra error masquerading as a proof). Reporting the latter to a user as
74
+ * "proof failed" implies data loss that may not have happened at all.
60
75
  */
61
76
  export declare function verifyProof(params: VerifyParams): boolean;
62
77
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAcH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,EAAE,eAAe,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAMzD;AAoDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,GAAG,eAAe,CAE3E"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAcH,OAAO,KAAK,EAAE,eAAe,EAA4B,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErG,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,EAAE,eAAe,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,uBAAuB,CAQ/E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEzD;AAoDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,GAAG,eAAe,CAE3E"}
package/dist/verify.js CHANGED
@@ -26,23 +26,42 @@
26
26
  */
27
27
  import { atePairing, fp12Equal, g1Add, g1FromBytes, g1ScalarMult, g2FromBytes, bytesToBigInt, G2_BASE, } from './bn254.js';
28
28
  import { base64ToBytes, blockHashG1, deriveIndicesAndCoeffs } from './challenge.js';
29
+ /**
30
+ * Cryptographically verify a storage proof returned by pinion-prover,
31
+ * distinguishing a real pairing-equation failure from one that couldn't be
32
+ * evaluated at all (malformed/truncated response, wrong shape, etc.) —
33
+ * see ProofVerificationResult's doc comment for why that distinction
34
+ * matters. This is what the website's StorageHealthContext should call
35
+ * instead of checking resp.ok alone — HTTP 200 only proves the server
36
+ * responded, not that it holds the data, and even a successful response
37
+ * doesn't guarantee proofBytes is well-formed enough to evaluate.
38
+ */
39
+ export function verifyProofResult(params) {
40
+ let result;
41
+ try {
42
+ result = _verifyProof(params);
43
+ }
44
+ catch (cause) {
45
+ return { verified: false, reason: 'malformed-input', cause };
46
+ }
47
+ return result ? { verified: true } : { verified: false, reason: 'pairing-mismatch' };
48
+ }
29
49
  /**
30
50
  * Cryptographically verify a storage proof returned by pinion-prover.
31
51
  *
32
52
  * Returns true if and only if the pairing equation holds. A false result means
33
- * the server either does not hold the data or returned a malformed proof.
53
+ * the server either does not hold the data, returned a deliberately bad proof,
54
+ * OR the response couldn't even be parsed as a proof at all — those last two
55
+ * cases are indistinguishable through this function.
34
56
  *
35
- * This is what the website's StorageHealthContext should call instead of
36
- * checking resp.ok alone HTTP 200 only proves the server responded, not that
37
- * it holds the data.
57
+ * @deprecated Use verifyProofResult() instead it distinguishes a genuine
58
+ * cryptographic failure ({ reason: 'pairing-mismatch' }) from a
59
+ * malformed/unevaluable response ({ reason: 'malformed-input' }, e.g. an
60
+ * infra error masquerading as a proof). Reporting the latter to a user as
61
+ * "proof failed" implies data loss that may not have happened at all.
38
62
  */
39
63
  export function verifyProof(params) {
40
- try {
41
- return _verifyProof(params);
42
- }
43
- catch {
44
- return false;
45
- }
64
+ return verifyProofResult(params).verified;
46
65
  }
47
66
  function _verifyProof(params) {
48
67
  const { clientSetup, blockIds, challenge, proofBytes } = params;
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,OAAO,GAER,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AA2BpF;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;AACvF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB;IAC9C,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,MAAoB;IACxC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEhE,mEAAmE;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAClC,CAAC;IACnB,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE1C,2DAA2D;IAC3D,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/E,oEAAoE;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAc,CAAC;IAChF,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,8CAA8C;IAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,qDAAqD;IACrD,IAAI,CAAC,GAAmB,IAAI,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QACpD,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE7B,+BAA+B;IAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAyB;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAoB,CAAC;AACnG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pinionengineering/prover-client",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "JavaScript/TypeScript client for the pinion-prover storage-proof service. Builds SW-Pub challenges and cryptographically verifies proofs using BN254 pairings.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",