@suit-protocol/sdk 0.3.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.
Files changed (46) hide show
  1. package/README.md +196 -0
  2. package/dist/compliance.d.ts +4 -0
  3. package/dist/compliance.d.ts.map +1 -0
  4. package/dist/compliance.js +92 -0
  5. package/dist/compliance.js.map +1 -0
  6. package/dist/crypto.d.ts +21 -0
  7. package/dist/crypto.d.ts.map +1 -0
  8. package/dist/crypto.js +102 -0
  9. package/dist/crypto.js.map +1 -0
  10. package/dist/index.d.ts +13 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +50 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/pool.d.ts +20 -0
  15. package/dist/pool.d.ts.map +1 -0
  16. package/dist/pool.js +277 -0
  17. package/dist/pool.js.map +1 -0
  18. package/dist/proofs.d.ts +8 -0
  19. package/dist/proofs.d.ts.map +1 -0
  20. package/dist/proofs.js +19 -0
  21. package/dist/proofs.js.map +1 -0
  22. package/dist/relayer.d.ts +4 -0
  23. package/dist/relayer.d.ts.map +1 -0
  24. package/dist/relayer.js +33 -0
  25. package/dist/relayer.js.map +1 -0
  26. package/dist/signer.d.ts +8 -0
  27. package/dist/signer.d.ts.map +1 -0
  28. package/dist/signer.js +20 -0
  29. package/dist/signer.js.map +1 -0
  30. package/dist/sync.d.ts +18 -0
  31. package/dist/sync.d.ts.map +1 -0
  32. package/dist/sync.js +76 -0
  33. package/dist/sync.js.map +1 -0
  34. package/dist/tree.d.ts +5 -0
  35. package/dist/tree.d.ts.map +1 -0
  36. package/dist/tree.js +56 -0
  37. package/dist/tree.js.map +1 -0
  38. package/dist/types.d.ts +132 -0
  39. package/dist/types.d.ts.map +1 -0
  40. package/dist/types.js +4 -0
  41. package/dist/types.js.map +1 -0
  42. package/dist/viewing-key.d.ts +6 -0
  43. package/dist/viewing-key.d.ts.map +1 -0
  44. package/dist/viewing-key.js +140 -0
  45. package/dist/viewing-key.js.map +1 -0
  46. package/package.json +45 -0
