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.9.0 placeholder #297

Merged
merged 35 commits into from
Jan 5, 2023
Merged

v0.9.0 placeholder #297

merged 35 commits into from
Jan 5, 2023

Conversation

gbotrel
Copy link
Collaborator

@gbotrel gbotrel commented Jan 5, 2023

No description provided.

gbotrel and others added 30 commits August 17, 2022 14:07
go1.19: update CI and run gofmt on files
* perf: first optimization and "tricky" test

* perf: add branch-carry perf and some docs

* docs: minor simplification

* feat: goldilocks mul codegen, some mathfmt

* style: some mathfmt
* test(MSM): sample some/all zero points in the MSM tests

* style: go1.19 fmt
[perf] save 4 muls in ext-Jac add
[perf] Faster G2 subgroup membership on BN254
…257)

* feat: remove special amd64_adx build tag path

* feat: get rid of adx build tag for e2

* docs: add generator mul decision strategy docs

* feat: generate unoptimized CIOS as default fallback

* feat: one more step towards purego vs amd64

* feat: added purego build tag for field arithmetic

* feat: replaced x86 optimized purego code with arm64 optimized

* docs: generate mul doc for field arithmetic

* docs: move generator mul doc to template

* build: ensure we run test with purego build tag

* style: update typo in comments
* feat: ported msm-affine

* build: updated go.mod to go 1.18 req

* feat: started to factorize msm impl through generics

* feat,style: factorize code between extjac and affine msm using generics

* docs: added a todo in tmpl

* feat: partitionScalars return list of digits unpacked

* feat: gymnastic to ensure buckets are on the stack -- compiler hints

* feat: toying with batch size

* perf: msm affine OK on x86

* test: gen scalars and bases in parallel

* test: add BatchAdd benchmark

* feat: add bitset to do quick bucket presence check in batch

* feat: restored split msm logic

* fix: restore previous way to generate scalars in benches

* fix: fix splitting logic in msm

* feat: store neg(P) and P in opposite sides of batch add input slice

* feat: revert part of previous commit

* feat: since we cap c==16 we may as well use uint16

* perf: allocate batch affine arrays on the stack with generics

* build: fix import in template

* feat: use nbBits+1 instead of nbWords*64 for partitionScalars

* style: cosmetics

* style: code cleaning

* feat: added chunkStats instead of small values

* test: added msm benchmarks with small values and redundancy

* test: update worst case benchmark for batch affine msm

* feat: start to add statistics when parsing scalars in msm

* checkpoint

* checkpoint

* checkpoint

* style: added comments and clean msm

* fix: fix for small window size no need for stats

* test: restore test for all C

* test: restore bench batchadd

* bug: bug when c==1 msm ext jac incorrect

* test: added cross msm tests

* style: make staticcheck happier by code generating bucket sizes in clear

* feat: deal with doubling edge case using other set of buckets

* test: add some doublings in msm test

* fix: msm partitionScalar - handle edge cases with carry

* fix: add panic in generator when c > 16

* perf: remove 3 muls by 1 in batchAdd

* docs: add comment regarding double(infinity) in ext-Jac

Co-authored-by: Youssef El Housni <youssef.housni21@gmail.com>
* docs: added audit.pdf and updated link in README

* Fix: typos

Fix: typos

Co-authored-by: Gautam Botrel <gautam.botrel@gmail.com>
Co-authored-by: Youssef El Housni <youssef.elhousni@consensys.net>
* feat: field.Hash

* fix: circular dependency

* fix: minor errors

* fix: generate goldilocks

* style: a better package name
* feat: field.Hash

* fix: circular dependency

* fix: minor errors

* fix: generate goldilocks

* style: a better package name

* fix: fix #267 Inverse -> Exp -> Inverse

Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
* feat: pedersen commitment for bn254

* feat: generic pedersen

* fix: Element.IsOne()

* refactor: pointers are probably not worth it

Co-authored-by: Gautam Botrel <gautam.botrel@gmail.com>
* checkpoint

* feat: replace partitionScalarOld by partitionScalar

* fix: take account last window size can be 1 extra bit

