Type alias GPCProofConfig

GPCProofConfig: {
    circuitIdentifier?: GPCIdentifier;
    pods: Record<PODName, GPCProofObjectConfig>;
    tuples?: Record<PODName, GPCProofTupleConfig>;
    uniquePODs?: boolean;
}

Contains the specific constraints to be proven in a GPC proof. GPC configuration tends to be fixed and reusable, as distinct from GPCProofInputs which tends to differ for each proof.

The primary use of this type is as an argument to gpcProve, which will automatically pick a ZK circuit to fit the configuration and inputs. Proving will produce a GPCBoundConfig usuable for verification via gpcVerify. You can also call gpcBindConfig to explicitly create a canonical config which can be reused for multiple proofs and verifiations.

See the documentation of the various fields and subtypes for more details.

Type declaration

  • Optional circuitIdentifier?: GPCIdentifier

    GPCIdentifier specifying a specific ZK circuit to use in proving and verifying. If not specified, gpcProve or gpcBindConfig will pick the smallest supported circuit which can handle this configuration.

    See ProtoPODGPC.CIRCUIT_FAMILY for supported circuits.)

  • pods: Record<PODName, GPCProofObjectConfig>

    Indicates the number of objects to be included in the proof, and the constrants to be proven about those objects in each GPCProofConfig.

    Each POD object mentioned here must be provided in GPCProofInputs. The GPC proof will validate that the POD's signature is valid, and reveal the signer's public key. The POD's content ID and other global info is not revealed in the proof. Other features and constraints for this POD and its entries are optionally specified in GPCProofObjectConfig.

    The names assigned here are used to refer these PODs in GPCProofInputs, as well as in PODEntryIdentifier strings elsewhere in configuration. They are also used to assign a standard order to the PODs in the circuit. The names are not cryptographically verified, since they are not a part of the PODs, but simply a convenience for configuration.

  • Optional tuples?: Record<PODName, GPCProofTupleConfig>

    Defines named tuples of POD entries. The tuples' names lie in a separate namespace and are internally prefixed with '$tuple.'. These tuples must be of arity (i.e. size/width) at least 2.

  • Optional uniquePODs?: boolean

    Indicates whether the configured PODs should have unique content IDs. If this is true, it enables the POD uniqueness module on the circuit level.

Generated using TypeDoc