mirror of
https://github.com/logos-storage/nim-groth16.git
synced 2026-01-02 13:43:09 +00:00
Groth16 prover written in Nim
This is Groth16 prover implementation in Nim, using the
constantine
library as an arithmetic / curve backend.
The implementation is compatible with the circom + snarkjs ecosystem.
At the moment only the BN254 (aka. alt-bn128) curve is supported.
License
Licensed and distributed under either of the MIT license or Apache License, v2.0, at your choice.
TODO
- clean up the code
- make it a nimble package
- [/] refactor
bn128.niminto smaller files - [/] proper MSM implementation (at first I couldn't make constantine's one to work)
- compare
.r1csto the "coeffs" section of.zkey - generate fake circuit-specific setup ourselves
- multithreading support (MSM, and possibly also FFT)
- add Groth16 notes
- document the
snarkjscircuit-specific setupHpoints convention - make it work for different curves
Description
Languages
Nim
97.9%
Shell
1.5%
Circom
0.6%