SolMask vs Privacy Cash
Two zero-knowledge shielded pools for private transfers on Solana. SolMask costs less to use and settles multi-recipient sends in a single proof.
SolMask and Privacy Cash solve the same Solana problem the same way at the cryptographic level: both are shielded pools that break the on-chain link between a deposit and a later withdrawal using zero-knowledge proofs over a Merkle tree of note commitments. If you have read how one works, you largely understand the other. This page is about the choices that actually differ on Solana — what it costs, how a withdraw is shaped, and how compliance is enforced — because that is where the decision gets made.
The Privacy Cash figures below are quoted from its public documentation as of May 2026 and scoped to Solana. Fees and pool activity move over time, so treat this as a starting point and verify the current numbers before you rely on them.
Fees: SolMask costs less
The headline difference is price. To move funds privately on Solana, SolMask takes a 0.23% (23 bps) fee plus a flat 0.003 SOL per recipient. Privacy Cash, per its published Solana fee schedule, takes 0.35% of the withdrawal plus 0.006 SOL per recipient. SolMask is lower on both components — about a third less on the percentage, and exactly half on the flat per-recipient fee.
| Transfer | SolMask | Privacy Cash |
|---|---|---|
| Percentage fee | 0.23% (23 bps) | 0.35% |
| Flat fee per recipient | 0.003 SOL | 0.006 SOL |
| Move 100 SOL (1 recipient) | ≈ 0.233 SOL | ≈ 0.356 SOL |
| Move 1,000 USDC (1 recipient) | ≈ 2.30 USDC + 0.003 SOL | ≈ 3.50 USDC + 0.006 SOL |
Privacy Cash figures from its public Solana fee documentation, May 2026. Examples are illustrative and exclude the underlying Solana network fees, which both protocols incur.
What they share
Both protocols use the same building blocks on Solana: a deposit appends a Poseidon commitment to an append-only Merkle tree; a withdraw proves, in zero knowledge, ownership of an unspent note and burns a nullifier to prevent double-spends; a relayer submits the withdraw so the recipient needs no gas; cross-asset output is routed through Jupiter; and addresses are screened against risk intelligence via CipherOwl. Both are non-custodial in the sense that the spend secret is derived and held client-side. If your mental model is “Tornado-style pool, upgraded and compliance-aware,” it fits both.
Where SolMask goes further
An atomic join-split. SolMask's withdraw is a single Groth16 proof that can spend up to four input notes, pay up to two transparent recipients, and write a shielded change note back to the pool, with arbitrary amounts. You can consolidate several deposits and split a payment in one transaction instead of a chain of separate withdrawals — which also means you pay the per-recipient fee once, not once per step.
Compliance enforced on-chain. Beyond off-chain screening, SolMask maintains an on-chain banlist registry that blocks deposits from listed wallets at the program boundary, so enforcement is part of the protocol itself rather than purely an off-chain gate.
Solana-native by design. SolMask is built for Solana and nothing else — SOL, USDC, and USDT in per-asset vaults, settling in seconds for a fraction of a cent. There is no extra surface area to trust beyond the Solana program and the proof your browser generates.
Side-by-side
| SolMask | Privacy Cash | |
|---|---|---|
| Core mechanism | ZK shielded pool: commitment/nullifier over a Merkle tree, Groth16 withdraw proof. | ZK shielded pool: same commitment/nullifier-over-Merkle-tree design. |
| Percentage fee | 0.23% (23 bps). | 0.35% (per public Solana fee docs). |
| Flat fee per recipient | 0.003 SOL. | 0.006 SOL. |
| Withdraw shape | Atomic join-split: ≤4 input notes, ≤2 recipients, +1 change note, one proof, arbitrary amounts — one fee. | Note-based withdraw; multi-note specifics not fully documented publicly. |
| Assets | SOL, USDC, USDT in per-asset vaults. | SOL, USDC, USDT. |
| Relayer & gasless | Yes — relayer submits the withdraw; recipient needs no SOL. | Yes — relayer-based, gasless for the recipient. |
| Cross-asset output | Jupiter swap leg inserted at withdraw. | Jupiter-routed swaps. |
| Compliance posture | CipherOwl screening + an on-chain banlist registry enforced at the program boundary. | CipherOwl screening. |
When to use SolMask
If you are moving SOL, USDC, or USDT to a fresh wallet on Solana, SolMask does it for less — a lower percentage fee and half the flat per-recipient cost — and the join-split lets you consolidate notes or pay several recipients in a single proof. The on-chain banlist is a structural compliance signal if that matters to you, and staying entirely on Solana keeps the path simple.
As with any shielded pool, the privacy you actually get depends on the live anonymity set for your asset and time window, not on the logo. Deposit into the asset with real activity, wait a meaningful delay, and withdraw to a genuinely fresh address. SolMask makes the cheap part cheaper; the discipline is still yours.
FAQ
- Are SolMask and Privacy Cash the same kind of protocol?
- At the cryptographic level they are the same family — both are zero-knowledge shielded pools on Solana. You deposit an asset, a Poseidon commitment for your note is appended to an on-chain Merkle tree, and later a Groth16 proof lets you withdraw to a fresh address without revealing which deposit was yours. Both use a relayer so the recipient needs no gas, and both screen addresses with CipherOwl. The differences that matter are cost, the shape of the withdraw, and how compliance is enforced.
- Which one is cheaper to use on Solana?
- SolMask. Per Privacy Cash’s published Solana fee schedule (May 2026), a withdrawal costs 0.35% of the amount plus 0.006 SOL per recipient. SolMask charges 0.23% (23 bps) plus 0.003 SOL per recipient — lower on both the percentage and the flat component. Moving 100 SOL costs roughly 0.233 SOL with SolMask versus about 0.356 SOL with Privacy Cash; on a 1,000 USDC transfer it is about 2.30 USDC versus 3.50 USDC. The gap widens with every recipient because the flat fee is half.
- What can SolMask do that is different?
- SolMask's withdraw is an atomic join-split: a single proof can spend up to four of your input notes, pay up to two recipients, and write one shielded change note back into the pool — in one transaction, for arbitrary amounts. That means you can consolidate several deposits and split a payment in a single step instead of a chain of separate withdrawals, each of which would carry its own fee. SolMask also enforces compliance at the program boundary with an on-chain banlist registry, not only at the off-chain screening layer.
- Which one has the bigger anonymity set?
- Neither protocol can promise this in the abstract — the anonymity set is whoever else holds an unspent note in the same pool over the same time window, and it changes daily. Check current activity for the specific asset you intend to move, and prefer a longer privacy delay so your withdraw blends into more deposits. The protocol gives you the mechanism; the size of the crowd depends on live usage.
- Is the privacy itself different between the two?
- The core guarantee is the same shielded-pool unlinkability, so the privacy you actually get comes down to how you use it: deposit into an asset with real activity, wait a meaningful delay, and withdraw to a genuinely fresh address. Because SolMask costs less per transfer and lets you pay several recipients in one join-split, it is cheaper to follow good privacy hygiene — splitting a large send into peer-comparable amounts does not multiply your fees the way separate withdrawals would.