solvoid 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +289 -36
- package/SECURITY.md +39 -0
- package/bin/solvoid-scan +2 -0
- package/dist/cli/commands/ghost.d.ts +11 -0
- package/dist/cli/commands/ghost.d.ts.map +1 -0
- package/dist/cli/commands/ghost.js +185 -0
- package/dist/cli/commands/ghost.js.map +1 -0
- package/dist/cli/commands/rescue.d.ts +3 -0
- package/dist/cli/commands/rescue.d.ts.map +1 -0
- package/dist/cli/commands/rescue.js +300 -0
- package/dist/cli/commands/rescue.js.map +1 -0
- package/dist/cli/comprehensive-rpc-list.d.ts +31 -0
- package/dist/cli/comprehensive-rpc-list.d.ts.map +1 -0
- package/dist/cli/comprehensive-rpc-list.js +341 -0
- package/dist/cli/comprehensive-rpc-list.js.map +1 -0
- package/dist/cli/demo-scan.d.ts +6 -0
- package/dist/cli/demo-scan.d.ts.map +1 -0
- package/dist/cli/demo-scan.js +260 -0
- package/dist/cli/demo-scan.js.map +1 -0
- package/dist/cli/enhanced-privacy-scan.d.ts +46 -0
- package/dist/cli/enhanced-privacy-scan.d.ts.map +1 -0
- package/dist/cli/enhanced-privacy-scan.js +422 -0
- package/dist/cli/enhanced-privacy-scan.js.map +1 -0
- package/dist/cli/ghost-test.d.ts +7 -0
- package/dist/cli/ghost-test.d.ts.map +1 -0
- package/dist/cli/ghost-test.js +192 -0
- package/dist/cli/ghost-test.js.map +1 -0
- package/dist/cli/simple-scan.d.ts +6 -0
- package/dist/cli/simple-scan.d.ts.map +1 -0
- package/dist/cli/simple-scan.js +250 -0
- package/dist/cli/simple-scan.js.map +1 -0
- package/dist/cli/solvoid-scan.d.ts +6 -0
- package/dist/cli/solvoid-scan.d.ts.map +1 -0
- package/dist/cli/solvoid-scan.js +254 -0
- package/dist/cli/solvoid-scan.js.map +1 -0
- package/dist/cli/ultimate-privacy-scan.d.ts +54 -0
- package/dist/cli/ultimate-privacy-scan.d.ts.map +1 -0
- package/dist/cli/ultimate-privacy-scan.js +543 -0
- package/dist/cli/ultimate-privacy-scan.js.map +1 -0
- package/dist/cli/utils/asset-scanner.d.ts +76 -0
- package/dist/cli/utils/asset-scanner.d.ts.map +1 -0
- package/dist/cli/utils/asset-scanner.js +222 -0
- package/dist/cli/utils/asset-scanner.js.map +1 -0
- package/dist/cli/utils/badge-generator.d.ts +33 -0
- package/dist/cli/utils/badge-generator.d.ts.map +1 -0
- package/dist/cli/utils/badge-generator.js +261 -0
- package/dist/cli/utils/badge-generator.js.map +1 -0
- package/dist/cli/utils/env-validator.d.ts +17 -0
- package/dist/cli/utils/env-validator.d.ts.map +1 -0
- package/dist/cli/utils/env-validator.js +254 -0
- package/dist/cli/utils/env-validator.js.map +1 -0
- package/dist/cli/utils/ghost-art.d.ts +14 -0
- package/dist/cli/utils/ghost-art.d.ts.map +1 -0
- package/dist/cli/utils/ghost-art.js +285 -0
- package/dist/cli/utils/ghost-art.js.map +1 -0
- package/dist/cli/utils/ghost-calculator.d.ts +52 -0
- package/dist/cli/utils/ghost-calculator.d.ts.map +1 -0
- package/dist/cli/utils/ghost-calculator.js +207 -0
- package/dist/cli/utils/ghost-calculator.js.map +1 -0
- package/dist/cli/utils/rescue-engine.d.ts +61 -0
- package/dist/cli/utils/rescue-engine.d.ts.map +1 -0
- package/dist/cli/utils/rescue-engine.js +210 -0
- package/dist/cli/utils/rescue-engine.js.map +1 -0
- package/dist/cli/utils/threat-detector.d.ts +48 -0
- package/dist/cli/utils/threat-detector.d.ts.map +1 -0
- package/dist/cli/utils/threat-detector.js +304 -0
- package/dist/cli/utils/threat-detector.js.map +1 -0
- package/dist/{client.d.ts → sdk/client.d.ts} +8 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/{client.js → sdk/client.js} +104 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/crypto/poseidon.d.ts.map +1 -0
- package/dist/sdk/crypto/poseidon.js.map +1 -0
- package/dist/sdk/events/bus.d.ts.map +1 -0
- package/dist/sdk/events/bus.js.map +1 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/integrity.d.ts.map +1 -0
- package/dist/sdk/integrity.js.map +1 -0
- package/dist/sdk/network/shadow-rpc.d.ts.map +1 -0
- package/dist/sdk/network/shadow-rpc.js.map +1 -0
- package/dist/sdk/passport/manager.d.ts.map +1 -0
- package/dist/sdk/passport/manager.js.map +1 -0
- package/dist/sdk/pipeline.d.ts.map +1 -0
- package/dist/sdk/pipeline.js.map +1 -0
- package/dist/sdk/privacy/relayer.d.ts.map +1 -0
- package/dist/sdk/privacy/relayer.js.map +1 -0
- package/dist/{privacy → sdk/privacy}/shield.d.ts +4 -1
- package/dist/sdk/privacy/shield.d.ts.map +1 -0
- package/dist/{privacy → sdk/privacy}/shield.js +44 -7
- package/dist/sdk/privacy/shield.js.map +1 -0
- package/dist/sdk/privacy-engine.d.ts.map +1 -0
- package/dist/sdk/privacy-engine.js.map +1 -0
- package/dist/sdk/registry/idl-fetcher.d.ts.map +1 -0
- package/dist/sdk/registry/idl-fetcher.js.map +1 -0
- package/dist/sdk/registry/programs.d.ts.map +1 -0
- package/dist/sdk/registry/programs.js.map +1 -0
- package/dist/sdk/rescue/analyzer.d.ts.map +1 -0
- package/dist/sdk/rescue/analyzer.js.map +1 -0
- package/dist/sdk/rescue/builder.d.ts.map +1 -0
- package/dist/sdk/rescue/builder.js.map +1 -0
- package/dist/sdk/security/key-rotation.d.ts.map +1 -0
- package/dist/sdk/security/key-rotation.js.map +1 -0
- package/dist/{semantics → sdk/semantics}/analyzer.d.ts.map +1 -1
- package/dist/{semantics → sdk/semantics}/analyzer.js.map +1 -1
- package/dist/sdk/semantics/decoder.d.ts.map +1 -0
- package/dist/sdk/semantics/decoder.js.map +1 -0
- package/dist/{semantics → sdk/semantics}/graph.d.ts.map +1 -1
- package/dist/{semantics → sdk/semantics}/graph.js.map +1 -1
- package/dist/sdk/semantics/idl-registry.d.ts.map +1 -0
- package/dist/sdk/semantics/idl-registry.js.map +1 -0
- package/dist/sdk/semantics/types.d.ts.map +1 -0
- package/dist/sdk/semantics/types.js.map +1 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/{semantics → sdk}/types.js.map +1 -1
- package/dist/sdk/utils/address.d.ts.map +1 -0
- package/dist/sdk/utils/address.js.map +1 -0
- package/dist/sdk/utils/config.d.ts.map +1 -0
- package/dist/sdk/utils/config.js.map +1 -0
- package/dist/sdk/utils/logger.d.ts.map +1 -0
- package/dist/sdk/utils/logger.js.map +1 -0
- package/dist/simple-scan.js +249 -0
- package/package.json +103 -36
- package/CHANGELOG.md +0 -26
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/crypto/poseidon.d.ts.map +0 -1
- package/dist/crypto/poseidon.js.map +0 -1
- package/dist/events/bus.d.ts.map +0 -1
- package/dist/events/bus.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integrity.d.ts.map +0 -1
- package/dist/integrity.js.map +0 -1
- package/dist/network/shadow-rpc.d.ts.map +0 -1
- package/dist/network/shadow-rpc.js.map +0 -1
- package/dist/passport/manager.d.ts.map +0 -1
- package/dist/passport/manager.js.map +0 -1
- package/dist/pipeline.d.ts.map +0 -1
- package/dist/pipeline.js.map +0 -1
- package/dist/privacy/relayer.d.ts.map +0 -1
- package/dist/privacy/relayer.js.map +0 -1
- package/dist/privacy/shield.d.ts.map +0 -1
- package/dist/privacy/shield.js.map +0 -1
- package/dist/privacy-engine.d.ts.map +0 -1
- package/dist/privacy-engine.js.map +0 -1
- package/dist/registry/idl-fetcher.d.ts.map +0 -1
- package/dist/registry/idl-fetcher.js.map +0 -1
- package/dist/registry/programs.d.ts.map +0 -1
- package/dist/registry/programs.js.map +0 -1
- package/dist/rescue/analyzer.d.ts.map +0 -1
- package/dist/rescue/analyzer.js.map +0 -1
- package/dist/rescue/builder.d.ts.map +0 -1
- package/dist/rescue/builder.js.map +0 -1
- package/dist/security/key-rotation.d.ts.map +0 -1
- package/dist/security/key-rotation.js.map +0 -1
- package/dist/semantics/decoder.d.ts.map +0 -1
- package/dist/semantics/decoder.js.map +0 -1
- package/dist/semantics/idl-registry.d.ts.map +0 -1
- package/dist/semantics/idl-registry.js.map +0 -1
- package/dist/semantics/types.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/address.d.ts.map +0 -1
- package/dist/utils/address.js.map +0 -1
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- /package/dist/{crypto → sdk/crypto}/poseidon.d.ts +0 -0
- /package/dist/{crypto → sdk/crypto}/poseidon.js +0 -0
- /package/dist/{events → sdk/events}/bus.d.ts +0 -0
- /package/dist/{events → sdk/events}/bus.js +0 -0
- /package/dist/{index.d.ts → sdk/index.d.ts} +0 -0
- /package/dist/{index.js → sdk/index.js} +0 -0
- /package/dist/{integrity.d.ts → sdk/integrity.d.ts} +0 -0
- /package/dist/{integrity.js → sdk/integrity.js} +0 -0
- /package/dist/{network → sdk/network}/shadow-rpc.d.ts +0 -0
- /package/dist/{network → sdk/network}/shadow-rpc.js +0 -0
- /package/dist/{passport → sdk/passport}/manager.d.ts +0 -0
- /package/dist/{passport → sdk/passport}/manager.js +0 -0
- /package/dist/{pipeline.d.ts → sdk/pipeline.d.ts} +0 -0
- /package/dist/{pipeline.js → sdk/pipeline.js} +0 -0
- /package/dist/{privacy → sdk/privacy}/relayer.d.ts +0 -0
- /package/dist/{privacy → sdk/privacy}/relayer.js +0 -0
- /package/dist/{privacy-engine.d.ts → sdk/privacy-engine.d.ts} +0 -0
- /package/dist/{privacy-engine.js → sdk/privacy-engine.js} +0 -0
- /package/dist/{registry → sdk/registry}/idl-fetcher.d.ts +0 -0
- /package/dist/{registry → sdk/registry}/idl-fetcher.js +0 -0
- /package/dist/{registry → sdk/registry}/programs.d.ts +0 -0
- /package/dist/{registry → sdk/registry}/programs.js +0 -0
- /package/dist/{rescue → sdk/rescue}/analyzer.d.ts +0 -0
- /package/dist/{rescue → sdk/rescue}/analyzer.js +0 -0
- /package/dist/{rescue → sdk/rescue}/builder.d.ts +0 -0
- /package/dist/{rescue → sdk/rescue}/builder.js +0 -0
- /package/dist/{security → sdk/security}/key-rotation.d.ts +0 -0
- /package/dist/{security → sdk/security}/key-rotation.js +0 -0
- /package/dist/{semantics → sdk/semantics}/analyzer.d.ts +0 -0
- /package/dist/{semantics → sdk/semantics}/analyzer.js +0 -0
- /package/dist/{semantics → sdk/semantics}/decoder.d.ts +0 -0
- /package/dist/{semantics → sdk/semantics}/decoder.js +0 -0
- /package/dist/{semantics → sdk/semantics}/graph.d.ts +0 -0
- /package/dist/{semantics → sdk/semantics}/graph.js +0 -0
- /package/dist/{semantics → sdk/semantics}/idl-registry.d.ts +0 -0
- /package/dist/{semantics → sdk/semantics}/idl-registry.js +0 -0
- /package/dist/{semantics → sdk/semantics}/types.d.ts +0 -0
- /package/dist/{semantics → sdk/semantics}/types.js +0 -0
- /package/dist/{types.d.ts → sdk/types.d.ts} +0 -0
- /package/dist/{types.js → sdk/types.js} +0 -0
- /package/dist/{utils → sdk/utils}/address.d.ts +0 -0
- /package/dist/{utils → sdk/utils}/address.js +0 -0
- /package/dist/{utils → sdk/utils}/config.d.ts +0 -0
- /package/dist/{utils → sdk/utils}/config.js +0 -0
- /package/dist/{utils → sdk/utils}/logger.d.ts +0 -0
- /package/dist/{utils → sdk/utils}/logger.js +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Privacy-Zero Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,59 +1,312 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<br />
|
|
3
|
+
<pre>
|
|
4
|
+
███████╗ ██████╗ ██╗ ██╗ ██╗ ██████╗ ██╗██████╗
|
|
5
|
+
██╔════╝██╔═══██╗██║ ██║ ██║██╔═══██╗██║██╔══██╗
|
|
6
|
+
███████╗██║ ██║██║ ██║ ██║██║ ██║██║██║ ██║
|
|
7
|
+
╚════██║██║ ██║██║ ╚██╗ ██╔╝██║ ██║██║██║ ██║
|
|
8
|
+
███████║╚██████╔╝███████╗ ╚████╔╝ ╚██████╔╝██║██████╔╝
|
|
9
|
+
╚══════╝ ╚═════╝ ╚══════╝ ╚═══╝ ╚═════╝ ╚═╝╚═════╝
|
|
10
|
+
</pre>
|
|
2
11
|
|
|
3
|
-
|
|
12
|
+
<h3><b>SolVoid Protocol: The Enterprise Sovereign Privacy Layer</b></h3>
|
|
13
|
+
<p><i>Next-Generation Zero-Knowledge Privacy Lifecycle Management (PLM) for the Solana Ecosystem</i></p>
|
|
4
14
|
|
|
5
|
-
|
|
15
|
+
<p>
|
|
16
|
+
<a href="https://github.com/brainless3178/SolVoid/actions"><img src="https://img.shields.io/github/actions/workflow/status/brainless3178/SolVoid/privacy.yml?branch=main&style=for-the-badge&logo=github&label=CI/CD%20Pipeline" alt="Build Status"></a>
|
|
17
|
+
<a href="https://codecov.io/gh/brainless3178/SolVoid"><img src="https://img.shields.io/badge/ZK%20Circuit%20Coverage-98%25-brightgreen?style=for-the-badge&logo=codecov&label=ZK%20Circuit%20Coverage" alt="Code Coverage"></a>
|
|
18
|
+
<a href="https://github.com/brainless3178/SolVoid/releases"><img src="https://img.shields.io/badge/Production-v1.2.0-blue?style=for-the-badge&logo=github" alt="Version"></a>
|
|
19
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge&logo=github" alt="License"></a>
|
|
20
|
+
</p>
|
|
21
|
+
<p>
|
|
22
|
+
<a href="https://solana.com"><img src="https://img.shields.io/badge/Solana-Mainnet--Beta%20Ready-black?style=for-the-badge&logo=solana" alt="Solana Compatibility"></a>
|
|
23
|
+
<a href="./docs"><img src="https://img.shields.io/badge/Documentation-Stripe--Grade-green?style=for-the-badge&logo=gitbook" alt="Docs Status"></a>
|
|
24
|
+
<a href="https://github.com/brainless3178/SolVoid/security/advisories"><img src="https://img.shields.io/badge/Security-Cryptographic%20Verified-brightgreen?style=for-the-badge&logo=dependabot" alt="Security Status"></a>
|
|
25
|
+
<a href="https://discord.gg/solvoid"><img src="https://img.shields.io/badge/Discord-Audit%20Live-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
|
|
26
|
+
</p>
|
|
6
27
|
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
28
|
+
<p align="center">
|
|
29
|
+
<strong>SolVoid</strong> is a high-performance, non-custodial privacy protocol that provides a decentralized identity-abstraction layer on the Solana blockchain.
|
|
30
|
+
<br />
|
|
31
|
+
It utilizes <b>Groth16 Zero-Knowledge SNARKs</b> and <b>Poseidon-3 Hashing</b> to deliver institutional-grade anonymity at sub-second speeds.
|
|
32
|
+
</p>
|
|
33
|
+
</div>
|
|
12
34
|
|
|
13
|
-
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 🔱 Executive Vision
|
|
38
|
+
|
|
39
|
+
In the landscape of hyper-transparent blockchain architectures, **SolVoid** represents the critical transition from "Public-by-Default" to "Private-by-Choice." The protocol is engineered to neutralize the risks of on-chain telemetry, MEV-sandwich attacks, and transaction graph heuristics. By decoupling asset ownership from transaction history, SolVoid empowers individuals and institutions to execute sensitive financial maneuvers with the speed of Solana and the secrecy of Zero-Knowledge.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 🧭 Master Table of Contents
|
|
44
|
+
|
|
45
|
+
1. [Core Value Propositions](#-core-value-propositions)
|
|
46
|
+
2. [Exhaustive Feature Matrix](#-exhaustive-feature-matrix)
|
|
47
|
+
3. [Deep-Dive Architecture](#-deep-dive-architecture)
|
|
48
|
+
- [ZK-SNARK Circuit Topology](#zk-snark-circuit-topology)
|
|
49
|
+
- [The Poseidon-3 Hash Standard](#the-poseidon-3-hash-standard)
|
|
50
|
+
- [On-Chain State Management](#on-chain-state-management)
|
|
51
|
+
4. [Privacy Ghost Score Diagnostics](#-privacy-ghost-score-diagnostics)
|
|
52
|
+
5. [Command-Line Interface (CLI) Master Reference](#-command-line-interface-cli-master-reference)
|
|
53
|
+
6. [Shadow Relayer Infrastructure](#-shadow-relayer-infrastructure)
|
|
54
|
+
7. [Operational Setup & Lifecycle](#-operational-setup--lifecycle)
|
|
55
|
+
8. [Security, Validation & Testing](#-security-validation--testing)
|
|
56
|
+
- [The Shell Script Index](#the-shell-script-index)
|
|
57
|
+
9. [Master Strategic Roadmap](#-master-strategic-roadmap)
|
|
58
|
+
10. [Repository Directory Blueprint](#-repository-directory-blueprint)
|
|
59
|
+
11. [Governance & Strategic Contributions](#-governance--strategic-contributions)
|
|
60
|
+
12. [Glossary of Cryptographic Terms](#-glossary-of-cryptographic-terms)
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 💎 Core Value Propositions
|
|
65
|
+
|
|
66
|
+
- **Unlinkable Anonymity**: Complete decoupling of funding sources from destination wallets via Merkle-tree based shielding.
|
|
67
|
+
- **Hardware-Accelerated Privacy**: Optimized for Solana’s runtime, achieving verification costs below 200,000 Compute Units.
|
|
68
|
+
- **Zero-Knowledge Integrity**: Pure cryptographic proof of ownership without revealing the source deposit (Secret/Nullifier).
|
|
69
|
+
- **Anti-Heuristic Engine**: Native defense against transaction timing and volume analysis via the Ghost Scoring diagnostics.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## ✨ Exhaustive Feature Matrix
|
|
74
|
+
|
|
75
|
+
| Domain | Capability | Technical Detail | Status |
|
|
76
|
+
| :--- | :--- | :--- | :---: |
|
|
77
|
+
| **Shielding** | **ZK-Commitment Pool** | Fixed-depth (20) Merkle Tree supporting 1M+ deposits. | ✅ |
|
|
78
|
+
| **Withdrawal** | **Groth16 Verification** | Sub-600ms proof generation on-device via WASM/SDK. | ✅ |
|
|
79
|
+
| **Diagnostics** | **Privacy Ghost Score** | 4-pillar metadata audit (Linkage, Temporal, Volume, Entropy). | ✅ |
|
|
80
|
+
| **Infrastructure**| **Shadow Relayer 2.0** | Gasless & IP-anonymous transaction broadcasting. | ✅ |
|
|
81
|
+
| **Emergency** | **Atomic Rescue** | <2s scripted migration for compromised private keys. | ✅ |
|
|
82
|
+
| **Identity** | **ZK-Signed Badges** | Portable personal privacy credentials without revealing the URI. | ✅ |
|
|
83
|
+
| **Scanners** | **Ultimate Privacy Scan** | Resilience suite using 40+ RPCs with IP-rotation. | ✅ |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 🧬 Deep-Dive Architecture
|
|
88
|
+
|
|
89
|
+
SolVoid is not a single tool, but a synergistic ecosystem of cryptographic primitives and on-chain state managers.
|
|
90
|
+
|
|
91
|
+
```mermaid
|
|
92
|
+
graph TD
|
|
93
|
+
subgraph "Local Secure Environment (WASM)"
|
|
94
|
+
A[User Input] -->|Secret Generation| B(Poseidon Hash)
|
|
95
|
+
B -->|Commitment| C{Circom Prover}
|
|
96
|
+
C -->|Groth16 Proof| D[Signed Payload]
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
subgraph "Distributed Networking"
|
|
100
|
+
D -->|Anonymous Broadcast| E[Shadow Relayer Node]
|
|
101
|
+
E -->|Transaction Forwarding| F[Solana Mainnet]
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
subgraph "Solana Smart Contract (Anchor)"
|
|
105
|
+
F --> G[Merkle Tree State]
|
|
106
|
+
G -->|Root Validation| H[Verifier Module]
|
|
107
|
+
H -->|Nullifier Check| I[Fund Release]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
I -->|Private Funds| J[New Stealth Address]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### ZK-SNARK Circuit Topology
|
|
114
|
+
Our circuits are written in **Circom 2.1**, employing a Groth16 proving scheme on the **BN254** elliptic curve. This ensures maximum compatibility with Solana's forthcoming ZK precompiles while maintaining current operational efficiency through our custom Rust verifier.
|
|
115
|
+
|
|
116
|
+
### The Poseidon-3 Hash Standard
|
|
117
|
+
We use **Poseidon-3**, a Sponge-construction hash function optimized specifically for R1CS (Rank-1 Constraint Systems).
|
|
118
|
+
- **Efficiency**: Reduces constraints from ~20,000 (Keccak) to **~210** per field element.
|
|
119
|
+
- **Security**: Provides 128-bit security against all known algebraic attacks.
|
|
120
|
+
|
|
121
|
+
### On-Chain State Management
|
|
122
|
+
The SolVoid program manages a sliding window of **100 Merkle Roots**. This allows users to generate proofs against slightly older state, mitigating the risk of "Root Drift" where a proof becomes invalid because someone else deposited simultaneously.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 👻 Privacy Ghost Score Diagnostics
|
|
127
|
+
|
|
128
|
+
The **Ghost Score** is the heartbeat of the SolVoid ecosystem. It provides an objective numerical rank (0-100) of your wallet's anonymity.
|
|
129
|
+
|
|
130
|
+
- **Linkage Score**: Identifies direct and N-hop paths to centralized exchanges (CEX) or known identifiers.
|
|
131
|
+
- **Temporal Analysis**: Detects "human" rhythms in transaction timing (e.g., repeating daily patterns).
|
|
132
|
+
- **Volume Profiling**: Flagging of round-number deposits (e.g., exactly 10.0 SOL) which are easier to track.
|
|
14
133
|
|
|
15
134
|
```bash
|
|
16
|
-
|
|
135
|
+
# Execute deep-scan and generate shareable ZK-signed badge
|
|
136
|
+
solvoid-scan ghost <MY_ADDRESS> --badge --share --json
|
|
17
137
|
```
|
|
18
138
|
|
|
19
|
-
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 🔧 Command-Line Interface (CLI) Master Reference
|
|
142
|
+
|
|
143
|
+
The `solvoid-scan` CLI is a production-grade binary for privacy management.
|
|
144
|
+
|
|
145
|
+
#### Core Operational Commands
|
|
146
|
+
- `solvoid-scan shield <amount>`: The primary ingress. Converts native SOL to a ZK-Commitment.
|
|
147
|
+
- `solvoid-scan withdraw <secret> <nullifier> <recipient> <amount>`: The primary egress. Reclaims funds anonymously.
|
|
148
|
+
- `solvoid-scan ghost <address>`: Generates the Ghost Score report and visual terminal art.
|
|
149
|
+
- `solvoid-scan protect <address>`: Active monitoring mode for identifying real-time privacy leaks.
|
|
150
|
+
- `solvoid-scan rescue <wallet>`: Atomic "nuke" option for high-speed mitigation of key leaks.
|
|
151
|
+
|
|
152
|
+
#### Protocol Administration
|
|
153
|
+
- `solvoid-scan admin trigger-emergency <mult> <reason>`: Globally scale protocol fees (1x-10x).
|
|
154
|
+
- `solvoid-scan admin disable-emergency`: Restore baseline fee economics.
|
|
155
|
+
- `solvoid-scan admin pause`: Trigger Circuit Breaker to halt all withdrawals.
|
|
156
|
+
- `solvoid-scan admin resume`: Lift Circuit Breaker and resume protocol operations.
|
|
157
|
+
|
|
158
|
+
#### Global Flags & Automation
|
|
159
|
+
| Flag | Description | Default |
|
|
160
|
+
| :--- | :--- | :--- |
|
|
161
|
+
| `--rpc <URL>` | Override standard Solana RPC endpoints. | Mainnet-Beta |
|
|
162
|
+
| `--program <ID>` | Override the default SolVoid Program ID. | `Fg6Pa...` |
|
|
163
|
+
| `--relayer <URL>` | Target a specific Shadow Relayer instance. | `http://localhost:3000` |
|
|
164
|
+
| `--dry-run` | Perform an atomic simulation without spending gas. | `false` |
|
|
165
|
+
| `--json` | Output all results in raw JSON format for CI/CD. | `false` |
|
|
20
166
|
|
|
21
|
-
|
|
167
|
+
---
|
|
22
168
|
|
|
23
|
-
|
|
24
|
-
import { SolVoidClient } from 'solvoid';
|
|
25
|
-
import { Connection, Keypair } from '@solana/web3.js';
|
|
169
|
+
## 🛰 Shadow Relayer Infrastructure
|
|
26
170
|
|
|
27
|
-
|
|
28
|
-
rpcUrl: 'https://api.mainnet-beta.solana.com',
|
|
29
|
-
programId: 'Fg6PaFpoGXkYsidMpSsu3SWJYEHp7rQU9YSTFNDQ4F5i',
|
|
30
|
-
relayerUrl: 'https://relayer.solvoid.io'
|
|
31
|
-
};
|
|
171
|
+
The **Shadow Relayer** is a critical component for achieving network-level anonymity.
|
|
32
172
|
|
|
33
|
-
|
|
34
|
-
|
|
173
|
+
> **TIP**
|
|
174
|
+
> Use the Relayer to avoid "Gas Linkage." If you fund your new recipient wallet with gas from an exchange, you have nullified your privacy. The Relayer solves this by paying the gas for you and deducting a small bounty from the withdrawal.
|
|
175
|
+
|
|
176
|
+
### Relayer Endpoints
|
|
177
|
+
- `GET /health`: Node status and network metrics.
|
|
178
|
+
- `POST /register`: Onboarding for new relay nodes.
|
|
179
|
+
- `POST /relay`: The primary submission point for ZK-signed transactions.
|
|
180
|
+
- `POST /encrypt-route`: Prepares multi-hop onion-routed payloads.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 🚀 Operational Setup & Lifecycle
|
|
185
|
+
|
|
186
|
+
### 1. Requirements
|
|
187
|
+
- **Node.js**: v18.0.0+ (Recommended: v20 LTS)
|
|
188
|
+
- **Rust/Cargo**: 1.75.0+
|
|
189
|
+
- **Solana CLI**: Latest Stable
|
|
190
|
+
- **Hardware**: AVX2 support (optional, for faster local proving)
|
|
191
|
+
|
|
192
|
+
### 2. Deployment Flow
|
|
193
|
+
```bash
|
|
194
|
+
# Clone Enterprise Repository
|
|
195
|
+
git clone https://github.com/brainless3178/SolVoid.git
|
|
196
|
+
cd solvoid
|
|
197
|
+
|
|
198
|
+
# Install Critical Dependencies
|
|
199
|
+
npm install && npm run build
|
|
200
|
+
|
|
201
|
+
# Configure Environment
|
|
202
|
+
cp .env.example .env
|
|
35
203
|
```
|
|
36
204
|
|
|
37
|
-
###
|
|
205
|
+
### 3. Local Ceremony (Optional)
|
|
206
|
+
For highly secure local environments, run a personal MPC ceremony:
|
|
207
|
+
```bash
|
|
208
|
+
./scripts/run-ceremony.sh
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 🛡 Security, Validation & Testing
|
|
214
|
+
|
|
215
|
+
SolVoid employs a "Defense in Depth" strategy, validated by a massive suite of specialized shell scripts in `/scripts`.
|
|
216
|
+
|
|
217
|
+
### The Shell Script Index
|
|
218
|
+
| Script | Documentation |
|
|
219
|
+
| :--- | :--- |
|
|
220
|
+
| `./scripts/run-security-tests.sh` | **The Master Suite**: Runs every validation mentioned below. |
|
|
221
|
+
| `./scripts/verify-hash-consistency.sh` | Confirms Poseidon-3 parity across Rust, TS, and Circom logic. |
|
|
222
|
+
| `./scripts/vault-balance-protection.sh` | Simulates "phantom withdrawal" attacks to verify vault safety. |
|
|
223
|
+
| `./scripts/nullifier-validation-test.sh` | Verifies the impossibility of double-spending. |
|
|
224
|
+
| `./scripts/test-emergency-procedures.sh` | Stress-tests the speed and effectiveness of the Atomic Rescue. |
|
|
225
|
+
| `./scripts/arithmetic-safety-test.sh` | Probes for overflows and field-element collisions. |
|
|
226
|
+
| `./scripts/rust-dependency-audit.sh` | Performs a deep audit of the cargo dependency tree for CVEs. |
|
|
227
|
+
|
|
228
|
+
### Testing Lifecycle
|
|
229
|
+
```bash
|
|
230
|
+
# Run unit tests for SDK and CLI
|
|
231
|
+
npm run test:unit
|
|
232
|
+
|
|
233
|
+
# Run full integration tests with local validator
|
|
234
|
+
npm run test:integration
|
|
38
235
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const { commitmentData } = await client.shield(amountLamports);
|
|
42
|
-
console.log('Shielding successful. Secret:', commitmentData.secret);
|
|
236
|
+
# Execute 100% security validation suite
|
|
237
|
+
./scripts/security-validation.sh
|
|
43
238
|
```
|
|
44
239
|
|
|
45
|
-
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 🗺 Master Strategic Roadmap
|
|
243
|
+
|
|
244
|
+
### Phase 1: Foundation (Current Status: ✅ COMPLETED)
|
|
245
|
+
- [x] Merkle Tree Core Logic (Depth 20)
|
|
246
|
+
- [x] Poseidon-3 Sponge Construction Hashing
|
|
247
|
+
- [x] Groth16 Proving Engine (Browser & Node)
|
|
248
|
+
- [x] Multi-platform SDK for dApp developers
|
|
249
|
+
|
|
250
|
+
### Phase 2: Visibility (Current Status: ✅ COMPLETED)
|
|
251
|
+
- [x] Privacy Ghost Scoring Diagnostics
|
|
252
|
+
- [x] Shadow Relayer Alpha Deployment
|
|
253
|
+
- [x] CLI Automation Tools & Binary Releases
|
|
254
|
+
- [x] ZK-Signed Privacy Badges
|
|
255
|
+
|
|
256
|
+
### Phase 3: Expansion (Timeline: Q2 2026)
|
|
257
|
+
- [ ] **SPL Token Support**: Shielding for USDC, BONK, and JupSOL.
|
|
258
|
+
- [ ] **Decentralized Relayer Incentives**: Governance-managed relayer rewards.
|
|
259
|
+
- [ ] **On-chain MPC Ceremony**: Official ceremony for Mainnet-Beta Proving Keys.
|
|
260
|
+
- [ ] **Onion Routing**: Layered network anonymity via the Relayer Mesh.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 📂 Repository Directory Blueprint
|
|
46
265
|
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
266
|
+
```text
|
|
267
|
+
.
|
|
268
|
+
├── programs/ # Anchor-based Solana Smart Contracts (Rust)
|
|
269
|
+
├── circuits/ # Circom 2.1 source files & ZK Proving keys
|
|
270
|
+
├── sdk/ # TypeScript SDK for frontend & backend integration
|
|
271
|
+
├── cli/ # Source code for the solvoid-scan binary
|
|
272
|
+
├── relayer/ # Shadow Relayer Node source (Node.js/Express)
|
|
273
|
+
├── dashboard/ # Next.js 15 Web interface
|
|
274
|
+
├── scripts/ # Over 30+ production shell scripts for DevOps/Security
|
|
275
|
+
├── bin/ # Compiled CLI executables
|
|
276
|
+
└── docs/ # Technical Specifications & Manuals
|
|
51
277
|
```
|
|
52
278
|
|
|
53
|
-
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## 🤝 Governance & Strategic Contributions
|
|
282
|
+
|
|
283
|
+
We welcome contributions from cryptographers, security researchers, and developers.
|
|
284
|
+
|
|
285
|
+
1. **Read** the [Security Policy](./SECURITY.md).
|
|
286
|
+
2. **Review** our [Contributing Guidelines][contributing].
|
|
287
|
+
3. **Submit** an issue using the provided templates.
|
|
288
|
+
4. **Open** a Pull Request against the `develop` branch.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## 📚 Glossary of Cryptographic Terms
|
|
293
|
+
|
|
294
|
+
- **BN254**: The barreto-naehrig elliptic curve used for SNARKs.
|
|
295
|
+
- **R1CS**: Rank-1 Constraint System; the mathematical representation of our circuits.
|
|
296
|
+
- **Nullifier**: A unique serial number for a deposit, kept secret until withdrawal.
|
|
297
|
+
- **Commitment**: The hash of (Secret + Nullifier + Amount), stored on-chain.
|
|
298
|
+
- **Circuit**: A specialized piece of logic that defines what the ZK proof proves.
|
|
299
|
+
|
|
300
|
+
---
|
|
54
301
|
|
|
55
|
-
|
|
302
|
+
<p align="center">
|
|
303
|
+
<b>Built for the Solana Privacy Hackathon 2026.</b><br />
|
|
304
|
+
SolVoid is an open-source contribution to the global right to financial anonymity.
|
|
305
|
+
</p>
|
|
56
306
|
|
|
57
|
-
|
|
307
|
+
<div align="center">
|
|
308
|
+
<a href="#-solvoid-protocol-the-enterprise-sovereign-privacy-layer"><b>↑ BACK TO TOP ↑</b></a>
|
|
309
|
+
</div>
|
|
58
310
|
|
|
59
|
-
|
|
311
|
+
[commands-docs]: ./COMMANDS.md
|
|
312
|
+
[contributing]: ./CONTRIBUTING.md
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Security Disclosure
|
|
4
|
+
|
|
5
|
+
Privacy is a human right, but software security is a continuous process. If you discover a vulnerability in SolVoid, we ask that you disclose it to us responsibly so we can protect our users.
|
|
6
|
+
|
|
7
|
+
### Reporting a Vulnerability
|
|
8
|
+
- **Email:** [security@solvoid.io] (Placeholder)
|
|
9
|
+
- **Encryption:** Please use our PGP key (Link placeholder) to encrypt sensitive reports.
|
|
10
|
+
- **Process:** We will acknowledge your report within 48 hours and provide a timeline for a fix. We ask that you do not disclose the vulnerability publicly until we have released a patch.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Security Best Practices for Users
|
|
15
|
+
1. **Never share your Secret or Nullifier.** These are the only keys to your anonymous funds. If lost or stolen, your funds are gone.
|
|
16
|
+
2. **Use a Fresh Wallet for Withdrawals.** To maintain privacy, ensure your destination address has no previous on-chain links to your identity.
|
|
17
|
+
3. **Verify the Domain.** Always ensure you are using the official `solvoid.io` dashboard or a verified local build of the SDK/CLI.
|
|
18
|
+
4. **Network Fees.** If not using a relayer, be aware that funding a fresh wallet with SOL for gas can compromise your privacy via timing or source-analysis.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Known Security Considerations (Brutal Honesty)
|
|
23
|
+
1. **Un-audited Code:** As of the current version, this protocol has **NOT** undergone a professional security audit.
|
|
24
|
+
2. **Trusted Setup:** The current ceremony files are for testing. A production-grade Multi-Party Computation (MPC) trusted setup is required before Mainnet launch.
|
|
25
|
+
3. **Draft Circuits:** Some constraints in the `withdraw.circom` are undergoing refinement to prevent potential edge-case under-constraints.
|
|
26
|
+
4. **Relayer Trust:** While relayers cannot steal funds (thanks to ZK binding), they could theoretically log user IP addresses or refuse to broadcast transactions (DoS).
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Supported Versions
|
|
31
|
+
| Version | Supported |
|
|
32
|
+
|---------|-----------|
|
|
33
|
+
| 0.2.x | Beta |
|
|
34
|
+
| 0.1.x | Legacy |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Bug Bounty
|
|
39
|
+
We are currently operating a "Friendly Hacker" program. Critical vulnerabilities reported responsibly may be eligible for rewards in future protocol development funds.
|
package/bin/solvoid-scan
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Register the ghost command with the CLI program
|
|
4
|
+
* This is a non-breaking addition to your existing CLI
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerGhostCommand(program: Command): void;
|
|
7
|
+
/**
|
|
8
|
+
* Add helper text for the ghost command
|
|
9
|
+
*/
|
|
10
|
+
export declare function getGhostCommandHelp(): string;
|
|
11
|
+
//# sourceMappingURL=ghost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ghost.d.ts","sourceRoot":"","sources":["../../../cli/commands/ghost.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA4EpD;AAsED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAwC5C"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// cli/commands/ghost.ts
|
|
3
|
+
// Privacy Ghost Score Command - Non-breaking CLI extension
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.registerGhostCommand = registerGhostCommand;
|
|
9
|
+
exports.getGhostCommandHelp = getGhostCommandHelp;
|
|
10
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
11
|
+
const client_1 = require("../../sdk/client");
|
|
12
|
+
const ghost_calculator_1 = require("../utils/ghost-calculator");
|
|
13
|
+
const ghost_art_1 = require("../utils/ghost-art");
|
|
14
|
+
const badge_generator_1 = require("../utils/badge-generator");
|
|
15
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
16
|
+
/**
|
|
17
|
+
* Register the ghost command with the CLI program
|
|
18
|
+
* This is a non-breaking addition to your existing CLI
|
|
19
|
+
*/
|
|
20
|
+
function registerGhostCommand(program) {
|
|
21
|
+
program
|
|
22
|
+
.command('ghost')
|
|
23
|
+
.description(' Generate Privacy Ghost Score with visual terminal art')
|
|
24
|
+
.argument('<address>', 'Wallet address to analyze')
|
|
25
|
+
.option('--badge', 'Generate shareable privacy badge with ZK proof')
|
|
26
|
+
.option('--json', 'Output as JSON (for automation)')
|
|
27
|
+
.option('--share', 'Show social media sharing options')
|
|
28
|
+
.option('--verify <proof>', 'Verify a privacy badge proof')
|
|
29
|
+
.action(async (address, options) => {
|
|
30
|
+
try {
|
|
31
|
+
// Handle proof verification
|
|
32
|
+
if (options.verify) {
|
|
33
|
+
handleProofVerification(options.verify);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log(chalk_1.default.cyan(' Analyzing wallet privacy...\n'));
|
|
37
|
+
// Initialize client using existing configuration
|
|
38
|
+
const client = new client_1.SolVoidClient({
|
|
39
|
+
rpcUrl: program.opts().rpc || 'https://api.mainnet-beta.solana.com',
|
|
40
|
+
programId: program.opts().program || 'Fg6PaFpoGXkYsidMpSsu3SWJYEHp7rQU9YSTFNDQ4F5i',
|
|
41
|
+
relayerUrl: program.opts().relayer || 'http://localhost:3000'
|
|
42
|
+
}, {} // Wallet not needed for read-only operations
|
|
43
|
+
);
|
|
44
|
+
// Use existing protect() method - NO BREAKING CHANGES!
|
|
45
|
+
console.log(chalk_1.default.gray(' Scanning for privacy leaks...'));
|
|
46
|
+
const scanResults = await client.protect(new web3_js_1.PublicKey(address));
|
|
47
|
+
console.log(chalk_1.default.gray(' Calculating Ghost Score...'));
|
|
48
|
+
const ghostScore = ghost_calculator_1.GhostScoreCalculator.calculate(scanResults);
|
|
49
|
+
console.log(chalk_1.default.gray(' Generating visual report...\n'));
|
|
50
|
+
// JSON output for automation
|
|
51
|
+
if (options.json) {
|
|
52
|
+
console.log(JSON.stringify({
|
|
53
|
+
address,
|
|
54
|
+
ghostScore,
|
|
55
|
+
timestamp: Date.now(),
|
|
56
|
+
scanResults
|
|
57
|
+
}, null, 2));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Display beautiful terminal art
|
|
61
|
+
console.log(ghost_art_1.GhostArt.formatGhostScore(ghostScore));
|
|
62
|
+
// Generate and display badge
|
|
63
|
+
if (options.badge || options.share) {
|
|
64
|
+
await handleBadgeGeneration(address, ghostScore, options.share);
|
|
65
|
+
}
|
|
66
|
+
// Show call-to-action
|
|
67
|
+
console.log(chalk_1.default.cyan('\n Next Steps:'));
|
|
68
|
+
if (ghostScore.score < 70) {
|
|
69
|
+
console.log(chalk_1.default.yellow(' Consider shielding transactions to improve privacy'));
|
|
70
|
+
console.log(chalk_1.default.yellow(' Use: solvoid-scan shield <amount>'));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log(chalk_1.default.green(' Great privacy! Consider sharing your badge'));
|
|
74
|
+
console.log(chalk_1.default.green(' Use: solvoid-scan ghost <address> --badge --share'));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.error(chalk_1.default.red('\n Error generating Ghost Score:'), error.message);
|
|
79
|
+
console.error(chalk_1.default.gray('\nTroubleshooting:'));
|
|
80
|
+
console.error(chalk_1.default.gray(' • Check that the address is valid'));
|
|
81
|
+
console.error(chalk_1.default.gray(' • Ensure your RPC endpoint is accessible'));
|
|
82
|
+
console.error(chalk_1.default.gray(' • Try again with --rpc <custom-endpoint>'));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Handle badge generation and display
|
|
89
|
+
*/
|
|
90
|
+
async function handleBadgeGeneration(address, ghostScore, showShare) {
|
|
91
|
+
console.log(chalk_1.default.cyan('\n Generating Privacy Badge...\n'));
|
|
92
|
+
const badge = await badge_generator_1.BadgeGenerator.generate(address, ghostScore);
|
|
93
|
+
// Terminal badge
|
|
94
|
+
console.log(ghost_art_1.GhostArt.formatBadge(badge));
|
|
95
|
+
// Social sharing
|
|
96
|
+
if (showShare) {
|
|
97
|
+
console.log(chalk_1.default.bold(' Twitter/X Post:'));
|
|
98
|
+
console.log(chalk_1.default.gray(''.repeat(60)));
|
|
99
|
+
console.log(chalk_1.default.blue(badge.twitterText));
|
|
100
|
+
console.log(chalk_1.default.gray(''.repeat(60)));
|
|
101
|
+
console.log();
|
|
102
|
+
console.log(chalk_1.default.bold(' Discord Message:'));
|
|
103
|
+
console.log(chalk_1.default.gray(''.repeat(60)));
|
|
104
|
+
console.log(badge.discordText);
|
|
105
|
+
console.log(chalk_1.default.gray(''.repeat(60)));
|
|
106
|
+
console.log();
|
|
107
|
+
console.log(chalk_1.default.bold(' Privacy Proof (ZK):'));
|
|
108
|
+
console.log(chalk_1.default.gray(''.repeat(60)));
|
|
109
|
+
console.log(chalk_1.default.gray(badge.proofData.slice(0, 80) + '...'));
|
|
110
|
+
console.log(chalk_1.default.dim('\n(This is a zero-knowledge proof of your privacy score'));
|
|
111
|
+
console.log(chalk_1.default.dim('that doesn\'t reveal your wallet address)'));
|
|
112
|
+
console.log(chalk_1.default.gray(''.repeat(60)));
|
|
113
|
+
console.log();
|
|
114
|
+
console.log(chalk_1.default.cyan(' Verification:'));
|
|
115
|
+
console.log(`Anyone can verify your proof with:`);
|
|
116
|
+
console.log(chalk_1.default.green(`solvoid-scan ghost --verify "${badge.proofData.slice(0, 40)}..."`));
|
|
117
|
+
console.log();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Verify a privacy badge proof
|
|
122
|
+
*/
|
|
123
|
+
function handleProofVerification(proofData) {
|
|
124
|
+
console.log(chalk_1.default.cyan('\n Verifying Privacy Badge Proof...\n'));
|
|
125
|
+
const verification = badge_generator_1.BadgeGenerator.verifyBadge(proofData);
|
|
126
|
+
if (verification) {
|
|
127
|
+
console.log(chalk_1.default.green(' Proof is VALID\n'));
|
|
128
|
+
console.log(chalk_1.default.bold('Proof Details:'));
|
|
129
|
+
console.log(` Verification: ${chalk_1.default.cyan('SUCCESSFUL')}`);
|
|
130
|
+
console.log(chalk_1.default.green('This wallet holder has proven their privacy score'));
|
|
131
|
+
console.log(chalk_1.default.green('without revealing their wallet address! '));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(chalk_1.default.red(' Proof is INVALID or EXPIRED\n'));
|
|
135
|
+
console.log(chalk_1.default.yellow('Possible reasons:'));
|
|
136
|
+
console.log(' • Proof data is corrupted');
|
|
137
|
+
console.log(' • Proof was tampered with');
|
|
138
|
+
}
|
|
139
|
+
console.log();
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Add helper text for the ghost command
|
|
143
|
+
*/
|
|
144
|
+
function getGhostCommandHelp() {
|
|
145
|
+
return `
|
|
146
|
+
${chalk_1.default.bold.cyan('Privacy Ghost Score')}
|
|
147
|
+
|
|
148
|
+
Analyze your wallet's privacy and get a visual "Ghost Score" (0-100).
|
|
149
|
+
|
|
150
|
+
${chalk_1.default.bold('Usage:')}
|
|
151
|
+
solvoid-scan ghost <address> Basic ghost score
|
|
152
|
+
solvoid-scan ghost <address> --badge Generate shareable badge
|
|
153
|
+
solvoid-scan ghost <address> --share Show social sharing options
|
|
154
|
+
solvoid-scan ghost <address> --json JSON output for automation
|
|
155
|
+
solvoid-scan ghost --verify <proof> Verify a privacy badge
|
|
156
|
+
|
|
157
|
+
${chalk_1.default.bold('Examples:')}
|
|
158
|
+
# Analyze privacy
|
|
159
|
+
solvoid-scan ghost 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
|
|
160
|
+
|
|
161
|
+
# Generate badge for GitHub
|
|
162
|
+
solvoid-scan ghost 9WzDXw... --badge
|
|
163
|
+
|
|
164
|
+
# Share on social media
|
|
165
|
+
solvoid-scan ghost 9WzDXw... --share
|
|
166
|
+
|
|
167
|
+
# Get JSON for automation
|
|
168
|
+
solvoid-scan ghost 9WzDXw... --json | jq .ghostScore.score
|
|
169
|
+
|
|
170
|
+
${chalk_1.default.bold('Ghost Score Levels:')}
|
|
171
|
+
90-100 ${chalk_1.default.green(' Invisible')} - Elite privacy
|
|
172
|
+
70-89 ${chalk_1.default.cyan(' Translucent')} - Good privacy
|
|
173
|
+
50-69 ${chalk_1.default.yellow(' Visible')} - Needs improvement
|
|
174
|
+
30-49 ${chalk_1.default.red(' Exposed')} - Poor privacy
|
|
175
|
+
0-29 ${chalk_1.default.red.bold(' Glass House')} - Critical issues
|
|
176
|
+
|
|
177
|
+
${chalk_1.default.bold('What it analyzes:')}
|
|
178
|
+
Anonymity - Use of shielded transactions
|
|
179
|
+
Linkage - Links to CEX/DEX addresses
|
|
180
|
+
Pattern - Transaction pattern detection
|
|
181
|
+
Volume - Amount obfuscation
|
|
182
|
+
Timing - Timing analysis resistance
|
|
183
|
+
`;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=ghost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ghost.js","sourceRoot":"","sources":["../../../cli/commands/ghost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rescue.d.ts","sourceRoot":"","sources":["../../../cli/commands/rescue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAuIrD"}
|