gnark-plonky2-verifier/plonky2_verifier/public_input_gate.go
plonky2_verifier/public_input_gate.goRaw
1package plonky2_verifier
2
3import (
4 . "gnark-plonky2-verifier/field"
5)
6
7type PublicInputGate struct {
8}
9
10func NewPublicInputGate() *PublicInputGate {
11 return &PublicInputGate{}
12}
13
14func (g *PublicInputGate) Id() string {
15 return "PublicInputGate"
16}
17
18func (g *PublicInputGate) WiresPublicInputsHash() []uint64 {
19 return []uint64{0, 1, 2, 3}
20}
21
22func (g *PublicInputGate) EvalUnfiltered(p *PlonkChip, vars EvaluationVars) []QuadraticExtension {
23 constraints := []QuadraticExtension{}
24
25 wires := g.WiresPublicInputsHash()
26 hash_parts := vars.publicInputsHash
27 for i := 0; i < 4; i++ {
28 wire := wires[i]
29 hash_part := hash_parts[i]
30
31 diff := p.qeAPI.SubExtension(vars.localWires[wire], p.qeAPI.FieldToQE(hash_part))
32 constraints = append(constraints, diff)
33 }
34
35 return constraints
36}