-
Notifications
You must be signed in to change notification settings - Fork 127
Prover: Beta-v4.4 Osaka #1764
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
base: main
Are you sure you want to change the base?
Prover: Beta-v4.4 Osaka #1764
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1764 +/- ##
============================================
- Coverage 64.51% 64.48% -0.04%
+ Complexity 1523 1522 -1
============================================
Files 396 396
Lines 14382 14381 -1
Branches 1545 1545
============================================
- Hits 9279 9274 -5
- Misses 4493 4497 +4
Partials 610 610
*This pull request uses carry forward flags. Click here to find out more. 🚀 New features to boost your workflow:
|
Co-authored-by: Bogdan Ursu <[email protected]>
…1713) * feat: fix public-input support for conflations without any user transactions * minor(logs): adds info in the panic message when finding two global constraints with different domain size * fix: panic message for local openings on verifier cols * Revert "fix: panic message for local openings on verifier cols" This reverts commit 9551e4b. * fix: make NBytes chain id not be a verifier col * reverting config files * fix: missing limitless advice for new ChainID fetcher --------- Co-authored-by: AlexandreBelling <[email protected]>
* feat(sonarqube): sonar and jacoco tasks * feat(sonarqube): xml format * feat(sonarqube): at project root * feat(sonarqube): add README and test from scratch' * feat(sonarqube): test report for test and reference test * feat(sonarqube): add jacoco step in github workflow * fix(sonarqube): jacoco ref test path * feat(sonarqube): add all src for ref test jacoco report * feat(sonarqube): add html to test report * feat(sonarqube): html required * feat(sonarqube): add lombok config * feat(sonarqube): add external class * feat(sonar): add exec ref test * feat(sonarqube): add unit exec * feat(sonarqube): update doc to concatenate 2 reports * feat(sonarqube): add properties and test concatenate task
…e clusters Single-submodule clusters like MODEXP_LARGE should preserve their BaseSize from discovery advice, as the reduction algorithm is meant to balance multiple submodules, not optimize a single one. This fixes panic "nbPub=256 data-size=2 name=MODEXP_LARGE" when the MODEXP_LARGE module was incorrectly reduced from 256 to 2 rows.
commit c5117f9 Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:48:12 2025 +0000 feat: add default circuit sizes commit 439b911 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 21:08:48 2025 +0000 fix: more unique constraint names commit be09cf7 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:52:05 2025 +0000 fix: incorrect limb count for scalar commit 206ee01 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:48:05 2025 +0000 fix: ensure unique constraints commit afbfaee Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:43:31 2025 +0000 fix: store new rangechecker commit dd4e1eb Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:20:59 2025 +0000 chore: clarify error message commit f76c7c4 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:18:36 2025 +0000 chore: remove excessive logging commit b83d78c Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:14:15 2025 +0000 fix: compilation errors commit 6f60e01 Merge: 5fdb039 cbf344e Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:12:33 2025 +0000 Merge branch 'main' into feat/bls-glue commit 5fdb039 Author: Ivo Kubjas <[email protected]> Date: Fri Sep 26 08:14:18 2025 +0000 test: make source local commit 4d526ed Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 22:18:09 2025 +0000 feat: integrate BLS precompile with zkevm commit 81a8876 Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 22:17:48 2025 +0000 docs: limits documentation commit a102526 Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 22:17:26 2025 +0000 feat: precise bls source getters commit d312c3d Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 13:14:35 2025 +0000 test: regenerate testdata commit b392c30 Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 11:36:29 2025 +0000 fix: align G2 tower order with gnark commit e823165 Author: Ivo Kubjas <[email protected]> Date: Fri Sep 26 13:09:09 2025 +0000 feat: remove circuit number limits commit 152d2a0 Author: Ivo Kubjas <[email protected]> Date: Wed Sep 24 11:28:54 2025 +0000 test: update included test files commit 3bf1ff6 Author: Ivo Kubjas <[email protected]> Date: Wed Sep 24 10:49:29 2025 +0000 fix: change ordering of serialized values commit c1bb5b6 Author: Ivo Kubjas <[email protected]> Date: Thu Sep 18 09:36:56 2025 +0000 chore: go mod tidy commit 9b138df Author: Ivo Kubjas <[email protected]> Date: Fri Sep 5 11:37:24 2025 +0000 test: add BLS testdata generator commit 44d9251 Author: Ivo Kubjas <[email protected]> Date: Tue Sep 2 11:05:12 2025 +0000 test: include minimal number of test files commit 81d4abf Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:09:24 2025 +0000 feat: add BLS precompile glue commit 6902d28 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:09:01 2025 +0000 feat: csvtraces fill up to column size commit ae6bc69 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:07:38 2025 +0000 fix: gnark schema walker field commit 896ba98 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:07:17 2025 +0000 fix: typed builder commit af228c7 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:06:50 2025 +0000 fix: remove unused test engine option commit 8bbd5ba Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:06:38 2025 +0000 fix: gnark logderiv interface change commit 2d1d55e Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:05:50 2025 +0000 chore: cherry pick gkr changes from smallfield commit b6a374a Author: Ivo Kubjas <[email protected]> Date: Thu Sep 18 09:35:46 2025 +0000 chore: gnark dependency update
commit 7b78570 Author: Ivo Kubjas <[email protected]> Date: Mon Nov 24 12:50:12 2025 +0000 chore: gnark update to master commit 9c19167 Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 03:19:28 2025 +0000 fix: ensure assignment is called commit 03437cf Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:53:20 2025 +0000 feat: define p256 input instance count commit 1cf0482 Merge: 81d6377 c5117f9 Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:50:51 2025 +0000 Merge branch 'feat/bls-glue' into feat/secp256r1 commit c5117f9 Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:48:12 2025 +0000 feat: add default circuit sizes commit 81d6377 Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:47:29 2025 +0000 feat: loat p256 module commit abedf2e Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:45:28 2025 +0000 fix: correct instance number calculation commit 0aab08d Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:44:58 2025 +0000 docs: circuit size commit bdfa261 Author: Ivo Kubjas <[email protected]> Date: Wed Nov 19 02:44:24 2025 +0000 chore: gnark update commit 1ae0acc Author: Ivo Kubjas <[email protected]> Date: Tue Nov 18 12:06:59 2025 +0000 docs: refer to test vector location commit 2aa908b Author: Ivo Kubjas <[email protected]> Date: Tue Nov 18 12:05:31 2025 +0000 test: include generated tests commit d4094d3 Author: Ivo Kubjas <[email protected]> Date: Tue Nov 18 12:05:18 2025 +0000 test: implement unit tests commit dae2651 Author: Ivo Kubjas <[email protected]> Date: Tue Nov 18 12:05:05 2025 +0000 test: do not write noop test cases commit 119bd71 Author: Ivo Kubjas <[email protected]> Date: Tue Nov 18 12:04:38 2025 +0000 feat: implement inputfiller commit 7620614 Author: Ivo Kubjas <[email protected]> Date: Tue Nov 18 11:27:39 2025 +0000 test: add testdata generator commit 332f497 Author: Ivo Kubjas <[email protected]> Date: Tue Nov 18 11:27:07 2025 +0000 fix: enforce public vars commit cb05285 Author: Ivo Kubjas <[email protected]> Date: Mon Nov 17 11:45:14 2025 +0000 chore: implement p256verify glue commit e19129c Author: Ivo Kubjas <[email protected]> Date: Mon Nov 17 11:44:58 2025 +0000 chore: gnark update commit 439b911 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 21:08:48 2025 +0000 fix: more unique constraint names commit be09cf7 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:52:05 2025 +0000 fix: incorrect limb count for scalar commit 206ee01 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:48:05 2025 +0000 fix: ensure unique constraints commit afbfaee Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:43:31 2025 +0000 fix: store new rangechecker commit dd4e1eb Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:20:59 2025 +0000 chore: clarify error message commit f76c7c4 Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:18:36 2025 +0000 chore: remove excessive logging commit b83d78c Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:14:15 2025 +0000 fix: compilation errors commit 6f60e01 Merge: 5fdb039 cbf344e Author: Ivo Kubjas <[email protected]> Date: Sun Nov 16 20:12:33 2025 +0000 Merge branch 'main' into feat/bls-glue commit 5fdb039 Author: Ivo Kubjas <[email protected]> Date: Fri Sep 26 08:14:18 2025 +0000 test: make source local commit 4d526ed Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 22:18:09 2025 +0000 feat: integrate BLS precompile with zkevm commit 81a8876 Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 22:17:48 2025 +0000 docs: limits documentation commit a102526 Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 22:17:26 2025 +0000 feat: precise bls source getters commit d312c3d Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 13:14:35 2025 +0000 test: regenerate testdata commit b392c30 Author: Ivo Kubjas <[email protected]> Date: Mon Sep 29 11:36:29 2025 +0000 fix: align G2 tower order with gnark commit e823165 Author: Ivo Kubjas <[email protected]> Date: Fri Sep 26 13:09:09 2025 +0000 feat: remove circuit number limits commit 152d2a0 Author: Ivo Kubjas <[email protected]> Date: Wed Sep 24 11:28:54 2025 +0000 test: update included test files commit 3bf1ff6 Author: Ivo Kubjas <[email protected]> Date: Wed Sep 24 10:49:29 2025 +0000 fix: change ordering of serialized values commit c1bb5b6 Author: Ivo Kubjas <[email protected]> Date: Thu Sep 18 09:36:56 2025 +0000 chore: go mod tidy commit 9b138df Author: Ivo Kubjas <[email protected]> Date: Fri Sep 5 11:37:24 2025 +0000 test: add BLS testdata generator commit 44d9251 Author: Ivo Kubjas <[email protected]> Date: Tue Sep 2 11:05:12 2025 +0000 test: include minimal number of test files commit 81d4abf Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:09:24 2025 +0000 feat: add BLS precompile glue commit 6902d28 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:09:01 2025 +0000 feat: csvtraces fill up to column size commit ae6bc69 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:07:38 2025 +0000 fix: gnark schema walker field commit 896ba98 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:07:17 2025 +0000 fix: typed builder commit af228c7 Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:06:50 2025 +0000 fix: remove unused test engine option commit 8bbd5ba Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:06:38 2025 +0000 fix: gnark logderiv interface change commit 2d1d55e Author: Ivo Kubjas <[email protected]> Date: Fri Aug 29 15:05:50 2025 +0000 chore: cherry pick gkr changes from smallfield commit b6a374a Author: Ivo Kubjas <[email protected]> Date: Thu Sep 18 09:35:46 2025 +0000 chore: gnark dependency update
…stributed module Fix panic "local constraint has both negative and positive offsets" in ChainIDFetcher introduced in commit 62308c0. The constraint had mixed offsets (ChainID at 0, DataLo at -3), which the distributed module rejects when handling segmented columns in limitless. This pattern should ideally be supported but currently triggers a validation error. As a workaround, apply ChainIDOffset=-3 to both constraint sides and add MustBeConstant(fetcher.ChainID). Since ChainID is constant, ChainID[-3] ≡ ChainID[0], preserving semantics while satisfying the distributed module's offset uniformity requirement.
The size reduction algorithm now respects BaseSize as a minimum floor for submodules with Plonk circuits (NbConstraintsOfPlonkCirc > 0), preventing reduction below the required public input count while still optimizing non-circuit submodules. Fixes panic: nbPub=256 data-size=2 name=MODEXP_LARGE nbPub=384 data-size=256 selector-size=256, name=BLS_ADD_G1_ALIGNMENT
Register all missing BLS and P256 circuit types in the serialization
registry to fix TestSerdeZKEVMFull failures.
The serialization requires explicit registration of all types
that may be serialized as interface implementations. BLS and P256verify
packages use private (lowercase) circuit types that need to be exported
via type aliases for registration.
Changes:
- Add prover/zkevm/prover/bls/serialization_types.go
- Export all BLS circuit type instantiations (G1/G2 variants)
- Covers Add, Mul, Map, Checkable (group/curve), MillerLoop, and
PointEval circuits
- Add prover/zkevm/prover/p256verify/serialization_types.go
- Export P256 verification circuit type
- Update prover/protocol/serialization/implementation_registry.go
- Import bls and p256verify packages
- Register all exported BLS circuit types
- Register P256 verification circuit type
Export private fields in BLS and P256verify modules to fix serialization errors in TestSerdeZKEVMFull. The serialization system cannot access private (lowercase) struct fields. This was causing warnings during serialization/deserialization: === RUN TestSerdeZKEVMFull time="2025-11-25T10:32:12Z" level=info msg="Starting to serialize:ZkEVM \n" field bls.BlsAdd.blsAddDataSource is not exported field bls.BlsAdd.alignedAddGnarkData is not exported field bls.BlsAdd.alignedCurveMembershipGnarkData is not exported field bls.BlsAdd.group is not exported field bls.BlsAdd.blsAddDataSource is not exported field bls.BlsAdd.alignedAddGnarkData is not exported field bls.BlsAdd.alignedCurveMembershipGnarkData is not exported field bls.BlsAdd.group is not exported field bls.BlsMsm.blsMsmDataSource is not exported field bls.BlsMsm.unalignedMsmData is not exported field bls.BlsMsm.group is not exported field bls.BlsMsm.blsMsmDataSource is not exported field bls.BlsMsm.unalignedMsmData is not exported field bls.BlsMsm.group is not exported field bls.BlsMap.blsMapDataSource is not exported field bls.BlsMap.alignedGnarkData is not exported field bls.BlsMap.group is not exported field bls.BlsMap.blsMapDataSource is not exported field bls.BlsMap.alignedGnarkData is not exported field bls.BlsMap.group is not exported field bls.BlsPair.blsPairDataSource is not exported field bls.BlsPair.unalignedPairData is not exported field bls.BlsPair.alignedMillerLoopData is not exported field bls.BlsPair.alignedFinalExpData is not exported field bls.BlsPair.alignedG1MembershipGnarkData is not exported field bls.BlsPair.alignedG2MembershipGnarkData is not exported field bls.BlsPointEval.blsPointEvalDataSource is not exported field bls.BlsPointEval.alignedGnarkData is not exported field bls.BlsPointEval.alignedFailureGnarkData is not exported field p256verify.P256Verify.p256VerifyDataSource is not exported field p256verify.P256Verify.p256VerifyGnarkData is not exported
summary from the Osaka(rc4) tracer PR https://github.com/Consensys/linea-monorepo/pull/1774/files#r2565069360 Remove modules: BLS = 0 POINT_EVAL = 0 Add new modules: PRECOMPILE_P256_VERIFY_EFFECTIVE_CALLS = 128 Rename modules: PrecompileBlsC1MembershipChecks --> PrecompileBlsC1MembershipCalls Update module limits: - increase the limit to 1024 PRECOMPILE_ECADD_EFFECTIVE_CALLS 256 -> 1024 - from 0 to PRECOMPILE_BLS_POINT_EVALUATION_EFFECTIVE_CALLS = 1 PRECOMPILE_POINT_EVALUATION_FAILURE_EFFECTIVE_CALLS = 2 PRECOMPILE_BLS_G1_ADD_EFFECTIVE_CALLS = 8 PRECOMPILE_BLS_G1_MSM_EFFECTIVE_CALLS = 4 PRECOMPILE_BLS_G2_ADD_EFFECTIVE_CALLS = 8 PRECOMPILE_BLS_G2_MSM_EFFECTIVE_CALLS = 4 PRECOMPILE_BLS_PAIRING_CHECK_MILLER_LOOPS = 8 PRECOMPILE_BLS_FINAL_EXPONENTIATIONS = 2 PRECOMPILE_BLS_MAP_FP_TO_G1_EFFECTIVE_CALLS = 4 PRECOMPILE_BLS_MAP_FP2_TO_G2_EFFECTIVE_CALLS = 4 PRECOMPILE_BLS_C1_MEMBERSHIP_CALLS = 8 PRECOMPILE_BLS_C2_MEMBERSHIP_CALLS = 8 PRECOMPILE_BLS_G1_MEMBERSHIP_CALLS = 8 PRECOMPILE_BLS_G2_MEMBERSHIP_CALLS = 8 Etc: Update mismatches: set BLS_REFERENCE_TABLE = 512 in config_default.go and trace_limit.go (this has been 512 in prod environment) set PRECOMPILE_MODEXP_EFFECTIVE_CALLS_4096 to 2 instead of 1
…MODEXP_EFFECTIVE_CALLS_4096
* (fix) fmt. module segment with full module name * (fix): add pragma handler for mimccodehash module
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements Beta-v4.4 Osaka, adding comprehensive support for BLS12-381 precompiles and P256 signature verification. The changes introduce multiple new cryptographic modules for Ethereum precompiles including BLS G1/G2 addition, multi-scalar multiplication, mapping, pairing operations, point evaluation (EIP-4844), and P256 signature verification (EIP-7951).
Key changes:
- Adds BLS12-381 precompile modules (G1/G2 Add, MSM, Map, Pairing, Point Evaluation)
- Implements P256 signature verification precompile
- Refactors ChainID fetching from RLP transactions to block data
- Updates test data structure with new IS_CHAINID column
- Adds distributed module logging improvement
Reviewed changes
Copilot reviewed 89 out of 96 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| prover/zkevm/zkevm.go | Integrates new BLS and P256Verify modules into main zkEVM structure |
| prover/zkevm/settings.go | Adds BLS and P256Verify limits to settings configuration |
| prover/zkevm/prover/publicInput/public_input.go | Refactors ChainID fetching from RLP to BlockData |
| prover/zkevm/prover/publicInput/fetchers_arithmetization/*.go | Implements new ChainIDFetcher and removes ChainID logic from RlpTxnFetcher |
| prover/zkevm/prover/p256verify/*.go | Complete P256 signature verification module implementation |
| prover/zkevm/prover/bls/*.go | Complete BLS12-381 precompile modules implementation |
| prover/protocol/distributed/module_witness.go | Fixes module name logging to use full string instead of first character |
Comments suppressed due to low confidence (3)
prover/zkevm/prover/publicInput/fetchers_arithmetization/chain_id_fetcher.go:1
- The comment states '-1 means no offset' but the constant is set to -3. This documentation is misleading and should clarify what -3 represents or remove the incorrect statement about -1.
prover/zkevm/prover/bls/testdata/testdata_generate_pointeval_types.go:1 - Corrected spelling of 'larg' to 'large'.
prover/zkevm/prover/publicInput/testdata/blockdata_mock.csv:1 - The new IS_CHAINID column lacks documentation explaining its purpose and when it should be set to 1. Consider adding a comment in the test file or accompanying documentation to clarify the semantics of this flag.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This PR implements issue(s) #
Checklist