Execution Layer (EL) and Consensus Layer (CL) Node Clients
Written by Alchemy
Reviewed by Brady Werkheiser
Ethereum’s rampant success in recent years has propelled its popularity amongst blockchain enthusiasts. As a result, Ethereum has experienced a wide array of scalability issues, commonly observed with its high gas fees, slow block times, and network congestion.
By separating Ethereum into two highly-optimized layers, an execution layer (EL) and a consensus layer (CL), the network becomes more scalable. Each layer requires slightly different node client infrastructure.
In this article we will highlight the main Ethereum node clients:
Geth (Go Ethereum)
Nethermind
Erigon
Hyperledger Besu
We will also highlight the main consensus layer node clients:
Prsym
Teku
Lighthouse
Nimbus
Lodestar
What are the most popular execution layer clients?
In the current blockchain ecosystem, popular blockchain execution layer clients are Geth (80.1%), Erigon (8.7% Adoption), Besu (3.0%), and Nethermind (2.6%).
Execution layer clients run on the execution layer to maintain and manage the overall state of the blockchain while also completing the transactions using virtual machines.
1. Geth (Go Ethereum)
Using Geth, developers can interact with the Ethereum blockchain via Ethereum nodes using the command line and the Go programming language. Developers can use Geth to enact Ethereum transactions or mine Ethereum’s native cryptocurrency, ETH.
How to Set Up the Geth Client on MacOS (Homebrew)
brew tap ethereum/ethereum
brew install ethereum
brew install ethereum --devel
2. Erigon
Erigon is an Ethereum execution layer client written in the Go programming language. Erigon provides an optimized implementation of Ethereum that emphasizes speed, and is primarily used to run archive nodes which manage large amounts of state data.
How to Set Up the Erigon Client on MacOS
git clone --recurse-submodules -j8 https://github.com/ledgerwatch/erigon.git
cd erigon
make erigon
./build/bin/erigon
While Erigon is a popular client implementation for archive nodes, clients like Silkworm (C++) and Akula (Rust), have demonstrated comparable, if not better performance for running archive nodes.
3. Besu
Besu is an Ethereum execution layer client built by Hyperledger using the Java programming language under the Apache 2.0 license, allowing engineers to run Ethereum nodes.
Developers can interact with Besu using the command line and JSON-RPC API, accessible via RPC, HTTP, or WebSockets. Besu is used for ETH mining and engineering smart contracts or decentralized applications.
How to Set Up the Besu Client on MacOS
brew tap hyperledger/besu
brew install hyperledger/besu/besu
4. Nethermind
Nethermind is an Ethereum execution layer client built on the .NET core that allows engineers to develop on Ethereum nodes.
How to Set Up the Nethermind Client on MacOS
brew tap nethermindeth/nethermind
brew install nethermind
What is the consensus layer?
The consensus layer serves as the new backend infrastructure for the Ethereum blockchain, hosting and verifying the efficacy of validators.
In the PoS model, the validation occurs in the form of staking, where validators stake ETH as collateral which can be taken by the network (slashed) in the case of misbehavior.
What are the Ethereum consensus layer clients?
Several consensus layer clients exist including Lighthouse, Prysm, Nimbus, Teku, and Lodestar.
1. Lighthouse
Lighthouse is a consensus layer client developed by Sigma Prime and written in the Rust programming language. Lighthouse’s implementation emphasizes security and performance speed amidst the Ethereum merge to PoS.
How to Set Up the Lighthouse Client on MacOS
brew install lighthouse
2. Prysm
Prysm is a consensus layer client developed by Prysmatic Labs in the Go programming language. Prysm’s implementation comprehensively incorporates Ethereum’s PoS and staking protocol, while placing a strong focus on security and reliability.
How to Set Up the Prysm Client on MacOS
mkdir prysm && cd prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
3. Nimbus
Nimbus is a consensus layer client developed using the Rust programming language. Nimbus’ consensus layer client implementation concentrates on developing a lightweight client that is capable of being hosted on a wide range of hardware devices.
How to Set Up the Nimbus Client on MacOS
git clone https://github.com/status-im/nimbus-eth1
cd nimbus-eth1
make update
make nimbus
./build/nimbus
4. Teku
Teku is a consensus layer client developed by the Besu team, using the Java programming language. Teku’s implementation targets institutional investors rather than the general public.
How to Set Up the Teku Client on MacOS
brew tap ConsenSys/teku
brew install ConsenSys/teku/teku
5. Lodestar
Lodestar is a consensus layer client developed by ChainSafe Systems in the Typescript programming language. Lodestar is developed to be a deployable and lightweight client while appealing to Typescript and Javascript developers.
How to Set Up the Lodestar Client on MacOS
npm install -g @chainsafe/lodestar-cli
Conclusion
The separation of the execution and consensus layers was a part of the long awaited Ethereum Merge upgrade in 2022.
Related overviews
What is Blockchain Sharding and How Does it Relate to Ethereum?
Explore a New Transaction Type that Guarantees Transactions are Mined and Optimized for Gas
Learn About Safe (Justified), Finalized, and Latest Commitment Levels