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