Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.5.0 #126

Merged
merged 181 commits into from
Aug 23, 2021
Merged

v0.5.0 #126

merged 181 commits into from
Aug 23, 2021

Conversation

gbotrel
Copy link
Collaborator

@gbotrel gbotrel commented Aug 21, 2021

[v0.5.0] - 2021-08-20

Build

  • updated to latest gnark-crypto v0.5.0

Feat

  • add bls24-315 to gnark
  • PlonK implementation as-in-the-paper, with decent performance
  • removed gnarkd and examples/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

Fix

  • 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

Perf

  • 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)

Refactor

  • 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

  • test for Fiat Shamir gadget
  • added reference frontend.Compile benchmarks

ThomasPiellard and others added 30 commits April 30, 2021 16:26
PR to fix the non determinism of r1cs compilation
…rom and io.WriterTo unimplemented interfaces
feat: add support of bls24-315 curve
gbotrel and others added 27 commits August 18, 2021 12:37
Adds NbG1 and NbG2 apis on Groth16 Proving and Verifying Keys
@gbotrel gbotrel marked this pull request as ready for review August 23, 2021 16:07
@gbotrel gbotrel merged commit dc6a78e into master Aug 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment