Overview of libsnark zkSNARK implementations
masterlibsnark is a C++ library for implementing zkSNARK (Zero-Knowledge Succinct Non-interactive ARgument of Knowledge) schemes. It allows a prover to attest to the truth of an NP statement (like the satisfiability of a circuit or the execution of a program) without revealing the underlying witness.
Key proof systems provided include:
- R1CS (Rank-1 Constraint Systems): A general-purpose preprocessing zkSNARK for NP-complete statements. It includes implementations following [BCTV14a] and the faster, shorter [Groth16] system.
- BACS (Bilinear Arithmetic Circuit Satisfiability): A preprocessing SNARK for arithmetic circuits that reduces to R1CS.
- USCS (Unitary-Square Constraint Systems): An abstraction of the core contribution of [DFGK14].
- TBCS (Two-input Boolean Circuit Satisfiability): A preprocessing SNARK for Boolean circuits that reduces to USCS.
- Simulation-extractable R1CS: A construction using the approach from [GM17].
- ADSNARK: A preprocessing SNARK for proving statements on authenticated data.
- Proof-Carrying Data (PCD): Uses recursive composition of SNARKs.