- updated to [email protected]
- adds solver hints
cs.NewHint
#139 - adds
cs.AssertIsDifferent
#131 - consistent support of
cs.Println
anddebugInfo
#142 - adds sanity check in
frontend.Compile
to ensure constraint validity - adds
witness.WriteSequence
to export expected witness sequence - adds sanity checks in R1CS and SparseR1CS solvers
- adds ToHTML on SparseR1CS and R1CS
- add witness reconstruction methods. closes #135
- IsZero is now implemented with 3 constraints #134
- Groth16 maximize number of infinity points in G2 part of the ProvingKey #130
- can constraint linear expressions to be boolean fixes #136
- eddsa: addition of isOnCurve check
- eddsa: S not splitted (s<r) + 2,3 Double instead of [cofactor]G
groth16.Prove
andplonk.Prove
takesbackend.ProverOption
as parameter- factorized structs between
compiled.SparseR1CS
andcompiled.R1CS
- assertions -> constraints in
R1CS
andSparseR1CS
- removed
r1c.SolvingMethod
in favor ofcs.NewHint
cs.IsZero
doesn't need curveID anymore
- ensure
frontend.Compile
is deterministic - added non regression for
cs.Println
anddebugInfo
traces - added circuit statistic non regression tests
- added plonk path to
integration_test.go
- added test from #136
- updated to latest gnark-crypto v0.5.0
- add bls24-315 to gnark
- PlonK implementation as-in-the-paper
- removed
gnarkd
andexamples/benchmark
- better errors for incorrect variable assignments #120
- call stack displayed when AssertIsEqual fails
- remove term.CoeffValue and use constant coeff ID for special values instead
- added NbG1 and NbG2 apis on groth16 Proving and Verifying keys closes #116
- addition of circuit component FiatShamir in std
- remove serialization test by default in assert helper
- addition of unit test for cyclo square in std/../e12.go
- LinearExpression implements Sort interface. replaced quickSort() by sort.Sort(...)
- SparseR1CS and PlonK objects implements io.ReaderFrom and io.WriterTo
- invalid gnark struct tag options return error at compile time fixes #111
- use of doubling formula instead of add(x,x) fixes #114
- create cbor decoder with MaxArrayElements set to max value
- fix #96
- r1cs compilation is deterministic, fixes #90
- plonk circuit compiled with no constraints #112
- frontend: compile takes optional expected constraint number to reserve memory and speed up compile time
- plonk: prover uses available CPUs, memory allocation clean up
- plonk: frontend have fast path for -1, 0, 1 and 2 coefficients. less mem allocs.
- replaced string concat in frontend with strings.Builder
- plonk: when doing fft on domainH with coset, don't scale zero values
- plonk: minor tweaks, removing un-needed bitreverse and mem allocs
- scs: sparse r1cs have fast path for special coeffs operations
- std: adds E2/E12 square and cyclo square in E12 (used FinalExp)
- mimc uses Write(data) then Sum() instead of Sum(data)
- Hash-->Sum in mimc gadget
- groth16: SizePublicWitness to NbPublicWitness
- renamed GetCurveID() to CurveID() on groth16 objects
- test for Fiat Shamir gadget
- added reference frontend.Compile benchmarks
- added
gnark
User Documentation - updated Go package documentation
- gnarkd: exposing gnark APIs through RPCs (#54)
- PlonK: adding functionality to convert a constraint system to PlonK constraints (#56)
- PlonK: added experimental support for PlonK backend
- inverse and div in frontend had some variable ID offset issues (#62)
- cs.Println doesn't trigger panic anymore
- Split S in EdDSA signature to prevent overflow #88
- fft: fixed the ordering of cosets factor according to DIF/DIT
- VerifyingKey data structure change to ensure compatibility with other impl and Solidity in Ethereum. Serialization format change.
- added witness serialization tests
- gurvy -> gnark-crypto
- moved fft in gnark-crypto
- bn256 -> bn254, bls377 -> bls12-377, etc. following gnark-crypto v0.4.0
- removed the Curve field in the R part of eddsa signature
- added frontend and backend fuzz.go, go-fuzz compatible format
- added cs.Println must not panic base test
- moved solidity integration tests in github.com/consensys/gnark-tests
- added integration fuzz test in backend/groth16/fuzz_test.go