package gates
|
|
|
|
import (
|
|
"github.com/succinctlabs/gnark-plonky2-verifier/field"
|
|
"github.com/succinctlabs/gnark-plonky2-verifier/poseidon"
|
|
)
|
|
|
|
type EvaluationVars struct {
|
|
localConstants []field.QuadraticExtension
|
|
localWires []field.QuadraticExtension
|
|
publicInputsHash poseidon.PoseidonHashOut
|
|
}
|
|
|
|
func NewEvaluationVars(
|
|
localConstants []field.QuadraticExtension,
|
|
localWires []field.QuadraticExtension,
|
|
publicInputsHash poseidon.PoseidonHashOut,
|
|
) *EvaluationVars {
|
|
return &EvaluationVars{
|
|
localConstants: localConstants,
|
|
localWires: localWires,
|
|
publicInputsHash: publicInputsHash,
|
|
}
|
|
}
|
|
|
|
func (e *EvaluationVars) RemovePrefix(numSelectors uint64) {
|
|
e.localConstants = e.localConstants[numSelectors:]
|
|
}
|
|
|
|
func (e *EvaluationVars) GetLocalExtAlgebra(wireRange Range) field.QEAlgebra {
|
|
// For now, only support degree 2
|
|
if wireRange.end-wireRange.start != field.D {
|
|
panic("Range must be of size D")
|
|
}
|
|
|
|
var ret field.QEAlgebra
|
|
for i := wireRange.start; i < wireRange.end; i++ {
|
|
ret[i-wireRange.start] = e.localWires[i]
|
|
}
|
|
|
|
return ret
|
|
}
|