arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/plonky2_verifier/public_input.go
plonky2_verifier/public_input.goRaw
 1package plonky2_verifier
 2
 3import (
 4	. "gnark-plonky2-verifier/field"
 5)
 6
 7type PublicInputGate struct {
 8}
 9
10func (p *PublicInputGate) WiresPublicInputsHash() []int {
11	return []int{0, 1, 2, 3}
12}
13
14func (p *PublicInputGate) EvalUnfiltered(pc *PlonkChip, vars EvaluationVars) []QuadraticExtension {
15	constraints := []QuadraticExtension{}
16
17	wires := p.WiresPublicInputsHash()
18	hash_parts := vars.publicInputsHash.elements
19	for i := 0; i < 4; i++ {
20		wire := wires[i]
21		hash_part := hash_parts[i]
22
23		diff := pc.qeAPI.SubExtension(vars.localWires[wire], pc.qeAPI.FieldToQE(hash_part))
24		constraints = append(constraints, diff)
25	}
26
27	return constraints
28}
29
30func (p *PublicInputGate) EvalFiltered(vars EvaluationVars) []QuadraticExtension {
31	return nil
32}