Zupass is a local-first data store for personal data, cryptographic secrets, and proofs of identity, membership, and activity.
Zupass stores all data on your device using browser storage APIs, with end-to-end encrypted backup.
Using zero-knowledge proofs, Zupass allows you to create verifiable proofs about your data, without disclosing the data itself. For example, you can prove that you are a member of a group without needing to disclose your identity.
The unit of data in Zupass is the “PCD”, short for “proof-carrying data” (to be grammatically correct, a single PCD would be a “proof-carrying datum”). Zupass stores some PCDs for you, and can create new ones: each time you generate a zero-knowledge proof, that’s a new PCD. These PCDs can be stored in Zupass, or they can be shared with third parties that request them.
Most PCDs have issuers, where the issuer is an authority for the data contained in the PCD. For example, the organizers of an event are the authority for whether a ticket to that event is valid or not. They issue ticket PCDs to the attendees, who can then create zero-knowledge proofs about them. Because the PCD is signed by the event organizer’s public key, third parties can verify the authenticity of the ticket.
Users collect these PCDs by subscribing to Feeds.
More documentation relating to feeds and issuance coming soon!
As a developer, you can build applications that leverage Zupass. The primary use-case for third-party applications that integrate with Zupass is for authentication—where your app asks Zupass for a proof that the user a PCD with certain characteristics.
A common example is event ticketing, where your application might ask the user to prove that they have a ticket to a given event or group of events.
To get started with authentication, follow the ZuAuth tutorial.
PODs are a new type of PCD now available in Zupass, or usable outside Zupass by app developers. PODs generalize “ticket” functionality to represent any sort of user data represented as a signed key-value store. ZK proofs about PODs can be generated using General Purpose Circuits (GPCs) without any need for circuit programming. To learn more, check POD and GPC Development.
Table of Contents