solvoid 1.0.0 → 1.1.1

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 (224) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/dist/client.d.ts +73 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +281 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/crypto/poseidon.d.ts +124 -0
  7. package/dist/crypto/poseidon.d.ts.map +1 -0
  8. package/dist/crypto/poseidon.js +293 -0
  9. package/dist/crypto/poseidon.js.map +1 -0
  10. package/dist/events/bus.d.ts +44 -0
  11. package/dist/events/bus.d.ts.map +1 -0
  12. package/dist/events/bus.js +83 -0
  13. package/dist/events/bus.js.map +1 -0
  14. package/dist/{sdk/index.d.ts → index.d.ts} +2 -3
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/{sdk/index.js → index.js} +21 -11
  17. package/dist/index.js.map +1 -0
  18. package/dist/integrity.d.ts +371 -0
  19. package/dist/integrity.d.ts.map +1 -0
  20. package/dist/integrity.js +260 -0
  21. package/dist/integrity.js.map +1 -0
  22. package/dist/network/shadow-rpc.d.ts +36 -0
  23. package/dist/network/shadow-rpc.d.ts.map +1 -0
  24. package/dist/network/shadow-rpc.js +163 -0
  25. package/dist/network/shadow-rpc.js.map +1 -0
  26. package/dist/{sdk/passport → passport}/manager.d.ts +9 -18
  27. package/dist/passport/manager.d.ts.map +1 -0
  28. package/dist/passport/manager.js +148 -0
  29. package/dist/passport/manager.js.map +1 -0
  30. package/dist/pipeline.d.ts +25 -0
  31. package/dist/pipeline.d.ts.map +1 -0
  32. package/dist/pipeline.js +127 -0
  33. package/dist/pipeline.js.map +1 -0
  34. package/dist/privacy/relayer.d.ts.map +1 -0
  35. package/dist/privacy/relayer.js.map +1 -0
  36. package/dist/privacy/shield.d.ts +27 -0
  37. package/dist/privacy/shield.d.ts.map +1 -0
  38. package/dist/privacy/shield.js +289 -0
  39. package/dist/privacy/shield.js.map +1 -0
  40. package/dist/{sdk/privacy-engine.d.ts → privacy-engine.d.ts} +2 -1
  41. package/dist/privacy-engine.d.ts.map +1 -0
  42. package/dist/{sdk/privacy-engine.js → privacy-engine.js} +24 -15
  43. package/dist/privacy-engine.js.map +1 -0
  44. package/dist/registry/idl-fetcher.d.ts +10 -0
  45. package/dist/registry/idl-fetcher.d.ts.map +1 -0
  46. package/dist/{sdk/registry → registry}/idl-fetcher.js +19 -16
  47. package/dist/registry/idl-fetcher.js.map +1 -0
  48. package/dist/registry/programs.d.ts.map +1 -0
  49. package/dist/registry/programs.js.map +1 -0
  50. package/dist/rescue/analyzer.d.ts +20 -0
  51. package/dist/rescue/analyzer.d.ts.map +1 -0
  52. package/dist/rescue/analyzer.js +137 -0
  53. package/dist/rescue/analyzer.js.map +1 -0
  54. package/dist/rescue/builder.d.ts +23 -0
  55. package/dist/rescue/builder.d.ts.map +1 -0
  56. package/dist/rescue/builder.js +164 -0
  57. package/dist/rescue/builder.js.map +1 -0
  58. package/dist/security/key-rotation.d.ts +153 -0
  59. package/dist/security/key-rotation.d.ts.map +1 -0
  60. package/dist/security/key-rotation.js +354 -0
  61. package/dist/security/key-rotation.js.map +1 -0
  62. package/dist/{sdk/semantics → semantics}/analyzer.d.ts.map +1 -1
  63. package/dist/{sdk/semantics → semantics}/analyzer.js.map +1 -1
  64. package/dist/semantics/decoder.d.ts.map +1 -0
  65. package/dist/semantics/decoder.js.map +1 -0
  66. package/dist/{sdk/semantics → semantics}/graph.d.ts.map +1 -1
  67. package/dist/{sdk/semantics → semantics}/graph.js.map +1 -1
  68. package/dist/semantics/idl-registry.d.ts +8 -0
  69. package/dist/semantics/idl-registry.d.ts.map +1 -0
  70. package/dist/{sdk/semantics → semantics}/idl-registry.js +23 -7
  71. package/dist/semantics/idl-registry.js.map +1 -0
  72. package/dist/semantics/types.d.ts +10 -0
  73. package/dist/semantics/types.d.ts.map +1 -0
  74. package/dist/{sdk → semantics}/types.js.map +1 -1
  75. package/dist/types.d.ts +23 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js.map +1 -0
  78. package/dist/utils/address.d.ts +10 -0
  79. package/dist/utils/address.d.ts.map +1 -0
  80. package/dist/utils/address.js +45 -0
  81. package/dist/utils/address.js.map +1 -0
  82. package/dist/utils/config.d.ts.map +1 -0
  83. package/dist/utils/config.js.map +1 -0
  84. package/dist/utils/logger.d.ts.map +1 -0
  85. package/dist/utils/logger.js.map +1 -0
  86. package/package.json +39 -76
  87. package/LICENSE +0 -21
  88. package/README.md +0 -123
  89. package/SECURITY.md +0 -174
  90. package/bin/solvoid-scan +0 -2
  91. package/dist/cli/privacy-scan.d.ts +0 -11
  92. package/dist/cli/privacy-scan.d.ts.map +0 -1
  93. package/dist/cli/privacy-scan.js +0 -112
  94. package/dist/cli/privacy-scan.js.map +0 -1
  95. package/dist/cli/solvoid-scan.d.ts +0 -13
  96. package/dist/cli/solvoid-scan.d.ts.map +0 -1
  97. package/dist/cli/solvoid-scan.js +0 -174
  98. package/dist/cli/solvoid-scan.js.map +0 -1
  99. package/dist/cli/test-forensics.d.ts +0 -2
  100. package/dist/cli/test-forensics.d.ts.map +0 -1
  101. package/dist/cli/test-forensics.js +0 -90
  102. package/dist/cli/test-forensics.js.map +0 -1
  103. package/dist/cli/test-scenarios.d.ts +0 -2
  104. package/dist/cli/test-scenarios.d.ts.map +0 -1
  105. package/dist/cli/test-scenarios.js +0 -96
  106. package/dist/cli/test-scenarios.js.map +0 -1
  107. package/dist/examples/enterprise-demo.js +0 -65
  108. package/dist/sdk/client.d.ts +0 -77
  109. package/dist/sdk/client.d.ts.map +0 -1
  110. package/dist/sdk/client.js +0 -180
  111. package/dist/sdk/client.js.map +0 -1
  112. package/dist/sdk/compliance/identity.d.ts +0 -34
  113. package/dist/sdk/compliance/identity.d.ts.map +0 -1
  114. package/dist/sdk/compliance/identity.js +0 -55
  115. package/dist/sdk/compliance/identity.js.map +0 -1
  116. package/dist/sdk/compliance/threat-model.d.ts +0 -14
  117. package/dist/sdk/compliance/threat-model.d.ts.map +0 -1
  118. package/dist/sdk/compliance/threat-model.js +0 -101
  119. package/dist/sdk/compliance/threat-model.js.map +0 -1
  120. package/dist/sdk/forensics/mev.js +0 -50
  121. package/dist/sdk/forensics/order-flow.d.ts +0 -20
  122. package/dist/sdk/forensics/order-flow.d.ts.map +0 -1
  123. package/dist/sdk/forensics/order-flow.js +0 -104
  124. package/dist/sdk/forensics/order-flow.js.map +0 -1
  125. package/dist/sdk/forensics/simulation.d.ts +0 -14
  126. package/dist/sdk/forensics/simulation.d.ts.map +0 -1
  127. package/dist/sdk/forensics/simulation.js +0 -45
  128. package/dist/sdk/forensics/simulation.js.map +0 -1
  129. package/dist/sdk/index.d.ts.map +0 -1
  130. package/dist/sdk/index.js.map +0 -1
  131. package/dist/sdk/network/shadow-rpc.d.ts +0 -18
  132. package/dist/sdk/network/shadow-rpc.d.ts.map +0 -1
  133. package/dist/sdk/network/shadow-rpc.js +0 -32
  134. package/dist/sdk/network/shadow-rpc.js.map +0 -1
  135. package/dist/sdk/obfuscator.d.ts +0 -36
  136. package/dist/sdk/obfuscator.d.ts.map +0 -1
  137. package/dist/sdk/obfuscator.js +0 -77
  138. package/dist/sdk/obfuscator.js.map +0 -1
  139. package/dist/sdk/passport/manager.d.ts.map +0 -1
  140. package/dist/sdk/passport/manager.js +0 -107
  141. package/dist/sdk/passport/manager.js.map +0 -1
  142. package/dist/sdk/pipeline.d.ts +0 -34
  143. package/dist/sdk/pipeline.d.ts.map +0 -1
  144. package/dist/sdk/pipeline.js +0 -81
  145. package/dist/sdk/pipeline.js.map +0 -1
  146. package/dist/sdk/privacy/confidential-transfer.d.ts +0 -81
  147. package/dist/sdk/privacy/confidential-transfer.d.ts.map +0 -1
  148. package/dist/sdk/privacy/confidential-transfer.js +0 -158
  149. package/dist/sdk/privacy/confidential-transfer.js.map +0 -1
  150. package/dist/sdk/privacy/history.d.ts +0 -11
  151. package/dist/sdk/privacy/history.d.ts.map +0 -1
  152. package/dist/sdk/privacy/history.js +0 -110
  153. package/dist/sdk/privacy/history.js.map +0 -1
  154. package/dist/sdk/privacy/light-protocol.d.ts +0 -42
  155. package/dist/sdk/privacy/light-protocol.d.ts.map +0 -1
  156. package/dist/sdk/privacy/light-protocol.js +0 -83
  157. package/dist/sdk/privacy/light-protocol.js.map +0 -1
  158. package/dist/sdk/privacy/relayer.d.ts.map +0 -1
  159. package/dist/sdk/privacy/relayer.js.map +0 -1
  160. package/dist/sdk/privacy/safe-obfuscator.d.ts +0 -38
  161. package/dist/sdk/privacy/safe-obfuscator.d.ts.map +0 -1
  162. package/dist/sdk/privacy/safe-obfuscator.js +0 -101
  163. package/dist/sdk/privacy/safe-obfuscator.js.map +0 -1
  164. package/dist/sdk/privacy/shield.d.ts +0 -34
  165. package/dist/sdk/privacy/shield.d.ts.map +0 -1
  166. package/dist/sdk/privacy/shield.js +0 -174
  167. package/dist/sdk/privacy/shield.js.map +0 -1
  168. package/dist/sdk/privacy/zk.js +0 -43
  169. package/dist/sdk/privacy-engine.d.ts.map +0 -1
  170. package/dist/sdk/privacy-engine.js.map +0 -1
  171. package/dist/sdk/registry/idl-fetcher.d.ts +0 -17
  172. package/dist/sdk/registry/idl-fetcher.d.ts.map +0 -1
  173. package/dist/sdk/registry/idl-fetcher.js.map +0 -1
  174. package/dist/sdk/registry/programs.d.ts.map +0 -1
  175. package/dist/sdk/registry/programs.js.map +0 -1
  176. package/dist/sdk/rescue/analyzer.d.ts +0 -22
  177. package/dist/sdk/rescue/analyzer.d.ts.map +0 -1
  178. package/dist/sdk/rescue/analyzer.js +0 -46
  179. package/dist/sdk/rescue/analyzer.js.map +0 -1
  180. package/dist/sdk/rescue/builder.d.ts +0 -16
  181. package/dist/sdk/rescue/builder.d.ts.map +0 -1
  182. package/dist/sdk/rescue/builder.js +0 -33
  183. package/dist/sdk/rescue/builder.js.map +0 -1
  184. package/dist/sdk/semantics/decoder.d.ts.map +0 -1
  185. package/dist/sdk/semantics/decoder.js.map +0 -1
  186. package/dist/sdk/semantics/idl-registry.d.ts +0 -7
  187. package/dist/sdk/semantics/idl-registry.d.ts.map +0 -1
  188. package/dist/sdk/semantics/idl-registry.js.map +0 -1
  189. package/dist/sdk/semantics/types.d.ts +0 -44
  190. package/dist/sdk/semantics/types.d.ts.map +0 -1
  191. package/dist/sdk/semantics/types.js.map +0 -1
  192. package/dist/sdk/simulator.d.ts +0 -15
  193. package/dist/sdk/simulator.d.ts.map +0 -1
  194. package/dist/sdk/simulator.js +0 -133
  195. package/dist/sdk/simulator.js.map +0 -1
  196. package/dist/sdk/types.d.ts +0 -53
  197. package/dist/sdk/types.d.ts.map +0 -1
  198. package/dist/sdk/utils/config.d.ts.map +0 -1
  199. package/dist/sdk/utils/config.js.map +0 -1
  200. package/dist/sdk/utils/logger.d.ts.map +0 -1
  201. package/dist/sdk/utils/logger.js.map +0 -1
  202. package/dist/tests/unit/idl-registry.test.d.ts +0 -2
  203. package/dist/tests/unit/idl-registry.test.d.ts.map +0 -1
  204. package/dist/tests/unit/idl-registry.test.js +0 -35
  205. package/dist/tests/unit/idl-registry.test.js.map +0 -1
  206. package/dist/tools/exploit_demonstration.js +0 -99
  207. package/dist/tools/gen-tx.js +0 -29
  208. package/dist/tools/get-recent-tx.js +0 -18
  209. /package/dist/{sdk/privacy → privacy}/relayer.d.ts +0 -0
  210. /package/dist/{sdk/privacy → privacy}/relayer.js +0 -0
  211. /package/dist/{sdk/registry → registry}/programs.d.ts +0 -0
  212. /package/dist/{sdk/registry → registry}/programs.js +0 -0
  213. /package/dist/{sdk/semantics → semantics}/analyzer.d.ts +0 -0
  214. /package/dist/{sdk/semantics → semantics}/analyzer.js +0 -0
  215. /package/dist/{sdk/semantics → semantics}/decoder.d.ts +0 -0
  216. /package/dist/{sdk/semantics → semantics}/decoder.js +0 -0
  217. /package/dist/{sdk/semantics → semantics}/graph.d.ts +0 -0
  218. /package/dist/{sdk/semantics → semantics}/graph.js +0 -0
  219. /package/dist/{sdk/semantics → semantics}/types.js +0 -0
  220. /package/dist/{sdk/types.js → types.js} +0 -0
  221. /package/dist/{sdk/utils → utils}/config.d.ts +0 -0
  222. /package/dist/{sdk/utils → utils}/config.js +0 -0
  223. /package/dist/{sdk/utils → utils}/logger.d.ts +0 -0
  224. /package/dist/{sdk/utils → utils}/logger.js +0 -0
