A Rust implementation of various zero-knowledge proof protocols and cryptographic primitives.
This library provides implementations of several key cryptographic components for zero-knowledge proofs:
- GKR Protocol (Goldwasser-Kalai-Rothblum)
- KZG Polynomial Commitment Scheme
- Fiat-Shamir Transform
- Shamir Secret Sharing
- Multilinear and Univariate Polynomial Operations
- Fast Fourier Transform (FFT)
- Merkle Tree
- Sum-Check Protocol
The GKR protocol implementation consists of:
-
Circuit Representation (
gkr_circuit.rs
):- Defines arithmetic circuits with add and multiply gates
- Supports layer-wise circuit evaluation
- Represents computation as multilinear polynomials
-
Protocol Implementation (
gkr_protocol.rs
):- Provides proof generation and verification
- Implements the sum-check protocol for GKR
- Handles polynomial operations for efficient verification
- KZG Commitment (
kzg.rs
):- Kate-Zaverucha-Goldberg polynomial commitment scheme
- Supports trusted setup generation
- Implements commitment, opening and verification
- Uses BLS12-381 pairing-friendly curve
- Transcript Generation (
fiat_shamir_transcript.rs
):- Implements non-interactive proof generation
- Provides secure random challenge derivation
- Uses Keccak256 for hashing
- Secret Sharing (
shamir_secret_sharing.rs
):- Implements threshold-based secret sharing
- Supports secret recovery from shares
- Uses polynomial interpolation techniques
-
Multilinear Polynomials (
multilinear_polynomial_evaluation.rs
):- Implements multilinear polynomial representation and operations
- Supports efficient evaluation and partial evaluation
- Provides basic arithmetic operations (add, multiply, subtract)
-
Composite Polynomials (
composed_polynomial.rs
):- Implements product and sum polynomial structures
- Supports operations on complex polynomial compositions
-
Univariate Polynomials (
univariate_polynomial_dense.rs
):- Dense representation of univariate polynomials
- Implements polynomial interpolation
- Provides evaluation and arithmetic operations
- FFT Implementation (
fft.rs
):- Implements Discrete Fourier Transform (DFT)
- Provides polynomial evaluation via FFT
- Supports polynomial interpolation via inverse FFT
- Optimized for finite field operations
- Merkle Tree (
merkle_tree.rs
):- Implements a binary Merkle tree structure
- Supports proof generation and verification
- Provides leaf updates and path recomputation
- Uses field elements as leaf values
- Sum-Check Protocol (
sum_check_protocol.rs
):- Implements the sum-check protocol for multilinear polynomials
- Provides proof generation and verification
- Includes specialized GKR protocol integration
- Supports composed polynomial structures
- Fibonacci Evaluation (
fibonacci_evaluation.rs
):- Demonstrates polynomial interpolation with Fibonacci sequence
- Shows practical application of univariate polynomials
- Provides verification of Fibonacci properties
The GKR circuit implementation allows for creating and evaluating arithmetic circuits with:
- Support for addition and multiplication gates
- Layer-based circuit structure
- Automatic conversion to multilinear polynomial representation
The KZG scheme enables:
- Creating commitments to polynomials
- Opening commitments at specific points
- Verifying openings using bilinear pairings
- Batched operations for efficiency
The transcript system:
- Ensures non-interactive zero-knowledge proofs
- Provides deterministic challenge generation
- Maintains transcript state throughout proof generation
The multilinear polynomial implementation provides:
- Evaluation on binary cube vertices
- Efficient partial evaluation algorithms
- Operations compatible with the GKR protocol
The FFT implementation provides:
- Efficient polynomial evaluation in O(n log n) time
- Polynomial interpolation via inverse FFT
- Optimized for finite field operations
- Support for various field types
The Merkle tree implementation offers:
- Efficient membership proofs
- Logarithmic verification complexity
- Support for dynamic updates
- Integration with field elements
The sum-check protocol implementation provides:
- Interactive proof system for sum verification
- Non-interactive variant via Fiat-Shamir
- Integration with GKR protocol
- Support for composed polynomial structures
ark-ff
: Finite field operationsark-ec
: Elliptic curve operationsark-bls12-381
: BLS12-381 curve implementationark-bn254
: BN254 curve implementationark-poly
: Polynomial operationssha3
: Keccak256 hashingrand
: Random number generation
All components are made to be easy to understand and use. The library provides a comprehensive set of tools for implementing zero-knowledge proofs and cryptographic primitives.
Each component includes comprehensive unit tests demonstrating functionality and correctness. Run tests using:
cargo test
[License information would go here]