53 lines
1.8 KiB
Go
Raw Normal View History

package plonk_test
2022-10-28 15:29:25 -07:00
import (
"testing"
"github.com/consensys/gnark-crypto/ecc"
2022-10-28 15:29:25 -07:00
"github.com/consensys/gnark/frontend"
"github.com/consensys/gnark/test"
"github.com/succinctlabs/gnark-plonky2-verifier/plonk"
"github.com/succinctlabs/gnark-plonky2-verifier/verifier"
2022-10-28 15:29:25 -07:00
)
2022-11-21 18:04:28 -08:00
type TestPlonkCircuit struct {
2023-10-11 17:39:52 -07:00
proofWithPIsFilename string `gnark:"-"`
commonCircuitDataFilename string `gnark:"-"`
verifierOnlyCircuitDataFilename string `gnark:"-"`
2022-11-21 18:04:28 -08:00
}
2022-10-28 15:29:25 -07:00
func (circuit *TestPlonkCircuit) Define(api frontend.API) error {
2023-10-11 17:39:52 -07:00
proofWithPis := verifier.DeserializeProofWithPublicInputs(circuit.proofWithPIsFilename)
commonCircuitData := verifier.DeserializeCommonCircuitData(circuit.commonCircuitDataFilename)
verifierOnlyCircuitData := verifier.DeserializeVerifierOnlyCircuitData(circuit.verifierOnlyCircuitDataFilename)
2022-10-28 15:29:25 -07:00
verifierChip := verifier.NewVerifierChip(api, commonCircuitData)
publicInputsHash := verifierChip.GetPublicInputsHash(proofWithPis.PublicInputs)
2023-10-11 17:39:52 -07:00
proofChallenges := verifierChip.GetChallenges(proofWithPis.Proof, publicInputsHash, commonCircuitData, verifierOnlyCircuitData)
plonkChip := plonk.NewPlonkChip(
api,
commonCircuitData,
)
plonkChip.Verify(proofChallenges, proofWithPis.Proof.Openings, publicInputsHash)
2022-10-28 15:29:25 -07:00
return nil
}
func TestPlonkDecodeBlock(t *testing.T) {
2022-10-28 15:29:25 -07:00
assert := test.NewAssert(t)
testCase := func() {
2022-11-21 18:04:28 -08:00
circuit := TestPlonkCircuit{
2023-10-11 17:39:52 -07:00
proofWithPIsFilename: "../../data/decode_block/proof_with_public_inputs.json",
commonCircuitDataFilename: "../../data/decode_block/common_circuit_data.json",
verifierOnlyCircuitDataFilename: "../../data/decode_block/verifier_only_circuit_data.json",
2022-11-21 18:04:28 -08:00
}
2023-10-11 17:39:52 -07:00
witness := TestPlonkCircuit{}
err := test.IsSolved(&circuit, &witness, ecc.BN254.ScalarField())
2022-10-28 15:29:25 -07:00
assert.NoError(err)
}
testCase()
}