Browse Source

Fix prover benchmark file paths, update readme, and other small updates

feature/tables2
arnaucube 4 years ago
parent
commit
700f2a4503
4 changed files with 10 additions and 8 deletions
  1. +3
    -3
      README.md
  2. +4
    -3
      cli/cli.go
  3. +2
    -2
      prover/prover_test.go
  4. +1
    -0
      verifier/verifier.go

+ 3
- 3
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) # 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. 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 - 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 - Verify
``` ```
> go run cli.go -verify -verificationkey=../testdata/small/verification_key.json
> go run cli.go -verify -verificationkey=../testdata/circuit5k/verification_key.json
``` ```

+ 4
- 3
cli/cli.go

@ -5,6 +5,7 @@ import (
"flag" "flag"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"os"
"time" "time"
"github.com/iden3/go-circom-prover-verifier/parsers" "github.com/iden3/go-circom-prover-verifier/parsers"
@ -34,15 +35,15 @@ func main() {
if err != nil { if err != nil {
fmt.Println("Error:", err) fmt.Println("Error:", err)
} }
return
os.Exit(0)
} else if *verify { } else if *verify {
err := cmdVerify(*proofPath, *verificationKeyPath, *publicPath) err := cmdVerify(*proofPath, *verificationKeyPath, *publicPath)
if err != nil { if err != nil {
fmt.Println("Error:", err) 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 { func cmdProve(provingKeyPath, witnessPath, proofPath, publicPath string) error {

+ 2
- 2
prover/prover_test.go

@ -61,12 +61,12 @@ func testCircuitGenerateProof(t *testing.T, circuit string) {
func BenchmarkGenerateProof(b *testing.B) { func BenchmarkGenerateProof(b *testing.B) {
// benchmark with a circuit of 10000 constraints // 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) require.Nil(b, err)
pk, err := parsers.ParsePk(provingKeyJson) pk, err := parsers.ParsePk(provingKeyJson)
require.Nil(b, err) require.Nil(b, err)
witnessJson, err := ioutil.ReadFile("../testdata/circuit1/witness.json")
witnessJson, err := ioutil.ReadFile("../testdata/circuit5k/witness.json")
require.Nil(b, err) require.Nil(b, err)
w, err := parsers.ParseWitness(witnessJson) w, err := parsers.ParseWitness(witnessJson)
require.Nil(b, err) require.Nil(b, err)

+ 1
- 0
verifier/verifier.go

@ -17,6 +17,7 @@ type Vk struct {
IC []*bn256.G1 IC []*bn256.G1
} }
// Verify verifies the Groth16 zkSNARK proof
func Verify(vk *types.Vk, proof *types.Proof, inputs []*big.Int) bool { func Verify(vk *types.Vk, proof *types.Proof, inputs []*big.Int) bool {
if len(inputs)+1 != len(vk.IC) { if len(inputs)+1 != len(vk.IC) {
fmt.Println("len(inputs)+1 != len(vk.IC)") fmt.Println("len(inputs)+1 != len(vk.IC)")

Loading…
Cancel
Save