Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EIP: Hardware and Bandwidth Recommendations for Validators and Full Nodes #9270

Open
wants to merge 35 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
e352bf6
draft
kevaundray Jan 26, 2025
cab4358
Update EIPS/draft_hardware_and_bandwidth_recs.md
kevaundray Jan 26, 2025
ac4b879
add rationale for 64GB RAM (only for validators)
kevaundray Jan 26, 2025
f1b23a1
Copy over authors
kevaundray Jan 26, 2025
41abebe
use simpler word
kevaundray Jan 26, 2025
460725d
add note about passmark
kevaundray Jan 27, 2025
31374a5
requirements -> recommendations
kevaundray Jan 27, 2025
b5b728a
Update and rename draft_hardware_and_bandwidth_recs.md to eip-7870.md
SamWilsn Jan 27, 2025
a5972f2
Update EIPS/eip-7870.md
kevaundray Jan 27, 2025
073e30a
Co-authored-by: Joseph Livesey <[email protected]>
kevaundray Jan 27, 2025
d331e69
block builder -> local block builder
kevaundray Jan 27, 2025
cba4b17
Update EIPS/eip-7870.md
kevaundray Jan 27, 2025
1da4dce
Update EIPS/eip-7870.md
kevaundray Jan 27, 2025
39dad68
Update EIPS/eip-7870.md
kevaundray Jan 27, 2025
555d4b7
Update EIPS/eip-7870.md
kevaundray Jan 27, 2025
a3eb5ca
remove requires field
kevaundray Jan 27, 2025
93c4c0b
Update EIPS/eip-7870.md
kevaundray Jan 29, 2025
c4b4ea5
format table
kevaundray Jan 29, 2025
8726a1f
Update EIPS/eip-7870.md
kevaundray Jan 29, 2025
c9f5009
Update EIPS/eip-7870.md
kevaundray Jan 29, 2025
683a2c7
Update EIPS/eip-7870.md
kevaundray Jan 29, 2025
75b127f
Update EIPS/eip-7870.md
kevaundray Jan 29, 2025
0389517
Update EIPS/eip-7870.md
kevaundray Jan 29, 2025
5115826
RAM -> memory
kevaundray Jan 29, 2025
551c474
replace branded SSD with i/o metrics
kevaundray Jan 29, 2025
901bb24
add note about TLC and DRAM
kevaundray Jan 29, 2025
fda25ca
remove recommended prebuilds
kevaundray Jan 29, 2025
13a173b
Update eip-7870.md
fredriksvantes Jan 31, 2025
a1c72c8
Merge pull request #1 from fredriksvantes/kw/hardware-bandwidth-recs
kevaundray Jan 31, 2025
f9ea3b0
Update EIPS/eip-7870.md
kevaundray Jan 31, 2025
b921573
Update EIPS/eip-7870.md
kevaundray Jan 31, 2025
ad474be
multi:
kevaundray Jan 31, 2025
2eadf6a
mev-boost -> MEV-Boost
kevaundray Jan 31, 2025
b82e9cf
grammar
kevaundray Jan 31, 2025
69d6453
Update EIPS/eip-7870.md
kevaundray Jan 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions EIPS/eip-7870.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
---
eip: 7870
title: Hardware and Bandwidth Recommendations for Validators and Full Nodes

Check failure on line 3 in EIPS/eip-7870.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

preamble header `title` value is too long (max 44)

error[preamble-len-title]: preamble header `title` value is too long (max 44) --> EIPS/eip-7870.md:3:7 | 3 | title: Hardware and Bandwidth Recommendations for Validators and Full Nodes | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ too long | = help: see https://ethereum.github.io/eipw/preamble-len-title/
description: System recommendations for Validators and Full nodes
author: Parithosh Jayanthi (@parithosh), Kevaundray Wedderburn (@kevaundray), Josh Rudolf (@jrudolf), Dankrad Feist (@dankrad), Justin Traglia (@jtraglia), Ignacio Hagopian (@jsign), George Kadianakis (@asn-d6), Fredrik Svantes (@fredriksvantes)
discussions-to: https://ethereum-magicians.org/t/hardware-and-bandwidth-recommendations-for-full-nodes-and-validators/22675
status: Draft
type: Informational
created: 2025-01-26
---

## Abstract

This proposal specifies hardware and bandwidth recommendations for different types of Ethereum nodes:

- **Full nodes**: Nodes that follow the tip of the chain without necessarily proposing blocks.
- **Validators**: Split into:
- **Attesters**: Validators that validate and attest to blocks created by proposers.
- **Local block builders** (Proposers): Validators that create blocks locally and broadcast them to the network.

The resource-intensive aspect for local block builders lies in creating the block and quickly broadcasting the data required for attesters to validate it in time.

We note that it may be possible to run a client with less than the recommended specifications, however benchmarks and decision-making will be made with respect to these recommendations.

## Motivation

Clear system specifications are crucial for:

