Consensys / gnark

gnark is a fast zk-SNARK library that offers a high-level API to design circuits. The library is open source and developed under the Apache 2.0 license
https://hackmd.io/@gnark
Apache License 2.0
1.41k stars 361 forks source link

error with dependencies #813

Open mperafan opened 1 year ago

mperafan commented 1 year ago

hello! im starting in the world of gnark and zk-snarks proofs, and i copy a code to start and learn, but i get an error, and im already download all the dependencies, or i think so. this is the error im getting:

github.com/consensys/gnark/internal/backend/bls12-381/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bls24-315/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bls12-377/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bn254/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bls24-317/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bw6-633/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bw6-761/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse machibusa@machibusapc:~/merkle_tree_example$ go run main.go

github.com/consensys/gnark/internal/backend/bls24-315/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-315/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bls12-381/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bw6-633/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-633/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bw6-761/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bw6-761/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bls24-317/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls24-317/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bls12-377/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-377/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

github.com/consensys/gnark/internal/backend/bn254/groth16

../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/setup.go:55:25: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/setup.go:78:26: undefined: pedersen.Key ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/setup.go:258:27: assignment mismatch: 2 variables but pedersen.Setup returns 3 values ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT ../go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bn254/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse

and this is the code:

package main

import ( "fmt"

"github.com/consensys/gnark-crypto/ecc"
"github.com/consensys/gnark/backend/groth16"
"github.com/consensys/gnark/frontend"
"github.com/consensys/gnark/frontend/cs/r1cs"

)

// CubicCircuit defines a simple circuit // x**3 + x + 5 == y type CubicCircuit struct { // struct tags on a variable is optional // default uses variable name and secret visibility. X frontend.Variable gnark:"x" Y frontend.Variable gnark:",public" }

// Define declares the circuit constraints // x*3 + x + 5 == y func (circuit CubicCircuit) Define(api frontend.API) error { x3 := api.Mul(circuit.X, circuit.X, circuit.X) api.AssertIsEqual(circuit.Y, api.Add(x3, circuit.X, 5)) return nil }

func main() { // compiles our circuit into a R1CS var circuit CubicCircuit ccs, _ := frontend.Compile(ecc.BN254.ScalarField(), r1cs.NewBuilder, &circuit)

// groth16 zkSNARK: Setup
pk, vk, _ := groth16.Setup(ccs)

// witness definition
assignment := CubicCircuit{X: 3, Y: 35}
witness, _ := frontend.NewWitness(&assignment, ecc.BN254.ScalarField())
publicWitness, _ := witness.Public()

// groth16: Prove & Verify
proof, _ := groth16.Prove(ccs, pk, witness)
groth16.Verify(proof, vk, publicWitness)

// Verify the proof
verificationKey := provingKey.VerificationKey()
err = scheme.Verify(proof, verificationKey, witness)
if err != nil {
    panic(err)
}

fmt.Println("Zero knowledge proof generated and verified successfully!")

}

gbotrel commented 1 year ago

Hi, seems your go.mod is pointing to an incorrect gnark-crypto version. Can you run go mod tidy and possibly update the gnark-crypto dependency to the most recent one?

noushkia commented 1 year ago

Hi, seems your go.mod is pointing to an incorrect gnark-crypto version. Can you run go mod tidy and possibly update the gnark-crypto dependency to the most recent one?

Hi, I tried running gnark v0.8.1 with gnark-crypto v0.11.2 and I had the same error. I ran it with gnark-crypto v0.10.1 and now it has a problem with fft.Option: github.com/consensys/gnark/internal/backend/bls12-381/groth16 /home/kianoush/go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:337:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT /home/kianoush/go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:338:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT /home/kianoush/go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:339:25: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFT /home/kianoush/go/pkg/mod/github.com/consensys/gnark@v0.8.1/internal/backend/bls12-381/groth16/prove.go:357:32: cannot use true (untyped bool constant) as fft.Option value in argument to domain.FFTInverse This error is for almost every curve.