arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
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}