The signature is already checked
Verifying an account’s signature inside a circuit costs millions of constraints. Solana’s runtime has done it before the program runs. The proof ties the note to an address; the address signing is the consent.
Proofs are built in your browser and checked on L1.How privacy works
Proofs are built in your browser and checked on L1.How privacy works
Proofs are built in your browser and checked on L1.How privacy works
A shielded pool on Solana where your balance earns while it hides. Staked as jitoSOL, proven on L1.
Value is held as notes in a Merkle tree, staked while it waits, and spent with zero-knowledge proofs. White is what the chain records. Green is what it cannot see.
Privacy lives in the link between going in and coming out, not at the endpoints. Each route shows exactly where the record stops.
Lamports go in; a note comes out. No proof needed — the program builds the commitment from the amount it is debiting.
Two notes spent, two created. A 2-in / 2-out join-split under one Groth16 proof.
A note owned by a Solana address, spent by that address signing. No spending key exists.
One note spent, lamports out to a recipient that is bound into the proof.
Other pools mint their own keys and live apart from the chain’s accounts. Here a note can belong to any Solana address, and spending it takes nothing but that address’s signature.
owner = Poseidon(hi, lo)
commitment = Poseidon(asset, amount, Poseidon(owner, blinding))
Verifying an account’s signature inside a circuit costs millions of constraints. Solana’s runtime has done it before the program runs. The proof ties the note to an address; the address signing is the consent.
The sender needs an address and nothing else. Sender and amount stay hidden, and the value arrives still shielded — unlike a withdrawal, which prints the amount on the public record.
A PDA signs through its program’s invoke_signed. A treasury, an escrow, a payroll can own shielded value and pay out of it: everyone sees that it paid, nobody sees whom or how much.
A claim shows that an address claimed — never what, how much, or from whom. How privacy works.
A payment that returns if nobody collects it. A proof of funds that is true today. A receipt for a payment nobody can see. Each is one more way to use a note — the pool underneath did not change.
Pay any address. If nobody collects by the date you chose, take it back. The note is owned by a condition — this address, or its sender later — and both ways out spend the same nullifier, so only one can land.
Show that you hold at least an amount, and nothing else. The note is spent and recreated in one transaction, so the statement is about this moment — not about something you held last year.
Show one person that you paid a recipient at least so much, for a stated purpose. Verified in their browser, against the pool. Nothing goes on-chain, and nothing in it lets them follow the note.
The compiled program, real proofs, real syscalls. These are outputs of the test suite, not targets.
One program on Solana L1. Shield, send, prove what you hold — and get a payment back if nobody claims it. Read how it works, or open the app and try it.