This is a Groth16 SNARK prover and verifier written in Haskell, implemented using the "zikkurat" ZK proof library suite. Groth16 is a SNARK protocol named after a 2016 paper by Jens Groth.
This implementation is compatible with the circom
+
snarkjs
ecosystem.
- make a CLI interface
- add example
- JSON export/import of proofs and public IO
- optimizing "building ABC"
- multithreading support
- load
.r1cs
files - generate fake circuit-specific setup ourselves
- compare
.r1cs
circuit to the "coeffs" section of.zkey
- add Groth16 PDF notes
copyright: (c) 2024 Faulhorn Labs
author: Balazs Komuves
license: MIT or Apache-2.0 (at your choice)
See also nim-groth16
for
a Nim language implementation.