This project uses Gradle to manage dependencies, build tasks, and create distributions for linea-besu with all the necessary plugins to run a node for operators. The build process will also create a Docker image that can be used to run a node with a specific profile.
You can start with the Docker Compose files located in the docker-compose directory.
In the docker-compose.yaml file, update the --p2p-host command to include your public IP address. For example:
--p2p-host=103.10.10.10
Update plugin-linea-l1-rpc-endpoint config with your L1 RPC endpoint. You should replace YOUR_L1_RPC_ENDPOINT with your endpoint, like:
--plugin-linea-l1-rpc-endpoint=https://mainnet.infura.io/v3/PROJECT_ID
This is required to enable RPC queries using "FINALIZED" block tag. Linea Finalization status is based on L1 RPC endpoint's response
docker compose -f ./docker/docker-compose-basic-mainnet.yaml up
Alternatively, to run a node with a specific profile, set the BESU_PROFILE
environment variable to the desired profile name:
docker run -e BESU_PROFILE=basic-mainnet consensys/linea-besu-package:latest
- Download the linea-besu-package<release>.tar.gz from the assets.
- Unpack the downloaded files and change into the besu-linea-package-<release> directory.
Display Besu command line help to confirm installation:
bin/besu --help
Note the YOUR_L1_RPC_ENDPOINT. You should replace this with your L1 RPC endpoint.
This is required to enable RPC queries using "FINALIZED" tag. Linea Finalization status is based on L1 RPC endpoint's response
bin/besu --profile=advanced-mainnet --plugin-linea-l1-rpc-endpoint=YOUR_L1_RPC_ENDPOINT
The build process is driven by the following configuration file:
- linea-besu/build.json: This file specifies the modules to be downloaded, extracted, or copied.
To execute the complete build process, which includes downloading, extracting, copying plugins, and creating distributions, use the following command:
./gradlew build
This command will generate two distribution files:
/build/distributions/linea-besu-package-<version>.tar.gz
/build/distributions/linea-besu-package-<version>.zip
To create the Docker image, run:
./gradlew distDocker
Releases are automated using GitHub Actions and are triggered by pushing a tag that matches the
pattern 'v[0-9]+.[0-9]+.[0-9]+
. (e.g., v1.0.0
, v2.1.3
)
The tag creation will draft a release and include the distribution artifact uploaded as an asset.
git tag -a 'v0.0.1' 5cf01f9 -m 'Release test'
git push upstream v1.0.0
Once the GitHub draft release is published, the Docker image will be created and pushed to the registry. Additionally,
the latest
tag will be updated to match this release.
This project leverages Besu Profiles to enable multiple startup configurations for different node types.
During the build process, all TOML files located in the linea-besu/profiles directory will be incorporated into the package. These profiles are crucial for configuring the node, as each one specifies the necessary plugins and CLI options to ensure Besu operates correctly.
Each profile is a TOML file that outlines the plugins and CLI options to be used when starting the node. For example:
# required plugins to run a sequencer node
plugins=["LineaExtraDataPlugin","LineaEndpointServicePlugin","LineaTransactionPoolValidatorPlugin","LineaTransactionSelectorPlugin"]
# required options to configure the plugins above
plugin-linea-module-limit-file-path="config/trace-limits.mainnet.toml"
# Other required plugin options
# ...
# Other Besu options
# ...
Currently, the following profiles are available:
Profile Name | Description | Network |
---|---|---|
basic-mainnet |
Creates a basic Linea Node. | Mainnet |
advanced-mainnet |
Creates a Linea Node with linea_estimateGas and finalized tag plugin . |
Mainnet |
basic-sepolia |
Creates a basic Linea Node. | Sepolia |
advanced-sepolia |
Creates a Linea Node with linea_estimateGas and finalized tag plugin . |
Sepolia |