arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/plonky2_verifier/structs.go
plonky2_verifier/structs.goRaw
  1package plonky2_verifier
  2
  3import (
  4	. "gnark-plonky2-verifier/field"
  5)
  6
  7type MerkleCap = []Hash
  8
  9type MerkleProof struct {
 10	Siblings []Hash
 11}
 12
 13type EvalProof struct {
 14	Elements    []F
 15	MerkleProof MerkleProof
 16}
 17
 18type FriInitialTreeProof struct {
 19	EvalsProofs []EvalProof
 20}
 21
 22type FriQueryStep struct {
 23	Evals       []QuadraticExtension
 24	MerkleProof MerkleProof
 25}
 26
 27type FriQueryRound struct {
 28	InitialTreesProof FriInitialTreeProof
 29	Steps             []FriQueryStep
 30}
 31
 32type PolynomialCoeffs struct {
 33	Coeffs []QuadraticExtension
 34}
 35
 36type FriProof struct {
 37	CommitPhaseMerkleCaps []MerkleCap
 38	QueryRoundProofs      []FriQueryRound
 39	FinalPoly             PolynomialCoeffs
 40	PowWitness            F
 41}
 42
 43type OpeningSet struct {
 44	Constants       []QuadraticExtension
 45	PlonkSigmas     []QuadraticExtension
 46	Wires           []QuadraticExtension
 47	PlonkZs         []QuadraticExtension
 48	PlonkZsNext     []QuadraticExtension
 49	PartialProducts []QuadraticExtension
 50	QuotientPolys   []QuadraticExtension
 51}
 52
 53type Proof struct {
 54	WiresCap                  MerkleCap
 55	PlonkZsPartialProductsCap MerkleCap
 56	QuotientPolysCap          MerkleCap
 57	Openings                  OpeningSet
 58	OpeningProof              FriProof
 59}
 60
 61type ProofWithPublicInputs struct {
 62	Proof        Proof
 63	PublicInputs []F
 64}
 65
 66type VerifierOnlyCircuitData struct {
 67	ConstantSigmasCap MerkleCap
 68	CircuitDigest     Hash
 69}
 70
 71type FriConfig struct {
 72	RateBits        uint64
 73	CapHeight       uint64
 74	ProofOfWorkBits uint64
 75	NumQueryRounds  uint64
 76	// TODO: add FriReductionStrategy
 77}
 78
 79func (fc *FriConfig) rate() float64 {
 80	return 1.0 / float64((uint64(1) << fc.RateBits))
 81}
 82
 83type FriParams struct {
 84	Config             FriConfig
 85	Hiding             bool
 86	DegreeBits         uint64
 87	ReductionArityBits []uint64
 88}
 89
 90type CircuitConfig struct {
 91	NumWires                uint64
 92	NumRoutedWires          uint64
 93	NumConstants            uint64
 94	UseBaseArithmeticGate   bool
 95	SecurityBits            uint64
 96	NumChallenges           uint64
 97	ZeroKnowledge           bool
 98	MaxQuotientDegreeFactor uint64
 99	FriConfig               FriConfig
100}
101
102type CommonCircuitData struct {
103	Config               CircuitConfig
104	FriParams            FriParams
105	Gates                []gate
106	SelectorsInfo        SelectorsInfo
107	DegreeBits           uint64
108	QuotientDegreeFactor uint64
109	NumGateConstraints   uint64
110	NumConstants         uint64
111	NumPublicInputs      uint64
112	KIs                  []F
113	NumPartialProducts   uint64
114}
115
116type ProofChallenges struct {
117	PlonkBetas    []F
118	PlonkGammas   []F
119	PlonkAlphas   []F
120	PlonkZeta     QuadraticExtension
121	FriChallenges FriChallenges
122}
123
124type FriChallenges struct {
125	FriAlpha        QuadraticExtension
126	FriBetas        []QuadraticExtension
127	FriPowResponse  F
128	FriQueryIndices []F
129}