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}