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	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}