Placeholder ticker · no token exists
Prove you hold at least X. Show nothing more.
// the public scalepass / fail only
Awaiting a proof
Tilt is fixed-size: it shows the answer, never the weight.
// working demo
Commit. Ask. Learn one bit.
Prover private
Only you see this side. Edit the numbers, then commit.
—
Balance changed since the last commitment — commit again.
Commitment = SHA-256("atleast/v1|" + balance + "|" + nonce). Computed here, in your browser.
Public view everyone
Everything a verifier, an indexer, or an onlooker would see.
not committed yet
no proof requested
The sealed opening is AES-GCM ciphertext addressed to the verifier. The public cannot read it. The balance appears nowhere on this side.
Verifier · ask “is it at least X?”
One click runs the whole protocol below, with real key exchange, encryption, hashing and signing.
1 Challengefresh 128-bit random value
2 Sealprover encrypts opening to verifier
3 Opensandbox checks hash = commitment
4 Comparebalance ≥ X, one boolean out
5 AttestECDSA signs the boolean
Verifier sandbox log (this box sees the opening; it discloses only the boolean)
idle
// how it works
What stays hidden, what is public.
The demo above is a commit-then-attest model. It shows the shape of the idea, “reveal a yes/no, not the number”, using real primitives. It is not a zero-knowledge proof, and the next section says exactly where it falls short.
Hidden from the public
- Your balance, as a number.
- The blinding nonce.
- The plaintext opening. It travels only as AES-GCM ciphertext to the verifier.
Visible to the public
- The SHA-256 commitment: a binding fingerprint that cannot be reopened to a different balance.
- The threshold X, the challenge, and the sealed ciphertext.
- One boolean plus the verifier's ECDSA signature over (commitment, X, challenge, boolean).
- Commit. You hash your balance with a random nonce. Hash binding means you can't later claim a different balance; the nonce hides it from guessers.
- Challenge. The verifier names a threshold X and a fresh random challenge so old answers can't be replayed.
- Seal. You run ECDH against the verifier's public key, derive an AES-GCM key through HKDF, and encrypt your opening. The commitment, X and challenge are bound in as authenticated data.
- Open and compare. The verifier's sandbox decrypts, recomputes the hash, rejects any mismatch with the commitment, then evaluates balance ≥ X.
- Attest. Only the boolean leaves, signed with ECDSA. Anyone can check that signature against the verifier's public key.
| Property | This demo | A production range proof (e.g. Bulletproofs) |
|---|---|---|
| Who learns the balance? | The verifier's sandbox sees it in the clear. You must trust it. | Nobody. The verifier learns only that the statement is true. |
| Soundness | Rests on trusting the verifier's signature. | Rests on cryptographic hardness. Anyone can check the proof with no trusted party. |
| Commitment | SHA-256 hash (binding, not additively homomorphic). | Pedersen commitments (hiding, homomorphic) so “balance − X ≥ 0” can be proven in range. |
| Verification | Check one ECDSA signature. | Check a short proof of the range statement. |
Plainly: a real zero-knowledge range proof would replace the verifier's sandbox with a Bulletproofs-style proof that the committed value lies in a range, checkable by anyone. This page does not do that. It is an illustrative model of the idea.
Known limitations — please read
- This is not a zero-knowledge proof. The verifier's sandbox learns your exact balance and you must trust it to discard it. A production version would use a ZK range proof (Bulletproofs); this page only models the idea.
- The verifier here is the same page. Both roles run in your tab, so nothing about the trust model is demonstrated by separation. The log is an honest description, not a security boundary.
- Repeated questions leak. Every yes/no reveals one bit. Many thresholds recover the balance by binary search.
- Without a nonce, small balances are guessable. The attacker button above shows this for a bounded range of values.
- Reduces linkability, not anonymity. A balance proof does not hide who you are, when you transact, or what you did on-chain.
- Unaudited, demo-only. No third-party audit exists. Nothing here touches mainnet or real funds. Balances are made-up integers.
- Use lawfully. You are responsible for complying with the laws and tax rules that apply to you.