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 DegreeBits uint64
105 QuotientDegreeFactor uint64
106 NumGateConstraints uint64
107 NumConstants uint64
108 NumPublicInputs uint64
109 KIs []F
110 NumPartialProducts uint64
111 CircuitDigest Hash
112}
113
114type ProofChallenges struct {
115 PlonkBetas []F
116 PlonkGammas []F
117 PlonkAlphas []F
118 PlonkZeta QuadraticExtension
119 FriChallenges FriChallenges
120}
121
122type FriChallenges struct {
123 FriAlpha QuadraticExtension
124 FriBetas []QuadraticExtension
125 FriPowResponse F
126 FriQueryIndicies []F
127}