@fluxpointstudios/orynq-sdk-midnight-prover 0.1.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/LICENSE +21 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -0
- package/dist/linking/cardano-anchor-link.d.ts +250 -0
- package/dist/linking/cardano-anchor-link.d.ts.map +1 -0
- package/dist/linking/cardano-anchor-link.js +447 -0
- package/dist/linking/cardano-anchor-link.js.map +1 -0
- package/dist/linking/index.d.ts +33 -0
- package/dist/linking/index.d.ts.map +1 -0
- package/dist/linking/index.js +31 -0
- package/dist/linking/index.js.map +1 -0
- package/dist/linking/proof-publication.d.ts +217 -0
- package/dist/linking/proof-publication.d.ts.map +1 -0
- package/dist/linking/proof-publication.js +385 -0
- package/dist/linking/proof-publication.js.map +1 -0
- package/dist/midnight/index.d.ts +30 -0
- package/dist/midnight/index.d.ts.map +1 -0
- package/dist/midnight/index.js +27 -0
- package/dist/midnight/index.js.map +1 -0
- package/dist/midnight/proof-server-client.d.ts +236 -0
- package/dist/midnight/proof-server-client.d.ts.map +1 -0
- package/dist/midnight/proof-server-client.js +422 -0
- package/dist/midnight/proof-server-client.js.map +1 -0
- package/dist/midnight/public-inputs.d.ts +134 -0
- package/dist/midnight/public-inputs.d.ts.map +1 -0
- package/dist/midnight/public-inputs.js +338 -0
- package/dist/midnight/public-inputs.js.map +1 -0
- package/dist/midnight/witness-builder.d.ts +119 -0
- package/dist/midnight/witness-builder.d.ts.map +1 -0
- package/dist/midnight/witness-builder.js +238 -0
- package/dist/midnight/witness-builder.js.map +1 -0
- package/dist/proofs/hash-chain-proof.d.ts +171 -0
- package/dist/proofs/hash-chain-proof.d.ts.map +1 -0
- package/dist/proofs/hash-chain-proof.js +437 -0
- package/dist/proofs/hash-chain-proof.js.map +1 -0
- package/dist/proofs/index.d.ts +35 -0
- package/dist/proofs/index.d.ts.map +1 -0
- package/dist/proofs/index.js +34 -0
- package/dist/proofs/index.js.map +1 -0
- package/dist/proofs/policy-compliance-proof.d.ts +165 -0
- package/dist/proofs/policy-compliance-proof.d.ts.map +1 -0
- package/dist/proofs/policy-compliance-proof.js +514 -0
- package/dist/proofs/policy-compliance-proof.js.map +1 -0
- package/dist/proofs/selective-disclosure.d.ts +213 -0
- package/dist/proofs/selective-disclosure.d.ts.map +1 -0
- package/dist/proofs/selective-disclosure.js +629 -0
- package/dist/proofs/selective-disclosure.js.map +1 -0
- package/dist/prover-interface.d.ts +288 -0
- package/dist/prover-interface.d.ts.map +1 -0
- package/dist/prover-interface.js +114 -0
- package/dist/prover-interface.js.map +1 -0
- package/dist/prover.d.ts +163 -0
- package/dist/prover.d.ts.map +1 -0
- package/dist/prover.js +417 -0
- package/dist/prover.js.map +1 -0
- package/dist/types.d.ts +410 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +128 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
- package/src/__tests__/hash-chain-proof.test.ts +709 -0
- package/src/__tests__/midnight-prover.test.ts +716 -0
- package/src/__tests__/policy-compliance.test.ts +567 -0
- package/src/__tests__/proof-publication.test.ts +644 -0
- package/src/__tests__/selective-disclosure.test.ts +921 -0
- package/src/index.ts +260 -0
- package/src/linking/cardano-anchor-link.ts +682 -0
- package/src/linking/index.ts +58 -0
- package/src/linking/proof-publication.ts +557 -0
- package/src/midnight/index.ts +73 -0
- package/src/midnight/proof-server-client.ts +595 -0
- package/src/midnight/public-inputs.ts +590 -0
- package/src/midnight/witness-builder.ts +341 -0
- package/src/proofs/hash-chain-proof.ts +610 -0
- package/src/proofs/index.ts +77 -0
- package/src/proofs/policy-compliance-proof.ts +717 -0
- package/src/proofs/selective-disclosure.ts +839 -0
- package/src/prover-interface.ts +410 -0
- package/src/prover.ts +537 -0
- package/src/types.ts +551 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Cross-chain linking between Midnight proofs and Cardano anchors.
|
|
3
|
+
*
|
|
4
|
+
* Location: packages/midnight-prover/src/linking/cardano-anchor-link.ts
|
|
5
|
+
*
|
|
6
|
+
* Summary:
|
|
7
|
+
* This module implements the CardanoAnchorLinker class which creates and verifies
|
|
8
|
+
* bidirectional links between ZK proofs on Midnight and anchor transactions on Cardano.
|
|
9
|
+
* These links enable cross-chain verification of PoI traces.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* - Used after proof publication to establish cross-chain references
|
|
13
|
+
* - Integrates with poi-anchors-cardano for anchor verification
|
|
14
|
+
* - Enables verification that a Midnight proof corresponds to a specific Cardano anchor
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { CardanoAnchorLinker } from './cardano-anchor-link.js';
|
|
19
|
+
*
|
|
20
|
+
* const linker = new CardanoAnchorLinker();
|
|
21
|
+
*
|
|
22
|
+
* const link = linker.linkToAnchor(proof, cardanoTxHash);
|
|
23
|
+
* console.log('Cross-chain link created:', link.linkId);
|
|
24
|
+
*
|
|
25
|
+
* const isValid = await linker.verifyLink(link);
|
|
26
|
+
* console.log('Link valid:', isValid);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import { MidnightProverError, MidnightProverException, isHashChainProof, isPolicyProof, isAttestationProof, isDisclosureProof, isInferenceProof, } from "../types.js";
|
|
30
|
+
import { canonicalize } from "@fluxpointstudios/orynq-sdk-core/utils";
|
|
31
|
+
/**
|
|
32
|
+
* Domain separation prefixes for link operations.
|
|
33
|
+
*/
|
|
34
|
+
const LINK_DOMAIN_PREFIXES = {
|
|
35
|
+
linkId: "poi-link:id:v1|",
|
|
36
|
+
commitment: "poi-link:commitment:v1|",
|
|
37
|
+
publicInputs: "poi-link:public-inputs:v1|",
|
|
38
|
+
};
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// CARDANO ANCHOR LINKER
|
|
41
|
+
// =============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* CardanoAnchorLinker creates and verifies cross-chain links.
|
|
44
|
+
*
|
|
45
|
+
* This class provides:
|
|
46
|
+
* - Creation of bidirectional links between Midnight proofs and Cardano anchors
|
|
47
|
+
* - Cryptographic commitment generation for link verification
|
|
48
|
+
* - Link verification against both chains
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const linker = new CardanoAnchorLinker({ debug: true });
|
|
53
|
+
*
|
|
54
|
+
* // Create a link after proof publication
|
|
55
|
+
* const link = linker.linkToAnchor(proof, cardanoTxHash);
|
|
56
|
+
*
|
|
57
|
+
* // Verify the link
|
|
58
|
+
* const result = await linker.verifyLink(link);
|
|
59
|
+
* if (result.valid) {
|
|
60
|
+
* console.log('Cross-chain link verified');
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export class CardanoAnchorLinker {
|
|
65
|
+
options;
|
|
66
|
+
// Cache for created links
|
|
67
|
+
linkCache = new Map();
|
|
68
|
+
/**
|
|
69
|
+
* Create a new CardanoAnchorLinker instance.
|
|
70
|
+
*
|
|
71
|
+
* @param options - Configuration options
|
|
72
|
+
*/
|
|
73
|
+
constructor(options = {}) {
|
|
74
|
+
this.options = {
|
|
75
|
+
debug: options.debug ?? false,
|
|
76
|
+
cardanoVerifier: options.cardanoVerifier ?? this.mockCardanoVerifier,
|
|
77
|
+
midnightVerifier: options.midnightVerifier ?? this.mockMidnightVerifier,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create a cross-chain link between a proof and a Cardano anchor.
|
|
82
|
+
*
|
|
83
|
+
* This method:
|
|
84
|
+
* 1. Extracts relevant data from the proof
|
|
85
|
+
* 2. Generates a unique link ID
|
|
86
|
+
* 3. Creates a cryptographic commitment binding both chains
|
|
87
|
+
* 4. Returns the complete cross-chain link
|
|
88
|
+
*
|
|
89
|
+
* @param proof - The Midnight proof to link
|
|
90
|
+
* @param cardanoTxHash - The Cardano anchor transaction hash
|
|
91
|
+
* @param midnightTxHash - Optional Midnight transaction hash (if already published)
|
|
92
|
+
* @returns The cross-chain link
|
|
93
|
+
*/
|
|
94
|
+
linkToAnchor(proof, cardanoTxHash, midnightTxHash) {
|
|
95
|
+
this.debug(`Creating cross-chain link for proof ${proof.proofId}`);
|
|
96
|
+
// Validate inputs
|
|
97
|
+
this.validateProof(proof);
|
|
98
|
+
this.validateTxHash(cardanoTxHash, "Cardano");
|
|
99
|
+
if (midnightTxHash) {
|
|
100
|
+
this.validateTxHash(midnightTxHash, "Midnight");
|
|
101
|
+
}
|
|
102
|
+
// Extract public inputs hash and anchored root hash
|
|
103
|
+
const { publicInputsHash, anchoredRootHash } = this.extractProofData(proof);
|
|
104
|
+
// Verify that the proof's cardanoAnchorTxHash matches the provided one
|
|
105
|
+
const proofCardanoTxHash = this.extractCardanoAnchorTxHash(proof);
|
|
106
|
+
if (normalizeHash(proofCardanoTxHash) !== normalizeHash(cardanoTxHash)) {
|
|
107
|
+
throw new MidnightProverException(MidnightProverError.HASH_MISMATCH, `Proof's cardanoAnchorTxHash (${proofCardanoTxHash}) does not match provided cardanoTxHash (${cardanoTxHash})`);
|
|
108
|
+
}
|
|
109
|
+
// Generate link ID
|
|
110
|
+
const linkId = this.generateLinkId(proof.proofId, cardanoTxHash);
|
|
111
|
+
// Generate link commitment
|
|
112
|
+
const linkCommitment = this.generateLinkCommitmentSync(proof.proofId, cardanoTxHash, publicInputsHash, anchoredRootHash);
|
|
113
|
+
const link = {
|
|
114
|
+
linkId,
|
|
115
|
+
version: "1.0.0",
|
|
116
|
+
midnightProofId: proof.proofId,
|
|
117
|
+
midnightTxHash,
|
|
118
|
+
proofType: proof.proofType,
|
|
119
|
+
publicInputsHash,
|
|
120
|
+
cardanoAnchorTxHash: normalizeHash(cardanoTxHash),
|
|
121
|
+
anchoredRootHash,
|
|
122
|
+
createdAt: new Date().toISOString(),
|
|
123
|
+
linkCommitment,
|
|
124
|
+
};
|
|
125
|
+
// Cache the link
|
|
126
|
+
this.linkCache.set(linkId, link);
|
|
127
|
+
this.debug(`Cross-chain link created: ${linkId}`);
|
|
128
|
+
return link;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Verify a cross-chain link.
|
|
132
|
+
*
|
|
133
|
+
* This method verifies:
|
|
134
|
+
* 1. Link structure and format
|
|
135
|
+
* 2. Link commitment integrity
|
|
136
|
+
* 3. Midnight proof existence (if verifier provided)
|
|
137
|
+
* 4. Cardano anchor existence (if verifier provided)
|
|
138
|
+
*
|
|
139
|
+
* @param link - The cross-chain link to verify
|
|
140
|
+
* @returns Promise resolving to the verification result
|
|
141
|
+
*/
|
|
142
|
+
async verifyLink(link) {
|
|
143
|
+
this.debug(`Verifying cross-chain link: ${link.linkId}`);
|
|
144
|
+
const errors = [];
|
|
145
|
+
const warnings = [];
|
|
146
|
+
let midnightVerified = false;
|
|
147
|
+
let cardanoVerified = false;
|
|
148
|
+
let commitmentVerified = false;
|
|
149
|
+
// Verify link structure
|
|
150
|
+
const structureErrors = this.validateLinkStructure(link);
|
|
151
|
+
errors.push(...structureErrors);
|
|
152
|
+
if (structureErrors.length === 0) {
|
|
153
|
+
// Verify commitment
|
|
154
|
+
const expectedCommitment = this.generateLinkCommitmentSync(link.midnightProofId, link.cardanoAnchorTxHash, link.publicInputsHash, link.anchoredRootHash);
|
|
155
|
+
if (expectedCommitment === link.linkCommitment) {
|
|
156
|
+
commitmentVerified = true;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
errors.push("Link commitment does not match");
|
|
160
|
+
}
|
|
161
|
+
// Verify Midnight proof
|
|
162
|
+
try {
|
|
163
|
+
midnightVerified = await this.options.midnightVerifier(link.midnightProofId, link.midnightTxHash);
|
|
164
|
+
if (!midnightVerified) {
|
|
165
|
+
warnings.push("Midnight proof could not be verified on-chain");
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
warnings.push(`Midnight verification error: ${String(error)}`);
|
|
170
|
+
}
|
|
171
|
+
// Verify Cardano anchor
|
|
172
|
+
try {
|
|
173
|
+
cardanoVerified = await this.options.cardanoVerifier(link.cardanoAnchorTxHash);
|
|
174
|
+
if (!cardanoVerified) {
|
|
175
|
+
warnings.push("Cardano anchor could not be verified on-chain");
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
warnings.push(`Cardano verification error: ${String(error)}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const valid = errors.length === 0 && commitmentVerified;
|
|
183
|
+
const result = {
|
|
184
|
+
valid,
|
|
185
|
+
linkId: link.linkId,
|
|
186
|
+
errors,
|
|
187
|
+
warnings,
|
|
188
|
+
verifiedAt: new Date().toISOString(),
|
|
189
|
+
midnightVerified,
|
|
190
|
+
cardanoVerified,
|
|
191
|
+
commitmentVerified,
|
|
192
|
+
};
|
|
193
|
+
this.debug(`Link verification result: ${valid ? "VALID" : "INVALID"}`);
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get a cached link by ID.
|
|
198
|
+
*
|
|
199
|
+
* @param linkId - The link identifier
|
|
200
|
+
* @returns The cached link or undefined
|
|
201
|
+
*/
|
|
202
|
+
getCachedLink(linkId) {
|
|
203
|
+
return this.linkCache.get(linkId);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get a link by proof ID.
|
|
207
|
+
*
|
|
208
|
+
* @param proofId - The proof identifier
|
|
209
|
+
* @returns The cached link or undefined
|
|
210
|
+
*/
|
|
211
|
+
getLinkByProofId(proofId) {
|
|
212
|
+
for (const link of this.linkCache.values()) {
|
|
213
|
+
if (link.midnightProofId === proofId) {
|
|
214
|
+
return link;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get all links for a Cardano anchor.
|
|
221
|
+
*
|
|
222
|
+
* @param cardanoTxHash - The Cardano transaction hash
|
|
223
|
+
* @returns Array of links for this anchor
|
|
224
|
+
*/
|
|
225
|
+
getLinksByCardanoAnchor(cardanoTxHash) {
|
|
226
|
+
const normalizedHash = normalizeHash(cardanoTxHash);
|
|
227
|
+
const links = [];
|
|
228
|
+
for (const link of this.linkCache.values()) {
|
|
229
|
+
if (normalizeHash(link.cardanoAnchorTxHash) === normalizedHash) {
|
|
230
|
+
links.push(link);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return links;
|
|
234
|
+
}
|
|
235
|
+
// ===========================================================================
|
|
236
|
+
// PRIVATE METHODS
|
|
237
|
+
// ===========================================================================
|
|
238
|
+
/**
|
|
239
|
+
* Validate a proof for linking.
|
|
240
|
+
*/
|
|
241
|
+
validateProof(proof) {
|
|
242
|
+
if (!proof.proofId) {
|
|
243
|
+
throw new MidnightProverException(MidnightProverError.INVALID_INPUT, "Proof ID is required");
|
|
244
|
+
}
|
|
245
|
+
if (!proof.proofType) {
|
|
246
|
+
throw new MidnightProverException(MidnightProverError.INVALID_INPUT, "Proof type is required");
|
|
247
|
+
}
|
|
248
|
+
if (!proof.proof || proof.proof.length === 0) {
|
|
249
|
+
throw new MidnightProverException(MidnightProverError.INVALID_PROOF_FORMAT, "Proof data is empty");
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Validate a transaction hash.
|
|
254
|
+
*/
|
|
255
|
+
validateTxHash(txHash, chainName) {
|
|
256
|
+
const normalized = normalizeHash(txHash);
|
|
257
|
+
if (!/^[0-9a-f]{64}$/.test(normalized)) {
|
|
258
|
+
throw new MidnightProverException(MidnightProverError.INVALID_INPUT, `Invalid ${chainName} transaction hash format: ${txHash}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Validate link structure.
|
|
263
|
+
*/
|
|
264
|
+
validateLinkStructure(link) {
|
|
265
|
+
const errors = [];
|
|
266
|
+
if (!link.linkId) {
|
|
267
|
+
errors.push("Missing linkId");
|
|
268
|
+
}
|
|
269
|
+
if (link.version !== "1.0.0") {
|
|
270
|
+
errors.push(`Unknown link version: ${link.version}`);
|
|
271
|
+
}
|
|
272
|
+
if (!link.midnightProofId) {
|
|
273
|
+
errors.push("Missing midnightProofId");
|
|
274
|
+
}
|
|
275
|
+
if (!link.proofType) {
|
|
276
|
+
errors.push("Missing proofType");
|
|
277
|
+
}
|
|
278
|
+
if (!link.publicInputsHash || !/^[0-9a-f]{64}$/i.test(link.publicInputsHash)) {
|
|
279
|
+
errors.push("Invalid publicInputsHash format");
|
|
280
|
+
}
|
|
281
|
+
if (!link.cardanoAnchorTxHash || !/^[0-9a-f]{64}$/i.test(link.cardanoAnchorTxHash)) {
|
|
282
|
+
errors.push("Invalid cardanoAnchorTxHash format");
|
|
283
|
+
}
|
|
284
|
+
if (!link.anchoredRootHash || !/^[0-9a-f]{64}$/i.test(link.anchoredRootHash)) {
|
|
285
|
+
errors.push("Invalid anchoredRootHash format");
|
|
286
|
+
}
|
|
287
|
+
if (!link.linkCommitment || !/^[0-9a-f]{64}$/i.test(link.linkCommitment)) {
|
|
288
|
+
errors.push("Invalid linkCommitment format");
|
|
289
|
+
}
|
|
290
|
+
if (!link.createdAt) {
|
|
291
|
+
errors.push("Missing createdAt timestamp");
|
|
292
|
+
}
|
|
293
|
+
return errors;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Extract data from proof for linking.
|
|
297
|
+
*/
|
|
298
|
+
extractProofData(proof) {
|
|
299
|
+
let publicInputsData;
|
|
300
|
+
let anchoredRootHash;
|
|
301
|
+
if (isHashChainProof(proof)) {
|
|
302
|
+
const p = proof;
|
|
303
|
+
publicInputsData = p.publicInputs;
|
|
304
|
+
anchoredRootHash = p.publicInputs.rootHash;
|
|
305
|
+
}
|
|
306
|
+
else if (isPolicyProof(proof)) {
|
|
307
|
+
const p = proof;
|
|
308
|
+
publicInputsData = p.publicInputs;
|
|
309
|
+
// For policy proofs, use promptHash as the "root"
|
|
310
|
+
anchoredRootHash = p.publicInputs.promptHash;
|
|
311
|
+
}
|
|
312
|
+
else if (isAttestationProof(proof)) {
|
|
313
|
+
const p = proof;
|
|
314
|
+
publicInputsData = p.publicInputs;
|
|
315
|
+
anchoredRootHash = p.publicInputs.boundHash;
|
|
316
|
+
}
|
|
317
|
+
else if (isDisclosureProof(proof)) {
|
|
318
|
+
const p = proof;
|
|
319
|
+
publicInputsData = p.publicInputs;
|
|
320
|
+
anchoredRootHash = p.publicInputs.merkleRoot;
|
|
321
|
+
}
|
|
322
|
+
else if (isInferenceProof(proof)) {
|
|
323
|
+
const p = proof;
|
|
324
|
+
publicInputsData = p.publicInputs;
|
|
325
|
+
anchoredRootHash = p.publicInputs.modelWeightDigest;
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
throw new MidnightProverException(MidnightProverError.INVALID_INPUT, `Unknown proof type: ${proof.proofType}`);
|
|
329
|
+
}
|
|
330
|
+
// Hash public inputs
|
|
331
|
+
const publicInputsHash = this.hashPublicInputsSync(publicInputsData);
|
|
332
|
+
return { publicInputsHash, anchoredRootHash };
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Extract Cardano anchor transaction hash from proof.
|
|
336
|
+
*/
|
|
337
|
+
extractCardanoAnchorTxHash(proof) {
|
|
338
|
+
const anyProof = proof;
|
|
339
|
+
const txHash = anyProof.publicInputs?.cardanoAnchorTxHash;
|
|
340
|
+
if (!txHash) {
|
|
341
|
+
throw new MidnightProverException(MidnightProverError.MISSING_REQUIRED_FIELD, "Proof must have cardanoAnchorTxHash in public inputs");
|
|
342
|
+
}
|
|
343
|
+
return txHash;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Generate a unique link ID.
|
|
347
|
+
*/
|
|
348
|
+
generateLinkId(proofId, cardanoTxHash) {
|
|
349
|
+
// Simple hash-based link ID
|
|
350
|
+
const input = LINK_DOMAIN_PREFIXES.linkId + proofId + "|" + normalizeHash(cardanoTxHash);
|
|
351
|
+
// Use synchronous generation for now (matches existing pattern)
|
|
352
|
+
return `link-${this.simpleHash(input).slice(0, 16)}`;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Generate link commitment synchronously.
|
|
356
|
+
*/
|
|
357
|
+
generateLinkCommitmentSync(proofId, cardanoTxHash, publicInputsHash, anchoredRootHash) {
|
|
358
|
+
const input = canonicalize({
|
|
359
|
+
domain: LINK_DOMAIN_PREFIXES.commitment,
|
|
360
|
+
proofId,
|
|
361
|
+
cardanoTxHash: normalizeHash(cardanoTxHash),
|
|
362
|
+
publicInputsHash,
|
|
363
|
+
anchoredRootHash,
|
|
364
|
+
});
|
|
365
|
+
return this.simpleHash(input);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Hash public inputs synchronously.
|
|
369
|
+
*/
|
|
370
|
+
hashPublicInputsSync(publicInputs) {
|
|
371
|
+
const input = LINK_DOMAIN_PREFIXES.publicInputs + canonicalize(publicInputs);
|
|
372
|
+
return this.simpleHash(input);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Simple synchronous hash function (for use in sync contexts).
|
|
376
|
+
* Uses a deterministic algorithm suitable for identifiers.
|
|
377
|
+
*/
|
|
378
|
+
simpleHash(input) {
|
|
379
|
+
// Simple hash implementation for sync contexts
|
|
380
|
+
// In production, this would use a proper hash function
|
|
381
|
+
let hash = 0x811c9dc5; // FNV offset basis
|
|
382
|
+
for (let i = 0; i < input.length; i++) {
|
|
383
|
+
hash ^= input.charCodeAt(i);
|
|
384
|
+
hash = Math.imul(hash, 0x01000193); // FNV prime
|
|
385
|
+
}
|
|
386
|
+
// Generate a 64-char hex string by repeating the process
|
|
387
|
+
let result = "";
|
|
388
|
+
let state = hash;
|
|
389
|
+
for (let j = 0; j < 8; j++) {
|
|
390
|
+
for (let i = 0; i < input.length; i++) {
|
|
391
|
+
state ^= input.charCodeAt((i + j * 7) % input.length);
|
|
392
|
+
state = Math.imul(state, 0x01000193);
|
|
393
|
+
}
|
|
394
|
+
result += (state >>> 0).toString(16).padStart(8, "0");
|
|
395
|
+
}
|
|
396
|
+
return result;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Mock Cardano verifier (always returns true for valid hashes).
|
|
400
|
+
*/
|
|
401
|
+
mockCardanoVerifier = async (txHash) => {
|
|
402
|
+
// Simulate network delay
|
|
403
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
404
|
+
// In mock mode, accept any valid-looking hash
|
|
405
|
+
return /^[0-9a-f]{64}$/i.test(normalizeHash(txHash));
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
* Mock Midnight verifier (always returns true for non-empty proof IDs).
|
|
409
|
+
*/
|
|
410
|
+
mockMidnightVerifier = async (proofId, _txHash) => {
|
|
411
|
+
// Simulate network delay
|
|
412
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
413
|
+
// In mock mode, accept any non-empty proof ID
|
|
414
|
+
return proofId.length > 0;
|
|
415
|
+
};
|
|
416
|
+
/**
|
|
417
|
+
* Debug logging helper.
|
|
418
|
+
*/
|
|
419
|
+
debug(message) {
|
|
420
|
+
if (this.options.debug) {
|
|
421
|
+
console.log(`[CardanoAnchorLinker] ${message}`);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// =============================================================================
|
|
426
|
+
// UTILITY FUNCTIONS
|
|
427
|
+
// =============================================================================
|
|
428
|
+
/**
|
|
429
|
+
* Normalize a hash to lowercase without 0x prefix.
|
|
430
|
+
*/
|
|
431
|
+
function normalizeHash(hash) {
|
|
432
|
+
const cleaned = hash.startsWith("0x") ? hash.slice(2) : hash;
|
|
433
|
+
return cleaned.toLowerCase();
|
|
434
|
+
}
|
|
435
|
+
// =============================================================================
|
|
436
|
+
// FACTORY FUNCTION
|
|
437
|
+
// =============================================================================
|
|
438
|
+
/**
|
|
439
|
+
* Create a new CardanoAnchorLinker instance.
|
|
440
|
+
*
|
|
441
|
+
* @param options - Configuration options
|
|
442
|
+
* @returns New CardanoAnchorLinker instance
|
|
443
|
+
*/
|
|
444
|
+
export function createCardanoAnchorLinker(options) {
|
|
445
|
+
return new CardanoAnchorLinker(options);
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=cardano-anchor-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardano-anchor-link.js","sourceRoot":"","sources":["../../src/linking/cardano-anchor-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Linking module exports for cross-chain operations.
|
|
3
|
+
*
|
|
4
|
+
* Location: packages/midnight-prover/src/linking/index.ts
|
|
5
|
+
*
|
|
6
|
+
* Summary:
|
|
7
|
+
* This file exports all linking-related classes and utilities for:
|
|
8
|
+
* - Publishing proofs to the Midnight network
|
|
9
|
+
* - Creating cross-chain links between Midnight proofs and Cardano anchors
|
|
10
|
+
* - Verifying cross-chain relationships
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import {
|
|
15
|
+
* ProofPublisher,
|
|
16
|
+
* CardanoAnchorLinker,
|
|
17
|
+
* createProofPublisher,
|
|
18
|
+
* createCardanoAnchorLinker,
|
|
19
|
+
* } from "@fluxpointstudios/orynq-sdk-midnight-prover";
|
|
20
|
+
*
|
|
21
|
+
* const publisher = createProofPublisher({ maxRetries: 3 });
|
|
22
|
+
* const linker = createCardanoAnchorLinker({ debug: true });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Related files:
|
|
26
|
+
* - proof-publication.ts: Proof publishing to Midnight
|
|
27
|
+
* - cardano-anchor-link.ts: Cross-chain linking utilities
|
|
28
|
+
*/
|
|
29
|
+
export type { ProofStatus, ProofStatusInfo, ProofPublisherOptions, } from "./proof-publication.js";
|
|
30
|
+
export { ProofPublisher, createProofPublisher, } from "./proof-publication.js";
|
|
31
|
+
export type { CrossChainLink, LinkVerificationResult, CardanoAnchorLinkerOptions, } from "./cardano-anchor-link.js";
|
|
32
|
+
export { CardanoAnchorLinker, createCardanoAnchorLinker, } from "./cardano-anchor-link.js";
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linking/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,YAAY,EACV,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAMhC,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Linking module exports for cross-chain operations.
|
|
3
|
+
*
|
|
4
|
+
* Location: packages/midnight-prover/src/linking/index.ts
|
|
5
|
+
*
|
|
6
|
+
* Summary:
|
|
7
|
+
* This file exports all linking-related classes and utilities for:
|
|
8
|
+
* - Publishing proofs to the Midnight network
|
|
9
|
+
* - Creating cross-chain links between Midnight proofs and Cardano anchors
|
|
10
|
+
* - Verifying cross-chain relationships
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import {
|
|
15
|
+
* ProofPublisher,
|
|
16
|
+
* CardanoAnchorLinker,
|
|
17
|
+
* createProofPublisher,
|
|
18
|
+
* createCardanoAnchorLinker,
|
|
19
|
+
* } from "@fluxpointstudios/orynq-sdk-midnight-prover";
|
|
20
|
+
*
|
|
21
|
+
* const publisher = createProofPublisher({ maxRetries: 3 });
|
|
22
|
+
* const linker = createCardanoAnchorLinker({ debug: true });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Related files:
|
|
26
|
+
* - proof-publication.ts: Proof publishing to Midnight
|
|
27
|
+
* - cardano-anchor-link.ts: Cross-chain linking utilities
|
|
28
|
+
*/
|
|
29
|
+
export { ProofPublisher, createProofPublisher, } from "./proof-publication.js";
|
|
30
|
+
export { CardanoAnchorLinker, createCardanoAnchorLinker, } from "./cardano-anchor-link.js";
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/linking/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAYH,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAYhC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC"}
|