github.com/consensys/gnark@v0.11.0/std/hints.go (about) 1 package std 2 3 import ( 4 "sync" 5 6 "github.com/consensys/gnark/constraint/solver" 7 "github.com/consensys/gnark/std/algebra/emulated/fields_bls12381" 8 "github.com/consensys/gnark/std/algebra/emulated/fields_bn254" 9 "github.com/consensys/gnark/std/algebra/emulated/fields_bw6761" 10 "github.com/consensys/gnark/std/algebra/emulated/sw_emulated" 11 "github.com/consensys/gnark/std/algebra/native/fields_bls12377" 12 "github.com/consensys/gnark/std/algebra/native/fields_bls24315" 13 "github.com/consensys/gnark/std/algebra/native/sw_bls12377" 14 "github.com/consensys/gnark/std/algebra/native/sw_bls24315" 15 "github.com/consensys/gnark/std/evmprecompiles" 16 "github.com/consensys/gnark/std/internal/logderivarg" 17 "github.com/consensys/gnark/std/math/bits" 18 "github.com/consensys/gnark/std/math/bitslice" 19 "github.com/consensys/gnark/std/math/cmp" 20 "github.com/consensys/gnark/std/math/emulated" 21 "github.com/consensys/gnark/std/rangecheck" 22 "github.com/consensys/gnark/std/selector" 23 ) 24 25 var registerOnce sync.Once 26 27 // RegisterHints register all gnark/std hints 28 // In the case where the Solver/Prover code is loaded alongside the circuit, this is not useful. 29 // However, if a Solver/Prover services consumes serialized constraint systems, it has no way to 30 // know which hints were registered; caller code may add them through backend.WithHints(...). 31 func RegisterHints() { 32 registerOnce.Do(registerHints) 33 } 34 35 func registerHints() { 36 // note that importing these packages may already trigger a call to solver.RegisterHint(...) 37 solver.RegisterHint(bits.GetHints()...) 38 solver.RegisterHint(cmp.GetHints()...) 39 solver.RegisterHint(selector.GetHints()...) 40 solver.RegisterHint(emulated.GetHints()...) 41 solver.RegisterHint(rangecheck.GetHints()...) 42 solver.RegisterHint(evmprecompiles.GetHints()...) 43 solver.RegisterHint(logderivarg.GetHints()...) 44 solver.RegisterHint(bitslice.GetHints()...) 45 // emulated fields 46 solver.RegisterHint(fields_bls12381.GetHints()...) 47 solver.RegisterHint(fields_bn254.GetHints()...) 48 solver.RegisterHint(fields_bw6761.GetHints()...) 49 // native fields 50 solver.RegisterHint(fields_bls12377.GetHints()...) 51 solver.RegisterHint(fields_bls24315.GetHints()...) 52 // emulated curves 53 solver.RegisterHint(sw_emulated.GetHints()...) 54 // native curves 55 solver.RegisterHint(sw_bls12377.GetHints()...) 56 solver.RegisterHint(sw_bls24315.GetHints()...) 57 } 58 59 func init() { 60 RegisterHints() 61 }