diff --git a/benchmark.go b/benchmark.go index 3fbf46f..883756e 100644 --- a/benchmark.go +++ b/benchmark.go @@ -67,27 +67,28 @@ func runBenchmark(plonky2Circuit string, proofSystem string, profileCircuit bool println("r1cs.GetNbInternalVariables(): ", r1cs.GetNbInternalVariables()) } - witness := verifier.ExampleVerifierCircuit{ - Proof: proofWithPis.Proof, - PublicInputs: proofWithPis.PublicInputs, - VerifierOnlyCircuitData: verifierOnlyCircuitData, - CommonCircuitData: commonCircuitData, - } - if proofSystem == "plonk" { - plonkProof(r1cs, witness, dummy, saveArtifacts) + plonkProof(r1cs, plonky2Circuit, dummy, saveArtifacts) } else if proofSystem == "groth16" { - groth16Proof(r1cs, witness, dummy, saveArtifacts) + groth16Proof(r1cs, plonky2Circuit, dummy, saveArtifacts) } else { panic("Please provide a valid proof system to benchmark, we only support plonk and groth16") } } -func plonkProof(r1cs constraint.ConstraintSystem, assignment verifier.ExampleVerifierCircuit, dummy bool, saveArtifacts bool) { +func plonkProof(r1cs constraint.ConstraintSystem, circuitName string, dummy bool, saveArtifacts bool) { var pk plonk.ProvingKey var vk plonk.VerifyingKey var err error + proofWithPis := variables.DeserializeProofWithPublicInputs(types.ReadProofWithPublicInputs("testdata/" + circuitName + "/proof_with_public_inputs.json")) + verifierOnlyCircuitData := variables.DeserializeVerifierOnlyCircuitData(types.ReadVerifierOnlyCircuitData("testdata/" + circuitName + "/verifier_only_circuit_data.json")) + assignment := verifier.ExampleVerifierCircuit{ + Proof: proofWithPis.Proof, + PublicInputs: proofWithPis.PublicInputs, + VerifierOnlyCircuitData: verifierOnlyCircuitData, + } + // Don't serialize the circuit for now, since it takes up too much memory // if saveArtifacts { // fR1CS, _ := os.Create("circuit") @@ -166,11 +167,18 @@ func plonkProof(r1cs constraint.ConstraintSystem, assignment verifier.ExampleVer fmt.Printf("proofBytes: %v\n", proofBytes) } -func groth16Proof(r1cs constraint.ConstraintSystem, assignment verifier.ExampleVerifierCircuit, dummy bool, saveArtifacts bool) { +func groth16Proof(r1cs constraint.ConstraintSystem, circuitName string, dummy bool, saveArtifacts bool) { var pk groth16.ProvingKey var vk groth16.VerifyingKey var err error + proofWithPis := variables.DeserializeProofWithPublicInputs(types.ReadProofWithPublicInputs("testdata/" + circuitName + "/proof_with_public_inputs.json")) + verifierOnlyCircuitData := variables.DeserializeVerifierOnlyCircuitData(types.ReadVerifierOnlyCircuitData("testdata/" + circuitName + "/verifier_only_circuit_data.json")) + assignment := verifier.ExampleVerifierCircuit{ + Proof: proofWithPis.Proof, + PublicInputs: proofWithPis.PublicInputs, + VerifierOnlyCircuitData: verifierOnlyCircuitData, + } // Don't serialize the circuit for now, since it takes up too much memory // if saveArtifacts { // fR1CS, _ := os.Create("circuit") diff --git a/fri/fri.go b/fri/fri.go index cd13cf1..7fe5b43 100644 --- a/fri/fri.go +++ b/fri/fri.go @@ -15,11 +15,11 @@ import ( ) type Chip struct { - api frontend.API `gnark:"-"` - gl gl.Chip `gnark:"-"` - poseidonBN254Chip *poseidon.BN254Chip - commonData *types.CommonCircuitData - friParams *types.FriParams `gnark:"-"` + api frontend.API `gnark:"-"` + gl gl.Chip `gnark:"-"` + poseidonBN254Chip *poseidon.BN254Chip `gnark:"-"` + commonData *types.CommonCircuitData `gnark:"-"` + friParams *types.FriParams `gnark:"-"` } func NewChip( diff --git a/verifier/util.go b/verifier/util.go index 6449189..150ada5 100644 --- a/verifier/util.go +++ b/verifier/util.go @@ -8,9 +8,9 @@ import ( ) type ExampleVerifierCircuit struct { - PublicInputs []gl.Variable `gnark:",public"` - Proof variables.Proof - VerifierOnlyCircuitData variables.VerifierOnlyCircuitData + PublicInputs []gl.Variable `gnark:",public"` + Proof variables.Proof `gnark:"-"` + VerifierOnlyCircuitData variables.VerifierOnlyCircuitData `gnark:"-"` // This is configuration for the circuit, it is a constant not a variable CommonCircuitData types.CommonCircuitData