@@ -1,174 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- /**
4
- * SolVoid CLI
5
- * Utility for shielding assets and auditing privacy leaks on Solana.
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.validateInput = validateInput;
42
- const web3_js_1 = require("@solana/web3.js");
43
- const client_1 = require("../sdk/client");
44
- const dotenv = __importStar(require("dotenv"));
45
- dotenv.config();
46
- async function main() {
47
- const args = process.argv.slice(2);
48
- const command = args[0];
49
- if (!command || args.includes('--help')) {
50
- console.log(`
51
- SolVoid: The Digital Fortress for Solana
52
-
53
- Commands:
54
- protect <address> Scan address for leaks and view Privacy Passport
55
- rescue <address> Atomic shielding of all leaked assets
56
- shield <amount> Execute a private deposit (Surgical Shielding)
57
- withdraw <secret> <nullifier> <recipient> Unlinkable ZK withdrawal
58
-
59
- Flags:
60
- --rpc <url> Solana RPC URL
61
- --relayer <url> Relayer/Shadow RPC URL (or SHADOW_RELAYER_URL env)
62
- --program <id> Override SolVoid Program ID
63
- --surgical Optimize shielding for leaked assets only
64
- --shadow-rpc Broadcast via encrypted relay hops
65
- --mock Enable simulated/mock mode for testing
66
- `);
67
- process.exit(0);
68
- }
69
- const rpcUrl = args.includes('--rpc') ? args[args.indexOf('--rpc') + 1] : (process.env.RPC_URL || 'https://api.mainnet-beta.solana.com');
70
- const programId = args.includes('--program') ? args[args.indexOf('--program') + 1] : (process.env.PROGRAM_ID || 'Fg6PaFpoGXkYsidMpSsu3SWJYEHp7rQU9YSTFNDQ4F5i');
71
- const relayerUrl = args.includes('--relayer') ? args[args.indexOf('--relayer') + 1] : (process.env.SHADOW_RELAYER_URL || 'http://localhost:3000');
72
- const mock = args.includes('--mock');
73
- const wallet = web3_js_1.Keypair.generate();
74
- const client = new client_1.SolVoidClient({ rpcUrl, programId, relayerUrl, mock }, wallet);
75
- try {
76
- switch (command) {
77
- case 'protect': {
78
- const address = new web3_js_1.PublicKey(args[1]);
79
- console.log(`\nScanning ${address.toBase58()}...`);
80
- const passport = await client.getPassport(address.toBase58());
81
- const results = await client.protect(address);
82
- console.log(`\n--- PRIVACY PASSPORT ---`);
83
- const scoreColor = passport.overallScore < 50 ? '\x1b[31m' : passport.overallScore < 80 ? '\x1b[33m' : '\x1b[32m';
84
- console.log(`Overall Score: ${scoreColor}${passport.overallScore}/100\x1b[0m`);
85
- console.log(`Badges: ${passport.badges.map(b => b.icon + ' ' + b.name).join(', ') || 'None'}`);
86
- results.forEach((res) => {
87
- console.log(`\n---------------------------------------------------------`);
88
- console.log(`Signature: ${res.signature}`);
89
- if (res.leaks.length > 0) {
90
- res.leaks.forEach((leak) => {
91
- const sevColor = leak.severity === 'CRITICAL' ? '\x1b[31m' : '\x1b[33m';
92
- console.log(` - [${sevColor}${leak.severity}\x1b[0m] ${leak.description}`);
93
- });
94
- }
95
- });
96
- break;
97
- }
98
- case 'rescue': {
99
- const address = new web3_js_1.PublicKey(args[1]);
100
- console.log(`\nExecuting rescue for: ${address.toBase58()}`);
101
- const result = await client.rescue(address);
102
- if (result.status === 'success') {
103
- console.log(`\nRescue successful.`);
104
- console.log(`Leaked assets shielded and mixed via relay.`);
105
- console.log(`TX Signature: ${result.txid}`);
106
- console.log(`Score improved: ${result.oldScore} -> ${result.newScore}`);
107
- }
108
- else {
109
- console.log(`\n${result.message}`);
110
- }
111
- break;
112
- }
113
- case 'shield': {
114
- const amount = parseFloat(args[1]) * 1e9;
115
- console.log(`Shielding ${args[1]} SOL...`);
116
- const { txid, commitmentData } = await client.shield(amount);
117
- console.log('TX Signature:', txid);
118
- console.log('--- SAVE THESE SECRETS ---');
119
- console.log('Secret:', commitmentData.secret.toString('hex'));
120
- console.log('Nullifier:', commitmentData.nullifier.toString('hex'));
121
- break;
122
- }
123
- case 'withdraw': {
124
- const secret = args[1];
125
- const nullifier = args[2];
126
- const recipient = new web3_js_1.PublicKey(args[3]);
127
- let commitmentBuffers = [];
128
- if (!mock) {
129
- console.log(`Fetching commitments from: ${relayerUrl}...`);
130
- const response = await fetch(`${relayerUrl}/commitments`);
131
- const { commitments } = (await response.json());
132
- commitmentBuffers = commitments.map((c) => Buffer.from(c, 'hex'));
133
- }
134
- else {
135
- console.log(`[MOCK] Skipping commitment fetch...`);
136
- }
137
- console.log(`Generating ZK proof and submitting withdrawal...`);
138
- const result = await client.withdraw(secret, nullifier, recipient, commitmentBuffers, './withdraw.wasm', './withdraw.zkey', wallet);
139
- console.log('Result:', result);
140
- break;
141
- }
142
- default:
143
- console.error(`Unknown command: ${command}`);
144
- process.exit(1);
145
- }
146
- }
147
- catch (e) {
148
- console.error('Error:', e.message);
149
- process.exit(1);
150
- }
151
- }
152
- /**
153
- * Basic input validation for signatures vs file paths.
154
- */
155
- function validateInput(input) {
156
- if (!input || input.trim().length === 0) {
157
- throw new Error('Input cannot be empty');
158
- }
159
- if (input.endsWith('.json')) {
160
- if (require('fs').existsSync(input)) {
161
- return { type: 'file', path: input };
162
- }
163
- throw new Error('File not found');
164
- }
165
- // Base58 check for Solana signatures
166
- if (/^[1-9A-HJ-NP-Za-km-z]{32,88}$/.test(input)) {
167
- return { type: 'signature' };
168
- }
169
- throw new Error('Invalid format');
170
- }
171
- if (require.main === module) {
172
- main();
173
- }
174
- //# sourceMappingURL=solvoid-scan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solvoid-scan.js","sourceRoot":"","sources":["../../cli/solvoid-scan.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-forensics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-forensics.d.ts","sourceRoot":"","sources":["../../cli/test-forensics.ts"],"names":[],"mappings":""}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const privacy_engine_1 = require("../sdk/privacy-engine");
4
- const web3_js_1 = require("@solana/web3.js");
5
- // Setup Mock Identity - using valid keys
6
- // Victim = MemoV1
7
- const VICTIM_PUBKEY = new web3_js_1.PublicKey("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo");
8
- const VICTIM_B58 = VICTIM_PUBKEY.toBase58();
9
- // Attacker = MemoV2
10
- const ATTACKER = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
11
- // Program = Token Program
12
- const PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
13
- // PDA = Goki (Arbitrary valid key)
14
- const PDA_ACCOUNT = "GokivDYuQXPZCWRkwMhdH2h91KpDQXBEmpgBgs55bnpH";
15
- // Transaction that defines the "User" context
16
- const tx = {
17
- signatures: ["sig_forensic"],
18
- message: {
19
- accountKeys: [ATTACKER, VICTIM_B58, PROGRAM_ID, PDA_ACCOUNT],
20
- header: {
21
- numRequiredSignatures: 2, // Attacker is likely FeePayer here contextually but let's say Victim signed too
22
- numReadonlySignedAccounts: 0,
23
- numReadonlyUnsignedAccounts: 1
24
- },
25
- instructions: [
26
- { programIdIndex: 2, accounts: [1, 3], data: "AQ==" } // Interact with Program, passing Victim(1) and PDA(3)
27
- ]
28
- }
29
- };
30
- // Construct Malicious State Data
31
- // [8 bytes discriminator] + [32 bytes innocent] + [32 bytes VICTIM KEY] + [End]
32
- const innocentBytes = Buffer.alloc(32).fill(0xAA);
33
- const victimBytes = VICTIM_PUBKEY.toBuffer();
34
- const maliciousState = Buffer.concat([
35
- Buffer.from("12345678", "hex"), // Discriminator
36
- innocentBytes,
37
- victimBytes, // <--- THE LEAK
38
- Buffer.from("DEADBEEF", "hex")
39
- ]);
40
- const events = {
41
- signature: "sig_forensic",
42
- accountUpdates: [
43
- {
44
- pubkey: PDA_ACCOUNT,
45
- owner: PROGRAM_ID,
46
- lamports: 1000000,
47
- data: maliciousState.toString('base64'),
48
- executable: false,
49
- rentEpoch: 0,
50
- writeVersion: 1
51
- },
52
- // Also include a "Safe" update (User updating their own account)
53
- {
54
- pubkey: VICTIM_B58, // Updating self
55
- owner: "11111111111111111111111111111111", // System Owned usually
56
- lamports: 900000,
57
- data: victimBytes.toString('base64'), // Contains own key obviously
58
- executable: false,
59
- rentEpoch: 0,
60
- writeVersion: 2
61
- }
62
- ]
63
- };
64
- function runForensicTest() {
65
- console.log("--- Running Forensic Analysis (Phase 4) ---");
66
- const engine = new privacy_engine_1.PrivacyEngine();
67
- // 1. Analyze
68
- const leaks = engine.analyzeGeyserEvents(tx, events);
69
- // 2. Report
70
- if (leaks.length > 0) {
71
- console.log(`✅ FOUND ${leaks.length} LEAKS (Expected 1 Critical State Leak):`);
72
- leaks.forEach((l) => {
73
- console.log(` [${l.type.toUpperCase()}] Severity: ${l.severity || "Medium"}`);
74
- console.log(` Scope: ${l.scope}`);
75
- console.log(` Desc: ${l.description}`);
76
- if (l.type === 'state-leak' && l.scope.includes(PDA_ACCOUNT)) {
77
- console.log(" -> VERIFIED: Successfully detected binary leak in PDA.");
78
- }
79
- if (l.scope.includes(VICTIM_B58)) {
80
- console.log(" -> CHECK: Did we flag the user's own account? (Should NOT happen).");
81
- }
82
- });
83
- }
84
- else {
85
- console.log("❌ FAILED: No leaks detected in forensic scan.");
86
- process.exit(1);
87
- }
88
- }
89
- runForensicTest();
90
- //# sourceMappingURL=test-forensics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-forensics.js","sourceRoot":"","sources":["../../cli/test-forensics.ts"],"names":[],"mappings":";;AAAA,0DAAsD;AAEtD,6CAA4C;AAE5C,yCAAyC;AACzC,kBAAkB;AAClB,MAAM,aAAa,GAAG,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC;AACnF,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;AAE5C,oBAAoB;AACpB,MAAM,QAAQ,GAAG,6CAA6C,CAAC;AAE/D,0BAA0B;AAC1B,MAAM,UAAU,GAAG,6CAA6C,CAAC;AAEjE,mCAAmC;AACnC,MAAM,WAAW,GAAG,8CAA8C,CAAC;AAEnE,8CAA8C;AAC9C,MAAM,EAAE,GAAoB;IACxB,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,OAAO,EAAE;QACL,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC;QAC5D,MAAM,EAAE;YACJ,qBAAqB,EAAE,CAAC,EAAE,gFAAgF;YAC1G,yBAAyB,EAAE,CAAC;YAC5B,2BAA2B,EAAE,CAAC;SACjC;QACD,YAAY,EAAE;YACV,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,sDAAsD;SAC/G;KACJ;CACJ,CAAC;AAEF,iCAAiC;AACjC,gFAAgF;AAChF,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,gBAAgB;IAChD,aAAa;IACb,WAAW,EAAE,gBAAgB;IAC7B,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,MAAM,GAA4B;IAEpC,SAAS,EAAE,cAAc;IACzB,cAAc,EAAE;QACZ;YACI,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvC,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC;SAClB;QACD,iEAAiE;QACjE;YACI,MAAM,EAAE,UAAU,EAAE,gBAAgB;YACpC,KAAK,EAAE,kCAAkC,EAAE,uBAAuB;YAClE,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,6BAA6B;YACnE,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC;SAClB;KACJ;CACJ,CAAC;AAEF,SAAS,eAAe;IACpB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,8BAAa,EAAE,CAAC;IAEnC,aAAa;IACb,MAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAErD,YAAY;IACZ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,0CAA0C,CAAC,CAAC;QAC/E,KAAK,CAAC,OAAO,CAAC,CAAC,CAAO,EAAE,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAE1C,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;YACzF,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,eAAe,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-scenarios.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-scenarios.d.ts","sourceRoot":"","sources":["../../cli/test-scenarios.ts"],"names":[],"mappings":""}
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const privacy_engine_1 = require("../sdk/privacy-engine");
4
- const MEMO_V1 = "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo";
5
- const MEMO_V2 = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
6
- const SQUADS_ID = "SMPLecH534NA9acpos4G6x7uf3LWbCAwZQE9e8ZekMu";
7
- const SYSTEM_PROGRAM = "11111111111111111111111111111111";
8
- const PROXY_PROGRAM = "Proxy11111111111111111111111111111111111111";
9
- const VICTIM = "VictimUserAddress11111111111111111111111111";
10
- const ATTACKER = "AttackerAddress111111111111111111111111111";
11
- function logTest(name, tx) {
12
- console.log(`\n--- Running Test: ${name} ---`);
13
- const engine = new privacy_engine_1.PrivacyEngine();
14
- const leaks = engine.analyzeTransaction(tx);
15
- if (leaks.length > 0) {
16
- console.log(`✅ DETECTED ${leaks.length} LEAKS:`);
17
- leaks.forEach((l) => console.log(` [${l.type}] ${l.scope} \n Description: ${l.description}`));
18
- }
19
- else {
20
- console.log("❌ FAILED: No leaks detected!");
21
- }
22
- }
23
- // Test 1: Nested Memo via CPI
24
- const test1 = {
25
- signatures: ["sig1"],
26
- message: {
27
- accountKeys: [ATTACKER, VICTIM, SYSTEM_PROGRAM, PROXY_PROGRAM, MEMO_V2],
28
- header: { numRequiredSignatures: 1, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 3 },
29
- instructions: [
30
- { programIdIndex: 2, accounts: [0, 1], data: "" }, // System Transfer
31
- { programIdIndex: 3, accounts: [1], data: "AQ==" } // Proxy Call
32
- ]
33
- },
34
- meta: {
35
- innerInstructions: [
36
- {
37
- index: 1, // Inside Proxy Call
38
- instructions: [
39
- { programIdIndex: 4, accounts: [], data: Buffer.from("Secret Data").toString('base64') } // Call Memo v2
40
- ]
41
- }
42
- ]
43
- }
44
- };
45
- // Test 2: Memo v1 Evasion
46
- const test2 = {
47
- signatures: ["sig2"],
48
- message: {
49
- accountKeys: [ATTACKER, MEMO_V1],
50
- header: { numRequiredSignatures: 1, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 1 },
51
- instructions: [
52
- { programIdIndex: 1, accounts: [], data: Buffer.from("Secret V1 Data").toString('base64') }
53
- ]
54
- }
55
- };
56
- // Test 3: Double-Nested CPI
57
- const test3 = {
58
- signatures: ["sig3"],
59
- message: {
60
- accountKeys: [ATTACKER, PROXY_PROGRAM, "IntermediateProg...", MEMO_V2],
61
- header: { numRequiredSignatures: 1, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 3 },
62
- instructions: [
63
- { programIdIndex: 1, accounts: [], data: "" } // Call Proxy
64
- ]
65
- },
66
- meta: {
67
- innerInstructions: [
68
- {
69
- index: 0, // Inside Proxy
70
- instructions: [
71
- { programIdIndex: 2, accounts: [], data: "" }, // Proxy Calls Intermediate
72
- { programIdIndex: 3, accounts: [], data: Buffer.from("Deep Secret").toString('base64') } // Intermediate Calls Memo
73
- ]
74
- }
75
- ]
76
- }
77
- };
78
- // Test 4: Account Abstraction (Data Leak)
79
- // Fee Payer = Squads (Index 0)
80
- // Real User = Victim (Index 1) -> Signer
81
- const test4 = {
82
- signatures: ["sig4"],
83
- message: {
84
- accountKeys: [SQUADS_ID, VICTIM, MEMO_V2],
85
- header: { numRequiredSignatures: 2, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 1 },
86
- instructions: [
87
- // Instruction: Memo program with data that includes VICTIM address
88
- { programIdIndex: 2, accounts: [], data: Buffer.from(`User Metadata: ${VICTIM}`).toString('base64') }
89
- ]
90
- }
91
- };
92
- logTest("1. Nested Memo via CPI", test1);
93
- logTest("2. Memo v1 Evasion", test2);
94
- logTest("3. Double-Nested CPI", test3);
95
- logTest("4. Account Abstraction (Data Leak)", test4);
96
- //# sourceMappingURL=test-scenarios.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-scenarios.js","sourceRoot":"","sources":["../../cli/test-scenarios.ts"],"names":[],"mappings":";;AAAA,0DAAsD;AAGtD,MAAM,OAAO,GAAG,6CAA6C,CAAC;AAC9D,MAAM,OAAO,GAAG,6CAA6C,CAAC;AAC9D,MAAM,SAAS,GAAG,6CAA6C,CAAC;AAChE,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAC1D,MAAM,aAAa,GAAG,6CAA6C,CAAC;AAEpE,MAAM,MAAM,GAAG,6CAA6C,CAAC;AAC7D,MAAM,QAAQ,GAAG,4CAA4C,CAAC;AAE9D,SAAS,OAAO,CAAC,IAAY,EAAE,EAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,8BAAa,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE5C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,sBAAsB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAChD,CAAC;AACL,CAAC;AAED,8BAA8B;AAC9B,MAAM,KAAK,GAAoB;IAC3B,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,OAAO,EAAE;QACL,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,CAAC;QACvE,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,yBAAyB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE;QAClG,YAAY,EAAE;YACV,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,kBAAkB;YACrE,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,aAAa;SACnE;KACJ;IACD,IAAI,EAAE;QACF,iBAAiB,EAAE;YACf;gBACI,KAAK,EAAE,CAAC,EAAE,oBAAoB;gBAC9B,YAAY,EAAE;oBACV,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe;iBAC3G;aACJ;SACJ;KACJ;CACJ,CAAC;AAEF,0BAA0B;AAC1B,MAAM,KAAK,GAAoB;IAC3B,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,OAAO,EAAE;QACL,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QAChC,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,yBAAyB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE;QAClG,YAAY,EAAE;YACV,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;SAC9F;KACJ;CACJ,CAAC;AAEF,4BAA4B;AAC5B,MAAM,KAAK,GAAoB;IAC3B,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,OAAO,EAAE;QACL,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,CAAC;QACtE,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,yBAAyB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE;QAClG,YAAY,EAAE;YACV,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,aAAa;SAC9D;KACJ;IACD,IAAI,EAAE;QACF,iBAAiB,EAAE;YACf;gBACI,KAAK,EAAE,CAAC,EAAE,eAAe;gBACzB,YAAY,EAAE;oBACV,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,2BAA2B;oBAC1E,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,0BAA0B;iBACtH;aACJ;SACJ;KACJ;CACJ,CAAC;AAEF,0CAA0C;AAC1C,+BAA+B;AAC/B,yCAAyC;AACzC,MAAM,KAAK,GAAoB;IAC3B,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,OAAO,EAAE;QACL,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;QACzC,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,yBAAyB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE;QAClG,YAAY,EAAE;YACV,mEAAmE;YACnE,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;SACxG;KACJ;CACJ,CAAC;AAEF,OAAO,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACzC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACrC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACvC,OAAO,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const client_1 = require("../sdk/client"); // Adjust path
4
- // Mock Config
5
- const client = new client_1.PrivacyZeroClient({
6
- rpcUrl: "https://api.mainnet-beta.solana.com", // Dummy
7
- modules: {
8
- semantic: true, // We want to test this
9
- mev: true
10
- }
11
- });
12
- // Mock Transaction: A User (FeePayer) calling "Super Swap"
13
- // User Wallet: 5ZwJ... (Mock) -> Index 0
14
- const USER_WALLET = "5ZwJqpwa5u4...UserWallet";
15
- const DEFI_PROGRAM = "DeFi111111111111111111111111111111111111111"; // Matches Mock Registry
16
- // Instruction Data for "swap"
17
- // Discriminator: [100, 100, 100, 100, 100, 100, 100, 100]
18
- // Arg1 (amount_in u64): 5000 (LE) -> 88 13 00 00 00 00 00 00
19
- // Arg2 (min_out u64): 0 -> 00 00 00 00 00 00 00 00
20
- // Total: Disc + 16 bytes.
21
- const disc = Buffer.alloc(8, 100);
22
- const arg1 = Buffer.alloc(8);
23
- arg1.writeBigUInt64LE(5000n);
24
- const arg2 = Buffer.alloc(8);
25
- const data = Buffer.concat([disc, arg1, arg2]);
26
- const transaction = {
27
- message: {
28
- header: {
29
- numRequiredSignatures: 1,
30
- numReadonlySignedAccounts: 0,
31
- numReadonlyUnsignedAccounts: 3
32
- },
33
- accountKeys: [
34
- USER_WALLET, // 0: Signer/Payer
35
- "PoolSourceAdd", // 1: Writable
36
- "PoolDestAdd", // 2: Writable
37
- "UserDestAdd", // 3: Writable
38
- DEFI_PROGRAM // 4: Program
39
- ],
40
- instructions: [
41
- {
42
- programIdIndex: 4, // DeFi Program
43
- accounts: [0, 0, 1, 2, 3], // 0 is authority. 0 is also user_source.
44
- data: data.toString('base64')
45
- }
46
- ]
47
- },
48
- signatures: ["sig1"]
49
- };
50
- async function runTest() {
51
- console.log("Starting Enterprise Scan...");
52
- const report = await client.scan(transaction);
53
- console.log("--- GOVERNANCE REPORT ---");
54
- console.log("Status:", report.status);
55
- console.log("Score:", report.privacyScore);
56
- console.log("\n--- UNACCEPTED LIABILITIES ---");
57
- report.unacceptedLiabilities.forEach(l => {
58
- console.log(`[${l.leak.severity}] ${l.leak.type}: ${l.leak.description}`);
59
- console.log(`Recommendation: ${l.leak.remediation}`);
60
- if (l.leak.context)
61
- console.log("Context:", l.leak.context);
62
- console.log("-");
63
- });
64
- }
65
- runTest();
@@ -1,77 +0,0 @@
1
- import { PublicKey } from '@solana/web3.js';
2
- export interface SolVoidConfig {
3
- rpcUrl: string;
4
- programId: string;
5
- relayerUrl?: string;
6
- mock?: boolean;
7
- }
8
- /**
9
- * SolVoidClient
10
- * High-level orchestration for scanning, shielding, and ZK-withdrawals.
11
- */
12
- export declare class SolVoidClient {
13
- private pipeline;
14
- private passport;
15
- private shadow;
16
- private connection;
17
- private protocolShield;
18
- private config;
19
- constructor(config: SolVoidConfig, wallet: any);
20
- /**
21
- * Scans an address for privacy leaks and prepares remediation shielding.
22
- */
23
- protect(address: PublicKey): Promise<any>;
24
- /**
25
- * Retrieve local scoring history and earned badges for a wallet.
26
- */
27
- getPassport(address: string): Promise<import("./passport/manager").PrivacyPassport>;
28
- /**
29
- * Automatic scan and atomic shield for all tainted assets.
30
- */
31
- rescue(address: PublicKey): Promise<{
32
- status: string;
33
- txid: string;
34
- leakedAssets: {
35
- mint: string;
36
- amount: number;
37
- }[];
38
- oldScore: number;
39
- newScore: number;
40
- message?: undefined;
41
- } | {
42
- status: string;
43
- message: string;
44
- txid?: undefined;
45
- leakedAssets?: undefined;
46
- oldScore?: undefined;
47
- newScore?: undefined;
48
- } | {
49
- status: string;
50
- txid: string;
51
- leakedAssets: import("./rescue/analyzer").LeakedAsset[];
52
- oldScore: any;
53
- newScore: number;
54
- message?: undefined;
55
- }>;
56
- /**
57
- * Directly shields an amount of SOL.
58
- */
59
- shield(_amount: number): Promise<{
60
- txid: string;
61
- commitmentData: {
62
- secret: NonSharedBuffer;
63
- nullifier: NonSharedBuffer;
64
- commitment: NonSharedBuffer;
65
- nullifierHash: NonSharedBuffer;
66
- commitmentHex: string;
67
- };
68
- }>;
69
- /**
70
- * End-to-end withdrawal: Merkle proof -> ZK-proof -> On-chain broadcast.
71
- */
72
- withdraw(secretHex: string, nullifierHex: string, recipient: PublicKey, allCommitments: Buffer[], wasmPath: string, zkeyPath: string, relayerSigner: any, fee?: number): Promise<string | {
73
- status: string;
74
- signature: string;
75
- }>;
76
- }
77
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAUxD,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG;IA0B9C;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,SAAS;IA6BvC;;OAEG;IACU,WAAW,CAAC,OAAO,EAAE,MAAM;IAIxC;;OAEG;IACU,MAAM,CAAC,OAAO,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;IAkCtC;;OAEG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;IASnC;;OAEG;IACU,QAAQ,CACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,MAAM,EAAE,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,GAAG,EAClB,GAAG,GAAE,MAAU;;;;CAgCtB"}