You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.9 KiB

package types
import (
"github.com/succinctlabs/gnark-plonky2-verifier/plonk/gates"
)
type FriConfig struct {
RateBits uint64
CapHeight uint64
ProofOfWorkBits uint64
NumQueryRounds uint64
// Note that we do not need `reduction_strategy` of type FriReductionStrategy as the plonky2 FriConfig has.
// reduction_strategy is only used for computing `reduction_arity_bits`, which is serialized in the
// CommonCircuitData.
}
func (fc *FriConfig) Rate() float64 {
return 1.0 / float64((uint64(1) << fc.RateBits))
}
type FriParams struct {
Config FriConfig
Hiding bool
DegreeBits uint64
ReductionArityBits []uint64
}
func (p *FriParams) TotalArities() int {
res := 0
for _, b := range p.ReductionArityBits {
res += int(b)
}
return res
}
func (p *FriParams) MaxArityBits() int {
res := 0
for _, b := range p.ReductionArityBits {
if int(b) > res {
res = int(b)
}
}
return res
}
func (p *FriParams) LdeBits() int {
return int(p.DegreeBits + p.Config.RateBits)
}
func (p *FriParams) LdeSize() int {
return 1 << p.LdeBits()
}
func (p *FriParams) FinalPolyBits() int {
return int(p.DegreeBits) - p.TotalArities()
}
func (p *FriParams) FinalPolyLen() int {
return int(1 << p.FinalPolyBits())
}
type CircuitConfig struct {
NumWires uint64
NumRoutedWires uint64
NumConstants uint64
UseBaseArithmeticGate bool
SecurityBits uint64
NumChallenges uint64
ZeroKnowledge bool
MaxQuotientDegreeFactor uint64
FriConfig FriConfig
}
type CommonCircuitData struct {
Config CircuitConfig
FriParams
GateIds []string
SelectorsInfo gates.SelectorsInfo
DegreeBits uint64
QuotientDegreeFactor uint64
NumGateConstraints uint64
NumConstants uint64
NumPublicInputs uint64
KIs []uint64
NumPartialProducts uint64
}