This project implements the Sumcheck Protocol, a fundamental zero-knowledge proof protocol used in various cryptographic applications. The implementation is written in Rust and uses the Arkworks library for finite field operations.
The Sumcheck Protocol allows a prover to convince a verifier that the sum of a multivariate polynomial over a hypercube is equal to a claimed value, without revealing the actual polynomial evaluation. This implementation includes:
- Multivariate and univariate polynomial representations
- Prover implementation for generating proof messages
- Verifier implementation for checking proof validity
- Rust (latest stable version)
- Cargo (Rust's package manager)
- Clone the repository:
git clone <repository-url>
cd sumcheck-protocol
- Build the project:
cargo build
The library provides three main components:
MultiVariatePolynomial
: For representing and manipulating multivariate polynomialsProver
: For generating proof messages in the sumcheck protocolVerifier
: For verifying the proof messages
Example usage:
use sumcheck::{MultiVariatePolynomial, Prover, Verifier};
// Create a multivariate polynomial
let poly = MultiVariatePolynomial::new(...);
// Initialize prover and verifier
let prover = Prover::new(&poly);
let verifier = Verifier::new(&poly);
// Run the sumcheck protocol
let proof = prover.prove();
let is_valid = verifier.verify(&proof);
src/polynomial.rs
: Implementation of polynomial representationssrc/prover.rs
: Implementation of the prover's role in the protocolsrc/verifier.rs
: Implementation of the verifier's role in the protocolsrc/lib.rs
: Main library interface
ark-ff
: For finite field operations
[Add your license information here]
[Add contribution guidelines here]