Groth16 is a zk-snark proving algorithm, first proposed by Jens Groth in 2016.
To install dependencies, run:
pip install galois
pip install numpy
pip install py-ecc
Note: If the dependencies fail to install, try creating a python virtual environment and installing them there. See how to create a venv
To execute prover and trusted setup operations:
cd src/
python3 Groth16.py
To run the verifier steps, make sure you have foundry installed and running:
cd Verifier/src
forge build
forge test
This implementation is modelled to solve a simple graph bipartite problem. A bipartite graph is one that can be coloured with two colours such that no two neighbouring nodes share the same colour.
To prove that we know four nodes that satisfy the problem without revealing them.