Interface PCD<C, P>

All PCDs consist of a "claim", which is the human-interpretable statement that the PCD is making (i.e. "I am a Zuzalu resident"); and a "proof" attached to the "claim," which is a cryptographic or mathematical proof of the claim. A PCD consists of only data. The code and algorithms associated with each type of PCD lives in that PCD type's corresponding PCDPackage. The package exposes, among other things, prove and verify functions, which allow you to create new instances of the PCD and, and verify that instances of the PCD are indeed correct respectively.

interface PCD<C, P> {
    claim: C;
    id: string;
    proof: P;
    type: string;
}

Type Parameters

  • C = unknown
  • P = unknown

Implemented by

    Properties

    Properties

    claim: C

    Information encoded in this PCD that is intended to be consumed by the business logic of some application. For example, a type of PCD that could exist is one that is able to prove that its creator knows the prime factorization of a really big number. In that case, the really big number would be the claim, and a ZK proof of its prime factorization would go in the PCD#proof.

    id: string

    Uniquely identifies this instance. Zupass cannot have more than one PCD with the same id. In practice this is often a UUID generated by the PCDPackage#prove function.

    proof: P

    A cryptographic or mathematical proof of the PCD#claim.

    type: string

    Refers to PCDPackage#name - each PCD must come from a particular PCDPackage. By convention, this is a string like 'semaphore-identity-pcd', or 'rsa-ticket-pcd'. These type names are intended to be globally unique - i.e. no two distinct PCD types should have the same type name.

    Generated using TypeDoc