gnark-plonky2-verifier/plonk/gates/vars.go
plonk/gates/vars.goRaw
1package gates
2
3import (
4 gl "github.com/succinctlabs/gnark-plonky2-verifier/goldilocks"
5 "github.com/succinctlabs/gnark-plonky2-verifier/poseidon"
6)
7
8type EvaluationVars struct {
9 localConstants []gl.QuadraticExtensionVariable
10 localWires []gl.QuadraticExtensionVariable
11 publicInputsHash poseidon.GoldilocksHashOut
12}
13
14func NewEvaluationVars(
15 localConstants []gl.QuadraticExtensionVariable,
16 localWires []gl.QuadraticExtensionVariable,
17 publicInputsHash poseidon.GoldilocksHashOut,
18) *EvaluationVars {
19 return &EvaluationVars{
20 localConstants: localConstants,
21 localWires: localWires,
22 publicInputsHash: publicInputsHash,
23 }
24}
25
26func (e *EvaluationVars) RemovePrefix(numSelectors uint64) {
27 e.localConstants = e.localConstants[numSelectors:]
28}
29
30func (e *EvaluationVars) GetLocalExtAlgebra(wireRange Range) gl.QuadraticExtensionAlgebraVariable {
31 // For now, only support degree 2
32 if wireRange.end-wireRange.start != gl.D {
33 panic("Range must be of size D")
34 }
35
36 var ret gl.QuadraticExtensionAlgebraVariable
37 for i := wireRange.start; i < wireRange.end; i++ {
38 ret[i-wireRange.start] = e.localWires[i]
39 }
40
41 return ret
42}