@invisi-labs/sdk 1.1.6 → 1.2.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/README.md +5 -0
- package/dist/broadcaster-3KTB4JO2.cjs +21 -0
- package/dist/broadcaster-3KTB4JO2.cjs.map +1 -0
- package/dist/broadcaster-7ZKKSTZQ.js +21 -0
- package/dist/broadcaster-preparation-PJ263WBL.cjs +15 -0
- package/dist/broadcaster-preparation-PJ263WBL.cjs.map +1 -0
- package/dist/broadcaster-preparation-ZQAPZAUG.js +15 -0
- package/dist/broadcaster-preparation-ZQAPZAUG.js.map +1 -0
- package/dist/chunk-2URICDPW.cjs +167 -0
- package/dist/chunk-2URICDPW.cjs.map +1 -0
- package/dist/chunk-3D24ABYR.js +86 -0
- package/dist/chunk-3D24ABYR.js.map +1 -0
- package/dist/chunk-3KTQQZOW.cjs +71 -0
- package/dist/chunk-3KTQQZOW.cjs.map +1 -0
- package/dist/chunk-4H4FARQK.js +1582 -0
- package/dist/chunk-4H4FARQK.js.map +1 -0
- package/dist/chunk-4SDP53YQ.cjs +765 -0
- package/dist/chunk-4SDP53YQ.cjs.map +1 -0
- package/dist/{chunk-QC6TQR3R.js → chunk-4VI6LYGH.js} +35 -12
- package/dist/chunk-4VI6LYGH.js.map +1 -0
- package/dist/chunk-BBSRP4MH.cjs +287 -0
- package/dist/chunk-BBSRP4MH.cjs.map +1 -0
- package/dist/chunk-DGMVGFKM.js +41 -0
- package/dist/chunk-DGMVGFKM.js.map +1 -0
- package/dist/chunk-GUD3LAUO.js +765 -0
- package/dist/chunk-GUD3LAUO.js.map +1 -0
- package/dist/chunk-HCB7RQ3S.cjs +79 -0
- package/dist/chunk-HCB7RQ3S.cjs.map +1 -0
- package/dist/{broadcaster-preparation-QVL62KM6.js → chunk-HKGJXQVN.js} +73 -34
- package/dist/chunk-HKGJXQVN.js.map +1 -0
- package/dist/chunk-HLH5JZD4.js +287 -0
- package/dist/chunk-HLH5JZD4.js.map +1 -0
- package/dist/chunk-J6TZZVAM.cjs +230 -0
- package/dist/chunk-J6TZZVAM.cjs.map +1 -0
- package/dist/chunk-LOR6PYH5.cjs +397 -0
- package/dist/chunk-LOR6PYH5.cjs.map +1 -0
- package/dist/chunk-MA2QZEF5.cjs +399 -0
- package/dist/chunk-MA2QZEF5.cjs.map +1 -0
- package/dist/chunk-MI4IP4ZD.cjs +86 -0
- package/dist/chunk-MI4IP4ZD.cjs.map +1 -0
- package/dist/chunk-NKYHYIRP.cjs +1582 -0
- package/dist/chunk-NKYHYIRP.cjs.map +1 -0
- package/dist/chunk-OCZLJKIA.cjs +41 -0
- package/dist/chunk-OCZLJKIA.cjs.map +1 -0
- package/dist/chunk-R5YAOJKB.js +71 -0
- package/dist/chunk-R5YAOJKB.js.map +1 -0
- package/dist/chunk-RY4M2CIQ.js +399 -0
- package/dist/chunk-RY4M2CIQ.js.map +1 -0
- package/dist/chunk-THMD5QO2.js +79 -0
- package/dist/chunk-THMD5QO2.js.map +1 -0
- package/dist/chunk-ZD2652WH.js +230 -0
- package/dist/chunk-ZD2652WH.js.map +1 -0
- package/dist/credit.cjs +1 -0
- package/dist/credit.cjs.map +1 -0
- package/dist/credit.d.cts +12 -0
- package/dist/credit.d.ts +12 -0
- package/dist/credit.js +1 -0
- package/dist/credit.js.map +1 -0
- package/dist/ethers.cjs +11 -385
- package/dist/ethers.cjs.map +1 -1
- package/dist/ethers.d.cts +16 -6
- package/dist/ethers.d.ts +16 -6
- package/dist/ethers.js +1 -1
- package/dist/index-CLhGwLxZ.d.cts +42 -0
- package/dist/index-Crp-ZFiM.d.ts +42 -0
- package/dist/index.cjs +479 -7847
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +87 -710
- package/dist/index.d.ts +87 -710
- package/dist/index.js +407 -869
- package/dist/index.js.map +1 -1
- package/dist/note.cjs +11 -0
- package/dist/note.cjs.map +1 -0
- package/dist/note.d.cts +29 -0
- package/dist/note.d.ts +29 -0
- package/dist/note.js +11 -0
- package/dist/note.js.map +1 -0
- package/dist/operation-bridge-CoECSxfi.d.cts +472 -0
- package/dist/operation-bridge-CoECSxfi.d.ts +472 -0
- package/dist/preparation-HUBTVCZE.js +404 -0
- package/dist/preparation-HUBTVCZE.js.map +1 -0
- package/dist/preparation-QD3ZSYV5.cjs +404 -0
- package/dist/preparation-QD3ZSYV5.cjs.map +1 -0
- package/dist/provenance-preparation-43DN2WK7.cjs +16 -0
- package/dist/provenance-preparation-43DN2WK7.cjs.map +1 -0
- package/dist/provenance-preparation-HEZE4L5H.js +16 -0
- package/dist/provenance-preparation-HEZE4L5H.js.map +1 -0
- package/dist/provenance.cjs +59 -0
- package/dist/provenance.cjs.map +1 -0
- package/dist/provenance.d.cts +34 -0
- package/dist/provenance.d.ts +34 -0
- package/dist/provenance.js +59 -0
- package/dist/provenance.js.map +1 -0
- package/dist/receipt-logs-8Msm_HZS.d.ts +322 -0
- package/dist/receipt-logs-DWG4In8N.d.cts +322 -0
- package/dist/session-support.cjs +189 -0
- package/dist/session-support.cjs.map +1 -0
- package/dist/session-support.d.cts +284 -0
- package/dist/session-support.d.ts +284 -0
- package/dist/session-support.js +189 -0
- package/dist/session-support.js.map +1 -0
- package/package.json +25 -19
- package/dist/NoteOutput-DRkVnwlx.d.cts +0 -398
- package/dist/NoteOutput-DpDC6T2O.d.ts +0 -398
- package/dist/broadcaster-preparation-QVL62KM6.js.map +0 -1
- package/dist/chunk-4SD3MW6N.js +0 -4711
- package/dist/chunk-4SD3MW6N.js.map +0 -1
- package/dist/chunk-FL4TIGWW.js +0 -1781
- package/dist/chunk-FL4TIGWW.js.map +0 -1
- package/dist/chunk-QC6TQR3R.js.map +0 -1
- package/dist/indexeddb.cjs +0 -6878
- package/dist/indexeddb.cjs.map +0 -1
- package/dist/indexeddb.d.cts +0 -20
- package/dist/indexeddb.d.ts +0 -20
- package/dist/indexeddb.js +0 -71
- package/dist/indexeddb.js.map +0 -1
- package/dist/memory.cjs +0 -6886
- package/dist/memory.cjs.map +0 -1
- package/dist/memory.d.cts +0 -12
- package/dist/memory.d.ts +0 -12
- package/dist/memory.js +0 -11
- package/dist/sqlite.cjs +0 -6862
- package/dist/sqlite.cjs.map +0 -1
- package/dist/sqlite.d.cts +0 -28
- package/dist/sqlite.d.ts +0 -28
- package/dist/sqlite.js +0 -55
- package/dist/sqlite.js.map +0 -1
- package/dist/state-C4HZFotm.d.cts +0 -78
- package/dist/state-C4HZFotm.d.ts +0 -78
- package/dist/store-8aBhnbGr.d.ts +0 -42
- package/dist/store-YrbXb6CY.d.cts +0 -42
- /package/dist/{memory.js.map → broadcaster-7ZKKSTZQ.js.map} +0 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import {
|
|
2
|
+
validateProvenanceProof
|
|
3
|
+
} from "./chunk-3D24ABYR.js";
|
|
4
|
+
import {
|
|
5
|
+
statement
|
|
6
|
+
} from "./chunk-THMD5QO2.js";
|
|
7
|
+
import {
|
|
8
|
+
broadcasterRequestHash
|
|
9
|
+
} from "./chunk-R5YAOJKB.js";
|
|
10
|
+
|
|
11
|
+
// src/broadcaster/provenance-preparation.ts
|
|
12
|
+
import { OfficialProvenanceClients } from "@invisi-labs/rpc/provenance";
|
|
13
|
+
import {
|
|
14
|
+
CAPACITIES,
|
|
15
|
+
noteOpening,
|
|
16
|
+
operationDigest,
|
|
17
|
+
word,
|
|
18
|
+
assertCertificateTrust,
|
|
19
|
+
validateProofBundle,
|
|
20
|
+
inputDigest
|
|
21
|
+
} from "@invisi-labs/protocol/provenance";
|
|
22
|
+
import {
|
|
23
|
+
exportSidecar
|
|
24
|
+
} from "@invisi-labs/prover/provenance-witness";
|
|
25
|
+
function requireProvenanceCapability(plan, runtime) {
|
|
26
|
+
const cap = runtime.options.provenance;
|
|
27
|
+
if (!cap) throw Error("Provenance capability required for private inputs");
|
|
28
|
+
const trust = cap.client.trust;
|
|
29
|
+
if (BigInt(trust.chainId) !== plan.context.chainId || BigInt(trust.protocolAddress) !== BigInt(plan.context.protocolAddress) || cap.manifest.sha256 !== trust.manifestSha256)
|
|
30
|
+
throw Error("Provenance deployment or manifest mismatch");
|
|
31
|
+
}
|
|
32
|
+
async function prepareProvenance(plan, runtime) {
|
|
33
|
+
requireProvenanceCapability(plan, runtime);
|
|
34
|
+
if (!plan.inputs.length) throw Error("No private Note inputs require a Provenance proof");
|
|
35
|
+
const {
|
|
36
|
+
client: source,
|
|
37
|
+
manifest,
|
|
38
|
+
prover,
|
|
39
|
+
maxRootPages = 10,
|
|
40
|
+
maxLeaves = 1e5
|
|
41
|
+
} = runtime.options.provenance;
|
|
42
|
+
if (!Number.isSafeInteger(maxRootPages) || maxRootPages < 1 || maxRootPages > 100 || !Number.isSafeInteger(maxLeaves) || maxLeaves < 1)
|
|
43
|
+
throw Error("Invalid Provenance replay budget");
|
|
44
|
+
if (!plan.params || !plan.capacity || plan.params.nullifiers.length !== plan.inputs.length)
|
|
45
|
+
throw Error("Private transact statement required");
|
|
46
|
+
const trust = source.trust;
|
|
47
|
+
const openings = await Promise.all(
|
|
48
|
+
plan.inputs.map(async (input, i) => {
|
|
49
|
+
const opening = {
|
|
50
|
+
owner: input.note.ownerAddress,
|
|
51
|
+
nonce: input.note.nonce,
|
|
52
|
+
amount: input.note.amount
|
|
53
|
+
};
|
|
54
|
+
const computed = await noteOpening({ ...plan.context, ...opening });
|
|
55
|
+
if (computed.commitment !== BigInt(input.commitment) || computed.nullifier !== BigInt(plan.params.nullifiers[i]))
|
|
56
|
+
throw Error("Prepared Note opening or nullifier mismatch");
|
|
57
|
+
return opening;
|
|
58
|
+
})
|
|
59
|
+
);
|
|
60
|
+
const digest = operationDigest({
|
|
61
|
+
...plan.context,
|
|
62
|
+
mainCircuitCapacity: plan.capacity,
|
|
63
|
+
publicInputs: statement(plan).expectedPublicInputs
|
|
64
|
+
});
|
|
65
|
+
const status = await source.getStatus();
|
|
66
|
+
const rootId = `${BigInt(trust.chainGeneration)}:${BigInt(String(status.checkpointSequence))}`;
|
|
67
|
+
const latest = await source.getRoot(rootId);
|
|
68
|
+
if (!latest.certificate || latest.allowedForNewProof !== true)
|
|
69
|
+
throw Error("No current recognized root");
|
|
70
|
+
const certificates = /* @__PURE__ */ new Map();
|
|
71
|
+
const matches = /* @__PURE__ */ new Map();
|
|
72
|
+
let remaining = maxLeaves;
|
|
73
|
+
const replay = async (certificate) => {
|
|
74
|
+
assertCertificateTrust(certificate, trust);
|
|
75
|
+
const block = await runtime.reader.getBlock(BigInt(certificate.confirmedBlockNumber));
|
|
76
|
+
if (!block || block.hash.toLowerCase() !== word(certificate.confirmedBlockHash).toLowerCase() || await runtime.reader.getChainId() !== plan.context.chainId)
|
|
77
|
+
throw Error("Provenance checkpoint canonical anchor mismatch");
|
|
78
|
+
const count = Number(BigInt(certificate.leafCount));
|
|
79
|
+
if (!Number.isSafeInteger(count) || count > remaining)
|
|
80
|
+
throw Error("Provenance replay leaf budget exceeded");
|
|
81
|
+
remaining -= count;
|
|
82
|
+
const tree = await source.syncRecognizedTree(
|
|
83
|
+
`${certificate.chainGeneration}:${certificate.rootSequence}`,
|
|
84
|
+
certificate,
|
|
85
|
+
{ maxLeaves: Math.max(1, count) }
|
|
86
|
+
);
|
|
87
|
+
certificates.set(String(certificate.treeId), certificate);
|
|
88
|
+
for (let i = 0; i < plan.inputs.length; i++) {
|
|
89
|
+
if (matches.has(i)) continue;
|
|
90
|
+
const membership = await tree.membershipForCommitment(
|
|
91
|
+
trust,
|
|
92
|
+
plan.inputs[i].commitment
|
|
93
|
+
);
|
|
94
|
+
if (membership) matches.set(i, { certificate, membership });
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
await replay(latest.certificate);
|
|
98
|
+
if (matches.size !== plan.inputs.length) {
|
|
99
|
+
const newest = /* @__PURE__ */ new Map();
|
|
100
|
+
let cursor, complete = false;
|
|
101
|
+
for (let page = 0; page < maxRootPages; page++) {
|
|
102
|
+
const result = await source.getRoots(
|
|
103
|
+
cursor ? { cursor, limit: 200 } : { after: "0", limit: 200 }
|
|
104
|
+
);
|
|
105
|
+
for (const certificate of result.items) {
|
|
106
|
+
const previous = newest.get(String(certificate.treeId));
|
|
107
|
+
if (!previous || BigInt(previous.rootSequence) < BigInt(certificate.rootSequence))
|
|
108
|
+
newest.set(String(certificate.treeId), certificate);
|
|
109
|
+
}
|
|
110
|
+
if (!result.nextCursor) {
|
|
111
|
+
complete = true;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
const next = String(result.nextCursor);
|
|
115
|
+
if (next === cursor) throw Error("Provenance root cursor did not advance");
|
|
116
|
+
cursor = next;
|
|
117
|
+
}
|
|
118
|
+
if (!complete) throw Error("Provenance root replay page budget exceeded");
|
|
119
|
+
for (const certificate of newest.values()) {
|
|
120
|
+
if (certificates.has(String(certificate.treeId))) continue;
|
|
121
|
+
const current = await source.getRoot(
|
|
122
|
+
`${certificate.chainGeneration}:${certificate.rootSequence}`
|
|
123
|
+
);
|
|
124
|
+
if (current.allowedForNewProof !== true) continue;
|
|
125
|
+
await replay(certificate);
|
|
126
|
+
if (matches.size === plan.inputs.length) break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (matches.size !== plan.inputs.length) throw Error("Prepared Note is not recognized");
|
|
130
|
+
const used = [
|
|
131
|
+
...new Map(
|
|
132
|
+
[...matches.values()].map((m) => [String(m.certificate.treeId), m.certificate])
|
|
133
|
+
).values()
|
|
134
|
+
].sort((a, b) => BigInt(a.treeId) < BigInt(b.treeId) ? -1 : 1);
|
|
135
|
+
const inputs = openings.map((opening, i) => {
|
|
136
|
+
const match = matches.get(i);
|
|
137
|
+
return {
|
|
138
|
+
...opening,
|
|
139
|
+
sourceIndex: used.findIndex(
|
|
140
|
+
(c) => BigInt(c.treeId) === BigInt(match.certificate.treeId)
|
|
141
|
+
),
|
|
142
|
+
leafIndex: match.membership.leafIndex,
|
|
143
|
+
path: match.membership.path
|
|
144
|
+
};
|
|
145
|
+
});
|
|
146
|
+
const capacity = CAPACITIES.find((k) => k >= inputs.length);
|
|
147
|
+
if (!capacity) throw Error("Provenance input capacity exceeded");
|
|
148
|
+
const sidecar = await exportSidecar(
|
|
149
|
+
{
|
|
150
|
+
...trust,
|
|
151
|
+
capacity,
|
|
152
|
+
tokenAddress: plan.context.tokenAddress,
|
|
153
|
+
operationDigest: digest,
|
|
154
|
+
inputs,
|
|
155
|
+
sources: used.map((c) => ({ treeId: c.treeId, root: c.root, leafCount: c.leafCount }))
|
|
156
|
+
},
|
|
157
|
+
used,
|
|
158
|
+
trust,
|
|
159
|
+
manifest,
|
|
160
|
+
prover,
|
|
161
|
+
0
|
|
162
|
+
);
|
|
163
|
+
return { operationDigest: digest, sidecars: [sidecar] };
|
|
164
|
+
}
|
|
165
|
+
async function provePreparedProvenance(saved, runtime, capability, reprove = false) {
|
|
166
|
+
if (!saved.call || !saved.proof || saved.plan.kind !== "transfer" || !saved.plan.inputs.length)
|
|
167
|
+
throw Error("Ready transaction with private Note inputs required");
|
|
168
|
+
const provider = runtime.options.prover;
|
|
169
|
+
const active = capability ?? runtime.options.provenance ?? (provider?.getProvenanceCapability ? {
|
|
170
|
+
...await provider.getProvenanceCapability(),
|
|
171
|
+
client: runtime.options.provenanceClient ?? await officialProvenance.get(saved.plan.context)
|
|
172
|
+
} : void 0);
|
|
173
|
+
if (!active) throw Error("Local Provenance capability required");
|
|
174
|
+
if (saved.provenance && !reprove)
|
|
175
|
+
return validateProvenanceProof(structuredClone(saved.provenance), active.client.trust);
|
|
176
|
+
const localRuntime = { ...runtime, options: { ...runtime.options, provenance: active } };
|
|
177
|
+
const evidence = await prepareProvenance(saved.plan, localRuntime);
|
|
178
|
+
const packet = {
|
|
179
|
+
format: "invisi-provenance-submission-v1",
|
|
180
|
+
data: saved.call.data,
|
|
181
|
+
context: {
|
|
182
|
+
chainId: saved.plan.context.chainId.toString(),
|
|
183
|
+
protocolAddress: saved.plan.context.protocolAddress,
|
|
184
|
+
tokenAddress: saved.plan.context.tokenAddress
|
|
185
|
+
},
|
|
186
|
+
mainCircuitCapacity: saved.plan.capacity,
|
|
187
|
+
publicInputs: [...statement(saved.plan).expectedPublicInputs],
|
|
188
|
+
...evidence
|
|
189
|
+
};
|
|
190
|
+
return validateProvenanceProof(packet, active.client.trust);
|
|
191
|
+
}
|
|
192
|
+
function validateBroadcastEnvelope(saved, client) {
|
|
193
|
+
if (!saved.broadcasterQuote || !saved.broadcasterBinding || !saved.call)
|
|
194
|
+
throw Error("Prepared broadcaster quote and ready call required");
|
|
195
|
+
if (JSON.stringify(saved.broadcasterBinding.configuration) !== JSON.stringify(client.configuration) || saved.broadcasterBinding.intentHash !== broadcasterRequestHash(saved.call.data))
|
|
196
|
+
throw Error("Prepared broadcaster context changed");
|
|
197
|
+
const context = saved.plan.context;
|
|
198
|
+
if (BigInt(saved.call.to) !== BigInt(context.protocolAddress) || saved.call.value !== 0n || saved.broadcasterQuote.context?.chainId !== context.chainId || BigInt(saved.broadcasterQuote.context.protocol) !== BigInt(context.protocolAddress))
|
|
199
|
+
throw Error("Prepared broadcaster deployment changed");
|
|
200
|
+
}
|
|
201
|
+
async function validatePreparedBroadcast(saved, client, runtime) {
|
|
202
|
+
validateBroadcastEnvelope(saved, client);
|
|
203
|
+
if (saved.broadcasterQuote.provenanceRequired && saved.plan.inputs.length) {
|
|
204
|
+
const source = saved.provenance;
|
|
205
|
+
if (!source || source.sidecars.length !== 1)
|
|
206
|
+
throw Error("Prepared Provenance evidence required");
|
|
207
|
+
const digest = operationDigest({
|
|
208
|
+
...saved.plan.context,
|
|
209
|
+
mainCircuitCapacity: saved.plan.capacity,
|
|
210
|
+
publicInputs: statement(saved.plan).expectedPublicInputs
|
|
211
|
+
});
|
|
212
|
+
if (source.operationDigest !== digest || source.data !== saved.call.data)
|
|
213
|
+
throw Error("Prepared Provenance statement changed");
|
|
214
|
+
const sidecar = source.sidecars[0];
|
|
215
|
+
const pi = sidecar.proofBundle.publicInputs;
|
|
216
|
+
if (sidecar.operationIndex !== "0" || word(BigInt(pi[7]) << 128n | BigInt(pi[8])) !== digest || BigInt(pi[2]) !== BigInt(saved.plan.context.tokenAddress) || BigInt(pi[6]) !== BigInt(saved.plan.inputs.length) || BigInt(pi[9]) !== await inputDigest(saved.plan.params.nullifiers))
|
|
217
|
+
throw Error("Prepared Provenance evidence binding mismatch");
|
|
218
|
+
if (runtime.options.provenance)
|
|
219
|
+
await validateProofBundle(sidecar.proofBundle, runtime.options.provenance.client.trust);
|
|
220
|
+
} else if (saved.provenance) throw Error("Unexpected Prepared Provenance evidence");
|
|
221
|
+
}
|
|
222
|
+
var officialProvenance = new OfficialProvenanceClients();
|
|
223
|
+
|
|
224
|
+
export {
|
|
225
|
+
prepareProvenance,
|
|
226
|
+
provePreparedProvenance,
|
|
227
|
+
validateBroadcastEnvelope,
|
|
228
|
+
validatePreparedBroadcast
|
|
229
|
+
};
|
|
230
|
+
//# sourceMappingURL=chunk-ZD2652WH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/broadcaster/provenance-preparation.ts"],"sourcesContent":["import { OfficialProvenanceClients } from \"@invisi-labs/rpc/provenance\";\nimport { validateProvenanceProof, type ProvenanceProof } from \"../provenance/proof-record\";\nimport {\n CAPACITIES,\n noteOpening,\n operationDigest,\n word,\n assertCertificateTrust,\n validateProofBundle,\n inputDigest,\n type ManifestIdentity,\n type ProofSidecar,\n type RootCertificate,\n} from \"@invisi-labs/protocol/provenance\";\nimport {\n exportSidecar,\n type OfflineProver,\n type WitnessInput,\n} from \"@invisi-labs/prover/provenance-witness\";\nimport { type ProvenanceClient } from \"@invisi-labs/rpc/provenance\";\nimport type {\n OperationPlan,\n TransactionRuntime,\n SavedOperation,\n} from \"../transactions/operation-types\";\nimport { statement } from \"../transactions/signing/statement\";\nimport { broadcasterRequestHash, type BroadcasterClient } from \"./index\";\n\nexport interface PreparedProvenanceCapability {\n client: ProvenanceClient;\n manifest: ManifestIdentity;\n prover: OfflineProver;\n maxRootPages?: number;\n maxLeaves?: number;\n}\nfunction requireProvenanceCapability(plan: OperationPlan, runtime: TransactionRuntime) {\n const cap = runtime.options.provenance;\n if (!cap) throw Error(\"Provenance capability required for private inputs\");\n const trust = cap.client.trust;\n if (\n BigInt(trust.chainId) !== plan.context.chainId ||\n BigInt(trust.protocolAddress) !== BigInt(plan.context.protocolAddress) ||\n cap.manifest.sha256 !== trust.manifestSha256\n )\n throw Error(\"Provenance deployment or manifest mismatch\");\n}\nexport async function prepareProvenance(\n plan: OperationPlan,\n runtime: TransactionRuntime\n): Promise<{ operationDigest: string; sidecars: ProofSidecar[] }> {\n requireProvenanceCapability(plan, runtime);\n if (!plan.inputs.length) throw Error(\"No private Note inputs require a Provenance proof\");\n const {\n client: source,\n manifest,\n prover,\n maxRootPages = 10,\n maxLeaves = 100000,\n } = runtime!.options.provenance!;\n if (\n !Number.isSafeInteger(maxRootPages) ||\n maxRootPages < 1 ||\n maxRootPages > 100 ||\n !Number.isSafeInteger(maxLeaves) ||\n maxLeaves < 1\n )\n throw Error(\"Invalid Provenance replay budget\");\n if (!plan.params || !plan.capacity || plan.params.nullifiers.length !== plan.inputs.length)\n throw Error(\"Private transact statement required\");\n const trust = source.trust;\n const openings = await Promise.all(\n plan.inputs.map(async (input, i) => {\n const opening = {\n owner: input.note.ownerAddress,\n nonce: input.note.nonce,\n amount: input.note.amount,\n };\n const computed = await noteOpening({ ...plan.context, ...opening });\n if (\n computed.commitment !== BigInt(input.commitment) ||\n computed.nullifier !== BigInt(plan.params!.nullifiers[i]!)\n )\n throw Error(\"Prepared Note opening or nullifier mismatch\");\n return opening;\n })\n );\n const digest = operationDigest({\n ...plan.context,\n mainCircuitCapacity: plan.capacity,\n publicInputs: statement(plan).expectedPublicInputs,\n });\n const status = await source.getStatus();\n const rootId = `${BigInt(trust.chainGeneration)}:${BigInt(String(status.checkpointSequence))}`;\n const latest = await source.getRoot(rootId);\n if (!latest.certificate || latest.allowedForNewProof !== true)\n throw Error(\"No current recognized root\");\n const certificates = new Map<string, RootCertificate>();\n const matches = new Map<\n number,\n { certificate: RootCertificate; membership: { leafIndex: number; path: bigint[] } }\n >();\n let remaining = maxLeaves;\n const replay = async (certificate: RootCertificate) => {\n assertCertificateTrust(certificate, trust);\n const block = await runtime!.reader.getBlock(BigInt(certificate.confirmedBlockNumber));\n if (\n !block ||\n block.hash.toLowerCase() !== word(certificate.confirmedBlockHash).toLowerCase() ||\n (await runtime!.reader.getChainId()) !== plan.context.chainId\n )\n throw Error(\"Provenance checkpoint canonical anchor mismatch\");\n const count = Number(BigInt(certificate.leafCount));\n if (!Number.isSafeInteger(count) || count > remaining)\n throw Error(\"Provenance replay leaf budget exceeded\");\n remaining -= count;\n const tree = await source.syncRecognizedTree(\n `${certificate.chainGeneration}:${certificate.rootSequence}`,\n certificate,\n { maxLeaves: Math.max(1, count) }\n );\n certificates.set(String(certificate.treeId), certificate);\n for (let i = 0; i < plan.inputs.length; i++) {\n if (matches.has(i)) continue;\n const membership = await tree.membershipForCommitment(\n trust,\n plan.inputs[i]!.commitment\n );\n if (membership) matches.set(i, { certificate, membership });\n }\n };\n await replay(latest.certificate as RootCertificate);\n if (matches.size !== plan.inputs.length) {\n const newest = new Map<string, RootCertificate>();\n let cursor: string | undefined,\n complete = false;\n for (let page = 0; page < maxRootPages; page++) {\n const result = await source.getRoots(\n cursor ? { cursor, limit: 200 } : { after: \"0\", limit: 200 }\n );\n for (const certificate of result.items as RootCertificate[]) {\n const previous = newest.get(String(certificate.treeId));\n if (!previous || BigInt(previous.rootSequence) < BigInt(certificate.rootSequence))\n newest.set(String(certificate.treeId), certificate);\n }\n if (!result.nextCursor) {\n complete = true;\n break;\n }\n const next = String(result.nextCursor);\n if (next === cursor) throw Error(\"Provenance root cursor did not advance\");\n cursor = next;\n }\n if (!complete) throw Error(\"Provenance root replay page budget exceeded\");\n for (const certificate of newest.values()) {\n if (certificates.has(String(certificate.treeId))) continue;\n const current = await source.getRoot(\n `${certificate.chainGeneration}:${certificate.rootSequence}`\n );\n if (current.allowedForNewProof !== true) continue;\n await replay(certificate);\n if (matches.size === plan.inputs.length) break;\n }\n }\n if (matches.size !== plan.inputs.length) throw Error(\"Prepared Note is not recognized\");\n const used = [\n ...new Map(\n [...matches.values()].map((m) => [String(m.certificate.treeId), m.certificate])\n ).values(),\n ].sort((a, b) => (BigInt(a.treeId) < BigInt(b.treeId) ? -1 : 1));\n const inputs: WitnessInput[] = openings.map((opening, i) => {\n const match = matches.get(i)!;\n return {\n ...opening,\n sourceIndex: used.findIndex(\n (c) => BigInt(c.treeId) === BigInt(match.certificate.treeId)\n ),\n leafIndex: match.membership.leafIndex,\n path: match.membership.path,\n };\n });\n const capacity = CAPACITIES.find((k) => k >= inputs.length);\n if (!capacity) throw Error(\"Provenance input capacity exceeded\");\n const sidecar = await exportSidecar(\n {\n ...trust,\n capacity,\n tokenAddress: plan.context.tokenAddress,\n operationDigest: digest,\n inputs,\n sources: used.map((c) => ({ treeId: c.treeId, root: c.root, leafCount: c.leafCount })),\n },\n used,\n trust,\n manifest,\n prover,\n 0\n );\n return { operationDigest: digest, sidecars: [sidecar] };\n}\nexport async function provePreparedProvenance(\n saved: SavedOperation,\n runtime: TransactionRuntime,\n capability?: PreparedProvenanceCapability,\n reprove = false\n): Promise<ProvenanceProof> {\n if (!saved.call || !saved.proof || saved.plan.kind !== \"transfer\" || !saved.plan.inputs.length)\n throw Error(\"Ready transaction with private Note inputs required\");\n const provider = runtime.options.prover as typeof runtime.options.prover &\n Partial<import(\"@invisi-labs/prover/provenance-witness\").ProvenanceProvider>;\n const active =\n capability ??\n runtime.options.provenance ??\n (provider?.getProvenanceCapability\n ? {\n ...(await provider.getProvenanceCapability()),\n client:\n runtime.options.provenanceClient ??\n (await officialProvenance.get(saved.plan.context)),\n }\n : undefined);\n if (!active) throw Error(\"Local Provenance capability required\");\n if (saved.provenance && !reprove)\n return validateProvenanceProof(structuredClone(saved.provenance), active.client.trust);\n const localRuntime = { ...runtime, options: { ...runtime.options, provenance: active } };\n const evidence = await prepareProvenance(saved.plan, localRuntime);\n const packet: ProvenanceProof = {\n format: \"invisi-provenance-submission-v1\",\n data: saved.call.data,\n context: {\n chainId: saved.plan.context.chainId.toString(),\n protocolAddress: saved.plan.context.protocolAddress,\n tokenAddress: saved.plan.context.tokenAddress,\n },\n mainCircuitCapacity: saved.plan.capacity!,\n publicInputs: [...statement(saved.plan).expectedPublicInputs],\n ...evidence,\n };\n return validateProvenanceProof(packet, active.client.trust);\n}\nexport function validateBroadcastEnvelope(saved: SavedOperation, client: BroadcasterClient) {\n if (!saved.broadcasterQuote || !saved.broadcasterBinding || !saved.call)\n throw Error(\"Prepared broadcaster quote and ready call required\");\n if (\n JSON.stringify(saved.broadcasterBinding.configuration) !==\n JSON.stringify(client.configuration) ||\n saved.broadcasterBinding.intentHash !== broadcasterRequestHash(saved.call.data)\n )\n throw Error(\"Prepared broadcaster context changed\");\n const context = saved.plan.context;\n if (\n BigInt(saved.call.to) !== BigInt(context.protocolAddress) ||\n saved.call.value !== 0n ||\n saved.broadcasterQuote.context?.chainId !== context.chainId ||\n BigInt(saved.broadcasterQuote.context.protocol) !== BigInt(context.protocolAddress)\n )\n throw Error(\"Prepared broadcaster deployment changed\");\n}\nexport async function validatePreparedBroadcast(\n saved: SavedOperation,\n client: BroadcasterClient,\n runtime: TransactionRuntime\n) {\n validateBroadcastEnvelope(saved, client);\n if (saved.broadcasterQuote!.provenanceRequired && saved.plan.inputs.length) {\n const source = saved.provenance;\n if (!source || source.sidecars.length !== 1)\n throw Error(\"Prepared Provenance evidence required\");\n const digest = operationDigest({\n ...saved.plan.context,\n mainCircuitCapacity: saved.plan.capacity!,\n publicInputs: statement(saved.plan).expectedPublicInputs,\n });\n if (source.operationDigest !== digest || source.data !== saved.call!.data)\n throw Error(\"Prepared Provenance statement changed\");\n const sidecar = source.sidecars[0]!;\n const pi = sidecar.proofBundle.publicInputs;\n if (\n sidecar.operationIndex !== \"0\" ||\n word((BigInt(pi[7]!) << 128n) | BigInt(pi[8]!)) !== digest ||\n BigInt(pi[2]!) !== BigInt(saved.plan.context.tokenAddress) ||\n BigInt(pi[6]!) !== BigInt(saved.plan.inputs.length) ||\n BigInt(pi[9]!) !== (await inputDigest(saved.plan.params!.nullifiers))\n )\n throw Error(\"Prepared Provenance evidence binding mismatch\");\n if (runtime.options.provenance)\n await validateProofBundle(sidecar.proofBundle, runtime.options.provenance.client.trust);\n } else if (saved.provenance) throw Error(\"Unexpected Prepared Provenance evidence\");\n}\n\nconst officialProvenance = new OfficialProvenanceClients();\n"],"mappings":"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","names":[]}
|
package/dist/credit.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=credit.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/wx/Workspace/invisi-lab/invisi-sdk-ts/packages/sdk/dist/credit.cjs"],"names":[],"mappings":"AAAA","file":"/Users/wx/Workspace/invisi-lab/invisi-sdk-ts/packages/sdk/dist/credit.cjs"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { C as CreditInput, b as ExplicitCreateCreditPreparation, c as ExplicitDrawCreditPreparation, e as ExplicitRevokeCreditPreparation, d as ExplicitUpdateCreditPreparation } from './index-CLhGwLxZ.cjs';
|
|
2
|
+
export { C as CreateCreditPreparation, D as DrawCreditPreparation, R as RevokeCreditPreparation, U as UpdateCreditPreparation } from './operation-bridge-CoECSxfi.cjs';
|
|
3
|
+
import '@invisi-labs/primitives';
|
|
4
|
+
import '@invisi-labs/rpc';
|
|
5
|
+
import '@invisi-labs/protocol/contracts';
|
|
6
|
+
import '@invisi-labs/protocol/provenance';
|
|
7
|
+
import '@invisi-labs/prover/provenance-witness';
|
|
8
|
+
import '@invisi-labs/rpc/provenance';
|
|
9
|
+
import '@invisi-labs/prover';
|
|
10
|
+
import '@invisi-labs/protocol';
|
|
11
|
+
import '@invisi-labs/rpc/broadcaster';
|
|
12
|
+
import 'ethers';
|
package/dist/credit.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { C as CreditInput, b as ExplicitCreateCreditPreparation, c as ExplicitDrawCreditPreparation, e as ExplicitRevokeCreditPreparation, d as ExplicitUpdateCreditPreparation } from './index-Crp-ZFiM.js';
|
|
2
|
+
export { C as CreateCreditPreparation, D as DrawCreditPreparation, R as RevokeCreditPreparation, U as UpdateCreditPreparation } from './operation-bridge-CoECSxfi.js';
|
|
3
|
+
import '@invisi-labs/primitives';
|
|
4
|
+
import '@invisi-labs/rpc';
|
|
5
|
+
import '@invisi-labs/protocol/contracts';
|
|
6
|
+
import '@invisi-labs/protocol/provenance';
|
|
7
|
+
import '@invisi-labs/prover/provenance-witness';
|
|
8
|
+
import '@invisi-labs/rpc/provenance';
|
|
9
|
+
import '@invisi-labs/prover';
|
|
10
|
+
import '@invisi-labs/protocol';
|
|
11
|
+
import '@invisi-labs/rpc/broadcaster';
|
|
12
|
+
import 'ethers';
|
package/dist/credit.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=credit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|