cs

package
v0.6.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 5, 2022 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type R1CS

type R1CS struct {
	compiled.R1CS
	Coefficients []fr.Element // R1C coefficients indexes point here
}

R1CS decsribes a set of R1CS constraint

func NewR1CS

func NewR1CS(cs compiled.R1CS, coefficients []big.Int) *R1CS

NewR1CS returns a new R1CS and sets cs.Coefficient (fr.Element) from provided big.Int values

func (*R1CS) CurveID

func (cs *R1CS) CurveID() ecc.ID

CurveID returns curve ID as defined in gnark-crypto

func (*R1CS) FrSize

func (cs *R1CS) FrSize() int

FrSize return fr.Limbs * 8, size in byte of a fr element

func (*R1CS) GetConstraints added in v0.6.1

func (cs *R1CS) GetConstraints() [][]string

GetConstraints return a list of constraint formatted as L⋅R == O such that [0] -> L, [1] -> R, [2] -> O

func (*R1CS) GetNbCoefficients

func (cs *R1CS) GetNbCoefficients() int

GetNbCoefficients return the number of unique coefficients needed in the R1CS

func (*R1CS) IsSolved

func (cs *R1CS) IsSolved(witness *witness.Witness, opts ...backend.ProverOption) error

IsSolved returns nil if given witness solves the R1CS and error otherwise this method wraps cs.Solve() and allocates cs.Solve() inputs

func (*R1CS) ReadFrom

func (cs *R1CS) ReadFrom(r io.Reader) (int64, error)

ReadFrom attempts to decode R1CS from io.Reader using cbor

func (*R1CS) Solve

func (cs *R1CS) Solve(witness, a, b, c []fr.Element, opt backend.ProverConfig) ([]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 ]

func (*R1CS) WriteTo

func (cs *R1CS) WriteTo(w io.Writer) (int64, error)

WriteTo encodes R1CS into provided io.Writer using cbor

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.BW6-761)

func (*SparseR1CS) FrSize

func (cs *SparseR1CS) FrSize() int

FrSize return fr.Limbs * 8, size in byte of a fr element

func (*SparseR1CS) GetConstraints added in v0.6.1

func (cs *SparseR1CS) GetConstraints() [][]string

GetConstraints return a list of constraint formatted as in the paper https://eprint.iacr.org/2019/953.pdf section 6 such that qL⋅xa + qR⋅xb + qO⋅xc + qM⋅(xaxb) + qC == 0 each constraint is thus decomposed in [5]string with

[0] = qL⋅xa
[1] = qR⋅xb
[2] = qO⋅xc
[3] = qM⋅(xaxb)
[4] = qC

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 *witness.Witness, opts ...backend.ProverOption) error

IsSolved returns nil if given witness solves the SparseR1CS and error otherwise this method wraps cs.Solve() and allocates cs.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.ProverConfig) ([]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

func (*SparseR1CS) WriteTo added in v0.5.0

func (cs *SparseR1CS) WriteTo(w io.Writer) (int64, error)

WriteTo encodes SparseR1CS into provided io.Writer using cbor

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL