arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
benchmark works now
Uma Roy uma.roy.us@gmail.com
Wed, 11 Oct 2023 15:20:42 -0700
commit

ca5d0904d151d7704687908f29e79281658a195f

parent

3aef7954ed2bbe2edf245bb5988fa308a906e4c9

3 files changed, 27 insertions(+), 19 deletions(-)

jump to
M benchmark.go → benchmark.go

@@ -67,26 +67,27 @@ println("r1cs.GetNbPublicVariables(): ", r1cs.GetNbPublicVariables())

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 {

@@ -166,11 +167,18 @@ proofBytes := buf.Bytes()

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")
M fri/fri.go → fri/fri.go

@@ -15,11 +15,11 @@ "github.com/succinctlabs/gnark-plonky2-verifier/variables"

) 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(
M verifier/util.go → verifier/util.go

@@ -8,9 +8,9 @@ "github.com/succinctlabs/gnark-plonky2-verifier/variables"

) 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