This folder hosts a Linea tracing implementation for Besu based on an implementation in Go.
Tracing refers to the process of extracting data from the execution of an EVM client in order to construct large matrices known as execution traces. Execution traces are subject to the constraint system specified in the linea-specification repo and implemented in the tracer-constraints folder.
It serves developers by making the Lineth stack open source under the Apache 2.0 license.
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.
If you already have an understanding of the tech stack, use our Get Started guide.
Discover existing plugins and understand the plugin release process.
The Lineth stack is made up of multiple components, these include:
- This folder, tracer: Linea-Besu plugin which produces the traces that the constraint system applies and that serve as inputs to the prover
This repository contains the elements of the Lineth stack responsible for this process.
- lineth-monorepo: The main repository for the Lineth stack & Linea network in which this folder lives
- besu: Besu client
- linea-sequencer: A set of Linea-Besu plugins for the sequencer and RPC nodes
- tracer-constraints folder: 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.
Contributions are welcome!
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.
If the proposed update requires input, also tag us for discussion.
- 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:
- Our Lineth contribution guide
- Our Lineth code of conduct
- The Besu contribution guide, for Besu:Linea related contributions
- Our Security policy
To update the reference tests, follow the steps below:
- In tracer/reference-tests/build.gradle : update the
srcfromdownloadExecutionSpecFixturestask with theethereum-spec-testsrepo's new fixtures version you would like to update to - At the root, launch
-
./gradlew tracer:reference-tests:downloadExecutionSpecFixtures
-
./gradlew tracer:reference-tests:copyExecutionSpecFixtures
-
./gradlew tracer:reference-tests:generateExecutionSpecBlockchainTests
-
- Commit the changes
- You can launch all tests to ensure everything is passing locally with the command line below or on the CI with this GitHub Action
-
./gradlew tracer:reference-tests:referenceExecutionSpecBlockchainTests
-