MixASOL Documentation
A fully decentralized privacy protocol for Solana
MixASOL is a non-custodial privacy solution that breaks the on-chain link between sending and receiving addresses on Solana. Using zero-knowledge proofs and a decentralized smart contract pool, users can privatize their SOL transactions while maintaining full custody of their funds.
You retain full control of your private keys at all times
Powered by Solana smart contracts with no central authority
Zero-knowledge proofs ensure transaction privacy
How It Works
1. Deposit
When you initiate a deposit, the MixASOL smart contract generates a cryptographic note (secret) in your browser. Your SOL is then sent to the communal mixing pool, a decentralized smart contract on Solana. The contract records a commitment (hash of your note) without revealing the note itself.
commitment = hash(note, amount)
pool.add_deposit(commitment, amount)2. Mixing Period
Your deposit joins other users' funds in the pool. The smart contract applies randomized timing delays and batches transactions together. During this period (typically 1-3 minutes), your deposit becomes indistinguishable from others in the pool.
3. Withdrawal
To withdraw, you submit a zero-knowledge proof derived from your note. This proves you have a valid deposit without revealing which specific deposit is yours. The contract verifies the proof and sends SOL to your specified destination address. The on-chain link between your original deposit and final withdrawal is broken.
proof = generate_zk_proof(note)
pool.withdraw(proof, destination_address)Architecture
MixASOL consists of three core components working together:
Pool Contract
Manages the communal fund pool, validates deposits, and processes withdrawals
Verifier Contract
Verifies zero-knowledge proofs on-chain using SNARK verification
Note Generation
Creates cryptographic secrets locally in your browser
Proof Generation
Generates ZK proofs client-side for withdrawal
Key Security Principle
Your note (secret) never leaves your browser and is never transmitted to any server. It's generated locally using cryptographically secure random number generation.
Privacy & Security
Zero-Knowledge Proofs (zk-SNARKs)
MixASOL uses zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) to prove you have a valid deposit without revealing which deposit is yours. This cryptographic technique ensures:
- The verifier can confirm you have a legitimate deposit
- Your original deposit address remains completely hidden
- No one can link your withdrawal to your deposit
Anonymity Set
Your privacy strength depends on the anonymity set—the number of deposits in the pool at withdrawal time. With each additional user, the difficulty of linking transactions increases exponentially. MixASOL maintains multiple pool sizes to maximize privacy across different deposit amounts.
✓ Your original deposit address
✓ Your withdrawal destination
✓ The link between deposits and withdrawals
✓ Your identity or personal information
Smart Contracts
MixASOL's smart contracts are deployed on Solana mainnet and are fully open-source. The contracts handle all mixing logic on-chain, ensuring trustless operation.
Pool Contract
Deposit Function
Accepts SOL deposits and stores commitments in a Merkle tree structure for efficient proof verification
Withdraw Function
Verifies zero-knowledge proofs and transfers SOL to the specified address
Nullifier Registry
Prevents double-spending by tracking used proofs
Fees & Economics
MixASOL uses a transparent fee structure to maintain the protocol and incentivize relayers.
0.3% of transaction amount
Used for protocol maintenance and development
~0.000005 SOL
Standard Solana network transaction fees
For enhanced privacy, you can use a relayer to submit your withdrawal transaction. This allows withdrawing to an address with zero SOL balance (no gas needed).
Relayer Fee: Optional, typically 0.01-0.02 SOL