A Rust library containing wrappers that facilitate the construction of non-interactive witness-indistinguishable and zero-knowledge proofs about various equations over bilinear groups [1]. See the corresponding Groth-Sahai library for more details about how Groth-Sahai has been implemented.
This library is distributed under the MIT License and the Apache v2 License (see License).
First, install the latest version of Rust using rustup
:
rustup install stable
After that, use Rust's cargo
to compile the library:
git clone https://github.com/jdwhite88/groth-sahai-wrappers.git
cd groth-sahai-wrappers
cargo build
To run the unit tests (in each source file) and integration tests (in tests
):
cargo test
To run the benchmark tests (in benches
):
cargo bench
Proof
and other components of the zk-SNARK's circuit [3].If you notice a bug, would like to ask a question, or want to propose a new wrapper, feel free to open an issue!
If you would like to contribute, but have not been invited as a direct collaborator to the project, follow the procedure below (keeping in mind these instructions if you are attempting to resolve an open issue):
git checkout -b feature-branch main
)git commit -m 'Resolves #i; commit message'
)git push origin feature-branch
)[1] Jens Groth and Amit Sahai. Efficient Non-interactive Proof Systems for Bilinear Groups, Advances in Cryptology -- EUROCRYPT 2008: 27th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Istanbul, Turkey. Springer Berlin Heidelberg, vol 4965: 415–432, 2008.
[2] Essam Ghadafi, Nigel P. Smart, and Bogdan Warinschi. Groth-Sahai proofs revisited. In Phong Q. Nguyen and David Pointcheval, editors, PKC 2010, volume 6056 of LNCS, pages 177–192. Springer, Heidelberg, May 2010.
[3] Jens Groth. On the size of pairing-based non-interactive arguments. In Marc Fischlin and Jean-Sébastien Coron, editors, EUROCRYPT 2016, Part II, volume 9666 of LNCS, pages 305-326. Springer, Heidelberg, May 2016.
This library is distributed under either of the following licenses:
Unless explicitly stated otherwise, any contribution made to this library shall be dual-licensed as above (as defined in the Apache v2 License), without any additional terms or conditions.