solvoid 1.2.0 → 1.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.
- package/README.md +116 -258
- package/SECURITY.md +27 -24
- package/dist/cli/commands/ghost.d.ts +3 -3
- package/dist/cli/commands/ghost.d.ts.map +1 -1
- package/dist/cli/commands/ghost.js +67 -91
- package/dist/cli/commands/ghost.js.map +1 -1
- package/dist/cli/commands/rescue.d.ts +4 -0
- package/dist/cli/commands/rescue.d.ts.map +1 -1
- package/dist/cli/commands/rescue.js +102 -199
- package/dist/cli/commands/rescue.js.map +1 -1
- package/dist/cli/demo-scan.js +48 -130
- package/dist/cli/demo-scan.js.map +1 -1
- package/dist/cli/solvoid-scan.d.ts +4 -3
- package/dist/cli/solvoid-scan.d.ts.map +1 -1
- package/dist/cli/solvoid-scan.js +55 -46
- package/dist/cli/solvoid-scan.js.map +1 -1
- package/dist/cli/utils/asset-scanner.d.ts.map +1 -1
- package/dist/cli/utils/asset-scanner.js +7 -5
- package/dist/cli/utils/asset-scanner.js.map +1 -1
- package/dist/cli/utils/badge-generator.d.ts.map +1 -1
- package/dist/cli/utils/badge-generator.js +11 -9
- package/dist/cli/utils/badge-generator.js.map +1 -1
- package/dist/cli/utils/enhanced-monitoring.d.ts +13 -0
- package/dist/cli/utils/enhanced-monitoring.d.ts.map +1 -0
- package/dist/cli/utils/enhanced-monitoring.js +46 -0
- package/dist/cli/utils/enhanced-monitoring.js.map +1 -0
- package/dist/cli/utils/enhanced-pyth-feed.d.ts +20 -0
- package/dist/cli/utils/enhanced-pyth-feed.d.ts.map +1 -0
- package/dist/cli/utils/enhanced-pyth-feed.js +64 -0
- package/dist/cli/utils/enhanced-pyth-feed.js.map +1 -0
- package/dist/cli/utils/enhanced-threat-intel.d.ts +20 -0
- package/dist/cli/utils/enhanced-threat-intel.d.ts.map +1 -0
- package/dist/cli/utils/enhanced-threat-intel.js +57 -0
- package/dist/cli/utils/enhanced-threat-intel.js.map +1 -0
- package/dist/cli/utils/env-validator.d.ts.map +1 -1
- package/dist/cli/utils/env-validator.js +6 -3
- package/dist/cli/utils/env-validator.js.map +1 -1
- package/dist/cli/utils/jito-mev-bundle.d.ts +9 -0
- package/dist/cli/utils/jito-mev-bundle.d.ts.map +1 -0
- package/dist/cli/utils/jito-mev-bundle.js +40 -0
- package/dist/cli/utils/jito-mev-bundle.js.map +1 -0
- package/dist/cli/utils/rescue-engine.d.ts +0 -4
- package/dist/cli/utils/rescue-engine.d.ts.map +1 -1
- package/dist/cli/utils/rescue-engine.js +28 -46
- package/dist/cli/utils/rescue-engine.js.map +1 -1
- package/dist/cli/utils/shadow-bridge.d.ts +20 -0
- package/dist/cli/utils/shadow-bridge.d.ts.map +1 -0
- package/dist/cli/utils/shadow-bridge.js +33 -0
- package/dist/cli/utils/shadow-bridge.js.map +1 -0
- package/dist/relayer/key-manager.d.ts +52 -0
- package/dist/relayer/key-manager.d.ts.map +1 -0
- package/dist/relayer/key-manager.js +356 -0
- package/dist/relayer/key-manager.js.map +1 -0
- package/dist/relayer/replay-protection.d.ts +94 -0
- package/dist/relayer/replay-protection.d.ts.map +1 -0
- package/dist/relayer/replay-protection.js +189 -0
- package/dist/relayer/replay-protection.js.map +1 -0
- package/dist/relayer/secure-service.d.ts +46 -0
- package/dist/relayer/secure-service.d.ts.map +1 -0
- package/dist/relayer/secure-service.js +538 -0
- package/dist/relayer/secure-service.js.map +1 -0
- package/dist/relayer/service.d.ts +25 -0
- package/dist/relayer/service.d.ts.map +1 -0
- package/dist/relayer/service.js +380 -0
- package/dist/relayer/service.js.map +1 -0
- package/dist/sdk/client.d.ts +42 -8
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +115 -242
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/crypto/poseidon.d.ts +4 -4
- package/dist/sdk/crypto/poseidon.d.ts.map +1 -1
- package/dist/sdk/crypto/poseidon.js +34 -17
- package/dist/sdk/crypto/poseidon.js.map +1 -1
- package/dist/sdk/integrity.d.ts +3 -3
- package/dist/sdk/integrity.d.ts.map +1 -1
- package/dist/sdk/integrity.js +2 -2
- package/dist/sdk/integrity.js.map +1 -1
- package/dist/sdk/passport/manager.d.ts +15 -3
- package/dist/sdk/passport/manager.d.ts.map +1 -1
- package/dist/sdk/passport/manager.js +30 -17
- package/dist/sdk/passport/manager.js.map +1 -1
- package/dist/sdk/pipeline.d.ts.map +1 -1
- package/dist/sdk/pipeline.js +69 -12
- package/dist/sdk/pipeline.js.map +1 -1
- package/dist/sdk/polyfill.d.ts +8 -0
- package/dist/sdk/polyfill.d.ts.map +1 -0
- package/dist/sdk/polyfill.js +21 -0
- package/dist/sdk/polyfill.js.map +1 -0
- package/dist/sdk/privacy/shield.d.ts +46 -0
- package/dist/sdk/privacy/shield.d.ts.map +1 -1
- package/dist/sdk/privacy/shield.js +117 -35
- package/dist/sdk/privacy/shield.js.map +1 -1
- package/dist/sdk/privacy-engine.d.ts +17 -3
- package/dist/sdk/privacy-engine.d.ts.map +1 -1
- package/dist/sdk/privacy-engine.js +46 -20
- package/dist/sdk/privacy-engine.js.map +1 -1
- package/package.json +2 -2
package/dist/cli/demo-scan.js
CHANGED
|
@@ -39,128 +39,49 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
const web3_js_1 = require("@solana/web3.js");
|
|
41
41
|
const dotenv = __importStar(require("dotenv"));
|
|
42
|
+
const privacy_engine_1 = require("../sdk/privacy-engine");
|
|
42
43
|
dotenv.config();
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.initializeMockData();
|
|
47
|
-
}
|
|
48
|
-
initializeMockData() {
|
|
49
|
-
// Mock data for common addresses
|
|
50
|
-
this.mockData.set('9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM', {
|
|
51
|
-
score: 85,
|
|
52
|
-
riskLevel: 'LOW',
|
|
53
|
-
breakdown: {
|
|
54
|
-
transactionPattern: 90,
|
|
55
|
-
timingAnalysis: 80,
|
|
56
|
-
amountDistribution: 85,
|
|
57
|
-
networkBehavior: 85
|
|
58
|
-
},
|
|
59
|
-
recommendations: [
|
|
60
|
-
'Privacy practices look good - maintain current patterns',
|
|
61
|
-
'Consider using shielded transactions for enhanced privacy'
|
|
62
|
-
],
|
|
63
|
-
totalTransactions: 1247,
|
|
64
|
-
uniqueRecipients: 89,
|
|
65
|
-
averageAmount: 2500000
|
|
66
|
-
});
|
|
67
|
-
this.mockData.set('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', {
|
|
68
|
-
score: 45,
|
|
69
|
-
riskLevel: 'HIGH',
|
|
70
|
-
breakdown: {
|
|
71
|
-
transactionPattern: 30,
|
|
72
|
-
timingAnalysis: 50,
|
|
73
|
-
amountDistribution: 40,
|
|
74
|
-
networkBehavior: 60
|
|
75
|
-
},
|
|
76
|
-
recommendations: [
|
|
77
|
-
'Consider diversifying transaction recipients to improve privacy',
|
|
78
|
-
'Vary transaction timing to avoid predictable patterns',
|
|
79
|
-
'Use varied transaction amounts to break patterns',
|
|
80
|
-
'Consider using privacy tools like mixers or shielded transactions'
|
|
81
|
-
],
|
|
82
|
-
totalTransactions: 3421,
|
|
83
|
-
uniqueRecipients: 12,
|
|
84
|
-
averageAmount: 10000000
|
|
85
|
-
});
|
|
86
|
-
this.mockData.set('So11111111111111111111111111111111111111112', {
|
|
87
|
-
score: 72,
|
|
88
|
-
riskLevel: 'MEDIUM',
|
|
89
|
-
breakdown: {
|
|
90
|
-
transactionPattern: 75,
|
|
91
|
-
timingAnalysis: 70,
|
|
92
|
-
amountDistribution: 65,
|
|
93
|
-
networkBehavior: 80
|
|
94
|
-
},
|
|
95
|
-
recommendations: [
|
|
96
|
-
'Interact with more diverse programs to improve privacy',
|
|
97
|
-
'Consider using shielded transactions for enhanced privacy'
|
|
98
|
-
],
|
|
99
|
-
totalTransactions: 8934,
|
|
100
|
-
uniqueRecipients: 45,
|
|
101
|
-
averageAmount: 5000000
|
|
102
|
-
});
|
|
103
|
-
}
|
|
44
|
+
const connection = new web3_js_1.Connection(process.env.RPC_URL || 'https://api.mainnet-beta.solana.com', 'confirmed');
|
|
45
|
+
const engine = new privacy_engine_1.PrivacyEngine();
|
|
46
|
+
class RealPrivacyScanner {
|
|
104
47
|
async analyzeAddress(address) {
|
|
105
48
|
try {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
|
|
49
|
+
const pubkey = new web3_js_1.PublicKey(address);
|
|
50
|
+
// 1. Fetch real transaction signatures
|
|
51
|
+
const signatures = await connection.getSignaturesForAddress(pubkey, { limit: 10 });
|
|
52
|
+
let allLeaks = [];
|
|
53
|
+
// 2. Deep Inspect each transaction (Real data)
|
|
54
|
+
for (const sigInfo of signatures) {
|
|
55
|
+
const tx = await connection.getTransaction(sigInfo.signature, {
|
|
56
|
+
maxSupportedTransactionVersion: 0,
|
|
57
|
+
commitment: 'confirmed'
|
|
58
|
+
});
|
|
59
|
+
if (tx) {
|
|
60
|
+
// Convert to format engine expects
|
|
61
|
+
const txJson = {
|
|
62
|
+
message: tx.transaction.message,
|
|
63
|
+
meta: tx.meta,
|
|
64
|
+
signatures: tx.transaction.signatures
|
|
65
|
+
};
|
|
66
|
+
const leaks = engine.analyzeTransaction(txJson);
|
|
67
|
+
allLeaks = [...allLeaks, ...leaks];
|
|
68
|
+
}
|
|
113
69
|
}
|
|
114
|
-
|
|
115
|
-
|
|
70
|
+
const score = engine.calculateScore(allLeaks);
|
|
71
|
+
const riskLevel = score >= 80 ? 'LOW' : score >= 60 ? 'MEDIUM' : 'HIGH';
|
|
72
|
+
return {
|
|
73
|
+
score,
|
|
74
|
+
riskLevel,
|
|
75
|
+
leaks: allLeaks,
|
|
76
|
+
totalTransactions: signatures.length,
|
|
77
|
+
scannedAt: Date.now()
|
|
78
|
+
};
|
|
116
79
|
}
|
|
117
80
|
catch (error) {
|
|
118
|
-
console.error('
|
|
81
|
+
console.error(' [ERROR] Real scan failed:', error);
|
|
119
82
|
throw error;
|
|
120
83
|
}
|
|
121
84
|
}
|
|
122
|
-
generateRandomScore(address) {
|
|
123
|
-
const score = Math.floor(Math.random() * 40) + 60; // 60-100 range
|
|
124
|
-
const riskLevel = score >= 80 ? 'LOW' : score >= 65 ? 'MEDIUM' : 'HIGH';
|
|
125
|
-
const breakdown = {
|
|
126
|
-
transactionPattern: Math.floor(Math.random() * 30) + 70,
|
|
127
|
-
timingAnalysis: Math.floor(Math.random() * 30) + 70,
|
|
128
|
-
amountDistribution: Math.floor(Math.random() * 30) + 70,
|
|
129
|
-
networkBehavior: Math.floor(Math.random() * 30) + 70
|
|
130
|
-
};
|
|
131
|
-
const recommendations = this.generateRecommendations(score, breakdown);
|
|
132
|
-
return {
|
|
133
|
-
score,
|
|
134
|
-
riskLevel,
|
|
135
|
-
breakdown,
|
|
136
|
-
recommendations,
|
|
137
|
-
totalTransactions: Math.floor(Math.random() * 5000) + 100,
|
|
138
|
-
uniqueRecipients: Math.floor(Math.random() * 50) + 5,
|
|
139
|
-
averageAmount: Math.floor(Math.random() * 10000000) + 1000000
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
generateRecommendations(score, breakdown) {
|
|
143
|
-
const recommendations = [];
|
|
144
|
-
if (breakdown.transactionPattern < 80) {
|
|
145
|
-
recommendations.push('Consider diversifying transaction recipients to improve privacy');
|
|
146
|
-
}
|
|
147
|
-
if (breakdown.timingAnalysis < 80) {
|
|
148
|
-
recommendations.push('Vary transaction timing to avoid predictable patterns');
|
|
149
|
-
}
|
|
150
|
-
if (breakdown.amountDistribution < 80) {
|
|
151
|
-
recommendations.push('Use varied transaction amounts to break patterns');
|
|
152
|
-
}
|
|
153
|
-
if (breakdown.networkBehavior < 80) {
|
|
154
|
-
recommendations.push('Interact with more diverse programs to improve privacy');
|
|
155
|
-
}
|
|
156
|
-
if (score < 70) {
|
|
157
|
-
recommendations.push('Consider using privacy tools like mixers or shielded transactions');
|
|
158
|
-
}
|
|
159
|
-
if (recommendations.length === 0) {
|
|
160
|
-
recommendations.push('Privacy practices look good - maintain current patterns');
|
|
161
|
-
}
|
|
162
|
-
return recommendations;
|
|
163
|
-
}
|
|
164
85
|
}
|
|
165
86
|
async function main() {
|
|
166
87
|
const args = process.argv.slice(2);
|
|
@@ -190,26 +111,23 @@ Examples:
|
|
|
190
111
|
console.log(` Analyzing privacy for address: ${address}`);
|
|
191
112
|
console.log(` Using demo data (mock analysis)`);
|
|
192
113
|
console.log('');
|
|
193
|
-
const scanner = new
|
|
114
|
+
const scanner = new RealPrivacyScanner();
|
|
194
115
|
const result = await scanner.analyzeAddress(address);
|
|
195
116
|
console.log(` Privacy Score: ${result.score}/100`);
|
|
196
117
|
console.log(` Risk Level: ${result.riskLevel}`);
|
|
118
|
+
console.log(` Transactions Scanned: ${result.totalTransactions}`);
|
|
197
119
|
console.log('');
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
console.log(' Recommendations:');
|
|
210
|
-
result.recommendations.forEach(rec => {
|
|
211
|
-
console.log(` • ${rec}`);
|
|
212
|
-
});
|
|
120
|
+
if (result.leaks.length > 0) {
|
|
121
|
+
console.log(' Detected Privacy Leaks:');
|
|
122
|
+
result.leaks.forEach(leak => {
|
|
123
|
+
console.log(` [${leak.severity}] ${leak.type.toUpperCase()}: ${leak.description}`);
|
|
124
|
+
if (leak.remediation)
|
|
125
|
+
console.log(` Remediation: ${leak.remediation}`);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.log(' No immediate privacy leaks identified in recent history.');
|
|
130
|
+
}
|
|
213
131
|
}
|
|
214
132
|
catch (error) {
|
|
215
133
|
console.error(' Error:', error instanceof Error ? error.message : 'Unknown error');
|
|
@@ -217,7 +135,7 @@ Examples:
|
|
|
217
135
|
}
|
|
218
136
|
}
|
|
219
137
|
async function runDemo() {
|
|
220
|
-
const scanner = new
|
|
138
|
+
const scanner = new RealPrivacyScanner();
|
|
221
139
|
const addresses = [
|
|
222
140
|
'9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM',
|
|
223
141
|
'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo-scan.js","sourceRoot":"","sources":["../../cli/demo-scan.ts"],"names":[],"mappings":";;AAEA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"demo-scan.js","sourceRoot":"","sources":["../../cli/demo-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
#!/usr/bin/
|
|
1
|
+
#!/usr/bin/node
|
|
2
2
|
/**
|
|
3
|
-
* SolVoid CLI
|
|
3
|
+
* SolVoid CLI: Primary command-line interface for the protocol.
|
|
4
|
+
* Orchestrates user interactions with our SDK, Relayer, and ZK proving pipeline.
|
|
4
5
|
*/
|
|
5
|
-
export
|
|
6
|
+
export declare function main(): Promise<void>;
|
|
6
7
|
//# sourceMappingURL=solvoid-scan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solvoid-scan.d.ts","sourceRoot":"","sources":["../../cli/solvoid-scan.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"solvoid-scan.d.ts","sourceRoot":"","sources":["../../cli/solvoid-scan.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAiEH,wBAAsB,IAAI,kBAgMzB"}
|
package/dist/cli/solvoid-scan.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
#!/usr/bin/
|
|
1
|
+
#!/usr/bin/node
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
|
-
* SolVoid CLI
|
|
4
|
+
* SolVoid CLI: Primary command-line interface for the protocol.
|
|
5
|
+
* Orchestrates user interactions with our SDK, Relayer, and ZK proving pipeline.
|
|
5
6
|
*/
|
|
6
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
8
|
if (k2 === undefined) k2 = k;
|
|
@@ -40,6 +41,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
40
41
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
42
|
};
|
|
42
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.main = main;
|
|
43
45
|
const web3_js_1 = require("@solana/web3.js");
|
|
44
46
|
const dotenv = __importStar(require("dotenv"));
|
|
45
47
|
const cross_fetch_1 = __importDefault(require("cross-fetch"));
|
|
@@ -55,6 +57,9 @@ const CLI_METADATA = {
|
|
|
55
57
|
createdAt: Date.now(),
|
|
56
58
|
owner: 'CLI User'
|
|
57
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Registry for protocol administration and emergency control functions.
|
|
62
|
+
*/
|
|
58
63
|
function registerAdminCommand(program, client) {
|
|
59
64
|
const admin = program.command('admin').description('Protocol Administration & Emergency Controls');
|
|
60
65
|
admin
|
|
@@ -63,7 +68,7 @@ function registerAdminCommand(program, client) {
|
|
|
63
68
|
.argument('<multiplier>', 'Fee multiplier (1-10)')
|
|
64
69
|
.argument('<reason>', 'Reason for emergency')
|
|
65
70
|
.action(async (multiplier, reason) => {
|
|
66
|
-
console.log(`Triggering emergency
|
|
71
|
+
console.log(`Triggering emergency status (Multiplier: x${multiplier}) for: ${reason}`);
|
|
67
72
|
const tx = await client.triggerEmergencyMode(BigInt(multiplier), reason);
|
|
68
73
|
console.log(`Emergency mode active. Signature: ${tx}`);
|
|
69
74
|
});
|
|
@@ -81,7 +86,7 @@ function registerAdminCommand(program, client) {
|
|
|
81
86
|
.action(async () => {
|
|
82
87
|
console.log('Triggering Circuit Breaker...');
|
|
83
88
|
const tx = await client.triggerCircuitBreaker();
|
|
84
|
-
console.log(`Protocol PAUSED. Signature: ${tx}`);
|
|
89
|
+
console.log(`Protocol state: PAUSED. Signature: ${tx}`);
|
|
85
90
|
});
|
|
86
91
|
admin
|
|
87
92
|
.command('resume')
|
|
@@ -89,7 +94,7 @@ function registerAdminCommand(program, client) {
|
|
|
89
94
|
.action(async () => {
|
|
90
95
|
console.log('Resetting Circuit Breaker...');
|
|
91
96
|
const tx = await client.resetCircuitBreaker();
|
|
92
|
-
console.log(`Protocol RESUMED. Signature: ${tx}`);
|
|
97
|
+
console.log(`Protocol state: RESUMED. Signature: ${tx}`);
|
|
93
98
|
});
|
|
94
99
|
}
|
|
95
100
|
async function main() {
|
|
@@ -100,11 +105,11 @@ async function main() {
|
|
|
100
105
|
SolVoid: The Digital Fortress for Solana
|
|
101
106
|
|
|
102
107
|
Commands:
|
|
103
|
-
protect <address>
|
|
104
|
-
rescue <address>
|
|
108
|
+
protect <address> Execute a comprehensive privacy leak audit
|
|
109
|
+
rescue <address> Initiate atomic asset recovery for compromised wallets
|
|
105
110
|
shield <amount> Execute a private deposit (Surgical Shielding)
|
|
106
|
-
withdraw <secret> <nullifier> <recipient>
|
|
107
|
-
ghost <address> Calculate Privacy Ghost Score
|
|
111
|
+
withdraw <secret> <nullifier> <recipient> Execute an unlinkable ZK withdrawal
|
|
112
|
+
ghost <address> Calculate decentralized Privacy Ghost Score
|
|
108
113
|
`);
|
|
109
114
|
process.exit(0);
|
|
110
115
|
}
|
|
@@ -122,12 +127,15 @@ Commands:
|
|
|
122
127
|
program.parse();
|
|
123
128
|
return;
|
|
124
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Environment-driven configuration initialization with fallback values.
|
|
132
|
+
*/
|
|
125
133
|
const rpcUrl = args.includes('--rpc') ? args[args.indexOf('--rpc') + 1] : (process.env.RPC_URL || 'https://api.mainnet-beta.solana.com');
|
|
126
134
|
const programId = args.includes('--program') ? args[args.indexOf('--program') + 1] : (process.env.PROGRAM_ID || 'Fg6PaFpoGXkYsidMpSsu3SWJYEHp7rQU9YSTFNDQ4F5i');
|
|
127
135
|
const relayerUrl = args.includes('--relayer') ? args[args.indexOf('--relayer') + 1] : (process.env.SHADOW_RELAYER_URL || 'http://localhost:3000');
|
|
128
|
-
|
|
136
|
+
/** Node-side configuration boundary enforcement. */
|
|
129
137
|
if (!rpcUrl || !programId)
|
|
130
|
-
throw new Error("
|
|
138
|
+
throw new Error("Configuration Error: Missing RPC_URL or PROGRAM_ID environment variables.");
|
|
131
139
|
const wallet = web3_js_1.Keypair.generate();
|
|
132
140
|
const config = {
|
|
133
141
|
rpcUrl: rpcUrl ?? '',
|
|
@@ -137,11 +145,11 @@ Commands:
|
|
|
137
145
|
const client = new client_1.SolVoidClient(config, wallet);
|
|
138
146
|
const program = new commander_1.Command();
|
|
139
147
|
program.name('solvoid-scan').description('SolVoid Digital Fortress CLI');
|
|
140
|
-
|
|
141
|
-
program.option('--rpc <url>', 'Solana RPC URL', rpcUrl);
|
|
142
|
-
program.option('--program <id>', 'SolVoid Program ID', programId);
|
|
143
|
-
program.option('--relayer <url>', 'Shadow Relayer URL', relayerUrl);
|
|
144
|
-
|
|
148
|
+
/** Global CLI option registration. */
|
|
149
|
+
program.option('--rpc <url>', 'Override specified Solana RPC URL', rpcUrl);
|
|
150
|
+
program.option('--program <id>', 'Override target SolVoid Program ID', programId);
|
|
151
|
+
program.option('--relayer <url>', 'Override target Shadow Relayer URL', relayerUrl);
|
|
152
|
+
/** Modular subcommand orchestration. */
|
|
145
153
|
(0, ghost_1.registerGhostCommand)(program);
|
|
146
154
|
(0, rescue_1.registerRescueCommand)(program);
|
|
147
155
|
registerAdminCommand(program, client);
|
|
@@ -154,20 +162,20 @@ Commands:
|
|
|
154
162
|
case 'protect': {
|
|
155
163
|
const rawAddress = args[1];
|
|
156
164
|
if (!rawAddress)
|
|
157
|
-
throw new Error("
|
|
158
|
-
|
|
165
|
+
throw new Error("Argument Error: Target address is required.");
|
|
166
|
+
/** Parameter validation: CLI-to-SDK boundary enforcement. */
|
|
159
167
|
const enforcedAddr = (0, integrity_1.enforce)(integrity_1.PublicKeySchema, rawAddress, CLI_METADATA);
|
|
160
168
|
const address = new web3_js_1.PublicKey(enforcedAddr.value);
|
|
161
|
-
console.log(`\
|
|
169
|
+
console.log(`\nInitiating privacy audit for ${address.toBase58()}...`);
|
|
162
170
|
const passport = await client.getPassport(address.toBase58());
|
|
163
171
|
const results = await client.protect(address);
|
|
164
172
|
console.log(`\n--- PRIVACY PASSPORT ---`);
|
|
165
173
|
const scoreColor = passport.overallScore < 50 ? '\x1b[31m' : passport.overallScore < 80 ? '\x1b[33m' : '\x1b[32m';
|
|
166
|
-
console.log(`Overall Score: ${scoreColor}${passport.overallScore}/100\x1b[0m`);
|
|
167
|
-
console.log(`Badges: ${passport.badges.map(b => b.icon + ' ' + b.name).join(', ') || 'None'}`);
|
|
174
|
+
console.log(`Overall Privacy Score: ${scoreColor}${passport.overallScore}/100\x1b[0m`);
|
|
175
|
+
console.log(`Attained Badges: ${passport.badges.map(b => b.icon + ' ' + b.name).join(', ') || 'None'}`);
|
|
168
176
|
results.forEach((res) => {
|
|
169
177
|
console.log(`\n---------------------------------------------------------`);
|
|
170
|
-
console.log(`Signature: ${res.signature}`);
|
|
178
|
+
console.log(`Audit Signature: ${res.signature}`);
|
|
171
179
|
if (res.leaks.length > 0) {
|
|
172
180
|
res.leaks.forEach((leak) => {
|
|
173
181
|
const sevColor = leak.severity === 'CRITICAL' ? '\x1b[31m' : '\x1b[33m';
|
|
@@ -180,15 +188,14 @@ Commands:
|
|
|
180
188
|
case 'rescue': {
|
|
181
189
|
const rawAddress = args[1];
|
|
182
190
|
if (!rawAddress)
|
|
183
|
-
throw new Error("
|
|
191
|
+
throw new Error("Argument Error: Target address is required.");
|
|
184
192
|
const enforcedAddr = (0, integrity_1.enforce)(integrity_1.PublicKeySchema, rawAddress, CLI_METADATA);
|
|
185
193
|
const address = new web3_js_1.PublicKey(enforcedAddr.value);
|
|
186
|
-
console.log(`\nExecuting
|
|
194
|
+
console.log(`\nExecuting recovery analysis for: ${address.toBase58()}`);
|
|
187
195
|
const result = await client.rescue(address);
|
|
188
196
|
if (result.status === 'analysis_complete') {
|
|
189
|
-
console.log(`\
|
|
190
|
-
console.log(`
|
|
191
|
-
console.log(`Current Score: ${result.currentScore} -> Potential: ${result.potentialScore}`);
|
|
197
|
+
console.log(`\nAnalysis Result: Detected ${result.leakCount} leak vectors.`);
|
|
198
|
+
console.log(`Current Score: ${result.currentScore} -> Remediation Potential: ${result.potentialScore}`);
|
|
192
199
|
}
|
|
193
200
|
else {
|
|
194
201
|
console.log(`\n${result.message}`);
|
|
@@ -198,18 +205,18 @@ Commands:
|
|
|
198
205
|
case 'shield': {
|
|
199
206
|
const amountSolRaw = args[1];
|
|
200
207
|
if (!amountSolRaw)
|
|
201
|
-
throw new Error("
|
|
208
|
+
throw new Error("Argument Error: Shielding amount is required.");
|
|
202
209
|
const amountSol = parseFloat(amountSolRaw);
|
|
203
210
|
if (isNaN(amountSol) || amountSol <= 0)
|
|
204
|
-
throw new Error("Invalid amount");
|
|
205
|
-
|
|
211
|
+
throw new Error("Precision Error: Invalid SOL amount.");
|
|
212
|
+
/** Unit transformation: SOL to atomic Lamports for protocol precision. */
|
|
206
213
|
const amountLamports = Math.floor(amountSol * 1000000000);
|
|
207
|
-
console.log(`
|
|
214
|
+
console.log(`Executing surgical shield for ${amountSol} SOL (${amountLamports} Lamports)...`);
|
|
208
215
|
const { commitmentData } = await client.shield(amountLamports);
|
|
209
|
-
console.log('\n---
|
|
210
|
-
console.log('Secret:', commitmentData.secret);
|
|
211
|
-
console.log('Nullifier:', commitmentData.nullifier);
|
|
212
|
-
console.log('Commitment:', commitmentData.commitmentHex);
|
|
216
|
+
console.log('\n--- CRYPTOGRAPHIC SECRETS (EXTREMELY SENSITIVE) ---');
|
|
217
|
+
console.log('Secret Key:', commitmentData.secret);
|
|
218
|
+
console.log('Nullifier Key:', commitmentData.nullifier);
|
|
219
|
+
console.log('Commitment Hash:', commitmentData.commitmentHex);
|
|
213
220
|
break;
|
|
214
221
|
}
|
|
215
222
|
case 'withdraw': {
|
|
@@ -218,32 +225,34 @@ Commands:
|
|
|
218
225
|
const rawRecipient = args[3];
|
|
219
226
|
const amountRaw = args[4];
|
|
220
227
|
if (!secret || !nullifier || !rawRecipient || !amountRaw)
|
|
221
|
-
throw new Error("
|
|
228
|
+
throw new Error("Argument Error: All withdrawal primitives are required.");
|
|
222
229
|
const enforcedRecipient = (0, integrity_1.enforce)(integrity_1.PublicKeySchema, rawRecipient, CLI_METADATA);
|
|
223
230
|
const recipient = enforcedRecipient.value;
|
|
224
231
|
const amount = BigInt(Math.floor(parseFloat(amountRaw) * 1000000000));
|
|
225
|
-
console.log(`Preparing
|
|
226
|
-
|
|
232
|
+
console.log(`Preparing ZK witness for ${amountRaw} SOL withdrawal to ${recipient}...`);
|
|
233
|
+
/** State synchronization: Retrieving commitment tree from relay network. */
|
|
227
234
|
const response = await (0, cross_fetch_1.default)(`${relayerUrl}/commitments`);
|
|
228
235
|
if (!response.ok)
|
|
229
|
-
throw new Error(`
|
|
236
|
+
throw new Error(`Relay Failure: ${response.statusText}`);
|
|
230
237
|
const data = (await response.json());
|
|
231
238
|
const commitmentsHex = data.commitments;
|
|
232
|
-
|
|
233
|
-
const
|
|
234
|
-
|
|
239
|
+
/** Groth16 Prover initialization using standardized artifacts. */
|
|
240
|
+
const wasmPath = process.env.ZK_WASM_PATH || './circuits/withdraw_js/withdraw.wasm';
|
|
241
|
+
const zkeyPath = process.env.ZK_ZKEY_PATH || './circuits/build/withdraw_final.zkey';
|
|
242
|
+
const result = await client.prepareWithdrawal(secret, nullifier, amount, new web3_js_1.PublicKey(recipient), commitmentsHex, wasmPath, zkeyPath);
|
|
243
|
+
console.log('\nZK Withdrawal Proof Successfully Generated:');
|
|
235
244
|
console.log('Nullifier Hash:', result.nullifierHash);
|
|
236
|
-
console.log('Root:', result.root);
|
|
237
|
-
console.log('Proof
|
|
245
|
+
console.log('Root Hash:', result.root);
|
|
246
|
+
console.log('Proof Wire Format:', JSON.stringify(result.proof, null, 2));
|
|
238
247
|
break;
|
|
239
248
|
}
|
|
240
249
|
default:
|
|
241
|
-
console.error(`Unknown command
|
|
250
|
+
console.error(`Execution Error: Unknown command identifier '${command}'`);
|
|
242
251
|
process.exit(1);
|
|
243
252
|
}
|
|
244
253
|
}
|
|
245
254
|
catch (e) {
|
|
246
|
-
const msg = e instanceof Error ? e.message : '
|
|
255
|
+
const msg = e instanceof Error ? e.message : 'Critical Execution Failure';
|
|
247
256
|
console.error('\x1b[31mError:\x1b[0m', msg);
|
|
248
257
|
process.exit(1);
|
|
249
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solvoid-scan.js","sourceRoot":"","sources":["../../cli/solvoid-scan.ts"],"names":[],"mappings":";;AAEA
|
|
1
|
+
{"version":3,"file":"solvoid-scan.js","sourceRoot":"","sources":["../../cli/solvoid-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-scanner.d.ts","sourceRoot":"","sources":["../../../cli/utils/asset-scanner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"asset-scanner.d.ts","sourceRoot":"","sources":["../../../cli/utils/asset-scanner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;AAI1E,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU;IAIlC;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBrD;;OAEG;YACW,OAAO;IAgBrB;;OAEG;YACW,UAAU;IA4CxB;;OAEG;YACW,QAAQ;IAsCtB;;OAEG;YACW,gBAAgB;IA4B9B;;OAEG;YACW,cAAc;IAoB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;QAC3C,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAiCF;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM;CASzE"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.AssetScanner = void 0;
|
|
7
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
8
|
const spl_token_1 = require("@solana/spl-token");
|
|
9
|
+
const enhanced_pyth_feed_1 = require("./enhanced-pyth-feed");
|
|
9
10
|
class AssetScanner {
|
|
10
11
|
constructor(connection) {
|
|
11
12
|
this.connection = connection;
|
|
@@ -19,15 +20,15 @@ class AssetScanner {
|
|
|
19
20
|
this.scanTokens(address),
|
|
20
21
|
this.scanNFTs(address)
|
|
21
22
|
]);
|
|
22
|
-
const
|
|
23
|
+
const totalValueUSD = parseFloat(sol.valueUSD) + tokens.reduce((sum, t) => sum + parseFloat(t.valueUSD), 0);
|
|
23
24
|
return {
|
|
24
25
|
sol,
|
|
25
26
|
tokens,
|
|
26
27
|
nfts,
|
|
27
28
|
total: {
|
|
28
29
|
count: 1 + tokens.length + nfts.length,
|
|
29
|
-
value:
|
|
30
|
-
valueUSD:
|
|
30
|
+
value: totalValueUSD,
|
|
31
|
+
valueUSD: totalValueUSD.toFixed(2)
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
34
|
}
|
|
@@ -37,8 +38,9 @@ class AssetScanner {
|
|
|
37
38
|
async scanSOL(address) {
|
|
38
39
|
const balance = await this.connection.getBalance(address);
|
|
39
40
|
const solBalance = balance / web3_js_1.LAMPORTS_PER_SOL;
|
|
40
|
-
|
|
41
|
-
const
|
|
41
|
+
const pyth = new enhanced_pyth_feed_1.EnhancedPythPriceFeed(this.connection);
|
|
42
|
+
const priceData = await pyth.getPrice(new web3_js_1.PublicKey('So11111111111111111111111111111111111111112'));
|
|
43
|
+
const solPrice = priceData.usd || 100; // Fallback to 100 if oracle fails
|
|
42
44
|
const valueUSD = (solBalance * solPrice).toFixed(2);
|
|
43
45
|
return {
|
|
44
46
|
balance: solBalance.toFixed(4),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-scanner.js","sourceRoot":"","sources":["../../../cli/utils/asset-scanner.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,gBAAgB;AAChB,4DAA4D;;;AAE5D,6CAA0E;AAC1E,iDAAqD;
|
|
1
|
+
{"version":3,"file":"asset-scanner.js","sourceRoot":"","sources":["../../../cli/utils/asset-scanner.ts"],"names":[],"mappings":"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"}
|