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}
69
70type FriConfig struct {
71 RateBits uint64
72 CapHeight uint64
73 ProofOfWorkBits uint64
74 NumQueryRounds uint64
75 // TODO: add FriReductionStrategy
76}
77
78func (fc *FriConfig) rate() float64 {
79 return 1.0 / float64((uint64(1) << fc.RateBits))
80}
81
82type FriParams struct {
83 Config FriConfig
84 Hiding bool
85 DegreeBits uint64
86 ReductionArityBits []uint64
87}
88
89type CircuitConfig struct {
90 NumWires uint64
91 NumRoutedWires uint64
92 NumConstants uint64
93 UseBaseArithmeticGate bool
94 SecurityBits uint64
95 NumChallenges uint64
96 ZeroKnowledge bool
97 MaxQuotientDegreeFactor uint64
98 FriConfig FriConfig
99}
100
101type CommonCircuitData struct {
102 Config CircuitConfig
103 FriParams FriParams
104 Gates []gate
105 SelectorsInfo SelectorsInfo
106 DegreeBits uint64
107 QuotientDegreeFactor uint64
108 NumGateConstraints uint64
109 NumConstants uint64
110 NumPublicInputs uint64
111 KIs []F
112 NumPartialProducts uint64
113 CircuitDigest Hash
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}