Skip to content

Prover/limitless standardization #857

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

Conversation

AlexandreBelling
Copy link
Contributor

This PR does a large number of changes focusing on:

  • Standardizing the segment proofs
  • Being able to run the bootstrapper with very high-limits and limiting the impact on the memory and runtime
  • Improving the speed of the proof aggregation overall

Checklist

  • I wrote new tests for my new core changes.
  • I have successfully ran tests, style checker and build against my new changes locally.
  • I have informed the team of any breaking changes if there are any.

implements the predivision
optimize the logderivative implementation
@codecov-commenter
Copy link

codecov-commenter commented Apr 9, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 98.53%. Comparing base (13603c9) to head (32502be).

Additional details and impacted files
@@                            Coverage Diff                            @@
##             prover/limitless-top-level-rebased     #857       +/-   ##
=========================================================================
+ Coverage                                 67.82%   98.53%   +30.70%     
=========================================================================
  Files                                       326       32      -294     
  Lines                                     13412      953    -12459     
  Branches                                   1355      230     -1125     
=========================================================================
- Hits                                       9097      939     -8158     
+ Misses                                     3753       14     -3739     
+ Partials                                    562        0      -562     
Flag Coverage Δ
hardhat 98.53% <ø> (ø)
kotlin ?

see 294 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 118 out of 119 changed files in this pull request and generated no comments.

Files not reviewed (1)
  • prover/go.mod: Language not supported
Comments suppressed due to low confidence (3)

prover/maths/common/smartvectors/smartvectors.go:335

  • Changing the behavior to return (nil, false) for vectors of length <= 1 may break downstream logic if callers expected a constant vector. Consider adding a comment or review caller assumptions to ensure this change is intended.
if len(w) <= 1 {

prover/crypto/mimc/gkrmimc/factory.go:242

  • Using %d to format big.Int values may cause formatting issues; consider using %s or %v to safely print big integers.
utils.Panic("Not the BLS field %d != %d", f, field.Modulus())

prover/.golangci.yml:7

  • [nitpick] Disabling gofmt in the linter configuration may lead to inconsistent formatting; verify that formatting is being enforced through other means to avoid style issues.
# - gofmt

@AlexandreBelling AlexandreBelling merged commit 1a3db29 into prover/limitless-top-level-rebased Apr 9, 2025
15 of 16 checks passed
@AlexandreBelling AlexandreBelling deleted the prover/limitless-standardization branch April 9, 2025 21:17
ivokub pushed a commit that referenced this pull request Jun 18, 2025
* feat(precompiles): parametrize better the nb of input per instance

* test(affinity): adds a test with the affinity

* fix(limitless): debug the affinity system

* feat(recursion): uses the fixed number of row parameter

* fix(gnark-verifier): fix the gnark verifier

* fix(lane): change a constraint in the lane package to make it work

* chores(zkevm.bin): updates the zkevm.bin to work with d855c03

* fix(permutation); fix compilation error coming from conflict and clean the folder

* feat(mimc): implements an external hasher builder

* clean(plonk-in-wizard): reorganize the package handling plonk in wizard

* reorg(counterPrecomputed): creates a specific type of precomputed columns that caches itself

* feat(plonk): implements the external-checker feature

* feat(mimc): adds a selector feature for the MiMC query

* feat(distribution): uses the external hasher to build the recursion circuit.

* feat(distribution): grouping the LPP modules

* feat(test): adds back the LPP part of the tests

* feat(wizard): adds verify until round

* fix(arcane): remove the NormalizeOffset

* clean(dist): sanity check the intermediate proof

* chores(gnark): updates gnark version to latest main and port the values

* feat(stackframe): implements a helper to return callframes of the calling context

* perf(smartvectors): adds a routine to optimize the right padded vectors

* org(factory): hasher factory does not require an API to return a hasher

* feat(modexp): adds a limit for the modexp 4096

* fix the hash-checker
implements the predivision
optimize the logderivative implementation

* feat(smart-vectors): implements iterators for smart-vectors

* feat(field): adds a FromBool method

* perf(polyeval): adds a fast-path to PolyEval when all inputs are constants where we don't need to allocate

* feat(smartvectors): adds iterators and GetPtr functionalities to the interface

* perf(mimc): revamp the mimc compiler to be more space-efficient

* feat(dedicated): adds a bit decomposition wizard

* feat(ternary): adds a ternary wizard

* feat(hashing): adds an horizontal hash dedicated wizard

* feat(merkle): adds a flat-merkle proof dedicated wizard

* feat(utils): adds SpliceExact Bytes32.SetField and a few iterators functions

* feat(dedicated): adds a [Last] method

* perf(zkevm): makes the vector allocation faster

* perf(symbolic): skips the copy-slice when the result of a chunk is full-zero

* perf(logerivsum): makes the log derivative sum assignment more efficient

* feat(dist): improves the distributed wizard

* feat: review the public input fetching

* feat(ts-fetcher): duplicate columns to have clean module separation

* fix(maintest): runs the normal proof more efficiently

* chores(gkr): reflect the API changes in the gkr frontend to gkrmimc

* chores(go.mod): update gnark version to v0.12.1-0.20250409125015-1e252ace2ab9

* chores(tests): skip the big tests of the distributed prover so that they are not run by the CI

* fix(lint): fix ineffectual assignment

* back with the old linter

* fix(tests): fix the padding sanity-checks in the limb decomposition
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.

2 participants