zk-promises (stateful anonymous credentials)
Let a service enforce mutable compliance, moderation, or rate-limit rules on anonymous users without identifying them. The user holds a zk-object with private mutable state (reputation, compliance flags, ban status) as a commitment on an append-only bulletin board. The provider posts asynchronous callbacks that update the state without knowing which user is affected. On each interaction the user proves predicates over the current state via a zero-knowledge proof.
Let a service enforce mutable compliance, moderation, or rate-limit rules on anonymous users without identifying them. The user holds a zk-object with private mutable state (reputation, compliance flags, ban status) as a commitment on an append-only bulletin board. The provider posts asynchronous callbacks that update the state without knowing which user is affected. On each interaction the user proves predicates over the current state via a zero-knowledge proof.
- Zk-object commitment stored on the bulletin board; the owner holds the plaintext state locally.
- Append-only bulletin board (on-chain contract or off-chain log with integrity anchoring) records commitments, nullifiers, and encrypted callback tickets.
- Predicate circuits let the user prove predicates over state (reputation above threshold, not banned, callbacks ingested) without revealing the state itself.
- Pubkey-rerandomizable signatures give each interaction a fresh public key so that actions by the same user are unlinkable.
- Callback ticket is a pseudorandom handle produced during interaction; the provider can later post an encrypted update against it.
- Client-side prover generates proofs at interaction time and rebuilds state when ingesting callbacks.
Guarantees:
- Confidentiality: object contents are visible only to the owner.
- Obliviousness: a state update does not reveal which object was updated; actions by the same user are unlinkable.
- Integrity: state transitions follow the programmed methods; callbacks cannot be skipped if the provider checks the scan cutoff.
- Atomicity: the old nullifier is consumed on each transition, preventing forks or double-spend of a state version.
Threat model:
- Soundness of the proof system and correctness of the predicate circuits.
- Append-only integrity of the bulletin board. A forking or equivocating board can feed different views to different clients.
- Client state custody. A user who loses their local plaintext cannot recover the zk-object; server-side recovery is out of scope by design.
- Metadata at the network layer (timing of scans, provider interactions, IP) is out of scope for this pattern.
- Clients must scan the bulletin board and process callbacks; scanning cost grows with board size and requires incremental indexing.
- A temporary linkability window exists while a callback ticket is active; after expiry no identifying information remains.
- Per-interaction proof generation cost is non-trivial; published benchmarks are under one second client-side, but predicate complexity drives the number up quickly.
- Recovery story for lost client state is weak. Deployments typically pair the pattern with encrypted cloud backups or hardware-keyed derivation.
An institutional stablecoin platform allows anonymous transfers under compliance policy. Each user holds a zk-object with compliance state (KYC-valid flag, AML reputation score). At transfer time the user proves that the KYC flag is valid, that reputation is above a threshold, and that all callbacks within the last 24 hours have been ingested. If a later AML review flags a transaction, the compliance team posts a callback that docks the user's reputation. The user ingests the callback before the next transfer. The platform never learns which user was flagged; it checks only that the user's updated state still passes the predicates.