inamprotocol 0.7.0 → 0.9.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 +37 -0
- package/dist/client.js +32 -0
- package/dist/client.js.map +1 -1
- package/dist/core/disputeLifecycle.d.ts +18 -0
- package/dist/core/disputeLifecycle.js +19 -0
- package/dist/core/disputeLifecycle.js.map +1 -1
- package/dist/core/merkleLog.d.ts +26 -0
- package/dist/core/merkleLog.js +190 -0
- package/dist/core/merkleLog.js.map +1 -0
- package/dist/core/receiptContent.js +1 -1
- package/dist/core/receiptContent.js.map +1 -1
- package/dist/core/transparencyLog.d.ts +22 -0
- package/dist/core/transparencyLog.js +7 -0
- package/dist/core/transparencyLog.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -133,4 +133,41 @@ export declare class InamClient {
|
|
|
133
133
|
listReceiptVerifications(receiptId: string): Promise<{
|
|
134
134
|
verifications: VerificationRecord[];
|
|
135
135
|
}>;
|
|
136
|
+
/** Current tree size + root hash. Unsigned: the registry holds no signing
|
|
137
|
+
* keypair of its own (only verifies operator-signed *requests*) — the
|
|
138
|
+
* tamper-evidence guarantee comes from consistency proofs between two
|
|
139
|
+
* client-observed STHs, not a signature on any single one. */
|
|
140
|
+
getTransparencySTH(): Promise<{
|
|
141
|
+
treeSize: number;
|
|
142
|
+
rootHash: string;
|
|
143
|
+
timestamp: string;
|
|
144
|
+
}>;
|
|
145
|
+
getTransparencyEntries(query?: {
|
|
146
|
+
limit?: number;
|
|
147
|
+
offset?: number;
|
|
148
|
+
}): Promise<{
|
|
149
|
+
entries: {
|
|
150
|
+
leafIndex: number;
|
|
151
|
+
entryType: string;
|
|
152
|
+
refId: string;
|
|
153
|
+
createdAt: string;
|
|
154
|
+
data: string;
|
|
155
|
+
leafHash: string;
|
|
156
|
+
}[];
|
|
157
|
+
hasMore: boolean;
|
|
158
|
+
}>;
|
|
159
|
+
getInclusionProof(leafIndex: number, treeSize?: number): Promise<{
|
|
160
|
+
leafIndex: number;
|
|
161
|
+
treeSize: number;
|
|
162
|
+
leafHash: string;
|
|
163
|
+
rootHash: string;
|
|
164
|
+
proof: string[];
|
|
165
|
+
}>;
|
|
166
|
+
getConsistencyProof(first: number, second?: number): Promise<{
|
|
167
|
+
firstSize: number;
|
|
168
|
+
firstRootHash: string;
|
|
169
|
+
secondSize: number;
|
|
170
|
+
secondRootHash: string;
|
|
171
|
+
proof: string[];
|
|
172
|
+
}>;
|
|
136
173
|
}
|
package/dist/client.js
CHANGED
|
@@ -259,5 +259,37 @@ export class InamClient {
|
|
|
259
259
|
listReceiptVerifications(receiptId) {
|
|
260
260
|
return this.request("GET", `/v1/receipts/${encodeURIComponent(receiptId)}/verifications`);
|
|
261
261
|
}
|
|
262
|
+
// ---- Transparency log (audit round-2 item 6) — RFC 6962-style Merkle log
|
|
263
|
+
// of receipt-lifecycle events. Fetch-only here; verifyInclusion/
|
|
264
|
+
// verifyConsistency (exported from this package's core/merkleLog.js) are
|
|
265
|
+
// the pure functions a caller runs itself against what these return,
|
|
266
|
+
// rather than trusting the registry's own arithmetic. ----
|
|
267
|
+
/** Current tree size + root hash. Unsigned: the registry holds no signing
|
|
268
|
+
* keypair of its own (only verifies operator-signed *requests*) — the
|
|
269
|
+
* tamper-evidence guarantee comes from consistency proofs between two
|
|
270
|
+
* client-observed STHs, not a signature on any single one. */
|
|
271
|
+
getTransparencySTH() {
|
|
272
|
+
return this.request("GET", "/v1/transparency/sth");
|
|
273
|
+
}
|
|
274
|
+
getTransparencyEntries(query) {
|
|
275
|
+
const params = new URLSearchParams();
|
|
276
|
+
if (query?.limit !== undefined)
|
|
277
|
+
params.set("limit", String(query.limit));
|
|
278
|
+
if (query?.offset !== undefined)
|
|
279
|
+
params.set("offset", String(query.offset));
|
|
280
|
+
return this.request("GET", `/v1/transparency/entries?${params.toString()}`);
|
|
281
|
+
}
|
|
282
|
+
getInclusionProof(leafIndex, treeSize) {
|
|
283
|
+
const params = new URLSearchParams({ leafIndex: String(leafIndex) });
|
|
284
|
+
if (treeSize !== undefined)
|
|
285
|
+
params.set("treeSize", String(treeSize));
|
|
286
|
+
return this.request("GET", `/v1/transparency/proof/inclusion?${params.toString()}`);
|
|
287
|
+
}
|
|
288
|
+
getConsistencyProof(first, second) {
|
|
289
|
+
const params = new URLSearchParams({ first: String(first) });
|
|
290
|
+
if (second !== undefined)
|
|
291
|
+
params.set("second", String(second));
|
|
292
|
+
return this.request("GET", `/v1/transparency/proof/consistency?${params.toString()}`);
|
|
293
|
+
}
|
|
262
294
|
}
|
|
263
295
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAgB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAYhH;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IAIF;IACA;IAJF,IAAI,CAAS;IAE9B,YACmB,OAAe,EACf,OAAgB;QADhB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAS;QAEjC,yEAAyE;QACzE,qEAAqE;QACrE,+DAA+D;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc,EAAE,IAAkC;QACvG,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAEnG,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YAC9B,gBAAgB,EAAE,SAAS;YAC3B,gBAAgB,EAAE,SAAS;YAC3B,CAAC,kBAAkB,CAAC,EAAE,mBAAmB;SAC1C,CAAC;QACF,IAAI,IAAI,EAAE,cAAc;YAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAE3E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,YAAsB,EAAE,QAAkC;QACtE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;;+CAI2C;IAC3C,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE;YACnG,cAAc,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED;;;sDAGkD;IAClD,iBAAiB,CAAC,aAAqB,EAAE,UAAmB;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,EAAE;YAC7G,cAAc,EAAE,mBAAmB,aAAa,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;SAC/E,CAAC,CAAC;IACL,CAAC;IAED;;;0DAGsD;IACtD,YAAY,CAAC,QAAgB,EAAE,KAAa;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YAClG,cAAc,EAAE,QAAQ,QAAQ,IAAI,KAAK,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;uEAEmE;IACnE,oBAAoB,CAAC,QAAgB,EAAE,iBAAyB,EAAE,OAAwB;QACxF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE;YACjI,cAAc,EAAE,kBAAkB,QAAQ,IAAI,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;SAChF,CAAC,CAAC;IACL,CAAC;IAED;;+DAE2D;IAC3D,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,WAAmB,EAAE,cAAsB;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;YAC/H,cAAc,EAAE,QAAQ,QAAQ,IAAI,WAAW,EAAE;SAClD,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,KAMZ;QACC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,IAAI,KAAK,CAAC,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,aAAa,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAChF,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnF,CAAC;IAED;;8EAE0E;IAC1E,KAAK,CAAC,UAAU,CACd,QAAgB,EAChB,KAA0B,EAC1B,IAAsD;QAEtD,oEAAoE;QACpE,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7J,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,UAAU,CACd,OAAyB,EACzB,QAAsF;QAEtF,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,kCAAkC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,QAAQ,EAAE,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,KAAK,iBAAiB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,QAAQ,EAAE,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,UAAU,iBAAiB,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7H,CAAC;QACD,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,MAAM,iBAAiB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1H,CAAC;QACD,IAAI,QAAQ,EAAE,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,4CAA4C,QAAQ,CAAC,QAAQ,iBAAiB,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChI,CAAC;QAED,kEAAkE;QAClE,mEAAmE;QACnE,4DAA4D;QAC5D,mEAAmE;QACnE,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACpH,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE;YAC9G,cAAc,EAAE,eAAe,OAAO,CAAC,SAAS,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,SAAiB,EAAE,MAAc;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE;YAC/F,cAAc,EAAE,WAAW,SAAS,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;IAED;;qEAEiE;IACjE,cAAc,CAAC,SAAiB,EAAE,IAAa;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACjH,cAAc,EAAE,mBAAmB,SAAS,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAEzE,OAAO,CAAC,KAAoH;QAC1H,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAChI,CAAC;IAED,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,UAAU,CAAC,KAAgF;QACzF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,OAAgB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE;YACvF,cAAc,EAAE,SAAS,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,sDAAsD;IACtD,WAAW,CAAC,KAAa,EAAE,OAAe;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE;YACvF,cAAc,EAAE,UAAU,KAAK,IAAI,OAAO,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE;YACrF,cAAc,EAAE,UAAU,KAAK,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IAED;;;mEAG+D;IAC/D,oBAAoB,CAAC,KAAa,EAAE,MAAe;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACnH,cAAc,EAAE,yBAAyB,KAAK,EAAE;SACjD,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IAExF;;;;6EAIyE;IACzE,KAAK,CAAC,kBAAkB,CAAC,KAAwE;QAC/F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,gCAAgC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtI,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3G,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,mBAAmB,EACnB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,EAC3L,EAAE,cAAc,EAAE,gBAAgB,OAAO,CAAC,cAAc,EAAE,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,wBAAwB,CAAC,SAAiB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5F,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,3 +29,21 @@ export interface DisputeCheckable {
|
|
|
29
29
|
}
|
|
30
30
|
export declare function hasUsedDisputeRight(receipt: DisputeCheckable, callerDid: string): boolean;
|
|
31
31
|
export declare function isDisputeActive(receipt: DisputeCheckable, now?: number): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* SPEC.md §4.3 (v0.31): `dispute.windowClosesAt` is null until a receipt is
|
|
34
|
+
* countersigned. Read it through this helper instead of `new Date(...)`:
|
|
35
|
+
* `new Date(null)` is 1970-01-01, which a caller could mistake for a real,
|
|
36
|
+
* long-closed window. Returns null for null, missing, or unparseable values
|
|
37
|
+
* (including the "" that pre-v0.31 registries returned for drafts).
|
|
38
|
+
*/
|
|
39
|
+
export declare function disputeWindowClosesAt(receipt: {
|
|
40
|
+
dispute: {
|
|
41
|
+
windowClosesAt?: string | null;
|
|
42
|
+
};
|
|
43
|
+
}): Date | null;
|
|
44
|
+
/** True only while a dispute window exists and hasn't closed yet. A draft has no window, so it's false. */
|
|
45
|
+
export declare function isDisputeWindowOpen(receipt: {
|
|
46
|
+
dispute: {
|
|
47
|
+
windowClosesAt?: string | null;
|
|
48
|
+
};
|
|
49
|
+
}, now?: number): boolean;
|
|
@@ -29,4 +29,23 @@ export function isDisputeActive(receipt, now = Date.now()) {
|
|
|
29
29
|
return true;
|
|
30
30
|
return now < new Date(receipt.dispute.resolutionDeadline).getTime();
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* SPEC.md §4.3 (v0.31): `dispute.windowClosesAt` is null until a receipt is
|
|
34
|
+
* countersigned. Read it through this helper instead of `new Date(...)`:
|
|
35
|
+
* `new Date(null)` is 1970-01-01, which a caller could mistake for a real,
|
|
36
|
+
* long-closed window. Returns null for null, missing, or unparseable values
|
|
37
|
+
* (including the "" that pre-v0.31 registries returned for drafts).
|
|
38
|
+
*/
|
|
39
|
+
export function disputeWindowClosesAt(receipt) {
|
|
40
|
+
const raw = receipt.dispute.windowClosesAt;
|
|
41
|
+
if (!raw)
|
|
42
|
+
return null;
|
|
43
|
+
const date = new Date(raw);
|
|
44
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
45
|
+
}
|
|
46
|
+
/** True only while a dispute window exists and hasn't closed yet. A draft has no window, so it's false. */
|
|
47
|
+
export function isDisputeWindowOpen(receipt, now = Date.now()) {
|
|
48
|
+
const closesAt = disputeWindowClosesAt(receipt);
|
|
49
|
+
return closesAt !== null && now < closesAt.getTime();
|
|
50
|
+
}
|
|
32
51
|
//# sourceMappingURL=disputeLifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disputeLifecycle.js","sourceRoot":"","sources":["../../src/core/disputeLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,MAAM,UAAU,mBAAmB,CAAC,OAAyB,EAAE,SAAiB;IAC9E,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAyB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACjF,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;AACtE,CAAC"}
|
|
1
|
+
{"version":3,"file":"disputeLifecycle.js","sourceRoot":"","sources":["../../src/core/disputeLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,MAAM,UAAU,mBAAmB,CAAC,OAAyB,EAAE,SAAiB;IAC9E,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAyB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACjF,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAwD;IAC5F,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,mBAAmB,CAAC,OAAwD,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACpH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,QAAQ,KAAK,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** RFC 6962 leaf hash: SHA256(0x00 || entry). `entry` is the exact bytes
|
|
2
|
+
* being logged (canonical JSON of the event record). */
|
|
3
|
+
export declare function leafHash(entry: Uint8Array): string;
|
|
4
|
+
/** RFC 6962 MTH(D[0:n]): the root hash over the given leaf hashes. */
|
|
5
|
+
export declare function rootHash(leafHashes: string[]): string;
|
|
6
|
+
/** RFC 6962 PATH(m, D[0:n]): the audit path proving leafHashes[m] is
|
|
7
|
+
* included in the tree over leafHashes[0:n], leaf-to-root order. */
|
|
8
|
+
export declare function inclusionProof(leafHashes: string[], m: number, n?: number): string[];
|
|
9
|
+
/** Verifies an inclusion proof against a claimed root, without needing the
|
|
10
|
+
* full leaf list. Mirrors pathRec's own recursive split so the proof
|
|
11
|
+
* array is consumed in exactly the order it was produced. */
|
|
12
|
+
export declare function verifyInclusion(leafHashHex: string, index: number, treeSize: number, proof: string[], expectedRootHex: string): boolean;
|
|
13
|
+
/** RFC 6962 PROOF(m, D[0:n]): proves the tree at size m is a prefix of the
|
|
14
|
+
* tree at size n (0 < m < n). m === 0 or m === n need no proof (the empty
|
|
15
|
+
* tree is trivially a prefix of anything; a tree is trivially consistent
|
|
16
|
+
* with itself). */
|
|
17
|
+
export declare function consistencyProof(leafHashes: string[], m: number, n?: number): string[];
|
|
18
|
+
/**
|
|
19
|
+
* RFC 6962 §2.1.2 consistency-proof verification (iterative form): proves
|
|
20
|
+
* `oldRoot` (tree of size m) and `newRoot` (tree of size n) describe the
|
|
21
|
+
* same append-only history, i.e. the first m leaves of the n-leaf tree are
|
|
22
|
+
* exactly the m-leaf tree's leaves in the same order -- catching any
|
|
23
|
+
* retroactive edit, reorder, or deletion of a past entry between the two
|
|
24
|
+
* observed roots.
|
|
25
|
+
*/
|
|
26
|
+
export declare function verifyConsistency(m: number, oldRootHex: string, n: number, newRootHex: string, proof: string[]): boolean;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { sha256 } from "@noble/hashes/sha256";
|
|
2
|
+
/**
|
|
3
|
+
* RFC 6962-style append-only Merkle tree (audit round-2 item 6, SPEC.md
|
|
4
|
+
* v0.30, §13). Pure functions over an ordered array of leaf hashes -- no
|
|
5
|
+
* persisted node structure. Both runtimes store one row per logged event
|
|
6
|
+
* (finalize, dispute opened/resolved, non-performance report) and hand the
|
|
7
|
+
* ordered leaf-hash list to these functions on every read; root/proof
|
|
8
|
+
* computation is O(n) per request over this registry's own event volume.
|
|
9
|
+
* ponytail: recompute-on-demand, not a persisted frontier -- upgrade path
|
|
10
|
+
* if a registry's log ever grows large enough to make that measurably slow.
|
|
11
|
+
*
|
|
12
|
+
* Domain separation per RFC 6962 §2.1: a leaf hash and an internal node
|
|
13
|
+
* hash can never collide, because they're prefixed with different single
|
|
14
|
+
* bytes before hashing -- otherwise a malicious log operator could pass off
|
|
15
|
+
* an internal node as if it were a leaf (or vice versa) to fabricate a
|
|
16
|
+
* fraudulent inclusion/consistency proof.
|
|
17
|
+
*/
|
|
18
|
+
const LEAF_PREFIX = Uint8Array.of(0x00);
|
|
19
|
+
const NODE_PREFIX = Uint8Array.of(0x01);
|
|
20
|
+
function concatBytes(...parts) {
|
|
21
|
+
const total = parts.reduce((n, p) => n + p.length, 0);
|
|
22
|
+
const out = new Uint8Array(total);
|
|
23
|
+
let offset = 0;
|
|
24
|
+
for (const p of parts) {
|
|
25
|
+
out.set(p, offset);
|
|
26
|
+
offset += p.length;
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
function hexToBytes(hex) {
|
|
31
|
+
return Uint8Array.from(Buffer.from(hex, "hex"));
|
|
32
|
+
}
|
|
33
|
+
function bytesToHex(bytes) {
|
|
34
|
+
return Buffer.from(bytes).toString("hex");
|
|
35
|
+
}
|
|
36
|
+
function nodeHashBytes(left, right) {
|
|
37
|
+
return sha256(concatBytes(NODE_PREFIX, left, right));
|
|
38
|
+
}
|
|
39
|
+
/** RFC 6962 leaf hash: SHA256(0x00 || entry). `entry` is the exact bytes
|
|
40
|
+
* being logged (canonical JSON of the event record). */
|
|
41
|
+
export function leafHash(entry) {
|
|
42
|
+
return bytesToHex(sha256(concatBytes(LEAF_PREFIX, entry)));
|
|
43
|
+
}
|
|
44
|
+
/** Largest power of two strictly less than n (n > 1). RFC 6962's split
|
|
45
|
+
* point for dividing a subtree of size n into a left power-of-two half
|
|
46
|
+
* and a right remainder. */
|
|
47
|
+
function splitPoint(n) {
|
|
48
|
+
let k = 1;
|
|
49
|
+
while (k * 2 < n)
|
|
50
|
+
k *= 2;
|
|
51
|
+
return k;
|
|
52
|
+
}
|
|
53
|
+
function subtreeHash(leafHashes, start, end) {
|
|
54
|
+
const n = end - start;
|
|
55
|
+
if (n === 1)
|
|
56
|
+
return hexToBytes(leafHashes[start]);
|
|
57
|
+
const k = splitPoint(n);
|
|
58
|
+
return nodeHashBytes(subtreeHash(leafHashes, start, start + k), subtreeHash(leafHashes, start + k, end));
|
|
59
|
+
}
|
|
60
|
+
/** RFC 6962 MTH(D[0:n]): the root hash over the given leaf hashes. */
|
|
61
|
+
export function rootHash(leafHashes) {
|
|
62
|
+
if (leafHashes.length === 0)
|
|
63
|
+
return bytesToHex(sha256(new Uint8Array(0)));
|
|
64
|
+
return bytesToHex(subtreeHash(leafHashes, 0, leafHashes.length));
|
|
65
|
+
}
|
|
66
|
+
/** RFC 6962 PATH(m, D[0:n]): the audit path proving leafHashes[m] is
|
|
67
|
+
* included in the tree over leafHashes[0:n], leaf-to-root order. */
|
|
68
|
+
export function inclusionProof(leafHashes, m, n = leafHashes.length) {
|
|
69
|
+
if (n < 1 || n > leafHashes.length)
|
|
70
|
+
throw new Error("tree size out of range");
|
|
71
|
+
if (m < 0 || m >= n)
|
|
72
|
+
throw new Error("leaf index out of range");
|
|
73
|
+
return pathRec(leafHashes, m, 0, n);
|
|
74
|
+
}
|
|
75
|
+
function pathRec(leafHashes, m, start, end) {
|
|
76
|
+
const n = end - start;
|
|
77
|
+
if (n === 1)
|
|
78
|
+
return [];
|
|
79
|
+
const k = splitPoint(n);
|
|
80
|
+
if (m - start < k) {
|
|
81
|
+
return [...pathRec(leafHashes, m, start, start + k), bytesToHex(subtreeHash(leafHashes, start + k, end))];
|
|
82
|
+
}
|
|
83
|
+
return [...pathRec(leafHashes, m, start + k, end), bytesToHex(subtreeHash(leafHashes, start, start + k))];
|
|
84
|
+
}
|
|
85
|
+
/** Verifies an inclusion proof against a claimed root, without needing the
|
|
86
|
+
* full leaf list. Mirrors pathRec's own recursive split so the proof
|
|
87
|
+
* array is consumed in exactly the order it was produced. */
|
|
88
|
+
export function verifyInclusion(leafHashHex, index, treeSize, proof, expectedRootHex) {
|
|
89
|
+
if (index < 0 || index >= treeSize || treeSize < 1)
|
|
90
|
+
return false;
|
|
91
|
+
const result = verifyPathRec(hexToBytes(leafHashHex), index, 0, treeSize, proof, 0);
|
|
92
|
+
if (!result || result.nextIdx !== proof.length)
|
|
93
|
+
return false;
|
|
94
|
+
return bytesToHex(result.hash) === expectedRootHex;
|
|
95
|
+
}
|
|
96
|
+
function verifyPathRec(leaf, m, start, end, proof, idx) {
|
|
97
|
+
const n = end - start;
|
|
98
|
+
if (n === 1)
|
|
99
|
+
return { hash: leaf, nextIdx: idx };
|
|
100
|
+
const k = splitPoint(n);
|
|
101
|
+
if (m - start < k) {
|
|
102
|
+
const inner = verifyPathRec(leaf, m, start, start + k, proof, idx);
|
|
103
|
+
if (!inner || inner.nextIdx >= proof.length)
|
|
104
|
+
return undefined;
|
|
105
|
+
const sibling = hexToBytes(proof[inner.nextIdx]);
|
|
106
|
+
return { hash: nodeHashBytes(inner.hash, sibling), nextIdx: inner.nextIdx + 1 };
|
|
107
|
+
}
|
|
108
|
+
const inner = verifyPathRec(leaf, m, start + k, end, proof, idx);
|
|
109
|
+
if (!inner || inner.nextIdx >= proof.length)
|
|
110
|
+
return undefined;
|
|
111
|
+
const sibling = hexToBytes(proof[inner.nextIdx]);
|
|
112
|
+
return { hash: nodeHashBytes(sibling, inner.hash), nextIdx: inner.nextIdx + 1 };
|
|
113
|
+
}
|
|
114
|
+
/** RFC 6962 PROOF(m, D[0:n]): proves the tree at size m is a prefix of the
|
|
115
|
+
* tree at size n (0 < m < n). m === 0 or m === n need no proof (the empty
|
|
116
|
+
* tree is trivially a prefix of anything; a tree is trivially consistent
|
|
117
|
+
* with itself). */
|
|
118
|
+
export function consistencyProof(leafHashes, m, n = leafHashes.length) {
|
|
119
|
+
if (n < 0 || n > leafHashes.length || m < 0 || m > n)
|
|
120
|
+
throw new Error("range out of bounds");
|
|
121
|
+
if (m === 0 || m === n)
|
|
122
|
+
return [];
|
|
123
|
+
return subProofRec(leafHashes, m, 0, n, true);
|
|
124
|
+
}
|
|
125
|
+
function subProofRec(leafHashes, m, start, end, b) {
|
|
126
|
+
const n = end - start;
|
|
127
|
+
if (m === n) {
|
|
128
|
+
return b ? [] : [bytesToHex(subtreeHash(leafHashes, start, end))];
|
|
129
|
+
}
|
|
130
|
+
const k = splitPoint(n);
|
|
131
|
+
if (m <= k) {
|
|
132
|
+
return [...subProofRec(leafHashes, m, start, start + k, b), bytesToHex(subtreeHash(leafHashes, start + k, end))];
|
|
133
|
+
}
|
|
134
|
+
return [...subProofRec(leafHashes, m - k, start + k, end, false), bytesToHex(subtreeHash(leafHashes, start, start + k))];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* RFC 6962 §2.1.2 consistency-proof verification (iterative form): proves
|
|
138
|
+
* `oldRoot` (tree of size m) and `newRoot` (tree of size n) describe the
|
|
139
|
+
* same append-only history, i.e. the first m leaves of the n-leaf tree are
|
|
140
|
+
* exactly the m-leaf tree's leaves in the same order -- catching any
|
|
141
|
+
* retroactive edit, reorder, or deletion of a past entry between the two
|
|
142
|
+
* observed roots.
|
|
143
|
+
*/
|
|
144
|
+
export function verifyConsistency(m, oldRootHex, n, newRootHex, proof) {
|
|
145
|
+
if (m < 0 || n < 0 || m > n)
|
|
146
|
+
return false;
|
|
147
|
+
if (m === n)
|
|
148
|
+
return proof.length === 0 && oldRootHex === newRootHex;
|
|
149
|
+
if (m === 0)
|
|
150
|
+
return true; // the empty tree is consistent with any tree
|
|
151
|
+
if (proof.length === 0)
|
|
152
|
+
return false;
|
|
153
|
+
let fn = m - 1;
|
|
154
|
+
let sn = n - 1;
|
|
155
|
+
while (fn % 2 === 1) {
|
|
156
|
+
fn = Math.floor(fn / 2);
|
|
157
|
+
sn = Math.floor(sn / 2);
|
|
158
|
+
}
|
|
159
|
+
let idx = 0;
|
|
160
|
+
let oldFr;
|
|
161
|
+
let newFr;
|
|
162
|
+
if (fn > 0) {
|
|
163
|
+
if (idx >= proof.length)
|
|
164
|
+
return false;
|
|
165
|
+
oldFr = newFr = hexToBytes(proof[idx++]);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
oldFr = newFr = hexToBytes(oldRootHex);
|
|
169
|
+
}
|
|
170
|
+
while (sn > 0) {
|
|
171
|
+
if (idx >= proof.length)
|
|
172
|
+
return false;
|
|
173
|
+
const p = hexToBytes(proof[idx++]);
|
|
174
|
+
if (fn % 2 === 1 || fn === sn) {
|
|
175
|
+
oldFr = nodeHashBytes(p, oldFr);
|
|
176
|
+
newFr = nodeHashBytes(p, newFr);
|
|
177
|
+
while (fn % 2 === 0 && fn !== 0) {
|
|
178
|
+
fn = Math.floor(fn / 2);
|
|
179
|
+
sn = Math.floor(sn / 2);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
newFr = nodeHashBytes(newFr, p);
|
|
184
|
+
}
|
|
185
|
+
fn = Math.floor(fn / 2);
|
|
186
|
+
sn = Math.floor(sn / 2);
|
|
187
|
+
}
|
|
188
|
+
return idx === proof.length && bytesToHex(oldFr) === oldRootHex && bytesToHex(newFr) === newRootHex;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=merkleLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkleLog.js","sourceRoot":"","sources":["../../src/core/merkleLog.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export function buildSignableContent(agentAId, agentBId, input) {
|
|
|
33
33
|
result: input.result,
|
|
34
34
|
settlement: input.settlement,
|
|
35
35
|
verification: input.verification,
|
|
36
|
-
dispute: { status: "none", windowClosesAt:
|
|
36
|
+
dispute: { status: "none", windowClosesAt: null }, // placeholder; every signer and verifier strips `dispute` before signing
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
//# sourceMappingURL=receiptContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiptContent.js","sourceRoot":"","sources":["../../src/core/receiptContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkB9C;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAA0B;IAC7F,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC;IACF,OAAO,UAAU,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAAgB,EAChB,KAA0B;IAE1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO;QACL,cAAc,EAAE,KAAK;QACrB,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"receiptContent.js","sourceRoot":"","sources":["../../src/core/receiptContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkB9C;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAA0B;IAC7F,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC;IACF,OAAO,UAAU,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAAgB,EAChB,KAA0B;IAE1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO;QACL,cAAc,EAAE,KAAK;QACrB,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,yEAAyE;KAC7H,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append-only transparency log (audit round-2 item 6, SPEC.md v0.30, §13).
|
|
3
|
+
* One entry per receipt-lifecycle event that changes what a receipt or job
|
|
4
|
+
* asserts happened: finalize, dispute open/resolve, non-performance report.
|
|
5
|
+
* Not job postings/offers -- receipts are the trust-bearing artifact (§4).
|
|
6
|
+
*
|
|
7
|
+
* The entry's canonical JSON bytes ARE what gets hashed into the log (via
|
|
8
|
+
* merkleLog.ts's leafHash), so the same event logged by either runtime
|
|
9
|
+
* produces byte-identical leaves -- the same "one source of truth across
|
|
10
|
+
* runtimes" discipline as every other shared core module.
|
|
11
|
+
*/
|
|
12
|
+
export type TransparencyEntryType = "receipt_finalized" | "dispute_opened" | "dispute_resolved" | "nonperformance_reported";
|
|
13
|
+
export interface TransparencyEntryInput {
|
|
14
|
+
entryType: TransparencyEntryType;
|
|
15
|
+
refId: string;
|
|
16
|
+
timestamp: string;
|
|
17
|
+
data: unknown;
|
|
18
|
+
}
|
|
19
|
+
export declare function buildLogEntry(input: TransparencyEntryInput): {
|
|
20
|
+
canonicalEntry: string;
|
|
21
|
+
leafHash: string;
|
|
22
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { canonicalize } from "../crypto/canonical.js";
|
|
2
|
+
import { leafHash } from "./merkleLog.js";
|
|
3
|
+
export function buildLogEntry(input) {
|
|
4
|
+
const canonicalEntry = canonicalize(input);
|
|
5
|
+
return { canonicalEntry, leafHash: leafHash(new TextEncoder().encode(canonicalEntry)) };
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=transparencyLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transparencyLog.js","sourceRoot":"","sources":["../../src/core/transparencyLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAsB1C,MAAM,UAAU,aAAa,CAAC,KAA6B;IACzD,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;AAC1F,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ export { generateP256Keypair, p256Sign, p256Verify, type P256Keypair } from "./c
|
|
|
4
4
|
export { generateSecp256k1Keypair, secp256k1Sign, secp256k1Verify, ethAddressFromUncompressedPublicKey, ethPersonalSignDigest, type Secp256k1Keypair, } from "./crypto/secp256k1.js";
|
|
5
5
|
export { canonicalize } from "./crypto/canonical.js";
|
|
6
6
|
export { computeReceiptId, buildSignableContent, type ReceiptContentInput } from "./core/receiptContent.js";
|
|
7
|
+
export { disputeWindowClosesAt, isDisputeWindowOpen } from "./core/disputeLifecycle.js";
|
|
7
8
|
export { computeVerificationId, buildSignableVerificationContent, type VerificationContentInput } from "./core/verificationContent.js";
|
|
9
|
+
export { verifyInclusion, verifyConsistency } from "./core/merkleLog.js";
|
|
10
|
+
export { type TransparencyEntryType } from "./core/transparencyLog.js";
|
|
8
11
|
export { registerAgentSchema, linkChallengeSchema, linkSchema, postJobSchema, offerSchema, acceptOfferSchema, draftReceiptSchema, countersignSchema, disputeSchema, submitVerificationSchema, setVerifierStatusSchema, } from "./core/schemas.js";
|
|
9
12
|
export type { LinkedIdentities, ExternalKeyType, LinkChallenge, AgentRecord, VerificationMethod, ReceiptOutcome, ReceiptStatus, DisputeStatus, ExecutionReceipt, SignableReceiptContent, ReputationComponents, ReputationRoleBreakdown, ReputationResult, JobStatus, JobOffer, JobRecord, IndependentVerificationMethod, VerificationResult, VerificationRecord, } from "./types.js";
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,15 @@ export { generateP256Keypair, p256Sign, p256Verify } from "./crypto/p256.js";
|
|
|
4
4
|
export { generateSecp256k1Keypair, secp256k1Sign, secp256k1Verify, ethAddressFromUncompressedPublicKey, ethPersonalSignDigest, } from "./crypto/secp256k1.js";
|
|
5
5
|
export { canonicalize } from "./crypto/canonical.js";
|
|
6
6
|
export { computeReceiptId, buildSignableContent } from "./core/receiptContent.js";
|
|
7
|
+
// Dispute-window helpers (SPEC.md §4.3, v0.31). Use these instead of
|
|
8
|
+
// new Date(receipt.dispute.windowClosesAt): the field is null on drafts.
|
|
9
|
+
export { disputeWindowClosesAt, isDisputeWindowOpen } from "./core/disputeLifecycle.js";
|
|
7
10
|
export { computeVerificationId, buildSignableVerificationContent } from "./core/verificationContent.js";
|
|
11
|
+
// Transparency log (audit round-2 item 6, RFC 6962-style Merkle log): pure
|
|
12
|
+
// verification functions, so a caller can verify an inclusion/consistency
|
|
13
|
+
// proof returned by InamClient's transparency methods itself, without
|
|
14
|
+
// trusting the registry's own arithmetic.
|
|
15
|
+
export { verifyInclusion, verifyConsistency } from "./core/merkleLog.js";
|
|
8
16
|
// Request-body validation schemas — shared by the Node reference server and
|
|
9
17
|
// the Cloudflare Worker so both accept/reject the exact same requests (see
|
|
10
18
|
// core/schemas.ts's own header comment for why this exists). Exported
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,GAER,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,mCAAmC,EACnC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAE5G,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAEvI,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,GAER,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,mCAAmC,EACnC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAE5G,qEAAqE;AACrE,yEAAyE;AACzE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAEvI,2EAA2E;AAC3E,0EAA0E;AAC1E,sEAAsE;AACtE,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -113,7 +113,8 @@ export interface ExecutionReceipt {
|
|
|
113
113
|
dispute: {
|
|
114
114
|
status: DisputeStatus;
|
|
115
115
|
reason?: string;
|
|
116
|
-
|
|
116
|
+
/** null while the receipt is a draft; set when it is countersigned (SPEC §4.3). */
|
|
117
|
+
windowClosesAt: string | null;
|
|
117
118
|
openedBy?: string;
|
|
118
119
|
resolvedAt?: string;
|
|
119
120
|
resolution?: string;
|
|
@@ -141,7 +142,7 @@ export interface ExecutionReceipt {
|
|
|
141
142
|
export type SignableReceiptContent = Omit<ExecutionReceipt, "signatures" | "status" | "dispute"> & {
|
|
142
143
|
dispute: {
|
|
143
144
|
status: "none";
|
|
144
|
-
windowClosesAt:
|
|
145
|
+
windowClosesAt: null;
|
|
145
146
|
};
|
|
146
147
|
};
|
|
147
148
|
/** Weighted receipt count/success-rate/volume for one side of an agent's
|
package/package.json
CHANGED