arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/plonky2_verifier/structs.go
plonky2_verifier/structs.goRaw
  1package plonky2_verifier
  2
  3import (
  4	. "gnark-plonky2-verifier/field"
  5)
  6
  7type MerkleCap = []Hash
  8
  9type MerkleProof struct {
 10	Siblings []Hash
 11}
 12
 13type EvalProof struct {
 14	Elements    []F
 15	MerkleProof MerkleProof
 16}
 17
 18type FriInitialTreeProof struct {
 19	EvalsProofs []EvalProof
 20}
 21
 22type FriQueryStep struct {
 23	Evals       []QuadraticExtension
 24	MerkleProof MerkleProof
 25}
 26
 27type FriQueryRound struct {
 28	InitialTreesProof FriInitialTreeProof
 29	Steps             []FriQueryStep
 30}
 31
 32type PolynomialCoeffs struct {
 33	Coeffs []QuadraticExtension
 34}
 35
 36type FriProof struct {
 37	CommitPhaseMerkleCaps []MerkleCap
 38	QueryRoundProofs      []FriQueryRound
 39	FinalPoly             PolynomialCoeffs
 40	PowWitness            F
 41}
 42
 43type OpeningSet struct {
 44	Constants       []QuadraticExtension
 45	PlonkSigmas     []QuadraticExtension
 46	Wires           []QuadraticExtension
 47	PlonkZs         []QuadraticExtension
 48	PlonkZsNext     []QuadraticExtension
 49	PartialProducts []QuadraticExtension
 50	QuotientPolys   []QuadraticExtension
 51}
 52
 53type Proof struct {
 54	WiresCap                  MerkleCap
 55	PlonkZsPartialProductsCap MerkleCap
 56	QuotientPolysCap          MerkleCap
 57	Openings                  OpeningSet
 58	OpeningProof              FriProof
 59}
 60
 61type ProofWithPublicInputs struct {
 62	Proof        Proof
 63	PublicInputs []F
 64}
 65
 66type VerifierOnlyCircuitData struct {
 67	ConstantSigmasCap MerkleCap
 68}
 69
 70type FriConfig struct {
 71	RateBits        uint64
 72	CapHeight       uint64
 73	ProofOfWorkBits uint64
 74	NumQueryRounds  uint64
 75	// TODO: add FriReductionStrategy
 76}
 77
 78func (fc *FriConfig) rate() float64 {
 79	return 1.0 / float64((uint64(1) << fc.RateBits))
 80}
 81
 82type FriParams struct {
 83	Config             FriConfig
 84	Hiding             bool
 85	DegreeBits         uint64
 86	ReductionArityBits []uint64
 87}
 88
 89type CircuitConfig struct {
 90	NumWires                uint64
 91	NumRoutedWires          uint64
 92	NumConstants            uint64
 93	UseBaseArithmeticGate   bool
 94	SecurityBits            uint64
 95	NumChallenges           uint64
 96	ZeroKnowledge           bool
 97	MaxQuotientDegreeFactor uint64
 98	FriConfig               FriConfig
 99}
100
101type CommonCircuitData struct {
102	Config               CircuitConfig
103	FriParams            FriParams
104	DegreeBits           uint64
105	QuotientDegreeFactor uint64
106	NumGateConstraints   uint64
107	NumConstants         uint64
108	NumPublicInputs      uint64
109	KIs                  []F
110	NumPartialProducts   uint64
111	CircuitDigest        Hash
112}
113
114type ProofChallenges struct {
115	PlonkBetas    []F
116	PlonkGammas   []F
117	PlonkAlphas   []F
118	PlonkZeta     QuadraticExtension
119	FriChallenges FriChallenges
120}
121
122type FriChallenges struct {
123	FriAlpha         QuadraticExtension
124	FriBetas         []QuadraticExtension
125	FriPowResponse   F
126	FriQueryIndicies []F
127}