Documentation ¶
Index ¶
- Variables
- type R1CS
- func (cs *R1CS) CurveID() ecc.ID
- func (cs *R1CS) FrSize() int
- func (cs *R1CS) GetNbCoefficients() int
- func (cs *R1CS) IsSolved(witness []fr.Element, opt backend.ProverOption) error
- func (cs *R1CS) ReadFrom(r io.Reader) (int64, error)
- func (cs *R1CS) Solve(witness, a, b, c []fr.Element, opt backend.ProverOption) ([]fr.Element, error)
- func (cs *R1CS) ToHTML(w io.Writer) error
- func (cs *R1CS) WriteTo(w io.Writer) (int64, error)
- type SparseR1CS
- func (cs *SparseR1CS) CurveID() ecc.ID
- func (cs *SparseR1CS) FrSize() int
- func (cs *SparseR1CS) GetNbCoefficients() int
- func (cs *SparseR1CS) IsSolved(witness []fr.Element, opt backend.ProverOption) error
- func (cs *SparseR1CS) ReadFrom(r io.Reader) (int64, error)
- func (cs *SparseR1CS) SetLoggerOutput(w io.Writer)
- func (cs *SparseR1CS) Solve(witness []fr.Element, opt backend.ProverOption) ([]fr.Element, error)
- func (cs *SparseR1CS) ToHTML(w io.Writer) error
- func (cs *SparseR1CS) WriteTo(w io.Writer) (int64, error)
Constants ¶
This section is empty.
Variables ¶
var ErrUnsatisfiedConstraint = errors.New("constraint is not satisfied")
ErrUnsatisfiedConstraint can be generated when solving a R1CS
Functions ¶
This section is empty.
Types ¶
type R1CS ¶
R1CS decsribes a set of R1CS constraint
func NewR1CS ¶
NewR1CS returns a new R1CS and sets cs.Coefficient (fr.Element) from provided big.Int values
func (*R1CS) GetNbCoefficients ¶
GetNbCoefficients return the number of unique coefficients needed in the R1CS
func (*R1CS) IsSolved ¶
IsSolved returns nil if given witness solves the R1CS and error otherwise this method wraps cs.Solve() and allocates cs.Solve() inputs
func (*R1CS) Solve ¶
func (cs *R1CS) Solve(witness, a, b, c []fr.Element, opt backend.ProverOption) ([]fr.Element, error)
Solve sets all the wires and returns the a, b, c vectors. the cs system should have been compiled before. The entries in a, b, c are in Montgomery form. a, b, c vectors: ab-c = hz witness = [publicWires | secretWires] (without the ONE_WIRE !) returns [publicWires | secretWires | internalWires ]
type SparseR1CS ¶
type SparseR1CS struct { compiled.SparseR1CS Coefficients []fr.Element // coefficients in the constraints // contains filtered or unexported fields }
SparseR1CS represents a Plonk like circuit
func NewSparseR1CS ¶
func NewSparseR1CS(ccs compiled.SparseR1CS, coefficients []big.Int) *SparseR1CS
NewSparseR1CS returns a new SparseR1CS and sets r1cs.Coefficient (fr.Element) from provided big.Int values
func (*SparseR1CS) CurveID ¶
func (cs *SparseR1CS) CurveID() ecc.ID
CurveID returns curve ID as defined in gnark-crypto (ecc.BLS12-381)
func (*SparseR1CS) FrSize ¶
func (cs *SparseR1CS) FrSize() int
FrSize return fr.Limbs * 8, size in byte of a fr element
func (*SparseR1CS) GetNbCoefficients ¶
func (cs *SparseR1CS) GetNbCoefficients() int
GetNbCoefficients return the number of unique coefficients needed in the R1CS
func (*SparseR1CS) IsSolved ¶
func (cs *SparseR1CS) IsSolved(witness []fr.Element, opt backend.ProverOption) error
IsSolved returns nil if given witness solves the R1CS and error otherwise this method wraps r1cs.Solve() and allocates r1cs.Solve() inputs
func (*SparseR1CS) ReadFrom ¶ added in v0.5.0
func (cs *SparseR1CS) ReadFrom(r io.Reader) (int64, error)
ReadFrom attempts to decode SparseR1CS from io.Reader using cbor
func (*SparseR1CS) SetLoggerOutput ¶ added in v0.5.1
func (cs *SparseR1CS) SetLoggerOutput(w io.Writer)
SetLoggerOutput replace existing logger output with provided one default uses os.Stdout if nil is provided, logs are not printed
func (*SparseR1CS) Solve ¶
func (cs *SparseR1CS) Solve(witness []fr.Element, opt backend.ProverOption) ([]fr.Element, error)
Solve sets all the wires. solution.values = [publicInputs | secretInputs | internalVariables ] witness: contains the input variables it returns the full slice of wires