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.

Starting

Loading the browser wallet.

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
1

Issue credits

Create a fresh hidden token and pay for it with browser-mined proof of work.

For this browser demo, issuance is limited to 32 credits so the wait stays human.
2

Spend anonymously

Consume one token and receive a fresh, unlinkable change token.

The return demonstrates issuer-selected refunds: spend 3, ask for 1 back, and the net payment is 2.

Tokens in this browser

  • The wallet is loading.

Activity

  1. Wallet activity will appear here.

What happens when you press the buttons

  1. 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.
  2. 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.
  3. 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.
  4. 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.