Skip to main content

Maru

With Beta v4, Linea switched from a single to a dual-layer architecture, with both an execution layer and consensus layer client. While node runners have a choice of several execution layer clients (documented in this section), Maru is the only consensus layer client available.

Developed specifically for Linea, Maru replaces the Clique Proof of Authority consensus algorithm and introduces the Quorum Byzantine Fault Tolerance (QBFT) consensus algorithm. Eventually, this change will mean Linea will be able to resemble Ethereum's decentralized sequencer system, where validators propose and confirm blocks. To start with, however, only one Linea-internal Maru node will produce blocks.

warning

You must run Maru alongside an execution layer client like Besu or Geth.

Run using the binary distribution​

Prerequisites​

Step 1. Clone the Maru repository​

git clone https://github.com/Consensys/maru.git

Step 2. Build the Maru binary​

Run the following command to build a distribution:

./gradlew :app:installDist

Step 3. Run Maru​

Run the distribution with the following command:

./app/build/install/app/bin/app --maru-genesis-file=docker/initialization/genesis-maru.json --config=docker/maru/config.dev.toml

The distribution will be created in app/build/install/app/ with all necessary dependencies included.

Run using Docker​

There are two methods you can use to run Maru using Docker:

  • Clone the Linea monorepo and use docker compose
  • Clone the Maru repository and build a Docker image locally.

Step 1. Clone monorepo​

The files you need to run Maru are available in the Linea monorepo at the /docs/getting-started directory, in either the linea-mainnet or linea-sepolia directories.

Clone the monorepo with:

git clone --depth 5 https://github.com/Consensys/linea-monorepo.git

Step 2. Run docker compose​

Navigate to one of the directories from step 1, and run:

docker compose up maru-node