@@ -0,0 +1,132 @@
1
+ export interface SuitPoolConfig {
2
+ network: 'testnet' | 'mainnet';
3
+ networkPassphrase?: string;
4
+ rpcUrl?: string;
5
+ poolId: string;
6
+ tokenId: string;
7
+ verifierId: string;
8
+ startLedger: number;
9
+ decimals?: number;
10
+ depth?: number;
11
+ signer: Signer;
12
+ noteStore: NoteStore;
13
+ leafCache?: LeafCache;
14
+ circuitWasmPath: string;
15
+ circuitZkeyPath: string;
16
+ relayerUrl?: string;
17
+ explorerUrl?: string;
18
+ }
19
+ export interface Signer {
20
+ getAddress(): Promise<string>;
21
+ signTransaction(preparedXdr: string, networkPassphrase: string): Promise<string>;
22
+ }
23
+ export interface NoteStore {
24
+ getNotes(poolId: string): UTXONote[];
25
+ saveNotes(poolId: string, notes: UTXONote[]): void;
26
+ getViewingSeed(poolId: string): string | null;
27
+ setViewingSeed(poolId: string, seed: string): void;
28
+ getAuditLog(poolId: string): EncryptedAuditEntry[];
29
+ appendAuditEntry(poolId: string, entry: EncryptedAuditEntry): void;
30
+ }
31
+ export interface LeafCache {
32
+ load(poolId: string): Map<number, string>;
33
+ save(poolId: string, data: Map<number, string>): void;
34
+ }
35
+ export interface UTXONote {
36
+ amount: string;
37
+ privKey: string;
38
+ blinding: string;
39
+ commitment: string;
40
+ leafIndex: number;
41
+ spent: boolean;
42
+ txHash: string;
43
+ ts: number;
44
+ withdrawTxHash?: string;
45
+ withdrawAmount?: string;
46
+ recipient?: string;
47
+ changeCommitment?: string;
48
+ }
49
+ export interface ShieldResult {
50
+ txHash: string;
51
+ note: UTXONote;
52
+ }
53
+ export interface WithdrawResult {
54
+ txHash: string;
55
+ changeNote: UTXONote | null;
56
+ }
57
+ export interface RelayerInfo {
58
+ relayer: string;
59
+ fee: string;
60
+ }
61
+ export interface RelayBundle {
62
+ poolId: string;
63
+ proof: string;
64
+ root: string;
65
+ extAmount: string;
66
+ nullifiers: string[];
67
+ commitments: string[];
68
+ recipient: string;
69
+ fee: string;
70
+ }
71
+ export interface EncryptedAuditEntry {
72
+ nonce: string;
73
+ ciphertext: string;
74
+ }
75
+ export interface AuditEntry {
76
+ type: 'shield' | 'withdraw';
77
+ amount: string;
78
+ pubKey: string;
79
+ blinding: string;
80
+ commitment: string;
81
+ leafIndex: number;
82
+ txHash: string;
83
+ timestamp: number;
84
+ recipient?: string;
85
+ }
86
+ export interface AuditPackage {
87
+ version: 1;
88
+ poolId: string;
89
+ network: string;
90
+ tokenId: string;
91
+ verifierId: string;
92
+ entries: EncryptedAuditEntry[];
93
+ }
94
+ export interface AuditReport {
95
+ valid: boolean;
96
+ entries: (AuditEntry & {
97
+ onChainVerified: boolean;
98
+ })[];
99
+ totalShielded: string;
100
+ totalWithdrawn: string;
101
+ netBalance: string;
102
+ }
103
+ export interface ComplianceReceipt {
104
+ version: 1;
105
+ poolId: string;
106
+ network: string;
107
+ deposit: {
108
+ amount: string;
109
+ pubKey: string;
110
+ blinding: string;
111
+ commitment: string;
112
+ txHash: string;
113
+ timestamp: number;
114
+ };
115
+ withdrawal: {
116
+ amount: string;
117
+ recipient: string;
118
+ txHash: string;
119
+ timestamp: number;
120
+ };
121
+ change?: {
122
+ amount: string;
123
+ commitment: string;
124
+ };
125
+ }
126
+ export interface ReceiptVerification {
127
+ valid: boolean;
128
+ commitmentValid: boolean;
129
+ commitmentOnChain: boolean;
130
+ nullifierBurned: boolean;
131
+ }
132
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // SUIT Protocol SDK — Type definitions
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,uCAAuC"}
@@ -0,0 +1,6 @@
1
+ import type { NoteStore, AuditEntry, AuditPackage, AuditReport, SuitPoolConfig } from './types';
2
+ export declare function appendAuditLog(store: NoteStore, poolId: string, entry: AuditEntry): Promise<void>;
3
+ export declare function getViewingKeyHex(store: NoteStore, poolId: string): string;
4
+ export declare function exportAuditPackage(config: SuitPoolConfig): AuditPackage;
5
+ export declare function verifyAuditPackage(pkg: AuditPackage, viewingKeyHex: string, rpcUrl?: string): Promise<AuditReport>;
6
+ //# sourceMappingURL=viewing-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewing-key.d.ts","sourceRoot":"","sources":["../src/viewing-key.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAC3B,cAAc,EACpC,MAAM,SAAS,CAAC;AAmCjB,wBAAsB,cAAc,CAClC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzE;AAID,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CASvE;AAID,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,YAAY,EACjB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAwCtB"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ // SUIT Protocol SDK — Viewing keys + encrypted audit log
3
+ //
4
+ // A viewing key lets a user prove their shielded activity to a third party
5
+ // (auditor, regulator, tax authority) without giving spending access.
6
+ // The auditor can verify amounts against on-chain commitments but cannot
7
+ // produce valid nullifiers — they can look, not touch.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.appendAuditLog = appendAuditLog;
10
+ exports.getViewingKeyHex = getViewingKeyHex;
11
+ exports.exportAuditPackage = exportAuditPackage;
12
+ exports.verifyAuditPackage = verifyAuditPackage;
13
+ const stellar_sdk_1 = require("@stellar/stellar-sdk");
14
+ const crypto_1 = require("./crypto");
15
+ // ── AES-GCM encryption (Web Crypto, zero dependencies) ──
16
+ async function encrypt(data, key) {
17
+ const iv = crypto.getRandomValues(new Uint8Array(12));
18
+ const encoded = new TextEncoder().encode(data);
19
+ const ck = await crypto.subtle.importKey('raw', key, 'AES-GCM', false, ['encrypt']);
20
+ const ct = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, ck, encoded);
21
+ return { nonce: (0, crypto_1.toHex)(iv), ciphertext: (0, crypto_1.toHex)(new Uint8Array(ct)) };
22
+ }
23
+ async function decrypt(entry, key) {
24
+ const iv = (0, crypto_1.fromHex)(entry.nonce);
25
+ const ct = (0, crypto_1.fromHex)(entry.ciphertext);
26
+ const ck = await crypto.subtle.importKey('raw', key, 'AES-GCM', false, ['decrypt']);
27
+ const pt = await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, ck, ct);
28
+ return new TextDecoder().decode(pt);
29
+ }
30
+ // ── Viewing seed management ──
31
+ function getOrCreateSeed(store, poolId) {
32
+ let hex = store.getViewingSeed(poolId);
33
+ if (!hex) {
34
+ const seed = crypto.getRandomValues(new Uint8Array(32));
35
+ hex = (0, crypto_1.toHex)(seed);
36
+ store.setViewingSeed(poolId, hex);
37
+ }
38
+ return (0, crypto_1.fromHex)(hex);
39
+ }
40
+ // ── Audit log ──
41
+ async function appendAuditLog(store, poolId, entry) {
42
+ const seed = getOrCreateSeed(store, poolId);
43
+ const encrypted = await encrypt(JSON.stringify(entry), seed);
44
+ store.appendAuditEntry(poolId, encrypted);
45
+ }
46
+ function getViewingKeyHex(store, poolId) {
47
+ const seed = getOrCreateSeed(store, poolId);
48
+ return (0, crypto_1.toHex)(seed);
49
+ }
50
+ // ── Export ──
51
+ function exportAuditPackage(config) {
52
+ return {
53
+ version: 1,
54
+ poolId: config.poolId,
55
+ network: config.network,
56
+ tokenId: config.tokenId,
57
+ verifierId: config.verifierId,
58
+ entries: config.noteStore.getAuditLog(config.poolId),
59
+ };
60
+ }
61
+ // ── Verify (static — anyone with the viewing key can run this) ──
62
+ async function verifyAuditPackage(pkg, viewingKeyHex, rpcUrl) {
63
+ const key = (0, crypto_1.fromHex)(viewingKeyHex);
64
+ const entries = [];
65
+ let totalIn = 0n;
66
+ let totalOut = 0n;
67
+ const url = rpcUrl ??
68
+ (pkg.network === 'mainnet' ? 'https://mainnet.sorobanrpc.com' : 'https://soroban-testnet.stellar.org');
69
+ const onChainCommitments = await fetchOnChainCommitments(url, pkg.poolId);
70
+ for (const enc of pkg.entries) {
71
+ let parsed;
72
+ try {
73
+ parsed = JSON.parse(await decrypt(enc, key));
74
+ }
75
+ catch {
76
+ return { valid: false, entries: [], totalShielded: '0', totalWithdrawn: '0', netBalance: '0' };
77
+ }
78
+ const amt = BigInt(parsed.amount);
79
+ const pk = BigInt(parsed.pubKey);
80
+ const bl = BigInt(parsed.blinding);
81
+ const recomputed = (0, crypto_1.commitHash)(amt, pk, bl).toString();
82
+ const onChainVerified = recomputed === parsed.commitment &&
83
+ onChainCommitments.has(parsed.commitment);
84
+ entries.push({ ...parsed, onChainVerified });
85
+ if (parsed.type === 'shield')
86
+ totalIn += amt;
87
+ else
88
+ totalOut += amt;
89
+ }
90
+ const decimals = 7;
91
+ return {
92
+ valid: entries.every(e => e.onChainVerified),
93
+ entries,
94
+ totalShielded: (0, crypto_1.stroopsToAmount)(totalIn, decimals),
95
+ totalWithdrawn: (0, crypto_1.stroopsToAmount)(totalOut, decimals),
96
+ netBalance: (0, crypto_1.stroopsToAmount)(totalIn - totalOut, decimals),
97
+ };
98
+ }
99
+ async function fetchOnChainCommitments(rpcUrl, poolId) {
100
+ const server = new stellar_sdk_1.rpc.Server(rpcUrl);
101
+ const commitments = new Set();
102
+ let start;
103
+ try {
104
+ const latest = (await server.getLatestLedger()).sequence;
105
+ start = Math.max(latest - 16000, 1);
106
+ }
107
+ catch {
108
+ return commitments;
109
+ }
110
+ const filters = [{ type: 'contract', contractIds: [poolId], topics: [['*']] }];
111
+ try {
112
+ let res = await server.getEvents({ startLedger: start, filters, limit: 200 });
113
+ for (const e of res.events) {
114
+ try {
115
+ const data = (0, stellar_sdk_1.scValToNative)(e.value);
116
+ if (data?.out_commitment_0) {
117
+ commitments.add((0, crypto_1.bytesToBig)(data.out_commitment_0).toString());
118
+ commitments.add((0, crypto_1.bytesToBig)(data.out_commitment_1).toString());
119
+ }
120
+ }
121
+ catch { /* skip */ }
122
+ }
123
+ while (res.events.length === 200 && res.cursor) {
124
+ res = await server.getEvents({ filters, limit: 200, cursor: res.cursor });
125
+ for (const e of res.events) {
126
+ try {
127
+ const data = (0, stellar_sdk_1.scValToNative)(e.value);
128
+ if (data?.out_commitment_0) {
129
+ commitments.add((0, crypto_1.bytesToBig)(data.out_commitment_0).toString());
130
+ commitments.add((0, crypto_1.bytesToBig)(data.out_commitment_1).toString());
131
+ }
132
+ }
133
+ catch { /* skip */ }
134
+ }
135
+ }
136
+ }
137
+ catch { /* network error — partial verification */ }
138
+ return commitments;
139
+ }
140
+ //# sourceMappingURL=viewing-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewing-key.js","sourceRoot":"","sources":["../src/viewing-key.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@suit-protocol/sdk",
3
+ "version": "0.3.0",
4
+ "description": "Pluggable ZK payment privacy for Stellar — shield, withdraw, viewing keys, compliance receipts",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsc --watch",
14
+ "typecheck": "tsc --noEmit",
15
+ "prepublishOnly": "npm run build"
16
+ },
17
+ "keywords": [
18
+ "stellar",
19
+ "soroban",
20
+ "privacy",
21
+ "zero-knowledge",
22
+ "zk",
23
+ "groth16",
24
+ "utxo",
25
+ "poseidon",
26
+ "shielded-pool"
27
+ ],
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/Techkeyy/suit",
32
+ "directory": "sdk"
33
+ },
34
+ "homepage": "https://github.com/Techkeyy/suit/tree/main/sdk#readme",
35
+ "dependencies": {
36
+ "@stellar/stellar-sdk": "^16.0.1",
37
+ "poseidon-lite": "^0.3.0",
38
+ "js-sha3": "^0.9.3",
39
+ "snarkjs": "^0.7.4"
40
+ },
41
+ "devDependencies": {
42
+ "typescript": "^5.3.0",
43
+ "@types/node": "^20.0.0"
44
+ }
45
+ }