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-ed25519/goldilocks"
  5)
  6
  7type Hash = [4]GoldilocksElement
  8type QuadraticExtension = [2]GoldilocksElement
  9type MerkleCap = []Hash
 10
 11type MerkleProof struct {
 12	Siblings []Hash
 13}
 14
 15type EvalProof struct {
 16	Elements    []GoldilocksElement
 17	MerkleProof MerkleProof
 18}
 19
 20type FriInitialTreeProof struct {
 21	EvalsProofs []EvalProof
 22}
 23
 24type FriQueryStep struct {
 25	Evals       []QuadraticExtension
 26	MerkleProof MerkleProof
 27}
 28
 29type FriQueryRound struct {
 30	InitialTreesProof FriInitialTreeProof
 31	Steps             []FriQueryStep
 32}
 33
 34type PolynomialCoeffs struct {
 35	Coeffs []GoldilocksElement
 36}
 37
 38type FriProof struct {
 39	CommitPhaseMerkleCaps []MerkleCap
 40	QueryRoundProofs      FriQueryRound
 41	FinalPoly             PolynomialCoeffs
 42	PowWitness            GoldilocksElement
 43}
 44
 45type OpeningSet struct {
 46	Constants       []QuadraticExtension
 47	PlonkSigmas     []QuadraticExtension
 48	Wires           []QuadraticExtension
 49	PlonkZs         []QuadraticExtension
 50	PlonkZsNext     []QuadraticExtension
 51	PartialProducts []QuadraticExtension
 52	QuotientPolys   []QuadraticExtension
 53}
 54
 55type Proof struct {
 56	WiresCap                  MerkleCap
 57	PlonkZsPartialProductsCap MerkleCap
 58	QuotientPolysCap          MerkleCap
 59	Openings                  OpeningSet
 60	OpeningProof              FriProof
 61}
 62
 63type ProofWithPublicInputs struct {
 64	Proof        Proof
 65	PublicInputs []GoldilocksElement
 66}
 67
 68type ProofWithPublicInputsRaw struct {
 69	Proof struct {
 70		WiresCap []struct {
 71			Elements []uint64 `json:"elements"`
 72		} `json:"wires_cap"`
 73		PlonkZsPartialProductsCap []struct {
 74			Elements []uint64 `json:"elements"`
 75		} `json:"plonk_zs_partial_products_cap"`
 76		QuotientPolysCap []struct {
 77			Elements []uint64 `json:"elements"`
 78		} `json:"quotient_polys_cap"`
 79		Openings struct {
 80			Constants       [][]uint64 `json:"constants"`
 81			PlonkSigmas     [][]uint64 `json:"plonk_sigmas"`
 82			Wires           [][]uint64 `json:"wires"`
 83			PlonkZs         [][]uint64 `json:"plonk_zs"`
 84			PlonkZsNext     [][]uint64 `json:"plonk_zs_next"`
 85			PartialProducts [][]uint64 `json:"partial_products"`
 86			QuotientPolys   [][]uint64 `json:"quotient_polys"`
 87		} `json:"openings"`
 88		OpeningProof struct {
 89			CommitPhaseMerkleCaps []interface{} `json:"commit_phase_merkle_caps"`
 90			QueryRoundProofs      []struct {
 91				InitialTreesProof struct {
 92					EvalsProofs [][]interface{} `json:"evals_proofs"`
 93				} `json:"initial_trees_proof"`
 94				Steps []interface{} `json:"steps"`
 95			} `json:"query_round_proofs"`
 96			FinalPoly struct {
 97				Coeffs [][]uint64 `json:"coeffs"`
 98			} `json:"final_poly"`
 99			PowWitness uint64 `json:"pow_witness"`
100		} `json:"opening_proof"`
101	} `json:"proof"`
102	PublicInputs []uint64 `json:"public_inputs"`
103}
104
105type CommonCircuitData struct {
106	Config struct {
107		NumWires                uint64 `json:"num_wires"`
108		NumRoutedWires          uint64 `json:"num_routed_wires"`
109		NumConstants            uint64 `json:"num_constants"`
110		UseBaseArithmeticGate   bool   `json:"use_base_arithmetic_gate"`
111		SecurityBits            uint64 `json:"security_bits"`
112		NumChallenges           uint64 `json:"num_challenges"`
113		ZeroKnowledge           bool   `json:"zero_knowledge"`
114		MaxQuotientDegreeFactor uint64 `json:"max_quotient_degree_factor"`
115		FriConfig               struct {
116			RateBits          uint64 `json:"rate_bits"`
117			CapHeight         uint64 `json:"cap_height"`
118			ProofOfWorkBits   uint64 `json:"proof_of_work_bits"`
119			ReductionStrategy struct {
120				ConstantArityBits []uint64 `json:"ConstantArityBits"`
121			} `json:"reduction_strategy"`
122			NumQueryRounds uint64 `json:"num_query_rounds"`
123		} `json:"fri_config"`
124	} `json:"config"`
125	FriParams struct {
126		Config struct {
127			RateBits          uint64 `json:"rate_bits"`
128			CapHeight         uint64 `json:"cap_height"`
129			ProofOfWorkBits   uint64 `json:"proof_of_work_bits"`
130			ReductionStrategy struct {
131				ConstantArityBits []uint64 `json:"ConstantArityBits"`
132			} `json:"reduction_strategy"`
133			NumQueryRounds uint64 `json:"num_query_rounds"`
134		} `json:"config"`
135		Hiding             bool          `json:"hiding"`
136		DegreeBits         uint64        `json:"degree_bits"`
137		ReductionArityBits []interface{} `json:"reduction_arity_bits"`
138	} `json:"fri_params"`
139	DegreeBits    uint64 `json:"degree_bits"`
140	SelectorsInfo struct {
141		SelectorIndices []uint64 `json:"selector_indices"`
142		Groups          []struct {
143			Start uint64 `json:"start"`
144			End   uint64 `json:"end"`
145		} `json:"groups"`
146	} `json:"selectors_info"`
147	QuotientDegreeFactor uint64        `json:"quotient_degree_factor"`
148	NumGateConstraints   uint64        `json:"num_gate_constraints"`
149	NumConstants         uint64        `json:"num_constants"`
150	NumPublicInputs      uint64        `json:"num_public_inputs"`
151	KIs                  []interface{} `json:"k_is"`
152	NumPartialProducts   uint64        `json:"num_partial_products"`
153	CircuitDigest        struct {
154		Elements []uint64 `json:"elements"`
155	} `json:"circuit_digest"`
156}
157
158type VerifierOnlyCircuitData struct {
159	ConstantsSigmasCap []struct {
160		Elements []uint64 `json:"elements"`
161	} `json:"constants_sigmas_cap"`
162}