puma314 89b5a01e4b
feat: Plonk optimizations (#39)
* Fixed poseidion hash TOOD in fri/fri.go

* optimized goldilocks

* Another optimization

* Down to 16 million

* Finished TODOs
2023-10-13 14:00:54 -07:00

32 lines
930 B
Markdown

# Gnark Plonky2 Verifier
This is an implementation of a [Plonky2](https://github.com/mir-protocol/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:
- [Goldilocks](https://github.com/succinctlabs/gnark-plonky2-verifier/blob/main/field/field.go)
- [Poseidon](https://github.com/succinctlabs/gnark-plonky2-verifier/blob/main/poseidon/poseidon.go)
- [FRI](https://github.com/succinctlabs/gnark-plonky2-verifier/blob/main/plonky2_verifier/fri.go)
## Requirements
- [Go (1.20.1+)](https://go.dev/doc/install)
## Benchmark
To run the benchmark,
```
go run benchmark.go
```
## Profiling
First run the benchmark with profiling turned on
```
go run benchmark.go -profile
```
Then use the following command to generate a visualization of the pprof
```
go tool pprof --png gnark.pprof > verifier.png
```