Pro Tip
For maximum privacy, wait some time between shielding and transferring. This makes it harder to correlate your transactions.
Learn how to use MIST for private transactions on Solana. This guide covers everything from basic concepts to advanced SDK integration.
MIST is a privacy protocol built natively for Solana that enables fully private transactions using zero-knowledge proofs (zk-SNARKs). Unlike other privacy solutions, MIST hides the sender, receiver, and amount of every transaction.
All transaction details are hidden using advanced cryptography.
You control your keys at all times. No trusted third parties.
Proof generation in under 1 second, optimized for Solana.
Every proof is verified by Solana validators.
Get started with MIST in just a few steps. No coding required for basic usage.
Connect your Phantom, Solflare, or any Solana-compatible wallet to the MIST app. Your private keys never leave your device.
Deposit SOL into the MIST shielded pool. This converts your public SOL into private, shielded SOL that can't be tracked.
Transfer shielded SOL to any address. The transaction is completely private — sender, receiver, and amount are all hidden.
Convert your shielded SOL back to regular SOL whenever you need to interact with other Solana apps.
For maximum privacy, wait some time between shielding and transferring. This makes it harder to correlate your transactions.
MIST uses a combination of cryptographic techniques to achieve privacy while maintaining the security guarantees of the Solana blockchain.
When you shield SOL, your funds enter a shared "shielded pool." This pool contains the combined funds of all MIST users, making it impossible to trace individual balances.
Each shielded transaction creates a commitment (a cryptographic hash representing your funds) and a nullifier (a unique value that prevents double-spending). These are stored on-chain but reveal nothing about the actual transaction.
// 1. Shield: Public SOL → Shielded Pool PublicSOL → createCommitment(amount, secret) → ShieldedBalance // 2. Transfer: Prove ownership without revealing details generateProof(oldCommitment, newCommitment, nullifier) → Verifier checks proof on-chain → ShieldedBalance transferred privately // 3. Unshield: Shielded Pool → Public SOL proveOwnership(commitment) → PublicSOL returned
MIST uses zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) to prove transaction validity without revealing any details.
A zk-SNARK allows you to prove that you know something (like a secret key) without revealing what that something is. In MIST's case, you prove:
All without revealing who you are, who you're sending to, or how much.
Proofs are generated off-chain on your device, then submitted to Solana for on-chain verification. This keeps proof generation fast while maintaining trustless verification.
| Metric | Value | Notes |
|---|---|---|
| Proof Generation | <800ms |
On modern devices |
| Proof Size | 288 bytes |
Compact for on-chain storage |
| Verification Time | ~10ms |
Fast on-chain verification |
| Security Level | 128-bit |
Industry standard |
Understanding what MIST hides and what it doesn't is crucial for using it effectively.
Avoid shielding and immediately unshielding the same amount. This pattern can be analyzed to link your transactions. For best privacy, vary amounts and timing.
Integrate MIST into your application using our TypeScript SDK.
# Using npm npm install @mist-protocol/sdk # Using yarn yarn add @mist-protocol/sdk # Using pnpm pnpm add @mist-protocol/sdk
import { MistClient, Keypair } from '@mist-protocol/sdk'; // Initialize the client const mist = new MistClient({ network: 'mainnet-beta', wallet: yourWalletAdapter, }); // Shield SOL (deposit into private pool) const shieldTx = await mist.shield({ amount: 10 * 1e9, // 10 SOL in lamports }); // Send private transfer const transferTx = await mist.privateTransfer({ recipient: recipientPublicKey, amount: 5 * 1e9, // 5 SOL }); // Unshield SOL (withdraw from private pool) const unshieldTx = await mist.unshield({ amount: 5 * 1e9, recipient: yourPublicKey, });
For complete API documentation, including all methods, parameters, and examples, see our API Reference section.
Yes. Your private keys never leave your device. MIST's smart contracts are non-upgradeable and cannot access your funds — only you can move your shielded SOL.
Your funds remain safe on-chain. The smart contracts are immutable and will continue to function. You can always unshield your funds using any compatible interface or directly via the contracts.
Yes. MIST has been audited by leading security firms. Audit reports are available in our Security section.
MIST charges a small protocol fee (0.1%) on shield and unshield operations. Private transfers between shielded addresses have no protocol fee — you only pay Solana network fees.
Yes. MIST works with Ledger and other hardware wallets through Phantom, Solflare, and other wallet adapters.
Security is our top priority. Here's how we keep your funds safe.
Our smart contracts and cryptographic circuits have been audited by:
We run a bug bounty program with rewards up to $100,000 for critical vulnerabilities. If you find a security issue, please report it responsibly.
Never share your private keys or seed phrase with anyone. MIST team will never ask for your keys. Beware of phishing sites — always verify you're on the official MIST domain.