* fix: adjust cost function in batch scalar mul
…ndian` (#286)

* refactor: element.SetBytes() now returns error

* feat: adds element.BigEndian...

* feat: added element.LittleEndian...
* feat: move internal/ dependencies to field elements into gnark-crypto/field

* fix: close #218 mutualize big.Int pool accross field implementations

* fix: bigIntPool -> field.BigIntPool

* fix: fix #270 exposes field generator correctly
* refactor: killing ToMont and FromMont

* build: re-ran go generate

* refactor: replace couple of fromMont to Bits()
yelhousni and others added 5 commits December 21, 2022 12:58
* feat: first sumcheck attempt. Need specialized fiatshamir

* feat: generic sumcheck prover and verifier

* fix: single multilin test works

* fix: some debugging

* fix: Multilin tests with toy input-independent hash work

* style: improved comments

* feat: MORE ABSTRACTION 🥲 Evaluating the final claim may be hard

* feat: some gkr; claim/subclaim in sumcheck seems untenable

* refactor: remove subclaim class

* feat: some gkr prover stuff

* feat: gkr sumcheck combine and computeGJ

* feat: gkr prover

* fix: use ProveFinalEval, make member vars of proof public

* feat: Verify stub. shared claim mgmt structure. prover refactor to come

* feat: gkr verifier

* test: simplest possible test, two instances of an identity gate

* fix: an attempt at input verification

* test: failing test for mul gate

* test: fundamental flaw found in computeGJ

* fix: computeGJ works correctly for mul gate

* fix: mul gate test passes

* fix: single input two identity gates test fixed, but fails

* fix: remove challengeSeed from sumcheck input

* test: more usable message counter

* fix: many instances of small circuits

* test: more tests, mimc circuit fails

* test: some extra logging for 16M memory failure

* style: don't name unused variables

* feat: just a few lines

* feat: some experimental rational

* feat: codegen for sumcheck

* feat: neg, sub, equal, double

* feat: codegen for gkr

* fix: some codegen mistakes

* feat: all necessary functions for the polynomial package

* fix: fewer gkr test instances by default

* feat: polynomial codegen to use simpler FieldDependency data structure

* feat: more smallrational features

* feat: sumcheck for rationals

* feat: Load test circuit and test hash function

* feat: identity gate, 2 instances test on Q - prover side

* fix: id circuit verification passes

* test: vectors: more

* test: mimc; rational overflowing. TODO: Replace int64 with big.Int

* test: mimc test fails, most likely due to overflow

* feat: small_rational to use big.Int underneath

* test: rational using big.Int is a failure

* fix: no in-place operations

* fix: gkr tests on rationals pass

* feat: better polynomial.Text for bn254

* feat: code generation for poly.Text

* feat: autogen gkr tests

* feat: gkr test vector codegen works for rationals

* fix: codegen for gkr test cases, compiles

* fix: setElement method that would work on fr and rationals

* fix: setElement more consistent with SetInterface

* fix: no compile errors, rational cases pass

* fix: all gkr tests pass

* fix: no redeclaring "err" to make staticcheck happy

* fix: better string search to make staticcheck happy

* fix: more staticcheck fixes

* feat: remove unused test hash entries

* style: rename rational_cases to test_vectors

* fix: restored hash elements incorrectly marked as unnecessary

* refactor: smallRational out of gkr

* feat: parsing polynomials; more trouble than worth

* refactor: move some routines from gkrVectors

* test: a simple test vector for sumcheck

* test: trilinear - single claim

* style: format

* feat: a first attempt at separate test vector utils

* fix: some corrections for rationals

* fix: rough edges for rationals

* feat: test vector utils for all

* refactor: generify most gkr test vector ops

* fix: minor ones

* fix: wrong type for wireAssignent

* feat!: autogenerate test vector generator. crashes :p

* fix: snapshot: gkr test vector generation

* fix: manually edited main.go for gkr test vec gen

* fix: test vec gen works

* fix: remove auto-generated test files

* refactor: remove "proofEquals" from gkr test vgen

* fix: snapshot for hash inconsistency error

* fix: still inconsistency betw rational and bn254

* fix: save new hash entries

* fix: writeKey quotation marks

* fix: remove unreachable return

* test: add failing verification tests

* style: remove some dead code

* feat: basic benchmarking

* perf: reduced many memory leaks to two

* test: bigger instances

* feat!: pool class, functions cleaned up

* feat: clean ups

* perf: some rudimentary parallelism

* feat: generic pool

* Revert "feat: generic pool"

This reverts commit e720cd3.

* feat: generified benchmark, parallelism and top sort

* fix: errors in rational sumcheck

* fix: an "evaluate" missing the pool argument

* fix: free mallocs

* revert: roll back cgo in memory management

* fix: remove "enormousArray" hack, minimize unsafe.Pointer use

* fix: yoda, multi-fan-out input bug

* feat: generify multi-fan-out input bugfix

* style: remove unnecessary variable

* test: vector with 4 instances

* fix: gofmt

* feat: three kinds of topological sort

* chore: remove two other topological sorts

* chore: setNbOutputs covered by topSort now

* fix: bn254 seems correct. test vector reordering needed

* feat: SliceToElementSlice to be generic

* feat: generify gkr.tmpl

* feat: some test generification

* feat: generified gkr tests. test case generation still not working

* fix: generification

* chore: delete temp files

* fix: reintroduce some deleted autogens

* fix: topological sort no longer group inputs and outputs

* fix: no expectation of ins/outs lumped together in tests

* fix: multi-counting outs to the same wire

* fix: static checks

* refactor: sumcheck and gkr to use fiatshamir package

* fix: bn254 sumcheck tests pass

* refactor: fixing gkr tests

* feat: small_rational to and from bytes

* feat: generify sumcheck changes

* refactor: remove unused file

* chore: remove codegen temp files

* feat: generify gkr changes

* feat: generify non-test vector gkr test changes

* refactor: gkr tests to work with fiatshamir.transcript

* fix: gkr_test files compile

* fix: gkr test case generator compiles

* fix: sumcheck testcase gen compiles

* fix: gkr challenges for SmallRational

* feat: generify gkr fixes

* test: MapHash consistency

* fix: no hardcoded fr.Element in sumcheck test case gen

* refactor: get rid of ParsedTestCase

* fix: some gkr test vec errors

* fix: staticcheck

* refactor: cleaner sumcheck test-vec generation

* fix: fake hash consistency

* fix: generify changes in small_rational maphashes

* fix: gkr test-vec gen errors

* feat: generify gkr test vec gen fixes

* fix: uncomment gkr test vec gen

* fix: staticcheck

* refactor: move all fake hashes to test_vector_utils

* fix: MessageCounter.Reset

* feat: generify MessageCounter fix

* fix: sumcheck claim test

* fix: accepting bad proofs

* fix: sumcheck "bad proof accepted"

* fix: ignored errors in sumcheck.setupTranscript

* style: some simplification, remove some dead code

* revert: don't doubly hash finalEvalProof when an input wire is skipped

* fix: no repeated claims in FinalEvalProof

* test: replicate failure in small_rational

* fix: noRedundancy bugs

* fix: more noRedundancy bugs

* fix: verifier input building bug

* fix: generify the fix

* fix: correct field type

* feat: ListHash

* fix: package name
* docs: added audit.pdf and updated link in README

* internal/field: avoid unnecessary assignement

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* generate: run go generate

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* build: go generate no gkr for secp

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Youssef El Housni <youssef.elhousni@consensys.net>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
* add Decompose

* feat: bn254 -> utils/decompose.go

* feat: added test for decompose

* feat: code gen for decompose + modif mimc

* feat: commit template

* fix: fixed bad import fr

* feat: mimc.Write returns error if bad input

* fix: fixed ecdsa example

Co-authored-by: zhiqiangxu <652732310@qq.com>
Co-authored-by: Gautam Botrel <gautam.botrel@gmail.com>
@gbotrel gbotrel added this to the v0.9.0 milestone Jan 5, 2023
@gbotrel gbotrel merged commit a628c68 into master Jan 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants