Live protocol · disposable credits
Use an anonymous credit token
This is the real classical protocol, not a simulation. Your browser creates the token, mines the issuance challenge, builds the zero-knowledge spend proof, and keeps the bearer secret on this device.
Everything here is experimental and unaudited. Credits are deliberately worthless and may disappear when the issuer epoch changes.
Your first credit spend
Start with a fresh wallet, or add a new 2-credit token to the tokens you already have.
- Issue 2 credits below. Keep this page open while your browser mines the challenge.
- Select that 2-credit token, spend 1, and leave the requested return at 0.
- Look at the replacement token: it holds 1 credit. The original token has been consumed.
You can spend the remaining credit once more. To repeat this from code, run the client example.
Browser balance
0 credits
- Scheme
- Classical ACT
- Issuer epoch
…- Storage
- This browser
Your browser knows
- The token secret and exact hidden balance
- Which issuance produced which token
- The journal needed to recover after a dropped connection
The issuer sees
- A blinded issuance request and public grant
- A spend amount, one-time nullifier, and zero-knowledge proof
- No account, cookie, or token history
Tokens in this browser
- The wallet is loading.
Activity
- Wallet activity will appear here.
What happens when you press the buttons
- The cryptography runs locally. Rust is compiled to WebAssembly and runs inside a background worker, so mining and proof construction do not freeze the page.
- Secret state is journaled first. Before any issue or spend request is sent, the exact request and the state needed to finish it are committed to browser storage.
- Retries are byte-for-byte identical. If the connection dies after the issuer records a response, reloading this page resends the journaled request and receives that response again.
- A spend creates change, not a mutable balance. The old token is consumed whole. Its zero-knowledge proof produces a fresh token holding the remaining balance plus any issuer return.
The failure-semantics page explains why the journal and replay rule are part of the monetary protocol rather than ordinary application polish.