github.com/consensys/gnark@v0.11.0/internal/backend/circuits/determinism.go (about)

     1  package circuits
     2  
     3  import (
     4  	"github.com/consensys/gnark/frontend"
     5  )
     6  
     7  type determinism struct {
     8  	X [5]frontend.Variable
     9  	Z frontend.Variable `gnark:",public"`
    10  }
    11  
    12  func (circuit *determinism) Define(api frontend.API) error {
    13  	a := api.Add(circuit.X[0],
    14  		circuit.X[0],
    15  		circuit.X[1],
    16  		circuit.X[1],
    17  		circuit.X[2],
    18  		circuit.X[2],
    19  		circuit.X[3],
    20  		circuit.X[3],
    21  		circuit.X[4],
    22  		circuit.X[4],
    23  	)
    24  	b := api.Mul(a, a)
    25  	api.AssertIsEqual(b, circuit.Z)
    26  	return nil
    27  }
    28  
    29  func init() {
    30  	var circuit, good, bad determinism
    31  
    32  	good.X[0] = (1)
    33  	good.X[1] = (2)
    34  	good.X[2] = (3)
    35  	good.X[3] = (4)
    36  	good.X[4] = (5)
    37  	good.Z = (900)
    38  
    39  	bad.X[0] = (1)
    40  	bad.X[1] = (1)
    41  	bad.X[2] = (1)
    42  	bad.X[3] = (1)
    43  	bad.X[4] = (1)
    44  	bad.Z = (900)
    45  
    46  	addEntry("determinism", &circuit, &good, &bad, nil)
    47  }