mirror of
https://github.com/arnaucube/gnark-plonky2-verifier.git
synced 2026-01-12 00:51:33 +01:00
feat: Plonk optimizations (#39)
* Fixed poseidion hash TOOD in fri/fri.go * optimized goldilocks * Another optimization * Down to 16 million * Finished TODOs
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
package types
|
||||
|
||||
import "github.com/succinctlabs/gnark-plonky2-verifier/plonk/gates"
|
||||
import (
|
||||
"github.com/succinctlabs/gnark-plonky2-verifier/plonk/gates"
|
||||
)
|
||||
|
||||
type FriConfig struct {
|
||||
RateBits uint64
|
||||
CapHeight uint64
|
||||
ProofOfWorkBits uint64
|
||||
NumQueryRounds uint64
|
||||
// TODO: add FriReductionStrategy
|
||||
// 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 {
|
||||
@@ -21,6 +25,40 @@ type FriParams struct {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user