DARKDROP / DOCS
Guide & Playbook
Understand every step—create, share, claim, and secure Solana dead drops with confidence.
TABLE OF CONTENTS
Concept Overview
DarkDrop is a privacy-focused value transfer layer on Solana mainnet. Create anonymous transfers using ZK-compressed drops via Light Protocol with fixed denominations for maximum privacy.
- SOL and USDC supported on mainnet
- Fixed denominations prevent amount correlation attacks
- Light Protocol ZK compression hides transaction details
- Password protection encrypts claim codes with AES-256
- Relayer service provides gas abstraction for claimers
Privacy Layers
True privacy requires protecting multiple layers. DarkDrop addresses each one:
LAYER 1: TRANSACTION PRIVACY
- ZK compression via Light Protocol
- Fixed denominations (0.1, 0.5, 1, 10 SOL)
- Shared pool hides individual transactions
- Nullifier system prevents double-spending
LAYER 2: IDENTITY PRIVACY
- No KYC or account required
- Burner wallets for operational security
- Tor RPC routing (planned)
LAYER 3: CODE SECURITY
- Optional AES-256 encryption with scrypt key derivation
- Client-side key generation only
- No server-side key storage
Fixed Denominations
DarkDrop uses fixed amounts to prevent correlation attacks. When everyone deposits the same amounts, observers cannot link deposits to claims by matching values.
SOL AMOUNTS
USDC AMOUNTS
// Without fixed amounts (traceable)
Deposit: 7.3891 SOL → Claim: 7.3891 SOL = Same person
// With fixed amounts (anonymous)
Deposit: 1 SOL (1 of 1000) → Claim: 1 SOL = Could be anyone
Ultra Private Mode
Ultra Private Mode uses Light Protocol's ZK compression to hide your drop in a merkle tree with validity proofs. Unlike burner wallets, compressed drops don't create visible on-chain accounts.
- Compress: Your SOL/USDC is compressed into Light Protocol's state tree.
- Share: The claim code contains the keypair to access the compressed funds.
- Decompress: Recipient decompresses the funds to their wallet using validity proofs.
// Privacy Flow
Creator (Wallet A) → Compress → Merkle Tree
|
[share code off-chain]
|
Claimer (Wallet B) ← Decompress ← Merkle Tree
// No on-chain link between Wallet A and B
DarkPool (Live)
DarkPool is a shielded mixing pool that provides maximum privacy by breaking all on-chain links between deposits and claims. It is live and uses a shared pool wallet with Light Protocol compression.
// DarkPool Flow
Wallet A → Deposit 1 SOL ─┐
Wallet B → Deposit 1 SOL ─┼─→ [SHIELDED POOL] ─┬─→ Claim → Wallet X
Wallet C → Deposit 1 SOL ─┘ ├─→ Claim → Wallet Y
└─→ Claim → Wallet Z
// No way to know: A→X? A→Y? B→Z?
- All deposits go to a shared shielded pool
- Claims come from the pool, not linked to specific deposits
- Time delays add additional privacy (planned)
- Relayer-managed for gas abstraction
Create Flow
- Connect a wallet on Solana Mainnet funded with SOL.
- Select asset (SOL or USDC) and pick a fixed denomination.
- Optionally enable Ultra Private Mode for ZK compression.
- Optionally set a password to encrypt the claim code.
- Confirm the transaction. Your funds are compressed into the shielded pool.
- You receive a claim code and QR. Share only with the intended recipient.
Claim Flow
- Paste or scan the claim code. Enter password if encrypted.
- Connect your wallet (or use relayer for gasless claims).
- Light Protocol decompresses the funds using validity proofs.
- Funds arrive in your wallet. The claim keypair is destroyed.
Batch Drops
Batch mode creates multiple drops in one session (2-20). Each drop is its own transaction and gets its own claim code.
- All drops use the same asset and fixed amount
- You sign once per drop (one transaction per drop)
- Claim codes are saved locally in History for recovery
Clawback
Clawback lets the sender recover an unclaimed drop by using the original claim code. It is the same claim flow, but you claim back to your wallet.
- Works for both SOL and USDC
- Requires the claim code (no recovery without it)
- Use the Claw Back button in History or on the result screen
Claim Code Formats
Claim codes encode the keypair needed to access funds. Password-protected codes use AES encryption.
Ultra Private SOL
darkdrop:v2:mainnet:sol:compressed:raw:...
Password Protected
darkdrop:v2:mainnet:usdc:compressed:aes:HINT:...
Standard Drop
darkdrop:v2:mainnet:sol:raw:...
DarkPool (Live)
darkpool:v1:mainnet:sol:1:...
Security
- All cryptography happens client-side. No keys touch any server.
- Claim codes are like cash. Anyone with the code can claim.
- Use strong passwords and share them separately from the code.
- Ultra Private Mode provides stronger privacy than burner wallets.
- Fixed denominations prevent amount-based tracking.
- Nullifiers prevent double-spending cryptographically.
Roadmap
Developer Notes
Core logic: src/lib/drop.ts (compression), src/lib/pool.ts (DarkPool),src/lib/encryption.ts (AES), src/lib/nullifier.ts (double-spend prevention).
Dependencies: @lightprotocol/compressed-token, @lightprotocol/stateless.js,tweetnacl, zustand.
Open source: github.com/hitman-kai/darkdrop