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 }