Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 2.28 KB

README.md

File metadata and controls

31 lines (24 loc) · 2.28 KB

zkpot 🪴: Experimenting with Zero-Knowledge Proofs of Training ePrint:2023/1345

Rust implementation of a the Zero-Knowledge Proof of Training for Logistic Regression models introdued in ePrint:2023/1345

WARNING: This is an academic proof-of-concept prototype, and in particular has not received careful code review. This implementation is NOT ready for production use.

Requires Rust nightly.

Overview

This project began as a fork of the winterfell crate and has been modified as follows:

  • fri: Added a batch prover for FRI
  • mpcith/: Contains the MPC-in-the-Head proof for the proof of training along with various consistency checks
    • consistency/online: Contains the online phase of the MPC-in-the-Head protocol.
      • online/epoch: Contains the information-theoretic online phase of the MPC-in-the-Head protocol for a training a single batch.
      • online/matvec: Contains the cryptographic checks in the online phase.
    • consistency/offline/: Contains a script to estimate the offline proof size of the zkpot protocol.
    • consistency/sample: Samples a dummy training data set.
    • tests: Contains a test for the online phase of the MPC-in-the-Head protocol.
  • naive-training/: Contains an implementation of the training algorithm for logistic regression to estimate cryptographic overhead. main.rs contains a logistic regression implementation over the f64 rust data type and examples/train128.rs contains the same over the 128 bit field defined in f128.
  • poly-args/: Contains implementations of sum check proofs and its variants.
  • secret-sharing/: Contains an implementation of packed secret sharing.

To run, execute individual tests with cargo. To run all use:

cargo test --release

WARNING: This requires a large amount of memory. Reduce the dataset size to reduce memory usage.

License

This library is released under the MIT License.