You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Uma Roy 4841d382d7 Modified another name 2 years ago
challenger checkpoint 2 years ago
fri rename another file 2 years ago
goldilocks Moved to variables 2 years ago
plonk rename another file 2 years ago
poseidon Modified another name 2 years ago
testdata All tests pass 2 years ago
types rename another file 2 years ago
variables All tests pass 2 years ago
verifier rename another file 2 years ago
.gitignore All tests pass 2 years ago
LICENSE update readme and MIT 2 years ago
README.md All tests pass 2 years ago
benchmark.go rename another file 2 years ago
go.mod Upgraded dependencies 2 years ago
go.sum Upgraded dependencies 2 years ago

README.md

Gnark Plonky2 Verifier

This is an implementation of a Plonky2 verifier in Gnark (supports Groth16 and PLONK).

Besides the verifier, there are some Gnark implementation of circuits in this repo that may be useful for other projects:

Requirements

Benchmark

To run the benchmark,

go run benchmark.go

Here are relevant numbers from a benchmark ran on an M1 Max with 10 CPU cores.

11:04:08 INF compiling circuit
11:04:08 INF parsed circuit inputs nbPublic=0 nbSecret=0
11:12:30 INF building constraint system nbConstraints=6740784
Generating witness 2023-03-28 11:12:42.702566 -0700 PDT m=+514.333410376
Running circuit setup 2023-03-28 11:12:42.702666 -0700 PDT m=+514.333509834
Creating proof 2023-03-28 11:18:58.881518 -0700 PDT m=+890.519971543
11:18:59 DBG constraint system solver done backend=groth16 nbConstraints=6740784 took=675.361625
11:19:10 DBG prover done backend=groth16 curve=bn254 nbConstraints=6740784 took=10512.664584
Verifying proof 2023-03-28 11:19:10.169636 -0700 PDT m=+901.808314709
11:19:10 DBG verifier done backend=groth16 curve=bn254 took=6.288792
bn254 2023-03-28 11:19:10.175992 -0700 PDT m=+901.814670834

The circuit can be significantly optimized by using more efficient arithmetic for Goldilocks, among other things.