Skip to content

Conversation

@gusiri
Copy link
Contributor

@gusiri gusiri commented Nov 21, 2025

This PR implements issue(s) #

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.

@codecov-commenter
Copy link

codecov-commenter commented Nov 21, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.48%. Comparing base (270a68d) to head (a114101).

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              
Flag Coverage Δ *Carryforward flag
hardhat 96.20% <ø> (ø)
kotlin 62.04% <ø> (-0.04%) ⬇️ Carriedforward from fdcfa98

*This pull request uses carry forward flags. Click here to find out more.
see 2 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.

gusiri and others added 6 commits November 21, 2025 15:49
…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]>
jonesho pushed a commit that referenced this pull request Nov 24, 2025
* 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
gusiri and others added 4 commits November 24, 2025 17:41
…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
@gusiri gusiri changed the title Prover: Beta-v4.5 Osaka Prover: Beta-v4.4 Osaka Nov 24, 2025
gusiri and others added 11 commits November 24, 2025 17:33
…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
gusiri and others added 3 commits November 27, 2025 10:53
* (fix) fmt. module segment with full module name

* (fix): add pragma handler for mimccodehash module
@gusiri gusiri requested a review from Copilot November 27, 2025 12:46
Copy link
Contributor

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.

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.

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.

6 participants