[−][src]Module zkp::toolbox
Contains lowerlevel tools that allow programmable specification of proof statements.
The higherlevel define_proof
macro allows declarative
specification of static proof statements, and expands into code
that uses this lowerlevel API. This lowerlevel API can also be
used directly to perform imperative specification of proof
statements, allowing proof statements with runtime parameters
(e.g., an anonymous credential with a variable number of
attributes).
The SchnorrCS
trait defines the common constraint system API
used for specifying proof statements; it is implemented by the
Prover
, Verifier
, and BatchVerifier
structs.
Roughly speaking, the tools fit together in the following way:

Statements are defined as generic functions which take a
SchnorrCS
implementation and some variables, and add the proof statements to the constraint system; 
To create a proof, construct a
Prover
, allocate and assign variables, pass the prover and the variables to the generic statement function, then consume the prover to obtain a proof. 
To verify a proof, construct a
Verifier
, allocate and assign variables, pass the verifier and the variables to the generic statement function, then consume the verifier to obtain a verification result.
Note that the expansion of the define_proof
macro contains a
public internal
module with the generated proof statement
function, making it possible to combine generated and handcrafted
proof statements into the same constraint system.
Modules
batch_verifier  Implements batch verification of batchable proofs. 
prover  Implements proof creation. 
verifier  Implements proof verification of compact and batchable proofs. 
Traits
SchnorrCS  An interface for specifying proof statements, common between provers and verifiers. 
TranscriptProtocol  This trait defines the wire format for how the constraint system interacts with the proof transcript. 