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.
Kevin Jue 2fbbcec029
Merge pull request #2 from succinctlabs/npward-plonky2-gates
2 years ago
field moving QuadraticExtension to field 2 years ago
plonky2_verifier generate proof challenges instead of receiving through JSON 2 years ago
poseidon fixes, cleanup, and deserialize ProofChallenges 2 years ago
utils fixes, cleanup, and deserialize ProofChallenges 2 years ago
.gitignore basic edwards curve code 3 years ago
LICENSE update readme and MIT 2 years ago
README.md Update README.md 2 years ago
benchmark.go Poseidon extension function versions, and finished PoseidonGate 2 years ago
go.mod Cleanup repo for release 2 years ago
go.sum added verifier_test 2 years ago

README.md

gnark-plonky2-verifier

This is an in-progress implementation of a Plonky2 verifier in Gnark (supports Groth16 and PLONK). It currently is able to verify some dummy circuits, but not much more as many of the custom gates used in Plonky2 are currently not implemented.

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.