Anonymous rate limiting
Two ways to rate-limit PIR queries without deanonymizing the user, end-to-end: mint → obtain → present → verify. ARC is a multi-show credential (one credential authorizes N unlinkable presentations, bounded by a range proof); Cashu Blind Auth is a pool of single-show tokens (BDHKE, one token per query). Watch the quota drain, then try a replay to see the gate reject it.
The blinding/finalizing runs in WASM (the secrets never leave your browser); the issuer is the dev-issuer — a demo backend with free issuance (no payment) that also runs the verify gate, so no PIR database is needed. In production the same present frames go over WebSocket to the PIR server's identical credential gate, and issuance would be gated behind a Lightning-backed mint.
Default issuer is https://issuer.bitcoinpir.org. To run your own, build the main repo and start cargo run -p dev-issuer, then set the Issuer URL to http://127.0.0.1:5601 (localhost is exempt from mixed-content blocking, so it works even here over HTTPS).
ARC
Multi-show: one credential → N unlinkable presentations.
No credential yet.
Cashu Blind Auth
Single-show: a pool of one-time BATs, each spent once.
No pool yet.