From 700f2a450323e4bad5a480e8484bbd8cafa634a0 Mon Sep 17 00:00:00 2001 From: arnaucube Date: Wed, 29 Apr 2020 10:27:31 +0200 Subject: [PATCH] Fix prover benchmark file paths, update readme, and other small updates --- README.md | 6 +++--- cli/cli.go | 7 ++++--- prover/prover_test.go | 4 ++-- verifier/verifier.go | 1 + 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f370912..5d926f0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # go-circom-prover-verifier [![GoDoc](https://godoc.org/github.com/iden3/go-circom-prover-verifier?status.svg)](https://godoc.org/github.com/iden3/go-circom-prover-verifier) [![Go Report Card](https://goreportcard.com/badge/github.com/iden3/go-circom-prover-verifier)](https://goreportcard.com/report/github.com/iden3/go-circom-prover-verifier) [![Test](https://github.com/iden3/go-circom-prover-verifier/workflows/Test/badge.svg)](https://github.com/iden3/go-circom-prover-verifier/actions?query=workflow%3ATest) -Experimental Go implementation of the [Groth16 protocol](https://eprint.iacr.org/2016/260.pdf) zkSNARK prover & verifier compatible with [circom](https://github.com/iden3/circom). +Go implementation of the [Groth16 protocol](https://eprint.iacr.org/2016/260.pdf) zkSNARK prover & verifier compatible with [circom](https://github.com/iden3/circom). Using [bn256](https://github.com/ethereum/go-ethereum/tree/master/crypto/bn256/cloudflare) (used by [go-ethereum](https://github.com/ethereum/go-ethereum)) for the Pairing curve operations. @@ -82,9 +82,9 @@ Usage of /tmp/go-build620318239/b001/exe/cli: - Prove ``` -> go run cli.go -prove -provingkey=../testdata/small/proving_key.json -witness=../testdata/small/witness.json +> go run cli.go -prove -provingkey=../testdata/circuit5k/proving_key.json -witness=../testdata/circuit5k/witness.json ``` - Verify ``` -> go run cli.go -verify -verificationkey=../testdata/small/verification_key.json +> go run cli.go -verify -verificationkey=../testdata/circuit5k/verification_key.json ``` diff --git a/cli/cli.go b/cli/cli.go index 2dd0258..c4723e6 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -5,6 +5,7 @@ import ( "flag" "fmt" "io/ioutil" + "os" "time" "github.com/iden3/go-circom-prover-verifier/parsers" @@ -34,15 +35,15 @@ func main() { if err != nil { fmt.Println("Error:", err) } - return + os.Exit(0) } else if *verify { err := cmdVerify(*proofPath, *verificationKeyPath, *publicPath) if err != nil { fmt.Println("Error:", err) } - return + os.Exit(0) } - fmt.Println("use -help for the list of commands") + flag.PrintDefaults() } func cmdProve(provingKeyPath, witnessPath, proofPath, publicPath string) error { diff --git a/prover/prover_test.go b/prover/prover_test.go index 386950f..3812b07 100644 --- a/prover/prover_test.go +++ b/prover/prover_test.go @@ -61,12 +61,12 @@ func testCircuitGenerateProof(t *testing.T, circuit string) { func BenchmarkGenerateProof(b *testing.B) { // benchmark with a circuit of 10000 constraints - provingKeyJson, err := ioutil.ReadFile("../testdata/circuit1/proving_key.json") + provingKeyJson, err := ioutil.ReadFile("../testdata/circuit5k/proving_key.json") require.Nil(b, err) pk, err := parsers.ParsePk(provingKeyJson) require.Nil(b, err) - witnessJson, err := ioutil.ReadFile("../testdata/circuit1/witness.json") + witnessJson, err := ioutil.ReadFile("../testdata/circuit5k/witness.json") require.Nil(b, err) w, err := parsers.ParseWitness(witnessJson) require.Nil(b, err) diff --git a/verifier/verifier.go b/verifier/verifier.go index 64c6da6..b2e5b52 100644 --- a/verifier/verifier.go +++ b/verifier/verifier.go @@ -17,6 +17,7 @@ type Vk struct { IC []*bn256.G1 } +// Verify verifies the Groth16 zkSNARK proof func Verify(vk *types.Vk, proof *types.Proof, inputs []*big.Int) bool { if len(inputs)+1 != len(vk.IC) { fmt.Println("len(inputs)+1 != len(vk.IC)")