This project allows to prove an execution of TFHE's PBS using plonky2. For details, see the paper.
Most parameters are set in src/main.rs
, the notable exception being the ring dimension N
. The latter is set in src/ntt/mod.rs
by pointing the param
module to the corresponding param_{N}.rs
file. We suggest to use N=8
for testing and N=1024
to run the main
file. NTT parameter files are available for other values of N
, and the folder also contains Sage code to generate more. However, choosing another value of N
might require to set a technical circuit parameter as outlined in this comment.
To run the tests, simply use
cargo test --release
As mentioned above, we recommend using N=8
for this. Large values of N
will result in a stack overflow error. Note that there is one test, namly vtfhe::tests::test_blind_rot
, which is flaky because the parameters are not large enough to always account for the rounding error introduced by the mod switch.
To reproduce the results from the paper, simply run
cargo run --release
with N=1024
.
This implementation is purely for academic purposes and not meant for production.
This software is distributed under the BSD-3-Clause-Clear license. If you have any questions, please contact us at hello@zama.ai.