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.
This project began as a fork of the winterfell crate and has been modified as follows:
fri
: Added a batch prover for FRImpcith/
: Contains the MPC-in-the-Head proof for the proof of training along with various consistency checksconsistency/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 andexamples/train128.rs
contains the same over the 128 bit field defined inf128
.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.
This library is released under the MIT License.