|
1 | 1 | # Besu Plugins related to tracer and sequencer functionality
|
2 | 2 |
|
3 |
| -A set of Linea plugins for the sequencer and RPC nodes. |
| 3 | +This repository hosts the implementation of the sequencer, the component of the Linea stack responsible for ordering transactions and building blocks, as well as executing them. It provides a set of [Hyperledger Besu](https://github.com/hyperledger/besu):Linea plugins. |
4 | 4 |
|
5 |
| -## Quickstart - Running [Linea Besu](https://github.com/Consensys/linea-besu) with plugins |
| 5 | +It serves developers by making the Linea tech stack open source under |
| 6 | +the [Apache 2.0 license](LICENSE). |
6 | 7 |
|
7 |
| -- compile linea-plugins `gradlew installDist` |
8 |
| -- copy jar file to besu runtime plugins/ directory (where you will run besu from, not where you're building besu) |
9 |
| -- add `LINEA` to besu config to enable the plugin RPC methods |
10 |
| - - rpc-http-api=\["ADMIN","ETH","NET","WEB3","LINEA"\] |
11 |
| -- start besu (command line or from IDE) and you should see plugins registered at startup |
12 |
| -- call the RPC endpoint eg: |
| 8 | +## What is Linea? |
13 | 9 |
|
14 |
| -```shell |
15 |
| - curl --location --request POST 'http://localhost:8545' --data-raw '{ |
16 |
| - "jsonrpc": "2.0", |
17 |
| - "method": "linea_estimateGas", |
18 |
| - "params": [ |
19 |
| - "from": "0x73b2e0E54510239E22cC936F0b4a6dE1acf0AbdE", |
20 |
| - "to": "0xBb977B2EE8a111D788B3477D242078d0B837E72b", |
21 |
| - "value": "0x123" |
22 |
| - ], |
23 |
| - "id": 1 |
24 |
| - }' |
25 |
| -``` |
| 10 | +[Linea](https://linea.build) 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](https://consensys.io). |
26 | 11 |
|
27 |
| -## Development Setup |
| 12 | +## Get started |
28 | 13 |
|
29 |
| -### Install Java 21 |
| 14 | +If you already have an understanding of the tech stack, use our [Quickstart](docs/quickstart.md) guide. |
30 | 15 |
|
31 |
| -### Native Lib Prerequisites |
| 16 | +### Looking for Plugins? |
32 | 17 |
|
33 |
| -Linux/MacOs |
34 |
| -* Install the relevant CGo compiler for your platform |
35 |
| -* Install the Go toolchain |
| 18 | +Discover [existing plugins](docs/plugins.md) and understand the [plugin release process](docs/plugin-release.md). |
36 | 19 |
|
37 |
| -Windows |
38 |
| -* Requirement [Docker Desktop WSL 2 backend on Windows](https://docs.docker.com/desktop/wsl/) |
| 20 | +## Looking for the Linea code? |
39 | 21 |
|
40 |
| -On release native libs are built for all the supported platforms, |
41 |
| -if you want to test this process locally run `./gradlew -PreleaseNativeLibs jar`, |
42 |
| -jar is generated in `sequencer/build/libs`. |
| 22 | +Linea's stack is made up of multiple repositories, these include: |
| 23 | +- This repo, [linea-sequencer](https://github.com/Consensys/linea-sequencer): A set of Linea-Besu plugins for the sequencer and RPC nodes |
| 24 | +- [linea-monorepo](https://github.com/Consensys/linea-monorepo): The main repository for the Linea stack & network |
| 25 | +- [linea-besu](https://github.com/Consensys/linea-besu): Fork of Besu to implement the Linea-Besu client |
| 26 | +- [linea-tracer](https://github.com/Consensys/linea-tracer): Linea-Besu plugin which produces the traces that the constraint system applies and that serve as inputs to the prover |
| 27 | +- [linea-constraints](https://github.com/Consensys/linea-constraints): Implementation of the constraint system from the specification |
| 28 | +- [linea-specification](https://github.com/Consensys/linea-specification): Specification of the constraint system defining Linea's zk-EVM |
43 | 29 |
|
44 |
| -### Run tests |
| 30 | +Linea abstracts away the complexity of this technical architecture to allow developers to: |
45 | 31 |
|
46 |
| -```shell |
47 |
| -# Run all tests |
48 |
| -./gradlew clean test |
| 32 | +- [Bridge tokens](https://docs.linea.build/developers/guides/bridge) |
| 33 | +- [Deploy a contract](https://docs.linea.build/developers/quickstart/deploy-smart-contract) |
| 34 | +- [Run a node](https://docs.linea.build/developers/guides/run-a-node) |
49 | 35 |
|
50 |
| -# Run only acceptance tests |
51 |
| -./gradlew clean acceptanceTests |
52 |
| -``` |
| 36 | +... and more. |
53 | 37 |
|
54 |
| -## IntelliJ IDEA Setup |
| 38 | +## How to contribute |
55 | 39 |
|
56 |
| -### Enable Annotation Processing |
| 40 | +Contributions of any kind are welcome! |
57 | 41 |
|
58 |
| -- Go to `Settings | Build, Execution, Deployment | Compiler | Annotation Processors` and tick the following |
59 |
| - checkbox: |
| 42 | +1. [Create an issue](https://github.com/Consensys/linea-sequencer/issues). |
| 43 | +> If the proposed update is non-trivial, also tag us for discussion. |
| 44 | +2. Submit the update as a pull request from your [fork of this repo](https://github.com/Consensys/linea-sequencer/fork), and tag us for review. |
| 45 | +> Include the issue number in the pull request description and (optionally) in the branch name. |
60 | 46 |
|
61 |
| -  |
| 47 | +Consider starting with a ["good first issue"](https://github.com/ConsenSys/linea-sequencer/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). |
62 | 48 |
|
63 |
| -______________________________________________________________________ |
| 49 | +Before contributing, ensure you're familiar with: |
64 | 50 |
|
65 |
| -NOTE |
| 51 | +- Our [Linea contribution guide](https://github.com/Consensys/linea-monorepo/blob/main/docs/contribute.md) |
| 52 | +- Our [Linea code of conduct](https://github.com/Consensys/linea-monorepo/blob/main/docs/code-of-conduct.md) |
| 53 | +- The [Besu contribution guide](https://github.com/Consensys/linea-monorepo/blob/main/https://wiki.hyperledger.org/display/BESU/Coding+Conventions), for Besu:Linea related contributions |
| 54 | +- Our [Security policy](https://github.com/Consensys/linea-monorepo/blob/main/docs/security.md) |
66 | 55 |
|
67 |
| -> This setting is required to avoid IDE compilation errors because of the [Lombok](https://projectlombok.org/features/) |
68 |
| -> library used for code generation of boilerplate Java code such as: |
69 |
| -> |
70 |
| -> - Getters/Setters (via [`@Getter/@Setter`](https://projectlombok.org/features/GetterSetter)) |
71 |
| -> - Class log instances (via [`@Slf4j`](https://projectlombok.org/features/log)) |
72 |
| -> - Builder classes (via [`@Builder`](https://projectlombok.org/features/Builder)) |
73 |
| -> - Constructors ( |
74 |
| -> via [`@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor`](https://projectlombok.org/features/constructor)) |
75 |
| -> - etc. |
76 |
| -> |
77 |
| -> Learn more about how Java annotation processing |
78 |
| -> works [here](https://www.baeldung.com/java-annotation-processing-builder). |
79 | 56 |
|
80 |
| -______________________________________________________________________ |
| 57 | +### Useful links |
81 | 58 |
|
82 |
| -### Install Optional Plugins |
83 |
| - |
84 |
| -- Install [Spotless Gradle](https://plugins.jetbrains.com/plugin/18321-spotless-gradle) plugin to re-format through |
85 |
| - the IDE according to spotless configuration. |
86 |
| - |
87 |
| -## Plugins |
88 |
| - |
89 |
| -Plugins are documented [here](PLUGINS.md). |
90 |
| - |
91 |
| -## Release Process |
92 |
| -Here are the steps for releasing a new version of the plugins: |
93 |
| - 1. Create a tag with the release version number in the format vX.Y.Z (e.g., v0.2.0 creates a release version 0.2.0). |
94 |
| - 2. Push the tag to the repository. |
95 |
| - 3. GitHub Actions will automatically create a draft release for the release tag. |
96 |
| - 4. Once the release workflow completes, update the release notes, uncheck "Draft", and publish the release. |
97 |
| - |
98 |
| -Note: Release tags (of the form v*) are protected and can only be pushed by organization and/or repository owners. |
| 59 | +- [Linea docs](https://docs.linea.build) |
| 60 | +- [Linea blog](https://linea.mirror.xyz) |
| 61 | +- [Support](https://support.linea.build) |
| 62 | +- [Discord](https://discord.gg/linea) |
| 63 | +- [Twitter](https://twitter.com/LineaBuild) |
0 commit comments