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

     1  // Package circuits contains test circuits
     2  package circuits
     3  
     4  import (
     5  	"github.com/consensys/gnark-crypto/ecc"
     6  	"github.com/consensys/gnark/constraint/solver"
     7  	"github.com/consensys/gnark/frontend"
     8  )
     9  
    10  // TestCircuit are used for test purposes (backend.Groth16 and gnark/integration_test.go)
    11  type TestCircuit struct {
    12  	Circuit                              frontend.Circuit
    13  	ValidAssignments, InvalidAssignments []frontend.Circuit // good and bad witness for the prover + public verifier data
    14  	HintFunctions                        []solver.Hint
    15  	Curves                               []ecc.ID
    16  }
    17  
    18  // Circuits are used for test purposes (backend.Groth16 and gnark/integration_test.go)
    19  var Circuits map[string]TestCircuit
    20  
    21  func addEntry(name string, circuit, proverGood, proverBad frontend.Circuit, curves []ecc.ID) {
    22  
    23  	if Circuits == nil {
    24  		Circuits = make(map[string]TestCircuit)
    25  	}
    26  	if _, ok := Circuits[name]; ok {
    27  		panic("name " + name + "already taken by another test circuit ")
    28  	}
    29  
    30  	Circuits[name] = TestCircuit{Circuit: circuit, ValidAssignments: []frontend.Circuit{proverGood}, InvalidAssignments: []frontend.Circuit{proverBad}, HintFunctions: nil, Curves: curves}
    31  }
    32  
    33  func addNewEntry(name string, circuit frontend.Circuit, proverGood, proverBad []frontend.Circuit, curves []ecc.ID, hintFunctions ...solver.Hint) {
    34  	if Circuits == nil {
    35  		Circuits = make(map[string]TestCircuit)
    36  	}
    37  	if _, ok := Circuits[name]; ok {
    38  		panic("name " + name + "already taken by another test circuit ")
    39  	}
    40  	solver.RegisterHint(hintFunctions...)
    41  
    42  	Circuits[name] = TestCircuit{Circuit: circuit, ValidAssignments: proverGood, InvalidAssignments: proverBad, HintFunctions: nil, Curves: curves}
    43  }