Execution Layer (EL) and Consensus Layer (CL) Node Clients (2023)
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.
In response, Ethereum is transitioning from a Proof-of-Work (PoW) to Proof-of-Stake (PoS) consensus mechanism to improve scalability while maintaining decentralization and security. This transition to PoS, called the Merge, will require a redesign in Ethereum’s blockchain, most notably a transition from a monolithic blockchain to a more modular blockchain that separates the execution layer (EL) from the consensus layer (CL).
In this article we will highlight the main Ethereum node clients:
- Geth (Go Ethereum)
- Hyperledger Besu
We will also highlight the main consensus layer node clients:
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
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
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.
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
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, Ethereum's native token, as collateral, which incentives, them to act properly at the risk of losing their ETH through slashing.
What are the Ethereum consensus layer clients?
Several consensus layer clients exist including Lighthouse, Prysm, Nimbus, Teku, and Lodestar.
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
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
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
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
How to Set Up the Lodestar Client on MacOS
npm install -g @chainsafe/lodestar-cli
With the successful merge of the Goerli and Prater testnet on August 10th, 2022, the Ethereum Proof-of-Work blockchain and the Proof-of-Stake Beacon Chain are scheduled to merge at Terminal Total Difficulty (TTD) 58750000000000000000000, which is in the middle of September, 2022.