Send and receive SOL without revealing your identity on-chain. Stealth addresses, relayer privacy, and zero-knowledge proofs.
AaJF9TTgTPqRTuXfnQnVvBihpYwYUAYroW984foWyVJArchitecture
Unique one-time addresses for every payment. Sender and receiver are completely unlinkable on-chain.
Announcement PDAs store ephemeral keys. Scalable design with per-announcement accounts.
Submit through a relayer to hide the sender's wallet. The relayer pays rent, you sign the transfer.
Hide payment amounts with Pedersen commitments and zk-SNARK proofs. Verify without revealing.
Developer Experience
use cloak_sdk::{
StealthPayment,
StealthKeypair,
Scanner,
};
// Create a stealth payment
let payment = StealthPayment::create(
&receiver_meta, amount
)?;
// Scan for incoming payments
let payments = scanner.scan(rpc).await?;
// Derive spending key
let kp = StealthKeypair::derive(
&meta, &ephemeral
)?;# Generate your stealth identity
$ cloak init
Generated new stealth meta-address!
# Send a private payment
$ cloak send stealth1abc... 0.5
Transaction sent!
# Hidden amount (zk-SNARK)
$ cloak send stealth1abc... 0.5 --private
Generating zk-SNARK proof...
# Through relayer (hidden sender)
$ cloak send stealth1abc... 0.5 --relayer
Transaction relayed!Features
ECDH-derived one-time addresses. Each payment goes to a unique address that only the recipient can detect.
Pedersen commitments with Groth16 proofs hide payment amounts. Verify validity without revealing the value.
Submit transactions through a relayer to hide your wallet address. The relayer pays rent, you only sign the transfer.
Efficient on-chain scanning with viewing key delegation. Watch-only wallets can detect payments without spending keys.
Each announcement is its own PDA — no circular buffers, no limits. Indexed by a global counter for deterministic access.
Init, send, scan, spend, history. Supports --private and --relayer modes. Everything from the terminal.
Protocol
Receiver creates a stealth meta-address and shares the public portion.
Sender uses ECDH with the meta-address to derive a unique one-time stealth address.
SOL is sent to the stealth address. An announcement PDA publishes the ephemeral key on-chain.
Receiver scans announcements, detects payments, and derives the spending key.
Stack
Applications
Accept contributions without exposing all donors publicly on-chain. Each donation goes to a unique stealth address.
Pay employees privately without revealing salary information. Relayer mode hides the company wallet.
Buy goods and services without linking transactions to your identity. zk-proofs hide the amounts.
Move funds between wallets without exposing organizational structure. View keys for auditing without spending access.
Start integrating privacy-preserving payments in your Solana application.