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