
PRIVATE PAYMENTSFOR SOLANA
Encrypted balances, stealth recipients, and unlinkable transfers secured by zero-knowledge cryptography.
Privacy is infrastructure.
Privacy Primitives
Four interconnected protocols that together form a complete private payments infrastructure.
Mixer Pool
Shield SOL and SPL tokens into anonymity pools. Withdraw to any address with a zero-knowledge proof — no link between deposit and withdrawal.
Encrypted Accounts
Confidential token balances secured by Poseidon stream encryption. Update balances off-chain and submit proofs without revealing amounts.
Stealth Addresses
One-time addresses for unlinkable payments using dual-key stealth address protocol. Sender derives a unique address from your keys — only you can scan and claim.
Key Registry
On-chain identity without revealing your identity. Register cryptographic material once — receive private payments from anyone without exposing your public address.
How It Works
A complete private payments lifecycle — from key registration to claiming.
Register Keys
Generate a viewing key and spending key. Register your public keys on-chain — once registered, anyone can send you private payments.
Shield or Create Account
Deposit SOL into a mixer pool to break linkability, or create an encrypted token account for confidential balance management.
Send Privately
Look up the recipient's registered keys, derive a one-time stealth address, and send funds. The recipient generates the corresponding private key, and an on-chain announcement enables discovery.
Claim or Unshield
Scan for incoming stealth payments, claim them using your derived private key, or unshield from a mixer pool with a zero-knowledge proof.
Security Model
Cryptographic guarantees, not policy promises. Every operation is provably correct.
Zero-Knowledge Proofs
All private state transitions are validated client-side and proven on-chain using Groth16. The network verifies correctness without ever seeing the underlying data.
On-Chain Verification
Solana's alt_bn128 pairing precompiles verify Groth16 proofs directly. No oracles, no relayers, no trusted third parties — the chain is the sole arbiter.
No Trust Assumptions
Privacy is enforced by cryptography, not policy. Dual-key stealth addresses, Poseidon encryption, and Merkle inclusion proofs ensure mathematical guarantees.
Build With Mini Veil
Integrate private payments into your dApp with a few lines of code.
import { createScalarSigner } from "@mini-veil/core";
import { Program } from "@coral-xyz/anchor";
// Derive stealth address for recipient
const stealthAddress = deriveStealthAddress(
recipientSpendingKey,
senderEphemeralKey
);
// Send SOL to stealth address
await program.methods
.transfer(new BN(amount))
.accounts({ from: sender, to: stealthAddress })
.rpc();
// Recipient scans and claims
const stealthKey = scanForPayments(
spendingPrivKey,
viewingPrivKey
);
const signer = createScalarSigner(stealthKey);use mini_veil::state::NullifierAccount;
#[derive(Accounts)]
pub struct ClaimStealth<'info> {
#[account(mut)]
pub stealth_address: Signer<'info>,
#[account(mut)]
pub recipient: SystemAccount<'info>,
pub system_program: Program<'info, System>,
}
pub fn claim_stealth(ctx: Context<ClaimStealth>, amount: u64) -> Result<()> {
**ctx
.accounts
.stealth_address
.to_account_info()
.try_borrow_mut_lamports()? -= amount;
**ctx
.accounts
.recipient
.to_account_info()
.try_borrow_mut_lamports()? += amount;
Ok(())
}Civilizational Infrastructure
Privacy is a
civilizational right.
Private payments are not a feature. They are foundational infrastructure for a free digital society.