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

PartReal or simulated
The proofsReal. Built and checked in your browser, about 1.8 KB each.
Sealed paymentsReal. Only the right key opens them.
Your keysReal and local. Nothing is sent anywhere, and they vanish when you close the tab.
The chainSimulated. A list in the page that really checks each proof. Nothing goes to Solana.
Wallets, MayaSimulated. 25 demo SOL and random addresses.
The swap and feesSimulated. Real fees aren't set.
The crowdMade by the page. Real privacy needs real users.
Fee helper, EarnNot 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

WhatWho can read it
Going inEveryone: your wallet and the amount.
Your balanceYou, and anyone you give your viewing key.
A private sendYou and the person you paid. The chain sees a proof and two unreadable values.
A swapEveryone sees the vault swap. Nobody sees whose it was.
Coming outEveryone: 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.