v1.0.0

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.

Non-Custodial

You retain full control of your private keys at all times

Decentralized

Powered by Solana smart contracts with no central authority

Private

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:

Smart Contracts

Pool Contract

Manages the communal fund pool, validates deposits, and processes withdrawals

Verifier Contract

Verifies zero-knowledge proofs on-chain using SNARK verification

Client Application

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.

What We Don't Know

✓ 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.

Protocol Fee

0.3% of transaction amount

Used for protocol maintenance and development

Network Fee

~0.000005 SOL

Standard Solana network transaction fees

Relayer Option

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

Fee Breakdown Example

Deposit:1.000000 SOL
Protocol Fee (0.3%):-0.003000 SOL
Network Fee:-0.000005 SOL
You Receive:0.996995 SOL