General Grant Proposal
Project Overview 📄
Overview
replicate circom-MP-SPDZ to support tfhe-rs
Project Details
Team members
Team members
Team's experience
- Worked on the grant to support tfhe for the greco
- 2nd place on Ethcon Korea 2023: torch2circom, Built upon keras2circom and circomlib. Implemented some mathematical libraries about matrix operations.
- Finished 2023 ZK Summer Contribution Program
- The team has developed a practical product called ZK-Snap, an innovative private voting protocol tailored for decentralized communities and organizations, constructed using the halo2-axiom framework.
- Participated in Zk-Block1 of the yAcademy, where audited codebase built using circom.
- Constructed a rlwe pk-enc circuit for Greco .
- The team is skilled in constructing circuits using halo2-axiom, halo2-scroll, plonky2, and cirom.
Development Roadmap 🔩
Overview
- Total Estimated Duration: 8 weeks
- Total Estimated Working Hours: 150 hr
- Full-time** equivalent (FTE): 0.5
- Expected Start Date: Aug 20th 2024
- Expected End Date: Oct 15th 2024
Milestone 1 : Understanding tfhe-rs and Documentation
- Total Estimated Duration: 3 weeks
- FTE: 0.375
- Estimated delivery date: Sep 10 th 2024
Deliverables and Specifications
1a. Documentation
- A comprehensive tutorial explaining tfhe-rs's domains, supported operations and data types (and how they are compatible with circom's operations, paying special attention to binary, arithmetic in prime field and ring $2^k$), security parameters, and number of parties supported.
- Best practices and caveats.
- Step-by-step guide on executing example scenarios (covering as much of the discovered knowledge above as
possible for demonstration purposes) with tfhe-rs.
- Understand circom-MP-SPDZ
Milestone 2 : Adaptation of circom-MP-SPDZ to circom-tfhe-rs
- Total Estimated Duration: 5 weeks
- FTE: 0.525
- Estimated delivery date: Oct 15th 2024
Deliverables and Specifications
2a. Functionality: Generate Circuits for tfhe-rs from Bristol Circuit
Modify circom-MP-SPDZ code to generate tfhe-rs circuit output from circom-2-arithc.
2b. Functionality: Generate Inputs for tfhe-rs from circom-MP-SPDZ Inputs
Modify circom-MP-SPDZ code to generate inputs for tfhe-rs from the inputs defined in circom-MP-SPDZ.
2c. Functionality: Run the Generated tfhe-rs Circuits and Inputs
Modify circom-MP-SPDZ code to run tfhe-rs and get parsed outputs.
Application
Component 2c runs tfhe-rs with the circuits generated by component 2a with the inputs generated from component 2b.
2d. Testing Guide
- Proper unit test coverage (above 90%) for circuit generation, input generation, and circuit execution.
- Integration tests for example circuits like op_tests, naive_search, two_outputs, and nn_circuit_small ( expected some tricky issues here due to incompatibility between circom front end and tfhe-rs backend, and also some configurations are needed, look into the original circom-MP-SPDZ for reference).
2e. Documentation
- Inline documentation of the code.
- Comprehensive documentation covering the entire workflow, from code modification to testing and execution.
General Grant Proposal
Project Overview 📄
Overview
replicate circom-MP-SPDZ to support tfhe-rs
Project Details
Team members
Team members
Team's experience
Development Roadmap 🔩
Overview
Milestone 1 : Understanding tfhe-rs and Documentation
Deliverables and Specifications
1a. Documentation
possible for demonstration purposes) with tfhe-rs.
Milestone 2 : Adaptation of circom-MP-SPDZ to circom-tfhe-rs
Deliverables and Specifications
2a. Functionality: Generate Circuits for tfhe-rs from Bristol Circuit
Modify circom-MP-SPDZ code to generate tfhe-rs circuit output from circom-2-arithc.
2b. Functionality: Generate Inputs for tfhe-rs from circom-MP-SPDZ Inputs
Modify circom-MP-SPDZ code to generate inputs for tfhe-rs from the inputs defined in circom-MP-SPDZ.
2c. Functionality: Run the Generated tfhe-rs Circuits and Inputs
Modify circom-MP-SPDZ code to run tfhe-rs and get parsed outputs.
Application
Component 2c runs tfhe-rs with the circuits generated by component 2a with the inputs generated from component 2b.
2d. Testing Guide
2e. Documentation