How atsh-here/ntat works
NTAT is an academic Rust library implementing secret-bound, non-transferable anonymous-token issuance and redemption. A caller initializes public parameters; the client creates a proof-bearing query, the server verifies it and returns an issuance response, and the client verifies that response to obtain a token. Redemption proceeds in two rounds: the client sends a first proof, the server checks it and returns a challenge, and the client answers with a second proof for server verification. Proof helpers and protocol data types live in src/util_dalek.rs. The tree contains only the Dalek construction; README-mentioned alternatives are not represented here.
Main entry points: client_dalek.rs Client operations · server_dalek.rs Server operations · util_dalek.rs Redemption proofs
Components 10
Token protocol
- Public parameters
src/util_dalek.rs - Client operations
src/client_dalek.rs - Server operations
src/server_dalek.rs - Query and proof
src/util_dalek.rs - Issuance response
src/util_dalek.rs - Issued token
src/util_dalek.rs - Redemption proofs
src/util_dalek.rs
Proof primitives
- REP3 proof checks
src/util_dalek.rs - DLEQ proof checks
src/util_dalek.rs
Other components
- Library caller
Connections 16
- Library caller → Public parameters: initializes via
- Library caller → Client operations: invokes
- Client operations → REP3 proof checks: proves query
- Client operations → Query and proof: creates
- Query and proof → Server operations: sends query
- Server operations → REP3 proof checks: verifies query
- Server operations → DLEQ proof checks: proves issuance
- Server operations → Issuance response: creates
- Issuance response → Client operations: returns response
- Client operations → DLEQ proof checks: verifies issuance
- Client operations → Issued token: finalizes token
- Client operations → Redemption proofs: creates first proof
- Redemption proofs → Server operations: sends first proof
- Server operations → Client operations: returns challenge
- Client operations → Redemption proofs: creates second proof
- Redemption proofs → Server operations: sends second proof