- Ensuring meaningful benchmark comparisons across different client implementations.
- Enabling informed decision-making about protocol upgrades and their resource usage implications.
- Providing clear guidance for node operators to ensure alignment with future network requirements.

Without a shared understanding of target hardware specifications:

- Benchmark results lose significance due to inconsistent testing environments.
- Decision-making becomes challenging for implementation choices, as performance characteristics are heavily hardware-dependent.
- Network participants lack clear guidance for hardware investments.

## Specification

### Roles and Their Recommended Specifications

Node operators typically run both an **Execution Layer (EL)** client and a **Consensus Layer (CL)** client on the same machine. The specifications below assume the combined resource usage of both.

| Node Type | Storage | Memory | CPU Cores / Threads | **PassMark CPU Rating** | Bandwidth Download / Upload |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are all those numbers applied based on some research made? Or based on experience from discussions with stakers?

From Nethermind perspective those are super comfortable.

Also shall we distinguish EL and CL requirements to be treated separately? I saw a lot of setups where actually both are running on different machines.

| ----------------------- | --------- | ------ | ------------------- | ----------------------- | --------------------------- |
| **Full Node** | 4 TB NVMe | 32 GB | 4c / 8t | ~1000 ST / 3000 MT | 50 Mbps / 15 Mbps |
| **Attester** | 4 TB NVMe | 64 GB | 8c / 16t | ~3500 ST / 25000 MT | 50 Mbps / 25 Mbps |
| **Local Block Builder** | 4 TB NVMe | 64 GB | 8c / 16t | ~3500 ST / 25000 MT | 100 Mbps / 50 Mbps |

*Approximate single-thread (ST) and multi-thread (MT) PassMark CPU scores. For example, a PassMark ST rating of 3500 and an MT rating of 25000 typically corresponds to upper mid-range server CPUs circa 2024–2025.*

## Rationale

### Storage

- **Recommended**: 4 TB NVMe M.2 drive with:
- **Sequential R/W**: 7,000 MB/s
- **Random 4K R/W**: Up to 1,000,000 IOPS
- **Why NVMe over SATA?**
- NVMe drives have significantly higher throughput and lower latency than SATA SSDs.
- Drives without DRAM (DRAMless) or with QLC flash are not advised, due to lower endurance and potentially lower sustained performance.
- **On Endurance (TBW)**
- Running a node involves frequent writes (e.g., database updates, logs). Ensure that the SSD’s Total Bytes Written (TBW) rating is sufficient for multi-year operation.
- **Capacity Considerations**
- As of January 2025, 2 TB can still work, but daily chain growth makes 4 TB more future-proof.
- While EIP-4444 aims to reduce historical storage requirements, the timeline for EIP-4444 remains uncertain.

### Memory

