Skip to content

A Rust library for the Groth-Sahai non-interactive witness-indistinguishable and zero-knowledge proof system

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE-APACHE
Unknown
LICENSE-MIT
Notifications You must be signed in to change notification settings

jdwhite48/groth-sahai-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Groth-Sahai

A Rust library for constructing non-interactive witness-indistinguishable and zero-knowledge proofs about the satisfiability of equations over bilinear groups [1] [2]. This project was inspired by the Java implementation of the Groth-Sahai protocol, written by Gijs Van Laer.

This library is distributed under the MIT License and the Apache v2 License (see License).

Dependencies

  • Arkworks - A Rust ecosystem for developing and programming with zkSNARKs as well as finite field and elliptic curve arithmetic.
  • Rayon - A data parallelism library for Rust.

⚠ Disclaimer ⚠

  • This library, as well as the Arkworks ecosystem itself, is a (currently incomplete) academic proof-of-concept only, and has NOT been thoroughly reviewed for production use. Do NOT use this implementation in production code.

  • Your choice of bilinear group (G1, G2, GT, e) MUST be secure under the SXDH assumption, must be equipped with a Type-III pairing, and must be implemented in Arkworks. For example, Bls12_381 is amenable to this implementation.

Getting Started

Installation

First, install the latest version of Rust using rustup:

rustup install stable

After that, use cargo, the standard Rust build tool, to build the library:

git clone https://github.com/jdwhite88/groth-sahai-rs.git
cd groth-sahai-rs
cargo build

Test

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

Documentation

While this library is not yet published, a first draft of the documentation can be viewed by running the following command (this will open a local copy in your default web browser):

cargo doc --open

The API is subject to change, and is still very much a work in progress.

Contributing

If you notice a bug, would like to ask a question, or want to propose a new feature, 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):

  1. Fork the project
  2. Create your feature branch (git checkout -b feature-branch main)
  3. Commit your changes (git commit -m 'Resolves #i; commit message')
  4. Push to the branch (git push origin feature-branch)
  5. Open a pull request to merge with this repo (preferably linked to an issue)

References

[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.

License

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.

Authors

About

A Rust library for the Groth-Sahai non-interactive witness-indistinguishable and zero-knowledge proof system

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE-APACHE
Unknown
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages