package plonky2_verifier import ( "fmt" . "gnark-plonky2-verifier/field" ) type ConstantGate struct { numConsts uint64 } func NewConstantGate(numConsts uint64) *ConstantGate { return &ConstantGate{ numConsts: numConsts, } } func (g *ConstantGate) Id() string { return fmt.Sprintf("ConstantGate { num_consts: %d }", g.numConsts) } func (g *ConstantGate) ConstInput(i uint64) uint64 { if i > g.numConsts { panic("Invalid constant index") } return i } func (g *ConstantGate) WireOutput(i uint64) uint64 { if i > g.numConsts { panic("Invalid wire index") } return i } func (g *ConstantGate) EvalUnfiltered(p *PlonkChip, vars EvaluationVars) []QuadraticExtension { constraints := []QuadraticExtension{} for i := uint64(0); i < g.numConsts; i++ { constraints = append(constraints, p.qeAPI.SubExtension(vars.localConstants[g.ConstInput(i)], vars.localWires[g.WireOutput(i)])) } return constraints }