solvoid 1.0.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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +123 -0
  3. package/SECURITY.md +174 -0
  4. package/bin/solvoid-scan +2 -0
  5. package/dist/cli/privacy-scan.d.ts +11 -0
  6. package/dist/cli/privacy-scan.d.ts.map +1 -0
  7. package/dist/cli/privacy-scan.js +112 -0
  8. package/dist/cli/privacy-scan.js.map +1 -0
  9. package/dist/cli/solvoid-scan.d.ts +13 -0
  10. package/dist/cli/solvoid-scan.d.ts.map +1 -0
  11. package/dist/cli/solvoid-scan.js +174 -0
  12. package/dist/cli/solvoid-scan.js.map +1 -0
  13. package/dist/cli/test-forensics.d.ts +2 -0
  14. package/dist/cli/test-forensics.d.ts.map +1 -0
  15. package/dist/cli/test-forensics.js +90 -0
  16. package/dist/cli/test-forensics.js.map +1 -0
  17. package/dist/cli/test-scenarios.d.ts +2 -0
  18. package/dist/cli/test-scenarios.d.ts.map +1 -0
  19. package/dist/cli/test-scenarios.js +96 -0
  20. package/dist/cli/test-scenarios.js.map +1 -0
  21. package/dist/examples/enterprise-demo.js +65 -0
  22. package/dist/sdk/client.d.ts +77 -0
  23. package/dist/sdk/client.d.ts.map +1 -0
  24. package/dist/sdk/client.js +180 -0
  25. package/dist/sdk/client.js.map +1 -0
  26. package/dist/sdk/compliance/identity.d.ts +34 -0
  27. package/dist/sdk/compliance/identity.d.ts.map +1 -0
  28. package/dist/sdk/compliance/identity.js +55 -0
  29. package/dist/sdk/compliance/identity.js.map +1 -0
  30. package/dist/sdk/compliance/threat-model.d.ts +14 -0
  31. package/dist/sdk/compliance/threat-model.d.ts.map +1 -0
  32. package/dist/sdk/compliance/threat-model.js +101 -0
  33. package/dist/sdk/compliance/threat-model.js.map +1 -0
  34. package/dist/sdk/forensics/mev.js +50 -0
  35. package/dist/sdk/forensics/order-flow.d.ts +20 -0
  36. package/dist/sdk/forensics/order-flow.d.ts.map +1 -0
  37. package/dist/sdk/forensics/order-flow.js +104 -0
  38. package/dist/sdk/forensics/order-flow.js.map +1 -0
  39. package/dist/sdk/forensics/simulation.d.ts +14 -0
  40. package/dist/sdk/forensics/simulation.d.ts.map +1 -0
  41. package/dist/sdk/forensics/simulation.js +45 -0
  42. package/dist/sdk/forensics/simulation.js.map +1 -0
  43. package/dist/sdk/index.d.ts +10 -0
  44. package/dist/sdk/index.d.ts.map +1 -0
  45. package/dist/sdk/index.js +43 -0
  46. package/dist/sdk/index.js.map +1 -0
  47. package/dist/sdk/network/shadow-rpc.d.ts +18 -0
  48. package/dist/sdk/network/shadow-rpc.d.ts.map +1 -0
  49. package/dist/sdk/network/shadow-rpc.js +32 -0
  50. package/dist/sdk/network/shadow-rpc.js.map +1 -0
  51. package/dist/sdk/obfuscator.d.ts +36 -0
  52. package/dist/sdk/obfuscator.d.ts.map +1 -0
  53. package/dist/sdk/obfuscator.js +77 -0
  54. package/dist/sdk/obfuscator.js.map +1 -0
  55. package/dist/sdk/passport/manager.d.ts +36 -0
  56. package/dist/sdk/passport/manager.d.ts.map +1 -0
  57. package/dist/sdk/passport/manager.js +107 -0
  58. package/dist/sdk/passport/manager.js.map +1 -0
  59. package/dist/sdk/pipeline.d.ts +34 -0
  60. package/dist/sdk/pipeline.d.ts.map +1 -0
  61. package/dist/sdk/pipeline.js +81 -0
  62. package/dist/sdk/pipeline.js.map +1 -0
  63. package/dist/sdk/privacy/confidential-transfer.d.ts +81 -0
  64. package/dist/sdk/privacy/confidential-transfer.d.ts.map +1 -0
  65. package/dist/sdk/privacy/confidential-transfer.js +158 -0
  66. package/dist/sdk/privacy/confidential-transfer.js.map +1 -0
  67. package/dist/sdk/privacy/history.d.ts +11 -0
  68. package/dist/sdk/privacy/history.d.ts.map +1 -0
  69. package/dist/sdk/privacy/history.js +110 -0
  70. package/dist/sdk/privacy/history.js.map +1 -0
  71. package/dist/sdk/privacy/light-protocol.d.ts +42 -0
  72. package/dist/sdk/privacy/light-protocol.d.ts.map +1 -0
  73. package/dist/sdk/privacy/light-protocol.js +83 -0
  74. package/dist/sdk/privacy/light-protocol.js.map +1 -0
  75. package/dist/sdk/privacy/relayer.d.ts +12 -0
  76. package/dist/sdk/privacy/relayer.d.ts.map +1 -0
  77. package/dist/sdk/privacy/relayer.js +55 -0
  78. package/dist/sdk/privacy/relayer.js.map +1 -0
  79. package/dist/sdk/privacy/safe-obfuscator.d.ts +38 -0
  80. package/dist/sdk/privacy/safe-obfuscator.d.ts.map +1 -0
  81. package/dist/sdk/privacy/safe-obfuscator.js +101 -0
  82. package/dist/sdk/privacy/safe-obfuscator.js.map +1 -0
  83. package/dist/sdk/privacy/shield.d.ts +34 -0
  84. package/dist/sdk/privacy/shield.d.ts.map +1 -0
  85. package/dist/sdk/privacy/shield.js +174 -0
  86. package/dist/sdk/privacy/shield.js.map +1 -0
  87. package/dist/sdk/privacy/zk.js +43 -0
  88. package/dist/sdk/privacy-engine.d.ts +11 -0
  89. package/dist/sdk/privacy-engine.d.ts.map +1 -0
  90. package/dist/sdk/privacy-engine.js +165 -0
  91. package/dist/sdk/privacy-engine.js.map +1 -0
  92. package/dist/sdk/registry/idl-fetcher.d.ts +17 -0
  93. package/dist/sdk/registry/idl-fetcher.d.ts.map +1 -0
  94. package/dist/sdk/registry/idl-fetcher.js +98 -0
  95. package/dist/sdk/registry/idl-fetcher.js.map +1 -0
  96. package/dist/sdk/registry/programs.d.ts +18 -0
  97. package/dist/sdk/registry/programs.d.ts.map +1 -0
  98. package/dist/sdk/registry/programs.js +45 -0
  99. package/dist/sdk/registry/programs.js.map +1 -0
  100. package/dist/sdk/rescue/analyzer.d.ts +22 -0
  101. package/dist/sdk/rescue/analyzer.d.ts.map +1 -0
  102. package/dist/sdk/rescue/analyzer.js +46 -0
  103. package/dist/sdk/rescue/analyzer.js.map +1 -0
  104. package/dist/sdk/rescue/builder.d.ts +16 -0
  105. package/dist/sdk/rescue/builder.d.ts.map +1 -0
  106. package/dist/sdk/rescue/builder.js +33 -0
  107. package/dist/sdk/rescue/builder.js.map +1 -0
  108. package/dist/sdk/semantics/analyzer.d.ts +1 -0
  109. package/dist/sdk/semantics/analyzer.d.ts.map +1 -0
  110. package/dist/sdk/semantics/analyzer.js +2 -0
  111. package/dist/sdk/semantics/analyzer.js.map +1 -0
  112. package/dist/sdk/semantics/decoder.d.ts +7 -0
  113. package/dist/sdk/semantics/decoder.d.ts.map +1 -0
  114. package/dist/sdk/semantics/decoder.js +30 -0
  115. package/dist/sdk/semantics/decoder.js.map +1 -0
  116. package/dist/sdk/semantics/graph.d.ts +1 -0
  117. package/dist/sdk/semantics/graph.d.ts.map +1 -0
  118. package/dist/sdk/semantics/graph.js +2 -0
  119. package/dist/sdk/semantics/graph.js.map +1 -0
  120. package/dist/sdk/semantics/idl-registry.d.ts +7 -0
  121. package/dist/sdk/semantics/idl-registry.d.ts.map +1 -0
  122. package/dist/sdk/semantics/idl-registry.js +95 -0
  123. package/dist/sdk/semantics/idl-registry.js.map +1 -0
  124. package/dist/sdk/semantics/types.d.ts +44 -0
  125. package/dist/sdk/semantics/types.d.ts.map +1 -0
  126. package/dist/sdk/semantics/types.js +3 -0
  127. package/dist/sdk/semantics/types.js.map +1 -0
  128. package/dist/sdk/simulator.d.ts +15 -0
  129. package/dist/sdk/simulator.d.ts.map +1 -0
  130. package/dist/sdk/simulator.js +133 -0
  131. package/dist/sdk/simulator.js.map +1 -0
  132. package/dist/sdk/types.d.ts +53 -0
  133. package/dist/sdk/types.d.ts.map +1 -0
  134. package/dist/sdk/types.js +3 -0
  135. package/dist/sdk/types.js.map +1 -0
  136. package/dist/sdk/utils/config.d.ts +15 -0
  137. package/dist/sdk/utils/config.d.ts.map +1 -0
  138. package/dist/sdk/utils/config.js +40 -0
  139. package/dist/sdk/utils/config.js.map +1 -0
  140. package/dist/sdk/utils/logger.d.ts +3 -0
  141. package/dist/sdk/utils/logger.d.ts.map +1 -0
  142. package/dist/sdk/utils/logger.js +17 -0
  143. package/dist/sdk/utils/logger.js.map +1 -0
  144. package/dist/tests/unit/idl-registry.test.d.ts +2 -0
  145. package/dist/tests/unit/idl-registry.test.d.ts.map +1 -0
  146. package/dist/tests/unit/idl-registry.test.js +35 -0
  147. package/dist/tests/unit/idl-registry.test.js.map +1 -0
  148. package/dist/tools/exploit_demonstration.js +99 -0
  149. package/dist/tools/gen-tx.js +29 -0
  150. package/dist/tools/get-recent-tx.js +18 -0
  151. package/package.json +95 -0
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Light Protocol (ZK State Compression) Manager
3
+ *
4
+ * This module provides interfaces for Light Protocol's privacy features.
5
+ *
6
+ * PRIVACY GUARANTEES:
7
+ * - ✅ Hides sender identity (within anonymity set)
8
+ * - ✅ Hides receiver identity (within anonymity set)
9
+ * - ✅ Hides transfer amounts
10
+ */
11
+ import { PublicKey, TransactionInstruction } from '@solana/web3.js';
12
+ /**
13
+ * Manager for Light Protocol (ZK Compression).
14
+ */
15
+ export declare class LightProtocolManager {
16
+ constructor(_rpcUrl: string);
17
+ /**
18
+ * Shields SOL from a Public Account to a Private (Compressed) Account.
19
+ */
20
+ createShieldSolInstruction(user: PublicKey, amountLamports: number): Promise<TransactionInstruction>;
21
+ /**
22
+ * Shields an SPL Token.
23
+ * NOTE: Requires CompressedTokenProgram setup.
24
+ */
25
+ createShieldSplInstruction(_user: PublicKey, _mint: PublicKey, _tokenAccount: PublicKey, _amount: number): Promise<TransactionInstruction>;
26
+ /**
27
+ * Unshields (Decompresses) SOL back to Public State.
28
+ *
29
+ * NOTE: This is a simplified interface. Full implementation
30
+ * requires input accounts and validity proofs from the Light SDK.
31
+ */
32
+ createUnshieldSolInstruction(_user: PublicKey, _destPublic: PublicKey, _amountLamports: number): Promise<TransactionInstruction>;
33
+ /**
34
+ * Get privacy capabilities summary
35
+ */
36
+ static getPrivacyCapabilities(): {
37
+ hides: string[];
38
+ exposes: string[];
39
+ requirements: string[];
40
+ };
41
+ }
42
+ //# sourceMappingURL=light-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-protocol.d.ts","sourceRoot":"","sources":["../../../sdk/privacy/light-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EACH,SAAS,EACT,sBAAsB,EACzB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,oBAAoB;gBACjB,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACU,0BAA0B,CACnC,IAAI,EAAE,SAAS,EACf,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,sBAAsB,CAAC;IAgBlC;;;OAGG;IACU,0BAA0B,CACnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,SAAS,EACxB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC;IAOlC;;;;;OAKG;IACU,4BAA4B,CACrC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,MAAM,GACxB,OAAO,CAAC,sBAAsB,CAAC;IAOlC;;OAEG;WACW,sBAAsB,IAAI;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,EAAE,MAAM,EAAE,CAAC;KAC1B;CAmBJ"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * Light Protocol (ZK State Compression) Manager
4
+ *
5
+ * This module provides interfaces for Light Protocol's privacy features.
6
+ *
7
+ * PRIVACY GUARANTEES:
8
+ * - ✅ Hides sender identity (within anonymity set)
9
+ * - ✅ Hides receiver identity (within anonymity set)
10
+ * - ✅ Hides transfer amounts
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.LightProtocolManager = void 0;
14
+ const stateless_js_1 = require("@lightprotocol/stateless.js");
15
+ const web3_js_1 = require("@solana/web3.js");
16
+ /**
17
+ * Manager for Light Protocol (ZK Compression).
18
+ */
19
+ class LightProtocolManager {
20
+ constructor(_rpcUrl) {
21
+ // RPC URL stored for future operations
22
+ }
23
+ /**
24
+ * Shields SOL from a Public Account to a Private (Compressed) Account.
25
+ */
26
+ async createShieldSolInstruction(user, amountLamports) {
27
+ const ix = stateless_js_1.LightSystemProgram.compress({
28
+ payer: user,
29
+ toAddress: user,
30
+ lamports: (0, stateless_js_1.bn)(amountLamports),
31
+ outputStateTreeInfo: {
32
+ tree: web3_js_1.PublicKey.default,
33
+ queue: web3_js_1.PublicKey.default,
34
+ cpiContext: undefined,
35
+ treeType: stateless_js_1.TreeType.StateV1,
36
+ nextTreeInfo: null
37
+ }
38
+ });
39
+ return ix;
40
+ }
41
+ /**
42
+ * Shields an SPL Token.
43
+ * NOTE: Requires CompressedTokenProgram setup.
44
+ */
45
+ async createShieldSplInstruction(_user, _mint, _tokenAccount, _amount) {
46
+ throw new Error("SPL Token compression requires CompressedTokenProgram setup. " +
47
+ "Please use @lightprotocol/compressed-token for token operations.");
48
+ }
49
+ /**
50
+ * Unshields (Decompresses) SOL back to Public State.
51
+ *
52
+ * NOTE: This is a simplified interface. Full implementation
53
+ * requires input accounts and validity proofs from the Light SDK.
54
+ */
55
+ async createUnshieldSolInstruction(_user, _destPublic, _amountLamports) {
56
+ throw new Error("Decompress requires input accounts and validity proofs. " +
57
+ "Use @lightprotocol/stateless.js directly for unshielding operations.");
58
+ }
59
+ /**
60
+ * Get privacy capabilities summary
61
+ */
62
+ static getPrivacyCapabilities() {
63
+ return {
64
+ hides: [
65
+ "Sender identity (within anonymity set)",
66
+ "Receiver identity (within anonymity set)",
67
+ "Transfer amounts"
68
+ ],
69
+ exposes: [
70
+ "That a shielding/unshielding transaction occurred",
71
+ "Approximate timing",
72
+ "Total value entering/exiting the shielded pool"
73
+ ],
74
+ requirements: [
75
+ "Wait time between shield/unshield for better privacy",
76
+ "Use fresh wallet for unshielding",
77
+ "Avoid distinctive amounts"
78
+ ]
79
+ };
80
+ }
81
+ }
82
+ exports.LightProtocolManager = LightProtocolManager;
83
+ //# sourceMappingURL=light-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-protocol.js","sourceRoot":"","sources":["../../../sdk/privacy/light-protocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,8DAIqC;AACrC,6CAGyB;AAEzB;;GAEG;AACH,MAAa,oBAAoB;IAC7B,YAAY,OAAe;QACvB,uCAAuC;IAC3C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,0BAA0B,CACnC,IAAe,EACf,cAAsB;QAEtB,MAAM,EAAE,GAAG,iCAAkB,CAAC,QAAQ,CAAC;YACnC,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAA,iBAAE,EAAC,cAAc,CAAC;YAC5B,mBAAmB,EAAE;gBACjB,IAAI,EAAE,mBAAS,CAAC,OAAO;gBACvB,KAAK,EAAE,mBAAS,CAAC,OAAO;gBACxB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,uBAAQ,CAAC,OAAO;gBAC1B,YAAY,EAAE,IAAI;aACrB;SACJ,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,0BAA0B,CACnC,KAAgB,EAChB,KAAgB,EAChB,aAAwB,EACxB,OAAe;QAEf,MAAM,IAAI,KAAK,CACX,+DAA+D;YAC/D,kEAAkE,CACrE,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,4BAA4B,CACrC,KAAgB,EAChB,WAAsB,EACtB,eAAuB;QAEvB,MAAM,IAAI,KAAK,CACX,0DAA0D;YAC1D,sEAAsE,CACzE,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,sBAAsB;QAKhC,OAAO;YACH,KAAK,EAAE;gBACH,wCAAwC;gBACxC,0CAA0C;gBAC1C,kBAAkB;aACrB;YACD,OAAO,EAAE;gBACL,mDAAmD;gBACnD,oBAAoB;gBACpB,gDAAgD;aACnD;YACD,YAAY,EAAE;gBACV,sDAAsD;gBACtD,kCAAkC;gBAClC,2BAA2B;aAC9B;SACJ,CAAC;IACN,CAAC;CACJ;AAtFD,oDAsFC"}
@@ -0,0 +1,12 @@
1
+ import { Connection } from '@solana/web3.js';
2
+ /**
3
+ * Privacy Relayer
4
+ * Facilitates gasless (for the user) and unlinkable withdrawals.
5
+ */
6
+ export declare class PrivacyRelayer {
7
+ private relayerKeypair;
8
+ private program;
9
+ constructor(connection: Connection, relayerSecretKey: Uint8Array, _programId: string, idl: any);
10
+ start(port?: number): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=relayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../../sdk/privacy/relayer.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAIb,MAAM,iBAAiB,CAAC;AAIzB;;;GAGG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,OAAO,CAAU;gBAGrB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG;IAUC,KAAK,CAAC,IAAI,GAAE,MAAa;CAyCzC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PrivacyRelayer = void 0;
7
+ const web3_js_1 = require("@solana/web3.js");
8
+ const anchor_1 = require("@coral-xyz/anchor");
9
+ const express_1 = __importDefault(require("express"));
10
+ /**
11
+ * Privacy Relayer
12
+ * Facilitates gasless (for the user) and unlinkable withdrawals.
13
+ */
14
+ class PrivacyRelayer {
15
+ constructor(connection, relayerSecretKey, _programId, idl) {
16
+ this.relayerKeypair = web3_js_1.Keypair.fromSecretKey(relayerSecretKey);
17
+ const wallet = new anchor_1.Wallet(this.relayerKeypair);
18
+ const provider = new anchor_1.AnchorProvider(connection, wallet, {
19
+ preflightCommitment: 'confirmed',
20
+ });
21
+ this.program = new anchor_1.Program(idl, provider);
22
+ }
23
+ async start(port = 3000) {
24
+ const app = (0, express_1.default)();
25
+ app.use(express_1.default.json());
26
+ app.post('/withdraw', async (req, res) => {
27
+ try {
28
+ const { nullifierHash, root, proof, recipient } = req.body;
29
+ const [vaultPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('vault')], this.program.programId);
30
+ const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('state')], this.program.programId);
31
+ const tx = await this.program.methods
32
+ .withdraw(nullifierHash, root, proof)
33
+ .accounts({
34
+ state: statePda,
35
+ vault: vaultPda,
36
+ recipient: new web3_js_1.PublicKey(recipient),
37
+ relayer: this.relayerKeypair.publicKey,
38
+ systemProgram: web3_js_1.SystemProgram.programId,
39
+ })
40
+ .signers([this.relayerKeypair])
41
+ .rpc();
42
+ res.json({ success: true, txid: tx });
43
+ }
44
+ catch (error) {
45
+ console.error('Relayer error:', error);
46
+ res.status(500).json({ success: false, error: 'Withdrawal failed' });
47
+ }
48
+ });
49
+ app.listen(port, () => {
50
+ console.log(`Privacy Relayer running on port ${port}`);
51
+ });
52
+ }
53
+ }
54
+ exports.PrivacyRelayer = PrivacyRelayer;
55
+ //# sourceMappingURL=relayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayer.js","sourceRoot":"","sources":["../../../sdk/privacy/relayer.ts"],"names":[],"mappings":";;;;;;AAAA,6CAKyB;AACzB,8CAAoE;AACpE,sDAAqD;AAErD;;;GAGG;AACH,MAAa,cAAc;IAIvB,YACI,UAAsB,EACtB,gBAA4B,EAC5B,UAAkB,EAClB,GAAQ;QAER,IAAI,CAAC,cAAc,GAAG,iBAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,uBAAc,CAAC,UAAU,EAAE,MAAM,EAAE;YACpD,mBAAmB,EAAE,WAAW;SACnC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAAe,IAAI;QAClC,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAExB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;YACxD,IAAI,CAAC;gBACD,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAE3D,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAC/C,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACtB,IAAI,CAAC,OAAO,CAAC,SAAS,CACzB,CAAC;gBAEF,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAC/C,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACtB,IAAI,CAAC,OAAO,CAAC,SAAS,CACzB,CAAC;gBAEF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;qBAChC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;qBACpC,QAAQ,CAAC;oBACN,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,IAAI,mBAAS,CAAC,SAAS,CAAC;oBACnC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS;oBACtC,aAAa,EAAE,uBAAa,CAAC,SAAS;iBAClC,CAAC;qBACR,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;qBAC9B,GAAG,EAAE,CAAC;gBAEX,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;gBACvC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACzE,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA3DD,wCA2DC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ⚠️ DEPRECATED - THIS MODULE IS REMOVED ⚠️
3
+ *
4
+ * The SafeObfuscator class has been REMOVED because:
5
+ *
6
+ * 1. It provided NO PRIVACY - the funding trace immediately deanonymizes users
7
+ * 2. It gave users a FALSE SENSE OF SECURITY
8
+ * 3. It was WORSE than doing nothing (unusual patterns draw attention)
9
+ *
10
+ * WHAT TO USE INSTEAD:
11
+ *
12
+ * For MEV Protection:
13
+ * import { JitoClient } from '@jito-foundation/jito-ts';
14
+ * // Use Jito bundles to bypass public mempool
15
+ *
16
+ * For Amount Privacy:
17
+ * import { ConfidentialTokenManager } from './confidential-transfer';
18
+ * // Use Token-2022 Confidential Transfers
19
+ *
20
+ * For Full Privacy:
21
+ * import { LightProtocolManager } from './light-protocol';
22
+ * // Use Light Protocol ZK Compression
23
+ *
24
+ * This file exists only to provide a clear error message for any code
25
+ * that was previously using SafeObfuscator.
26
+ */
27
+ /**
28
+ * @deprecated REMOVED - Use LightProtocolManager or ConfidentialTokenManager instead
29
+ */
30
+ export declare class SafeObfuscator {
31
+ constructor(_forceDryRun?: boolean);
32
+ obfuscateSafely(..._args: any[]): Promise<never>;
33
+ }
34
+ /**
35
+ * Migration helper - shows users how to migrate from SafeObfuscator
36
+ */
37
+ export declare function getObfuscatorMigrationGuide(): string;
38
+ //# sourceMappingURL=safe-obfuscator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-obfuscator.d.ts","sourceRoot":"","sources":["../../../sdk/privacy/safe-obfuscator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;GAEG;AACH,qBAAa,cAAc;gBACX,YAAY,GAAE,OAAe;IAa5B,eAAe,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;CAGhE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CA+CpD"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ /**
3
+ * ⚠️ DEPRECATED - THIS MODULE IS REMOVED ⚠️
4
+ *
5
+ * The SafeObfuscator class has been REMOVED because:
6
+ *
7
+ * 1. It provided NO PRIVACY - the funding trace immediately deanonymizes users
8
+ * 2. It gave users a FALSE SENSE OF SECURITY
9
+ * 3. It was WORSE than doing nothing (unusual patterns draw attention)
10
+ *
11
+ * WHAT TO USE INSTEAD:
12
+ *
13
+ * For MEV Protection:
14
+ * import { JitoClient } from '@jito-foundation/jito-ts';
15
+ * // Use Jito bundles to bypass public mempool
16
+ *
17
+ * For Amount Privacy:
18
+ * import { ConfidentialTokenManager } from './confidential-transfer';
19
+ * // Use Token-2022 Confidential Transfers
20
+ *
21
+ * For Full Privacy:
22
+ * import { LightProtocolManager } from './light-protocol';
23
+ * // Use Light Protocol ZK Compression
24
+ *
25
+ * This file exists only to provide a clear error message for any code
26
+ * that was previously using SafeObfuscator.
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.SafeObfuscator = void 0;
30
+ exports.getObfuscatorMigrationGuide = getObfuscatorMigrationGuide;
31
+ /**
32
+ * @deprecated REMOVED - Use LightProtocolManager or ConfidentialTokenManager instead
33
+ */
34
+ class SafeObfuscator {
35
+ constructor(_forceDryRun = false) {
36
+ throw new Error("SafeObfuscator has been REMOVED. " +
37
+ "It provided no privacy and gave users a false sense of security. " +
38
+ "The SessionKey funding trace immediately deanonymizes users. " +
39
+ "\n\n" +
40
+ "Use instead:\n" +
41
+ "- For MEV protection: @jito-foundation/jito-ts\n" +
42
+ "- For amount privacy: ConfidentialTokenManager\n" +
43
+ "- For full privacy: LightProtocolManager\n");
44
+ }
45
+ async obfuscateSafely(..._args) {
46
+ throw new Error("SafeObfuscator has been removed. See class documentation for alternatives.");
47
+ }
48
+ }
49
+ exports.SafeObfuscator = SafeObfuscator;
50
+ /**
51
+ * Migration helper - shows users how to migrate from SafeObfuscator
52
+ */
53
+ function getObfuscatorMigrationGuide() {
54
+ return `
55
+ ╔══════════════════════════════════════════════════════════════════════════════╗
56
+ ║ SAFE OBFUSCATOR MIGRATION GUIDE ║
57
+ ╠══════════════════════════════════════════════════════════════════════════════╣
58
+ ║ ║
59
+ ║ SafeObfuscator has been REMOVED because it provided NO PRIVACY. ║
60
+ ║ ║
61
+ ║ The "obfuscation" approach was fundamentally broken: ║
62
+ ║ • You had to fund the SessionKey from your main wallet ║
63
+ ║ • This created an instant, permanent on-chain link ║
64
+ ║ • Chain analysts could deanonymize in seconds ║
65
+ ║ ║
66
+ ║ ═══════════════════════════════════════════════════════════════════════ ║
67
+ ║ MIGRATION OPTIONS: ║
68
+ ║ ═══════════════════════════════════════════════════════════════════════ ║
69
+ ║ ║
70
+ ║ 1. FOR MEV PROTECTION (most common use case): ║
71
+ ║ ┌─────────────────────────────────────────────────────────────────┐ ║
72
+ ║ │ import { searcherClient } from '@jito-foundation/jito-ts'; │ ║
73
+ ║ │ │ ║
74
+ ║ │ // Send via Jito's private mempool │ ║
75
+ ║ │ const bundle = await client.sendBundle([signedTx]); │ ║
76
+ ║ └─────────────────────────────────────────────────────────────────┘ ║
77
+ ║ ║
78
+ ║ 2. FOR HIDING TRANSFER AMOUNTS: ║
79
+ ║ ┌─────────────────────────────────────────────────────────────────┐ ║
80
+ ║ │ import { ConfidentialTokenManager } from './confidential'; │ ║
81
+ ║ │ │ ║
82
+ ║ │ const manager = new ConfidentialTokenManager(connection); │ ║
83
+ ║ │ const depositIx = await manager.createDepositPublicToPrivate( │ ║
84
+ ║ │ mint, tokenAccount, owner, amount │ ║
85
+ ║ │ ); │ ║
86
+ ║ └─────────────────────────────────────────────────────────────────┘ ║
87
+ ║ ║
88
+ ║ 3. FOR FULL PRIVACY (hide sender, receiver, and amounts): ║
89
+ ║ ┌─────────────────────────────────────────────────────────────────┐ ║
90
+ ║ │ import { LightProtocolManager } from './light-protocol'; │ ║
91
+ ║ │ │ ║
92
+ ║ │ const manager = new LightProtocolManager(rpcUrl); │ ║
93
+ ║ │ const shieldIx = await manager.createShieldSolInstruction( │ ║
94
+ ║ │ userPubkey, amountLamports │ ║
95
+ ║ │ ); │ ║
96
+ ║ └─────────────────────────────────────────────────────────────────┘ ║
97
+ ║ ║
98
+ ╚══════════════════════════════════════════════════════════════════════════════╝
99
+ `;
100
+ }
101
+ //# sourceMappingURL=safe-obfuscator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-obfuscator.js","sourceRoot":"","sources":["../../../sdk/privacy/safe-obfuscator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AA2BH,kEA+CC;AAxED;;GAEG;AACH,MAAa,cAAc;IACvB,YAAY,eAAwB,KAAK;QACrC,MAAM,IAAI,KAAK,CACX,mCAAmC;YACnC,mEAAmE;YACnE,+DAA+D;YAC/D,MAAM;YACN,gBAAgB;YAChB,kDAAkD;YAClD,kDAAkD;YAClD,4CAA4C,CAC/C,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,GAAG,KAAY;QACxC,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAClG,CAAC;CACJ;AAjBD,wCAiBC;AAED;;GAEG;AACH,SAAgB,2BAA2B;IACvC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CV,CAAC;AACF,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Connection, PublicKey } from '@solana/web3.js';
2
+ export declare class PrivacyShield {
3
+ private program;
4
+ constructor(connection: Connection, _programId: string, idl: any, wallet: any);
5
+ getProgramId(): PublicKey;
6
+ generateCommitment(): {
7
+ secret: NonSharedBuffer;
8
+ nullifier: NonSharedBuffer;
9
+ commitment: NonSharedBuffer;
10
+ nullifierHash: NonSharedBuffer;
11
+ commitmentHex: string;
12
+ };
13
+ deposit(commitment: Buffer): Promise<string>;
14
+ /**
15
+ * Build the authentication path for a commitment at a given index.
16
+ */
17
+ getMerkleProof(commitmentIndex: number, allCommitments: Buffer[]): Promise<{
18
+ proof: Buffer[];
19
+ indices: number[];
20
+ }>;
21
+ /**
22
+ * Groth16 proof generation via snarkjs.
23
+ */
24
+ generateZKProof(secret: Buffer, nullifier: Buffer, root: Buffer, merklePath: {
25
+ proof: Buffer[];
26
+ indices: number[];
27
+ }, wasmPath: string, zkeyPath: string): Promise<{
28
+ proof: Buffer<ArrayBufferLike>;
29
+ publicSignals: any;
30
+ }>;
31
+ private formatProof;
32
+ withdraw(nullifierHash: Buffer, root: Buffer, proof: Buffer[], recipient: PublicKey, relayer: any, fee?: number): Promise<string>;
33
+ }
34
+ //# sourceMappingURL=shield.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shield.d.ts","sourceRoot":"","sources":["../../../sdk/privacy/shield.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,SAAS,EAEZ,MAAM,iBAAiB,CAAC;AAMzB,qBAAa,aAAa;IACtB,OAAO,CAAC,OAAO,CAAU;gBAEb,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;IAYtE,YAAY,IAAI,SAAS;IAIzB,kBAAkB;;;;;;;IAsBZ,OAAO,CAAC,UAAU,EAAE,MAAM;IAevC;;OAEG;IACU,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAgD/H;;OAEG;IACU,eAAe,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAClD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;;;;IAqBpB,OAAO,CAAC,WAAW;IAUN,QAAQ,CACjB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,GAAG,EACZ,GAAG,GAAE,MAAU;CAoBtB"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PrivacyShield = void 0;
37
+ const web3_js_1 = require("@solana/web3.js");
38
+ const anchor_1 = require("@coral-xyz/anchor");
39
+ const crypto = __importStar(require("crypto"));
40
+ const MERKLE_TREE_DEPTH = 20;
41
+ class PrivacyShield {
42
+ constructor(connection, _programId, idl, wallet) {
43
+ const provider = new anchor_1.AnchorProvider(connection, wallet, {
44
+ preflightCommitment: 'confirmed',
45
+ });
46
+ try {
47
+ this.program = new anchor_1.Program(idl, provider);
48
+ }
49
+ catch (e) {
50
+ // Silently fail if IDL is invalid - allowed for mock mode/offline audits
51
+ this.program = { programId: new web3_js_1.PublicKey(_programId) };
52
+ }
53
+ }
54
+ getProgramId() {
55
+ return this.program.programId;
56
+ }
57
+ generateCommitment() {
58
+ const secret = crypto.randomBytes(32);
59
+ const nullifier = crypto.randomBytes(32);
60
+ // H = Hash(secret || nullifier)
61
+ const commitment = crypto.createHash('sha256')
62
+ .update(Buffer.concat([secret, nullifier]))
63
+ .digest();
64
+ const nullifierHash = crypto.createHash('sha256')
65
+ .update(nullifier)
66
+ .digest();
67
+ return {
68
+ secret,
69
+ nullifier,
70
+ commitment,
71
+ nullifierHash,
72
+ commitmentHex: commitment.toString('hex'),
73
+ };
74
+ }
75
+ async deposit(commitment) {
76
+ const [vaultPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('vault')], this.program.programId);
77
+ const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('state')], this.program.programId);
78
+ return await this.program.methods
79
+ .deposit(Array.from(commitment))
80
+ .accounts({
81
+ state: statePda,
82
+ depositor: this.program.provider.publicKey,
83
+ vault: vaultPda,
84
+ systemProgram: web3_js_1.SystemProgram.programId,
85
+ })
86
+ .rpc();
87
+ }
88
+ /**
89
+ * Build the authentication path for a commitment at a given index.
90
+ */
91
+ async getMerkleProof(commitmentIndex, allCommitments) {
92
+ if (commitmentIndex >= allCommitments.length) {
93
+ throw new Error("Commitment index out of range");
94
+ }
95
+ // Cache empty branch hashes up to tree depth
96
+ const zeros = [];
97
+ let currentZero = Buffer.alloc(32, 0);
98
+ for (let i = 0; i < MERKLE_TREE_DEPTH; i++) {
99
+ zeros.push(currentZero);
100
+ currentZero = crypto.createHash('sha256')
101
+ .update(Buffer.concat([currentZero, currentZero]))
102
+ .digest();
103
+ }
104
+ const proof = [];
105
+ const indices = [];
106
+ let index = commitmentIndex;
107
+ let nodes = [...allCommitments];
108
+ for (let level = 0; level < MERKLE_TREE_DEPTH; level++) {
109
+ if (index % 2 === 0) {
110
+ const sibling = (index + 1 < nodes.length) ? nodes[index + 1] : zeros[level];
111
+ proof.push(sibling);
112
+ indices.push(0);
113
+ }
114
+ else {
115
+ proof.push(nodes[index - 1]);
116
+ indices.push(1);
117
+ }
118
+ const nextLevelNodes = [];
119
+ for (let i = 0; i < nodes.length; i += 2) {
120
+ const left = nodes[i];
121
+ const right = (i + 1 < nodes.length) ? nodes[i + 1] : zeros[level];
122
+ // Deterministic parent hashing
123
+ const parent = crypto.createHash('sha256')
124
+ .update(left < right ? Buffer.concat([left, right]) : Buffer.concat([right, left]))
125
+ .digest();
126
+ nextLevelNodes.push(parent);
127
+ }
128
+ nodes = nextLevelNodes;
129
+ index = Math.floor(index / 2);
130
+ }
131
+ return { proof, indices };
132
+ }
133
+ /**
134
+ * Groth16 proof generation via snarkjs.
135
+ */
136
+ async generateZKProof(secret, nullifier, root, merklePath, wasmPath, zkeyPath) {
137
+ const { proof, publicSignals } = await (require('snarkjs')).groth16.fullProve({
138
+ root: root.toString('hex'),
139
+ nullifierHash: crypto.createHash('sha256').update(nullifier).digest().toString('hex'),
140
+ secret: secret.toString('hex'),
141
+ nullifier: nullifier.toString('hex'),
142
+ pathElements: merklePath.proof.map(p => p.toString('hex')),
143
+ pathIndices: merklePath.indices
144
+ }, wasmPath, zkeyPath);
145
+ return {
146
+ proof: this.formatProof(proof),
147
+ publicSignals
148
+ };
149
+ }
150
+ formatProof(proof) {
151
+ // Flatten pi_a, pi_b, pi_c for the on-chain verifier
152
+ return Buffer.concat([
153
+ Buffer.from(proof.pi_a[0]), Buffer.from(proof.pi_a[1]),
154
+ Buffer.from(proof.pi_b[0][0]), Buffer.from(proof.pi_b[0][1]),
155
+ Buffer.from(proof.pi_b[1][0]), Buffer.from(proof.pi_b[1][1]),
156
+ Buffer.from(proof.pi_c[0]), Buffer.from(proof.pi_c[1])
157
+ ]);
158
+ }
159
+ async withdraw(nullifierHash, root, proof, recipient, relayer, fee = 0) {
160
+ const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('state')], this.program.programId);
161
+ return await this.program.methods
162
+ .withdraw(Array.from(nullifierHash), Array.from(root), proof.map(p => Array.from(p)), new this.program.provider.anchor.BN(fee))
163
+ .accounts({
164
+ state: statePda,
165
+ recipient,
166
+ relayer: relayer.publicKey,
167
+ systemProgram: web3_js_1.SystemProgram.programId,
168
+ })
169
+ .signers([relayer])
170
+ .rpc();
171
+ }
172
+ }
173
+ exports.PrivacyShield = PrivacyShield;
174
+ //# sourceMappingURL=shield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shield.js","sourceRoot":"","sources":["../../../sdk/privacy/shield.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAIyB;AACzB,8CAA4D;AAC5D,+CAAiC;AAEjC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAa,aAAa;IAGtB,YAAY,UAAsB,EAAE,UAAkB,EAAE,GAAQ,EAAE,MAAW;QACzE,MAAM,QAAQ,GAAG,IAAI,uBAAc,CAAC,UAAU,EAAE,MAAM,EAAE;YACpD,mBAAmB,EAAE,WAAW;SACnC,CAAC,CAAC;QACH,IAAI,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,yEAAyE;YACzE,IAAI,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,mBAAS,CAAC,UAAU,CAAC,EAAS,CAAC;QACnE,CAAC;IACL,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;IAEM,kBAAkB;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEzC,gCAAgC;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;aACzC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;aAC1C,MAAM,EAAE,CAAC;QAEd,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;aAC5C,MAAM,CAAC,SAAS,CAAC;aACjB,MAAM,EAAE,CAAC;QAEd,OAAO;YACH,MAAM;YACN,SAAS;YACT,UAAU;YACV,aAAa;YACb,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC5C,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,UAAkB;QACnC,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpG,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEpG,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;aAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC/B,QAAQ,CAAC;YACN,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS;YAC1C,KAAK,EAAE,QAAQ;YACf,aAAa,EAAE,uBAAa,CAAC,SAAS;SAClC,CAAC;aACR,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,eAAuB,EAAE,cAAwB;QACzE,IAAI,eAAe,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;QAED,6CAA6C;QAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;iBACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;iBACjD,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,eAAe,CAAC;QAE5B,IAAI,KAAK,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;QAEhC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,iBAAiB,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACnE,+BAA+B;gBAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;qBACrC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;qBAClF,MAAM,EAAE,CAAC;gBACd,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,KAAK,GAAG,cAAc,CAAC;YACvB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CACxB,MAAc,EACd,SAAiB,EACjB,IAAY,EACZ,UAAkD,EAClD,QAAgB,EAChB,QAAgB;QAEhB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CACzE;YACI,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1B,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC9B,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1D,WAAW,EAAE,UAAU,CAAC,OAAO;SAClC,EACD,QAAQ,EACR,QAAQ,CACX,CAAC;QAEF,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC9B,aAAa;SAChB,CAAC;IACN,CAAC;IAEO,WAAW,CAAC,KAAU;QAC1B,qDAAqD;QACrD,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACzD,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,QAAQ,CACjB,aAAqB,EACrB,IAAY,EACZ,KAAe,EACf,SAAoB,EACpB,OAAY,EACZ,MAAc,CAAC;QAEf,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEpG,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;aAC5B,QAAQ,CACL,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAK,IAAI,CAAC,OAAO,CAAC,QAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CACpD;aACA,QAAQ,CAAC;YACN,KAAK,EAAE,QAAQ;YACf,SAAS;YACT,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,aAAa,EAAE,uBAAa,CAAC,SAAS;SAClC,CAAC;aACR,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;aAClB,GAAG,EAAE,CAAC;IACf,CAAC;CACJ;AA7KD,sCA6KC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZkPrivacyProvider = void 0;
4
+ class ZkPrivacyProvider {
5
+ /**
6
+ * Generates a remediation plan utilizing Zero Knowledge proofs.
7
+ * e.g., "Instead of signing with Key A, provide a Proof that you know Key A"
8
+ */
9
+ proposeZkFix(leak) {
10
+ if (leak.type === 'identity') {
11
+ return {
12
+ circuitType: 'authority',
13
+ publicInputs: ['hash(pubkey)']
14
+ };
15
+ }
16
+ return null; // No ZK fix available
17
+ }
18
+ /**
19
+ * Generates the client-side code snippet to create the proof.
20
+ */
21
+ getProofGenerationCode(requirement) {
22
+ if (requirement.circuitType === 'authority') {
23
+ return `
24
+ // Auto-generated ZK Fix
25
+ import { prove } from '@privacy-zero/zk';
26
+
27
+ const proof = await prove('authority_circuit', {
28
+ privateInput: { privateKey: myKey },
29
+ publicInput: { commitment: myCommitment }
30
+ });
31
+ `;
32
+ }
33
+ return "";
34
+ }
35
+ /*
36
+ * Validates a ZK proof on-chain (simulation).
37
+ */
38
+ async verifyProof(proof) {
39
+ // snarkjs.verify(...)
40
+ return true;
41
+ }
42
+ }
43
+ exports.ZkPrivacyProvider = ZkPrivacyProvider;
@@ -0,0 +1,11 @@
1
+ import { TransactionJSON, Leak, GeyserTransactionEvents } from './types';
2
+ export declare class PrivacyEngine {
3
+ analyzeTransaction(tx: TransactionJSON): Leak[];
4
+ /**
5
+ * Score calculation based on weighted severity and frequency multipliers.
6
+ * Capped at 100, floored at 0 (or 15 with remediation).
7
+ */
8
+ calculateScore(leaks: Leak[]): number;
9
+ analyzeGeyserEvents(tx: TransactionJSON, events: GeyserTransactionEvents): Leak[];
10
+ }
11
+ //# sourceMappingURL=privacy-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy-engine.d.ts","sourceRoot":"","sources":["../../sdk/privacy-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAQzE,qBAAa,aAAa;IAEf,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE;IA4EtD;;;OAGG;IACI,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM;IA0ErC,mBAAmB,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI,EAAE;CAU3F"}