arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/plonky2_verifier/plonk_test.go
plonky2_verifier/plonk_test.goRaw
 1package plonky2_verifier
 2
 3import (
 4	. "gnark-ed25519/field"
 5	"testing"
 6
 7	"github.com/consensys/gnark/frontend"
 8	"github.com/consensys/gnark/test"
 9)
10
11type TestPlonkCircuit struct{}
12
13func (circuit *TestPlonkCircuit) Define(api frontend.API) error {
14	proofWithPis := DeserializeProofWithPublicInputs("./data/fibonacci/proof_with_public_inputs.json")
15	commonCircuitData := DeserializeCommonCircuitData("./data/fibonacci/common_circuit_data.json")
16
17	field := NewFieldAPI(api)
18	qe := NewQuadraticExtensionAPI(field, commonCircuitData.DegreeBits)
19
20	// Challenge associated with the data from "/.data/fibonacci/*"
21	proofChallenges := ProofChallenges{
22		PlonkBetas: []F{
23			NewFieldElementFromString("4678728155650926271"),
24			NewFieldElementFromString("13611962404289024887"),
25		},
26		PlonkGammas: []F{
27			NewFieldElementFromString("13237663823305715949"),
28			NewFieldElementFromString("15389314098328235145"),
29		},
30		PlonkAlphas: []F{
31			NewFieldElementFromString("14505919539124304197"),
32			NewFieldElementFromString("1695455639263736117"),
33		},
34		PlonkZeta: QuadraticExtension{
35			NewFieldElementFromString("14887793628029982930"),
36			NewFieldElementFromString("1136137158284059037"),
37		},
38	}
39
40	plonkChip := NewPlonkChip(qe, commonCircuitData)
41	plonkChip.proofChallenges = proofChallenges
42	plonkChip.openings = proofWithPis.Proof.Openings
43
44	plonkChip.Verify()
45	return nil
46}
47
48func TestPlonkWitness(t *testing.T) {
49	assert := test.NewAssert(t)
50
51	testCase := func() {
52		circuit := TestPlonkCircuit{}
53		witness := TestPlonkCircuit{}
54		err := test.IsSolved(&circuit, &witness, TEST_CURVE.ScalarField())
55		assert.NoError(err)
56	}
57
58	testCase()
59}