pluto / ronkathon

Cryptography Educational Foundations
https://pluto.xyz/blog/ronkathon-learn-cryptography-from-first-principles
Apache License 2.0
191 stars 23 forks source link

Bounty: ZK Hack Sumcheck Track #137

Closed 0xJepsen closed 3 months ago

0xJepsen commented 3 months ago

Sumcheck

Sumcheck is an interactive proof protocol whose purpose is for a prover to provide a verifier with a specially constructed sum over a multi-variate polynomial. In particular, sumcheck uses sum evaluations over a boolean hypercube for all boolean inputs. In a traditional setting this operation can be performed by simply sharing the entire multi-variant polynomial with the verifier for evaluation. However this is computational expensive, using sumcheck, the verifier can perform this evaluation more efficiently.

  1. Multi-variate Polynomial
  2. Sumcheck Protocol

The goal of this implementation is to extend the foundational polynomial libraries in Ronkathon to include a multivariate implementation and further implement the sumcheck operation over that multivariate implementation.

Requirements

Implementations of Sumcheck and Multivariate Polynomial using ronkathon's existing Univariate Polynomial as a starting point.

Resources

Criteria

The winner will be selected based on the following criteria, in this order:

  1. Correctness and security: Thorough convincing that the implementation are completely correct and secure. All requirements must be met. It is reasonable to implement over a small (insecure) field for educational properties.
  2. Code clarity and quality: Succinct, easy-to-follow code with appropriate naming conventions. Utilize Rust's type system for flexibility and security (e.g., compile-time checks where possible). Avoid external crates. Optimizations should be a lower priority than clarity, but can be included behind a feature flag as a bonus.
  3. Documentation quality: Provide comprehensive READMEs, Cargo docs, and inline comments where code itself is not self-explanatory. Remember that ronkathon is primarily an educational toolbox, so prioritize clarity and readability to facilitate learning.
  4. Comparison and vulnerability analysis: As a bonus, include a brief comparison of Sumcheck and contrast it with PLONK PIOP and STARK PIOP, highlighting their strengths, weaknesses, and appropriate use cases. This will enhance the educational value of the implementation.

Remember, ronkathon prioritizes learning and growth. Your contribution should maintain this focus throughout the implementation and documentation process.