- **Why 64 GB for Validators (Attester / Local Block Builder)?**
- Running an Ethereum validator (both EL & CL clients) can be memory-intensive, with state cache dominating RAM usage.
- Certain memory intensive client combinations have historically failed with 16 GB.
- Preliminary benchmarks (e.g., [zk-STARK memory usage](https://hackmd.io/@han/bench-hash-in-snark)) suggest cryptographic operations can demand significant RAM.

Check failure on line 74 in EIPS/eip-7870.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-7870.md | 74 | - Preliminary benchmarks (e.g., [zk-STARK memory usage](https://hackmd.io/@han/bench-hash-in-snark)) suggest cryptographic operati... | = help: see https://ethereum.github.io/eipw/markdown-rel-links/
- Relative to total hardware costs, upgrading from 32 GB to 64 GB is a small price but can improve stability and is more future proof with regards to zk-STARKS.

### CPU

- **Single vs. Multi-thread Performance**
- Attesters and local block builders benefit from both high single-thread and multi-thread performance.

### Bandwidth

#### Local Block Builders

- **Recommended**: 100 Mbps download, 50 Mbps upload.
- **Rationale**:
- Distributing blocks is highly bandwidth-intensive.
- If a builder cannot meet these speeds, they risk slower propagation and causing late blocks.
- In extreme cases, a low-bandwidth node could propose partially full blocks or one that includes fewer blobs to mitigate slow broadcast.

#### Attesters

- **Recommended**: 50 Mbps download, 25 Mbps upload.
- **Minimum tested**: 15 Mbps (as per [ethPandaOps](https://ethpandaops.io/) simulations where 40% of the network had Gigabit connections and the other 60% had 15 Mbps upload).

Check failure on line 95 in EIPS/eip-7870.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

error[markdown-rel-links]: non-relative link or image --> EIPS/eip-7870.md | 95 | - **Minimum tested**: 15 Mbps (as per [ethPandaOps](https://ethpandaops.io/) simulations where 40% of the network had Gigabit connec... |
- However, real-world performance depends on peer network topology. A node with poor bandwidth could in theory quickly share data with a well-connected peer with good bandwidth which means that this peer could quickly seed the network.
- **Rationale**:
- 25 Mbps was chosen as a buffer to account for these miscellaneous factors that are harder to predict.

#### Validators Using MEV-Boost

- **Recommended**: 50 Mbps download / 25 Mbps upload.
- **Rationale**:
- Most MEV-relay interactions involve fetching bundles and block headers, which can be done within typical broadband speeds.
- While the local validator will also share the block with its peers, the relay will do the same which reduces the need for local bandwidth.
- However, there may be cases where your validator will still build a local block, such as if no MEV-relay responds or if the value of the MEV reward is lower than the minimum configuration set in MEV-Boost. In these circumstances, the recommendations for **Local Block Builders** would be relevant.

#### Full Nodes

- **Recommended**: 50 Mbps download / 15 Mbps upload.
- **Rationale**:
- Full nodes currently participate in sampling and must track the chain tip, but are not as latency-sensitive as attesters or local block builders.
- They can operate on lower bandwidth but risk being a slot or more behind the chain if bandwidth capacity is severely limited.

## Quick Reference Summary

Check failure on line 115 in EIPS/eip-7870.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body has extra section(s)

error[markdown-order-section]: body has extra section(s) --> EIPS/eip-7870.md | 115 | ## Quick Reference Summary | = help: see https://ethereum.github.io/eipw/markdown-order-section/

- **Full Node**
- **Storage**: 4 TB NVMe
- **RAM**: 32 GB
- **CPU**: 4 cores / 8 threads (~1000 ST / ~3000 MT PassMark)
- **Bandwidth**: 50 Mbps down / 15 Mbps up

- **Attester**
- **Storage**: 4 TB NVMe
- **RAM**: 64 GB
- **CPU**: 8 cores / 16 threads (~3500 ST / ~25000 MT PassMark)
- **Bandwidth**: 50 Mbps down / 25 Mbps up

- **Local Block Builder**
- **Storage**: 4 TB NVMe
- **RAM**: 64 GB
- **CPU**: 8 cores / 16 threads (~3500 ST / ~25000 MT PassMark)
- **Bandwidth**: 100 Mbps down / 50 Mbps up

## Backwards Compatibility

This EIP is informational and requires no protocol changes. We recommend that future EIPs include an assessment of their impact on these hardware recommendations.

## Security Considerations
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I'd like to see a section about "Future". What could we expect in the future? Would we need more storage? If I build a node using the recommended settings, what is the target duration that this setup is usable and needs no hardware upgrades?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Off the top of my head, this is what I can think of. Kind of hard to be comprehensive and I'm sure there are nuances that are missed or mistakes:

Full node

  • Download and upload speed goes down once we have peerDAS
  • Storage will go down once we have EIP444
  • Storage and RAM will go down once we have stateless (unclear how stateless clients will do state cache for re-org protection)
  • CPU could go down further once we snarkify the EL block
  • CPU and storage might go up depending on how far we increase the gas limit and whether we have EIP4444 and stateless

Attesters

  • They inherit all of the changes from full nodes (though attesters sample more, so higher bandwidth)
  • Download speed goes up due to increase in blobs

Block builder

  • CPU usage goes up once we have stateless due to the need to create the stateless proofs
  • Download and upload speed initially goes down to peerDAS
  • Upload speed and cpu requirements goes down due to epbs due to having more time to create the execution payload
  • Download and upload speed goes up due to increase in blobs
  • CPU requirements increase due to the addition of heavier proofs like zkvm (probably will need a GPU)

(One note here is that until we have zkvm proofs, you can still block build but at a lower throughput by setting the maximum number of blobs you can do in your EL based on your bandwidth requirements)

I think the main entity that will change significantly is the block builder.

Other changes to consider:

  • State network: This refers to the portal state network -- it would in theory, allow us to increase the gas limit and so it would increase builder requirements and the download speed of attesters and full nodes.

The argument here is that if we increase the gas limit, we increase the rate of state growth and eventually no-one but centralized parties will be able to hold the state and they could deny access or censor the rest of the network. But with state network, we would always be able to retrieve the state (at a slower throughput).

  • Delayed state root: depending on your client and how long it was taking to compute the state root, the builder cpu requirements can go down

  • FOCIL; This effectively puts a lower bound on the block size and I think mostly affects block builders, in practice, I think the FOCIL limit will be negligible and won't affect the specs.

  • Rainbow staking derivatives: This will add more roles -- separating the centralizing components like block building from the other components at the very least.

It has been argued that this might give folks reason to pump up the requirements for the centralizing components even further like block building. I am unsure about how this will play out.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One thing I'd suggest doing prior to applying that is to do any research among community either by pool on X or anything else which can have bigger outreach.

If it will appear that 51% of users have weaker than specified setup (which is super unlikely but still) we could potentially open a route for some unexpected attacks because we will test on too good hardware.

At least worth to know in case of noticed issue which affect weaker setups how much network (in terms of nodes) is put in danger.


N/A

## Copyright

Copyright and related rights waived via [CC0](../LICENSE.md).
Loading