voidcashdocs

Introduction

Voidcash is a private SOL balance on Solana. Shield SOL from any wallet, send it privately to another Voidcash address, and unshield it to any Solana address.

Voidcash gives you a private SOL balance on Solana. You move SOL from an ordinary wallet into a shared pool, and from then on only you can see how much you hold. You can pay another Voidcash user from that balance, and take SOL out to any Solana address whenever you want.

There is no account and no email. The app creates a vault in your browser: a random secret that holds your keys, locked with a passphrase. Your keys never leave the browser, and the proofs that move your SOL are built on your device.

Three moves

MoveWhat happensPool fee
ShieldSOL goes from your wallet into the pool and becomes a private note that only your keys can open and spend. Your wallet signs once.None at launch
SendYou pay another Voidcash address (it starts with void) from your notes. A relayer submits the transaction, so none of your wallets signs it.None, by design
UnshieldSOL leaves the pool for any Solana address, which receives it from the pool, not from you.0.5% of the amount at launch

Sends and unshields also pay the relayer a small fee in SOL, for the network fees and the accounts the transaction creates. See Fees.

What stays private, and what is public

Everything Voidcash does is an ordinary Solana transaction to the pool program, so anyone can read it. What the transaction reveals depends on the move.

PrivatePublic
Your balanceYes. Notes are encrypted; only your viewing key opens them.The pool's total, and how many notes it holds
A sendWho paid whom, and how much. The transaction shows no amount at all.That a private transfer happened, when, and the relayer's fee
A shieldWhere that SOL goes next: a note's later spend cannot be linked to the shield that created itThe wallet that shielded and the amount: a deposit is an ordinary transfer into the pool
An unshieldWhich notes paid for itThe address that received SOL from the pool, and how much
Your keysCreated and kept in your browser, never on a serverNothing

Timing is public too. Shielding and unshielding the same amount minutes apart is easy to match: let time pass and vary amounts.

How the parts fit

PartWhere it runsWhat it does
The vaultYour browserHolds the root your keys come from, sealed with your passphrase. Finds your notes, builds every proof in a background worker, and computes your balance.
The pool programSolanaHolds the SOL, keeps the tree of notes and the list of spent ones, verifies each proof, and pays out exits and fees.
The indexerA serverServes every note and every spent marker the program has recorded, to anyone. Your app downloads all of them, so the indexer cannot tell which are yours.
The relayerA serverQuotes its fee and submits sends and unshields as the fee payer. It cannot change them: the recipient, the amount, its own address and its fee are bound in the proof.
Your walletA Solana wallet in your browser, such as Phantom, Solflare or BackpackShields SOL and can receive unshields. It never signs anything inside the pool.

Before every proof, the app checks the indexer's data against the program: it proves only against a state of the tree that the program itself has recorded.

Start here

Go deeper

On this page