mirror of
https://github.com/logos-storage/proof-aggregation.git
synced 2026-01-02 13:53:13 +00:00
GNARK-Plonky2 Verifier CLI
This repository provides a Go-based CLI for compiling, proving, and verifying Plonky2-wrapped circuits using GNARK (either Plonk or Groth16). It automates:
- Compilation of the plonky2 verifier circuit (R1CS, PK, VK).
- Proof generation for compiled circuits.
- Proof verification.
Prerequisites
- Go 1.22+ installed.
Installation
Clone this repository:
git clone https://github.com/codex-storage/proof-aggregation.git
cd proof-aggregation/gnark-wrapper
go mod tidy
chmod +x compile.sh prove.sh verify.sh test.sh
Building the Verifier Binary
go build -o verifier .
CLI Usage
The verifier binary has three modes:
-compile: Compiles circuit (outputs R1CS, PK, VK, Solidity contract).
-prove: Generates a proof for the compiled circuit.
-verify: Verifies an existing proof.
Flags:
| Flag | Description | Default |
|---|---|---|
-circuit |
Directory containing Plonky2 JSON files | ./testdata/dummy |
-data |
Output directory | ./gnark_output |
-proof-system |
"plonk" or "groth16" |
"groth16" |
-dummy |
Dummy setup (Groth16 only) | "false" |
-contract |
Generate Solidity verifier | "true" |
Workflow
- Prepare your Plonky2 JSON folder
This folder
testdata/dummymust contain:
verifier_only_circuit_data.jsonproof_with_public_inputs.jsoncommon_circuit_data.json
- Create or edit your
params.shDefine your defaults (circuit folder, output dir, proof system, dummy mode) inparams.sh
export CIRCUIT_DIR="$PWD/testdata/dummy" # path to Plonky2 JSON files
export DATA_DIR="$PWD/gnark_output" # where to save gnark outputs
export PROOF_SYSTEM="groth16" # "plonk" or "groth16"
export DUMMY="false" # dummy or real setup
- Run the full end-to-end using defaults in
params.sh
./run_gnark_cli.sh
If you don’t supply any of --compile, --prove or --verify flags, it will run all three compile → prove → verify in sequence.
- Run individual steps Append any combination of:
--compile--prove--verify
# Compile only
./run_gnark_cli.sh --compile
# Prove and then verify
./run_gnark_cli.sh --prove --verify
- Use a custom params.sh location Pass -P or --params-file before any other flags:
./run_gnark_cli.sh \
-P /path/to/your/params.sh \
--compile --prove