Privacy Guarantees
Privacy Cash provides transaction privacy by breaking the on-chain link between deposits and withdrawals. The system offers different privacy guarantees depending on usage patterns and the anonymity set.What is Private?
Transaction Linkage
✅ HiddenDeposits cannot be linked to withdrawals on-chain. Observers see commitments and nullifiers but cannot determine which deposit funded which withdrawal.
Recipient Address
✅ HiddenWithdrawal recipients are encrypted in the proof. Only the recipient (or someone with the decryption key) knows they received funds.
Amount Details
✅ Partially HiddenDeposit and withdrawal amounts are encrypted in commitments. However, external amounts (deposit/withdrawal size) are visible to enable pool accounting.
Transaction Timing
⚠️ VisibleTransaction timestamps are public on Solana. Timing analysis can reduce anonymity set if only one user is active in a time window.
What is Not Private?
Anonymity Set
The anonymity set is the number of possible commitments that could have funded a withdrawal. Larger anonymity sets provide stronger privacy.Example:If 1,000 users have deposited 10 SOL into the pool, and you withdraw 10 SOL, your anonymity set is 1,000. An observer knows the withdrawal came from one of those deposits but cannot determine which one.
Factors Affecting Anonymity Set
- Amount
- Timing
- Pool Activity
- Token Type
Unique amounts reduce anonymityIf you deposit 3.14159 SOL (a unique amount), withdrawing exactly 3.14159 SOL creates a strong linkage.Best practices:
- Use round amounts (0.1, 1, 10 SOL)
- Split large deposits into common denominations
- Withdraw amounts different from deposit
Example
Threat Model
Understand who can see what information in different attack scenarios.Passive Observers
Capabilities:- Monitor all on-chain transactions
- Analyze timing, amounts, and frequencies
- Build statistical models of user behavior
- Total pool balance and activity
- Distribution of deposit/withdrawal amounts
- Transaction patterns over time
- Publicly associated addresses (if not using fresh wallets)
- Which deposit funded which withdrawal
- Identity of withdrawal recipients
- Internal commitment amounts (only external amounts visible)
Mitigation Strategies
Mitigation Strategies
- Use fresh wallet addresses for each deposit/withdrawal
- Avoid unique amounts that could correlate transactions
- Add timing delays between related transactions
- Use multiple commitments for large amounts
- Withdraw to intermediate addresses before final destination
Active Network Attackers
Additional capabilities:- Monitor RPC requests and IP addresses
- Analyze transaction submission patterns
- Correlate wallet activity across applications
- IP addresses submitting transactions (unless using VPN/Tor)
- Wallet software and RPC endpoints being used
- Correlation between deposits from same IP
- On-chain linkage between transactions
- Contents of encrypted outputs
- Private keys or blinding factors
Mitigation Strategies
Mitigation Strategies
- Use privacy-preserving RPCs or run your own node
- Route traffic through VPN or Tor when submitting transactions
- Use different RPC endpoints for deposits vs withdrawals
- Consider relayer services to hide your IP address
Malicious Relayers
Capabilities:- See transaction details before submission
- Know which user is making which withdrawal
- Potentially censor or delay transactions
- Your withdrawal recipient address
- Your withdrawal timing and amount
- Your IP address (if connecting directly)
- Which deposit you’re withdrawing from
- Your private keys or commitment secrets
- Contents of other users’ transactions
Mitigation Strategies
Mitigation Strategies
- Self-relay by submitting transactions directly
- Use multiple relayers to avoid single point of trust
- Encrypt communications with relayers
- Verify relayer code if possible (open source)
Compromised RPC Nodes
Capabilities:- Log all RPC requests from users
- Correlate requests with on-chain transactions
- Potentially extract sensitive data from client state
- Your deposit and withdrawal activity
- Your IP address and client information
- Timing of your queries and balance checks
- Your private keys (if wallet is properly designed)
- On-chain transaction linkages
- Other users’ activity
Mitigation Strategies
Mitigation Strategies
- Run your own RPC node for maximum privacy
- Use privacy-focused RPC providers that don’t log
- Rotate between multiple RPC endpoints
- Use Tor or VPN when connecting to RPC nodes
Privacy Best Practices
Choose Common Amounts
Use standard denominations that many others use:Recommended amounts:
- 0.1 SOL (small transactions)
- 1 SOL (medium transactions)
- 5 SOL (larger transactions)
- 10 SOL (maximum recommended per commitment)
Add Timing Delays
Wait between deposit and withdrawal to prevent timing correlation:Recommended delays:
- Minimum: 1 hour
- Good: 24 hours
- Best: Several days
Split Large Amounts
Break large deposits into multiple smaller commitments:This increases your anonymity set and provides flexibility in withdrawals.
Use Relayers Wisely
Relayers can enhance privacy but require trust:When to use relayers:
- You want to hide your IP address
- You don’t have SOL for withdrawal fees
- You want to automate withdrawals
- Maximum privacy is required
- You have technical capability
- You’re withdrawing large amounts
Privacy Limitations
Network-Level Privacy
Network-Level Privacy
Privacy Cash provides on-chain transaction privacy but does not protect network-level metadata.Not protected:
- Your IP address when connecting to RPC nodes
- Transaction submission timing at network level
- Correlation with other blockchain activity
Amount Privacy
Amount Privacy
External amounts (deposits/withdrawals) are visible on-chain. This is necessary for pool accounting but limits amount privacy.Visible:
- Deposit and withdrawal amounts
- Net flow in/out of the pool
- Internal commitment amounts (encrypted)
- Which commitment has which amount
Small Anonymity Sets
Small Anonymity Sets
If few users are in the pool, privacy is limited even with perfect operational security.Risk scenarios:
- New token pools with < 100 users
- Deposits during low-activity periods
- Unique amounts with only one matching deposit
Sophisticated Analysis
Sophisticated Analysis
Advanced attackers may use machine learning and statistical analysis to reduce anonymity.Possible attacks:
- Timing analysis across multiple transactions
- Amount correlation with external data sources
- Behavioral fingerprinting of users
Privacy Metrics
You can estimate your privacy level using these metrics:Effective Anonymity Set
Calculate Anonymity Set
Privacy Score
- Excellent (90-100)
- Good (70-89)
- Fair (50-69)
- Poor (0-49)
✅ Strong privacy guarantees
- Anonymity set > 1,000
- Common amount (0.1, 1, 5, 10)
- Delay > 24 hours
- Fresh addresses used
- Active pool period
Comparison with Other Privacy Solutions
| Feature | Privacy Cash | Monero | Tornado Cash | Zcash (Shielded) |
|---|---|---|---|---|
| Blockchain | Solana | Monero | Ethereum/L2s | Zcash |
| Privacy Model | UTXO pool | Ring signatures | Pool-based | Shielded pool |
| Transaction Privacy | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Amount Privacy | ⚠️ Partial | ✅ Full | ⚠️ Partial | ✅ Full |
| Recipient Privacy | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Speed | Very fast (Solana) | Slow (~2 min) | Medium (Ethereum) | Medium (~75 sec) |
| Costs | Very low | Low | High (gas) | Low |
| Audited | ✅ Yes (4 audits) | ✅ Yes | ✅ Yes | ✅ Yes |
| Trust Required | None (smart contract) | None (protocol) | None (smart contract) | None (protocol) |
Privacy Cash offers a strong balance between privacy, speed, and cost on Solana. For maximum amount privacy, consider combining Privacy Cash with other techniques like swapping or splitting amounts.
Next Steps
Zero-Knowledge Proofs
Learn how ZK proofs enable privacy without trusted parties
Commitments & Nullifiers
Understand the cryptographic primitives that prevent double-spending
Integration Guide
Start integrating Privacy Cash into your application
Security Best Practices
Learn how to use Privacy Cash securely