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.
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.