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 ReductionStrategy []uint64 // only ConstantArityBits is supported
12 NumQueryRounds uint64
13}
14
15func (fc *FriConfig) Rate() float64 {
16 return 1.0 / float64((uint64(1) << fc.RateBits))
17}
18
19type FriParams struct {
20 Config FriConfig
21 Hiding bool
22 DegreeBits uint64
23 ReductionArityBits []uint64
24}
25
26func (p *FriParams) TotalArities() int {
27 res := 0
28 for _, b := range p.ReductionArityBits {
29 res += int(b)
30 }
31 return res
32}
33
34func (p *FriParams) MaxArityBits() int {
35 res := 0
36 for _, b := range p.ReductionArityBits {
37 if int(b) > res {
38 res = int(b)
39 }
40 }
41 return res
42}
43
44func (p *FriParams) LdeBits() int {
45 return int(p.DegreeBits + p.Config.RateBits)
46}
47
48func (p *FriParams) LdeSize() int {
49 return 1 << p.LdeBits()
50}
51
52func (p *FriParams) FinalPolyBits() int {
53 return int(p.DegreeBits) - p.TotalArities()
54}
55
56func (p *FriParams) FinalPolyLen() int {
57 return int(1 << p.FinalPolyBits())
58}
59
60type CircuitConfig struct {
61 NumWires uint64
62 NumRoutedWires uint64
63 NumConstants uint64
64 UseBaseArithmeticGate bool
65 SecurityBits uint64
66 NumChallenges uint64
67 ZeroKnowledge bool
68 MaxQuotientDegreeFactor uint64
69 FriConfig FriConfig
70}
71
72type CommonCircuitData struct {
73 Config CircuitConfig
74 FriParams
75 GateIds []string
76 SelectorsInfo gates.SelectorsInfo
77 DegreeBits uint64
78 QuotientDegreeFactor uint64
79 NumGateConstraints uint64
80 NumConstants uint64
81 NumPublicInputs uint64
82 KIs []uint64
83 NumPartialProducts uint64
84}