Skip to content

Hardware specs

Per-role hardware for the public testnet (chain-id 473374). These are testnet baselines — scale disk with state growth. Mainnet sizing is the same shape, but move all validators to datacenter baremetal (the slashing/uptime math dominates).

Per-role matrix

RolevCPU / coresRAMDiskAWSBaremetal
Validator (signs blocks)416 GB500 GB NVMe (pruned)c6i.xlarge / m6i.xlarge + gp34-core x86-64, 16 GB, 500 GB NVMe
RPC / full node (L5) (serves eth_getProof to edge/light clients)832 GB1–2 TB NVMe (pruned; archive = larger)m6i.2xlarge + gp3/io2 1–2 TB8-core, 32–64 GB, 2 TB NVMe
Seed / bootnode (peer discovery)28 GB100 GB SSDt3.large / m6i.large2-core, 8 GB, 100 GB SSD

Disk. Pruned (--full) is the default for validators and seeds. RPC nodes serving deep historical proofs run archive (EL_SYNC_MODE= empty), which grows much larger — provision 1–2 TB and expect to expand. The EL state under DATA_DIR/el grows continuously; watch free space.

Network. ≥100 Mbps stable, low-latency connectivity. P2P ports must be reachable from the internet (see Ports & firewall). Validators keep RPC on loopback; RPC nodes expose 8545 only behind a VPN/WireGuard, never a public IP.

Memory. Tune EL_MEM_LIMIT / CL_MEM_LIMIT per role in .env (presets: validator 12g EL / 6g CL, RPC 24g EL / 6g CL, seed 6g EL / 3g CL). Under-provisioning the EL causes OOM evictions which, on a validator, contribute to chain halts.

NVMe is REQUIRED for the execution layer

bera-reth stores state in an MDBX database with heavy random-write / fsync patterns. On slow or wear-prone storage (SD cards, network EBS below gp3, spinning disk) MDBX corrupts or wears out the volume and the EL dies. Use local NVMe on baremetal; on AWS use gp3 (or io2 for RPC/archive) — never standard / sc1 / st1. The DATA_DIR mount must be the NVMe volume.

Cost & cheapest-baremetal options

The real cost driver is not raw specs (testnet specs are modest) — it is the uptime + static-IP requirement, which differs by role. Cheapest-first by category (provider-agnostic; verify current pricing yourself — it moves):

Option (category)Rel. costBest forNotes
Home — single-board (Raspberry Pi 5 8 GB + USB3 UASP SSD)one-time HW, ~negligible powerseed · RPC-for-self · edge (light)The Pi is the turnkey edge-image appliance. Runs a pruned non-validating full node too. Residential IP/uptime → use a VPN tunnel.
Home — mini-PC (Intel N100/N305, 16 GB + NVMe)one-time HW, low powerany role incl. validator (low-stakes testnet) · edge (light)More headroom than a Pi; real NVMe on board. A light node runs here too (build the client; no SD image). Same residential-IP caveat.
Budget dedicated server (auction/used-dedicated tier)low monthlyvalidator · shared seed/RPCCheapest 24/7 datacenter baremetal with real NVMe + public static IP + bandwidth. The right choice when others rely on the node.
Entry dedicated (current-gen budget line)low–mid monthlyRPC/L5 · archiveMore disk/RAM for the eth_getProof fleet.
Hyperscaler (AWS, the instances above)highestwhen you need cloud ops/IaCConvenient + elastic, but priciest per-unit.

Two hard rules that override "cheapest"

  1. Real NVMe, always. Avoid ultra-cheap, oversubscribed "VPS/dedicated" tiers whose storage is slow or shared — MDBX will corrupt / fall behind. Genuine NVMe is non-negotiable for the EL.
  2. Match uptime to role. A non-validating node (seed / RPC / edge) tolerates restarts and a residential line — run it cheapest, at home. A validator must be 24/7 with a stable public IP: downtime has a consensus cost now and a slashing / inactivity cost on mainnet, which dwarfs any hardware saving.

Levers to cut cost further:

  • Co-locate roles on one capable box (e.g. a seed + one or two full nodes). Do not stack multiple validators on one host for production — it destroys fault-independence.
  • Residential reachability: behind dynamic IP / CGNAT, expose the node via a WireGuard/Tailscale address (EXT_IP / RPC_HOST) instead of paying for a static IP — fine for non-validating roles.
  • Prune, don't archive, unless a node specifically serves deep historical eth_getProof.

Bottom line. Run most of the fleet (seeds, RPC, edge) cheapest on home single-board / mini-PCs with a VPN tunnel; put the validators on a budget dedicated server for uptime. On mainnet later, move all validators to datacenter baremetal.

See also

Operator docs. Testnet chain-id 473374; mainnet 47337 (gated on external audit). Not financial advice.