arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/verifier/common/config.go
verifier/common/config.goRaw
 1package common
 2
 3import (
 4	"github.com/succinctlabs/gnark-plonky2-verifier/field"
 5	"github.com/succinctlabs/gnark-plonky2-verifier/poseidon"
 6	"github.com/succinctlabs/gnark-plonky2-verifier/verifier/internal/gates"
 7)
 8
 9type VerifierOnlyCircuitData struct {
10	ConstantSigmasCap MerkleCap
11	CircuitDigest     poseidon.Hash
12}
13
14type CircuitConfig struct {
15	NumWires                uint64
16	NumRoutedWires          uint64
17	NumConstants            uint64
18	UseBaseArithmeticGate   bool
19	SecurityBits            uint64
20	NumChallenges           uint64
21	ZeroKnowledge           bool
22	MaxQuotientDegreeFactor uint64
23	FriConfig               FriConfig
24}
25
26type CommonCircuitData struct {
27	Config               CircuitConfig
28	FriParams            FriParams
29	Gates                []gates.Gate
30	SelectorsInfo        gates.SelectorsInfo
31	DegreeBits           uint64
32	QuotientDegreeFactor uint64
33	NumGateConstraints   uint64
34	NumConstants         uint64
35	NumPublicInputs      uint64
36	KIs                  []field.F
37	NumPartialProducts   uint64
38}
39
40type FriConfig struct {
41	RateBits        uint64
42	CapHeight       uint64
43	ProofOfWorkBits uint64
44	NumQueryRounds  uint64
45	// TODO: add FriReductionStrategy
46}
47
48func (fc *FriConfig) Rate() float64 {
49	return 1.0 / float64((uint64(1) << fc.RateBits))
50}
51
52type FriParams struct {
53	Config             FriConfig
54	Hiding             bool
55	DegreeBits         uint64
56	ReductionArityBits []uint64
57}