arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/verifier/internal/gates/vars.go
verifier/internal/gates/vars.goRaw
 1package gates
 2
 3import (
 4	"github.com/succinctlabs/gnark-plonky2-verifier/field"
 5	"github.com/succinctlabs/gnark-plonky2-verifier/poseidon"
 6)
 7
 8type EvaluationVars struct {
 9	localConstants   []field.QuadraticExtension
10	localWires       []field.QuadraticExtension
11	publicInputsHash poseidon.PoseidonHashOut
12}
13
14func NewEvaluationVars(
15	localConstants []field.QuadraticExtension,
16	localWires []field.QuadraticExtension,
17	publicInputsHash poseidon.PoseidonHashOut,
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) field.QEAlgebra {
31	// For now, only support degree 2
32	if wireRange.end-wireRange.start != field.D {
33		panic("Range must be of size D")
34	}
35
36	var ret field.QEAlgebra
37	for i := wireRange.start; i < wireRange.end; i++ {
38		ret[i-wireRange.start] = e.localWires[i]
39	}
40
41	return ret
42}