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.