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}