gnark-plonky2-verifier/types/types.go
types/types.goRaw
1package types
2
3import (
4 "github.com/succinctlabs/gnark-plonky2-verifier/plonk/gates"
5)
6
7type FriConfig struct {
8 RateBits uint64
9 CapHeight uint64
10 ProofOfWorkBits uint64
11 NumQueryRounds uint64
12 // Note that we do not need `reduction_strategy` of type FriReductionStrategy as the plonky2 FriConfig has.
13 // reduction_strategy is only used for computing `reduction_arity_bits`, which is serialized in the
14 // CommonCircuitData.
15}
16
17func (fc *FriConfig) Rate() float64 {
18 return 1.0 / float64((uint64(1) << fc.RateBits))
19}
20
21type FriParams struct {
22 Config FriConfig
23 Hiding bool
24 DegreeBits uint64
25 ReductionArityBits []uint64
26}
27
28func (p *FriParams) TotalArities() int {
29 res := 0
30 for _, b := range p.ReductionArityBits {
31 res += int(b)
32 }
33 return res
34}
35
36func (p *FriParams) MaxArityBits() int {
37 res := 0
38 for _, b := range p.ReductionArityBits {
39 if int(b) > res {
40 res = int(b)
41 }
42 }
43 return res
44}
45
46func (p *FriParams) LdeBits() int {
47 return int(p.DegreeBits + p.Config.RateBits)
48}
49
50func (p *FriParams) LdeSize() int {
51 return 1 << p.LdeBits()
52}
53
54func (p *FriParams) FinalPolyBits() int {
55 return int(p.DegreeBits) - p.TotalArities()
56}
57
58func (p *FriParams) FinalPolyLen() int {
59 return int(1 << p.FinalPolyBits())
60}
61
62type CircuitConfig struct {
63 NumWires uint64
64 NumRoutedWires uint64
65 NumConstants uint64
66 UseBaseArithmeticGate bool
67 SecurityBits uint64
68 NumChallenges uint64
69 ZeroKnowledge bool
70 MaxQuotientDegreeFactor uint64
71 FriConfig FriConfig
72}
73
74type CommonCircuitData struct {
75 Config CircuitConfig
76 FriParams
77 GateIds []string
78 SelectorsInfo gates.SelectorsInfo
79 DegreeBits uint64
80 QuotientDegreeFactor uint64
81 NumGateConstraints uint64
82 NumConstants uint64
83 NumPublicInputs uint64
84 KIs []uint64
85 NumPartialProducts uint64
86}