gnark-plonky2-verifier/plonk/plonk_test.go
plonk/plonk_test.goRaw
1package plonk_test
2
3import (
4 "testing"
5
6 "github.com/consensys/gnark-crypto/ecc"
7 "github.com/consensys/gnark/frontend"
8 "github.com/consensys/gnark/test"
9 "github.com/succinctlabs/gnark-plonky2-verifier/plonk"
10 "github.com/succinctlabs/gnark-plonky2-verifier/verifier"
11)
12
13type TestPlonkCircuit struct {
14 proofWithPIsFilename string `gnark:"-"`
15 commonCircuitDataFilename string `gnark:"-"`
16 verifierOnlyCircuitDataFilename string `gnark:"-"`
17}
18
19func (circuit *TestPlonkCircuit) Define(api frontend.API) error {
20 proofWithPis := verifier.DeserializeProofWithPublicInputs(circuit.proofWithPIsFilename)
21 commonCircuitData := verifier.DeserializeCommonCircuitData(circuit.commonCircuitDataFilename)
22 verifierOnlyCircuitData := verifier.DeserializeVerifierOnlyCircuitData(circuit.verifierOnlyCircuitDataFilename)
23
24 verifierChip := verifier.NewVerifierChip(api, commonCircuitData)
25 publicInputsHash := verifierChip.GetPublicInputsHash(proofWithPis.PublicInputs)
26 proofChallenges := verifierChip.GetChallenges(proofWithPis.Proof, publicInputsHash, commonCircuitData, verifierOnlyCircuitData)
27
28 plonkChip := plonk.NewPlonkChip(
29 api,
30 commonCircuitData,
31 )
32
33 plonkChip.Verify(proofChallenges, proofWithPis.Proof.Openings, publicInputsHash)
34 return nil
35}
36
37func TestPlonkDecodeBlock(t *testing.T) {
38 assert := test.NewAssert(t)
39
40 testCase := func() {
41 circuit := TestPlonkCircuit{
42 proofWithPIsFilename: "../../data/decode_block/proof_with_public_inputs.json",
43 commonCircuitDataFilename: "../../data/decode_block/common_circuit_data.json",
44 verifierOnlyCircuitDataFilename: "../../data/decode_block/verifier_only_circuit_data.json",
45 }
46 witness := TestPlonkCircuit{}
47 err := test.IsSolved(&circuit, &witness, ecc.BN254.ScalarField())
48 assert.NoError(err)
49 }
50
51 testCase()
52}