Skip to content

Commit

Permalink
Merge pull request #13239 from m4sterbunny/13199-node-clients
Browse files Browse the repository at this point in the history
Update node clients content [Fixes #13199]
  • Loading branch information
corwintines authored Mar 2, 2025
2 parents 2e2f886 + a834ed3 commit 034b9fc
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,21 @@ description: Introduction to how Ethereum nodes are organized.
lang: en
---

An Ethereum node is composed of two clients: an [execution client](/developers/docs/nodes-and-clients/#execution-clients) and a [consensus client](/developers/docs/nodes-and-clients/#consensus-clients).
An Ethereum node is composed of two clients: an [execution client](/developers/docs/nodes-and-clients/#execution-clients) and a [consensus client](/developers/docs/nodes-and-clients/#consensus-clients). For a node to propose a new block, it must also run a [validator client](#validators).

When Ethereum was using [proof-of-work](/developers/docs/consensus-mechanisms/pow/), an execution client was enough to run a full Ethereum node. However, since implementing [proof-of-stake](/developers/docs/consensus-mechanisms/pow/), the execution client needs to be used alongside another piece of software called a [consensus client](/developers/docs/nodes-and-clients/#consensus-clients).
When Ethereum was using [proof-of-work](/developers/docs/consensus-mechanisms/pow/), an execution client was enough to run a full Ethereum node. However, since implementing [proof-of-stake](/developers/docs/consensus-mechanisms/pow/), the execution client must be used alongside another piece of software called a [consensus client](/developers/docs/nodes-and-clients/#consensus-clients).

The diagram below shows the relationship between the two Ethereum clients. The two clients connect to their own respective peer-to-peer (P2P) networks. Separate P2P networks are needed as the execution clients gossip transactions over their P2P network, enabling them to manage their local transaction pool, whilst the consensus clients gossip blocks over their P2P network, enabling consensus and chain growth.

![](node-architecture-text-background.png)

For this two-client structure to work, consensus clients must be able to pass bundles of transactions to the execution client. Executing the transactions locally is how the client validates that the transactions do not violate any Ethereum rules and that the proposed update to Ethereum’s state is correct. Likewise, when the node is selected to be a block producer the consensus client must be able to request bundles of transactions from Geth to include in the new block and execute them to update the global state. This inter-client communication is handled by a local RPC connection using the [engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md).
_There are several options for the execution client including Erigon, Nethermind, and Besu_.

For this two-client structure to work, consensus clients must pass bundles of transactions to the execution client. The execution client executes the transactions locally to validate that the transactions do not violate any Ethereum rules and that the proposed update to Ethereum’s state is correct. When a node is selected to be a block producer its consensus client instance requests bundles of transactions from the execution client to include in the new block and execute them to update the global state. The consensus client drives the execution client via a local RPC connection using the [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md).

## What does the execution client do? {#execution-client}

The execution client is responsible for transaction handling, transaction gossip, state management and supporting the Ethereum Virtual Machine ([EVM](/developers/docs/evm/)). However, it is **not** responsible for block building, block gossiping or handling consensus logic. These are in the remit of the consensus client.
The execution client is responsible for transaction validation, handling, and gossip, along with state management and supporting the Ethereum Virtual Machine ([EVM](/developers/docs/evm/)). It is **not** responsible for block building, block gossiping or handling consensus logic. These are in the remit of the consensus client.

The execution client creates execution payloads - the list of transactions, updated state trie, and other execution-related data. Consensus clients include the execution payload in every block. The execution client is also responsible for re-executing transactions in new blocks to ensure they are valid. Executing transactions is done on the execution client's embedded computer, known as the [Ethereum Virtual Machine (EVM)](/developers/docs/evm).

Expand All @@ -35,15 +37,15 @@ The consensus client does not participate in attesting to or proposing blocks -

## Validators {#validators}

Node operators can add a validator to their consensus clients by depositing 32 ETH in the deposit contract. The validator client comes bundled with the consensus client and can be added to a node at any time. The validator handles attestations and block proposals. They enable a node to accrue rewards or lose ETH via penalties or slashing. Running the validator software also makes a node eligible to be selected to propose a new block.
Staking and running the validator software makes a node eligible to be selected to propose a new block. Node operators can add a validator to their consensus clients by depositing 32 ETH in the deposit contract. The validator client comes bundled with the consensus client and can be added to a node at any time. The validator handles attestations and block proposals. It also enables a node to accrue rewards or lose ETH via penalties or slashing.

[More on staking](/staking/).

## Components of a node comparison {#node-comparison}

| Execution Client | Consensus Client | Validator |
| -------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------- |
| Gossips transactions over its p2p network | Gossips blocks and attestations over its p2p network | Proposes blocks |
| Gossips transactions over its P2P network | Gossips blocks and attestations over its P2P network | Proposes blocks |
| Executes/re-executes transactions | Runs the fork choice algorithm | Accrues rewards/penalties |
| Verifies incoming state changes | Keeps track of the head of the chain | Makes attestations |
| Manages state and receipts tries | Manages the Beacon state (contains consensus and execution info) | Requires 32 ETH to be staked |
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"/content/developers/docs/nodes-and-clients/node-architecture/node-architecture-text-background.png": {
"hash": "ed132a2b",
"base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAQCAYAAADNo/U5AAAACXBIWXMAABYlAAAWJQFJUiTwAAACyElEQVR4nC1QS2sTYRT9tFgfBVGxP8Bf4M5tdyKCCGLdWCiuBKG66sJVdwWRFly4aeiDljYwCyNpF1ZNE5O2SeMkmSRjJmZeaSaPOk1mMpnJtHYmOTKNFw7n3nMf3HuJYcBfreLz4SECHhoNBEwTAcPoBSwLAVUd6IqCT5UKNo+PsUBsG5BlIBwB4gmgWgVcF7Bt55xVFcizQDQGCAKgaQBRVbjZHNxQqOdGY3ALHFzDgNvt9lzT7LmCCDeegBva6bkMA1eW4ZJmczAplbKRTp+hUABaLQfNpg1N+wteAJhsH3TKBPsLKJcB0mrBURQ4PN92yuWuU6vBMU04tg3HsuDU63AkyXJk2YN9nicnJ4M9vd1brYHv3eJZrwd0OgNd1wDLGsTE0PFRELAolbHEi1jxWNfONnTt1K/rZ/56HUsyjxVexJJcxop6hHfkv12YnJy84jEh5OL4+PjVsbHHN+49eH6dEDLk6VNTDy7PzMxcPK82sj+mUYp/g0R/h3jgh5S5j9JuAJVMEGLiCw6zj1HcW3D4gwiUTDAX3lonXSW/AZ0DTAlocm10Kq9QZxzoQh+2CNiNadSzEiwJ6JT6AhMrEuNXfPaUpyVbSAlWMZGAknxi/07kz8Q0ZxYTApTURJdPbndFuuJIKTYXCn4jPp/vFmj60vbq6gjLUsMEuFD68GIUb269rn+YGiUUNcRS1PDa2pp3H5mbm31IFhcXRxuNxkhsa+sms709QlEzwxS1eic99/IutbpwZ3l5+QpN166Fw8HbXtP8/Pwj0s1F36MYa0CmFQj7DKTMM/yOFFHJcBD3FFRyL8BFIm4p/geVA5GLbEZIV2E2oHGAxgON/OARtbSDFt+HUQKs6jSqGQltEWgW+mI6WiS1ZPhtk43vaoVkWGX3gsrP709b7P7XdjG5c5zbjR1lohMqs7uuF5KxDhcPMTubvn+iJoy8dImMSwAAAABJRU5ErkJggg=="
"hash": "db7bf7fc",
"base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAQCAYAAADNo/U5AAAACXBIWXMAABYlAAAWJQFJUiTwAAACzUlEQVR4nC1SS0sbURgdK7W2Qmml/gB/QXfduitSKEKp3VQQV4WC7cpFV9kJpSi46EbxgaLCLJoSXdRqTJpEE9NJMoljEjOZSczkYWOScfKYhtxJTu8kvXD5uN+Ze75zzh1G07CbzeL71RWs5i4UYK3VYNW0trVeh7VY7PUVBd8yGezd3GCZ0XUglQIcTsDrAygBDAPQddKt9BLOBcDlBpJJoFIBGNo0whEYh0dtgwJGNAajXCZGtdoyVLVlJBIwKJlht7cNnodBBxhMqdRjCgR0BIMtRKMmG0G53ICqki47H26DC9QgXADpNJ1ULoNQvUQUNZJON0guB0I9ESqbUE8knweR5TpJpXSK/+3iTLNJmcs97ZSgq9n0Yq52G6hWe31VBRp1etboJE3FVyphVU5jTZSwYVa10tpRK81d6mmXTlpLidig2FoqjY3iNT4z/1ff9PT0oFnpvjM5OXl/bGzi0bPxtw/pud/sz86O37NYLHe6X2vhX3NIeA8hc0eQznYhh54j4bEiE7JB8v3AVXgC8ZNlIp45oYRsEcf+NtNQznegxoCaDJRit6hm3iPPE6jJDnSJPlhhDvmwjDrFq4lOknfHGe3CO98UOVlPBpL1uM8Hxf9Kv/Sdt6RgrBb3JaEEphqi/6AhcRkiB4SI3XbIrKysDIPj7h5sbg4JAjvAAH2JpZkRfBz+kF+aHWFYtl9g2YGtrS3TH7OwMP+CWV1dHSkUCkPu/f3H/MHBEMtaBlh2czS48O4pu7k8ur6+PshxuQcOh+2JeWlxcfEl04i4viDuLiDFKUie8jSIN7h0xmkQMUgnCjKRGcScTiPh/YPMmRRz7jlpEPwOKjSIiggUzntB5IL0PxI70BJAPTuHbEjGLQ2lFO1IQVecyfkdn0qC11OJ+h1F4cSm/D56XRZOf97G/cc3EY/7OuSaKvKebTXqd1djXjt/vLfyD1QDjKLaw0HBAAAAAElFTkSuQmCC"
},
"/content/translations/de/developers/docs/nodes-and-clients/node-architecture/node-architecture-text-background.png": {
"hash": "0a0bffa2",
Expand Down

0 comments on commit 034b9fc

Please sign in to comment.