AlexandreBelling 7334693931 Prover(perf): faster global constraints compilation (#704)
* bench(global): adds a benchmark for the global constraint compiler

* perf(merging): accumulates the factors before creating the expression

* perf(product): computes the ESH without using a smart-vector

* perf(factor): preallocations in the factorization algorithm

* perf(removeZeroes): implements a lazy allocation mechanism in removeZeroCoeffs

* perfs(alloc): counts the ret elements before returning in expandTerms to minimze the number of allocations.

* perf(factor): use an integer map instead of a field.Element map when possible

* fixup(expands): fix the skip condition for term expansion

* perf(constructor): improves the immutable constructors to reduce the number of calls to NewProduct and NewLinComb

* feat(repr): adds a json repr function to help debugging

* test(constructor): cleans the test of the constructors

* perf(factor): address maps using the first limb of a field.Element instead of the full field.Element

* fixup(commit): adds missing file in previous commit

* perf(factor): reduce the number of calls to rankChildren

* perf(rmpolyeval): creates the equivalent expression more directly to save on unnecessary optims

* perf(factors): use a counter in getCommonProdParentOfCs

* perf(factor): remove map copy from findGdChildrenGroup and replace getCommonProdParent by a simpler function

* clean(factor): remove unneeded function and imports

* feat(utils): adds a generic sort interface implementation

* perf(rankChildren): lazy allocation of the map to save on allocations

* perf(factorize): reduces the loop-bound for factorizeExpression

* (chore): fix a missing argument and format gofmt

* feat: readd test

---------

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
2025-03-21 20:55:54 +09:00
2025-03-18 11:58:12 +01:00
2025-03-13 20:04:19 +11:00
2024-12-20 23:34:59 +11:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-10-07 19:14:48 +03:00
2024-07-31 18:17:20 +02:00
2024-10-28 09:35:23 +00:00
2024-10-28 09:35:23 +00:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-12-20 23:34:59 +11:00
2025-03-18 11:58:12 +01:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00

Linea zkEVM

Twitter Follow Discord License Codecov

This is the principal Linea repository. It mainly includes the smart contracts covering Linea's core functions, the prover in charge of generating ZK proofs, the coordinator responsible for multiple orchestrations, and the Postman to execute bridge messages.

It serves developers by making the Linea tech stack open source under the Apache 2.0 license.

What is Linea?

Linea is a developer-ready layer 2 network scaling Ethereum. It's secured with a zero-knowledge rollup, built on lattice-based cryptography, and powered by Consensys.

Get started

If you already have an understanding of the tech stack, use our Get Started guide.

Looking for the Linea code?

Linea's stack is made up of multiple repositories, these include:

  • linea-monorepo: The main repository for the Linea stack & network
  • linea-besu: Fork of Besu to implement the Linea-Besu client
  • linea-sequencer: A set of Linea-Besu plugins for the sequencer and RPC nodes
  • linea-tracer: Linea-Besu plugin which produces the traces that the constraint system applies and that serve as inputs to the prover
  • linea-constraints: Implementation of the constraint system from the specification
  • linea-specification: Specification of the constraint system defining Linea's zkEVM

Linea abstracts away the complexity of this technical architecture to allow developers to:

... and more.

How to contribute

Contributions are welcome!

Guidelines for Non-Code and other Trivial Contributions

Please keep in mind that we do not accept non-code contributions like fixing comments, typos or some other trivial fixes. Although we appreciate the extra help, managing lots of these small contributions is unfeasible, and puts extra pressure in our continuous delivery systems (running all tests, etc). Feel free to open an issue pointing to any of those errors, and we will batch them into a single change.

  1. Create an issue

If the proposed update is non-trivial, also tag us for discussion.

  1. Submit the update as a pull request from your fork of this repo, and tag us for review.

Include the issue number in the pull request description and (optionally) in the branch name.

Consider starting with a "good first issue".

Before contributing, ensure you're familiar with:

Description
No description provided
Readme 103 MiB
Languages
Go 43.2%
Kotlin 24.5%
TypeScript 19.6%
Java 9.3%
MDX 1.2%
Other 2%