This is an exercise to learn how Groth16 works. Consider it a toy implementation. DO NOT USE IT FOR ANYTHING SERIOUS.
The curve used in this implementation is BLS12-381. It's also using my toy implementation of asymmetric pairings on BLS12-381.
- J. Groth, On the Size of Pairing-based Non-interactive Arguments
- V. Buterin, Quadratic Arithmetic Programs: from Zero to Hero
- N. Gailly, playsnark