Docs
A private balance for your Solana wallet.
Move SOL in once. Pay and trade from inside. Leave from a new address. Anyone reading the chain sees the two ends and can't join them.
Early demo. Not audited. The proofs are real. The chain, wallets, prices and fees are simulated. Nothing goes to Solana, and this code must never hold real money.
What's real in the demo
| Part | Real or simulated |
|---|---|
| The proofs | Real. Built and checked in your browser, about 1.8 KB each. |
| Sealed payments | Real. Only the right key opens them. |
| Your keys | Real and local. Nothing is sent anywhere, and they vanish when you close the tab. |
| The chain | Simulated. A list in the page that really checks each proof. Nothing goes to Solana. |
| Wallets, Maya | Simulated. 25 demo SOL and random addresses. |
| The swap and fees | Simulated. Real fees aren't set. |
| The crowd | Made by the page. Real privacy needs real users. |
| Fee helper, Earn | Not built. |
What it is
Every Solana wallet is public. Anyone can see who you pay, how much, and everything you hold. HideSOL is an idea for a shared pool that breaks that link, and a working demo of the maths behind it.
You don't earn anything from using it. It keeps what you already have private.
How it works
Notes
Your balance is held as sealed notes. Each one commits to an amount, an asset and a secret. Only your browser knows what's inside.
Proofs
To spend a note, your browser proves "one of these 32 notes is mine" without saying which. The check takes the proof and the 32 notes, and learns nothing else.
Nullifiers
Each spend reveals a one-time mark. The chain refuses a mark it has seen, which stops a note being spent twice. The mark can't be tied back to the note.
Sealed payments
A payment is sealed to the person you're paying. Their wallet finds it by trying to open every new note. Only theirs opens.
Exit
You leave to a brand-new address. The amount and address are public. Which note paid for it isn't.
Public or private
| What | Who can read it |
|---|---|
| Going in | Everyone: your wallet and the amount. |
| Your balance | You, and anyone you give your viewing key. |
| A private send | You and the person you paid. The chain sees a proof and two unreadable values. |
| A swap | Everyone sees the vault swap. Nobody sees whose it was. |
| Coming out | Everyone: the new address and the amount. |
Security
No audit has happened. The demo shows the idea. It isn't ready for money.
What the demo uses
A one-out-of-many proof (Groth & Kohlweiss, 2015) over the BN254 curve, with Pedersen commitments and Fiat-Shamir. It's written in plain JavaScript, with no libraries and no trusted setup. A proof is about 1.8 KB.
What's tested
The tests in mvp/zk.test.mjs show honest proofs passing and cheats failing: spending twice under a second mark, claiming more than a note holds, changing the asset, redirecting an exit, and spending a note you don't hold.
Limits
- A small crowd hides you badly. Timing and unusual amounts can give you away, whatever the maths says.
- One proof covers 32 notes in the demo, not the whole pool.
- A real version needs a different proof system, one Solana can check cheaply, plus a program, a relayer and an audit.
API
There isn't one yet. The proof engine is one file, mvp/zk.js, if you want to read how it works.
Compliance
HideSOL is for ordinary privacy: getting paid, paying people and trading without being watched.
A viewing key lets you show your history to an accountant, an auditor or anyone else you choose. It opens your notes and can't spend them.
The demo holds no funds and has no accounts. Privacy tools are treated differently from place to place, so a real launch would need legal review first. Nothing here is legal advice.
$HIDESOL
No token has launched. There's no contract, and any contract claiming to be this one isn't. If that changes, the address goes on the home page.
Demo points are a count in your browser. They're worth nothing and don't convert into anything.