130 lines
2.7 KiB
Go
Raw Normal View History

2022-10-10 17:59:55 -07:00
package plonky2_verifier
import (
2023-03-28 10:59:36 -07:00
. "gnark-plonky2-verifier/field"
2022-10-10 17:59:55 -07:00
)
type MerkleCap = []Hash
type MerkleProof struct {
Siblings []Hash
}
type EvalProof struct {
Elements []F
MerkleProof MerkleProof
}
type FriInitialTreeProof struct {
EvalsProofs []EvalProof
}
type FriQueryStep struct {
Evals []QuadraticExtension
MerkleProof MerkleProof
}
type FriQueryRound struct {
InitialTreesProof FriInitialTreeProof
Steps []FriQueryStep
}
type PolynomialCoeffs struct {
2022-10-10 18:43:56 -07:00
Coeffs []QuadraticExtension
2022-10-10 17:59:55 -07:00
}
type FriProof struct {
CommitPhaseMerkleCaps []MerkleCap
QueryRoundProofs []FriQueryRound
2022-10-10 17:59:55 -07:00
FinalPoly PolynomialCoeffs
PowWitness F
}
type OpeningSet struct {
Constants []QuadraticExtension
PlonkSigmas []QuadraticExtension
Wires []QuadraticExtension
PlonkZs []QuadraticExtension
PlonkZsNext []QuadraticExtension
PartialProducts []QuadraticExtension
QuotientPolys []QuadraticExtension
}
type Proof struct {
WiresCap MerkleCap
PlonkZsPartialProductsCap MerkleCap
QuotientPolysCap MerkleCap
Openings OpeningSet
OpeningProof FriProof
}
type ProofWithPublicInputs struct {
Proof Proof
PublicInputs []F
}
type VerifierOnlyCircuitData struct {
ConstantSigmasCap MerkleCap
CircuitDigest Hash
2022-10-10 17:59:55 -07:00
}
type FriConfig struct {
RateBits uint64
CapHeight uint64
ProofOfWorkBits uint64
NumQueryRounds uint64
// TODO: add FriReductionStrategy
}
func (fc *FriConfig) rate() float64 {
return 1.0 / float64((uint64(1) << fc.RateBits))
}
2022-10-10 17:59:55 -07:00
type FriParams struct {
Config FriConfig
Hiding bool
DegreeBits uint64
ReductionArityBits []uint64
}
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 FriParams
Gates []gate
SelectorsInfo SelectorsInfo
2022-10-10 17:59:55 -07:00
DegreeBits uint64
QuotientDegreeFactor uint64
NumGateConstraints uint64
NumConstants uint64
NumPublicInputs uint64
KIs []F
NumPartialProducts uint64
2022-10-10 20:45:34 -07:00
}
type ProofChallenges struct {
PlonkBetas []F
PlonkGammas []F
PlonkAlphas []F
PlonkZeta QuadraticExtension
FriChallenges FriChallenges
}
type FriChallenges struct {
FriAlpha QuadraticExtension
FriBetas []QuadraticExtension
FriPowResponse F
FriQueryIndices []F
2022-10-10 17:59:55 -07:00
}