7Block Labs
Blockchain Technology

ByAUJay

Open-Source Servers Optimized for Web3 Endpoints vs Ethereum API vs RPC Solana: Picking the Right Stack

Startup and enterprise leaders are on the lookout for a straightforward way to figure out whether to go with open-source node servers or RPC stacks on Ethereum and Solana. This guide is here to help with practical build recipes, the latest client capabilities, and some common production pitfalls. With this info, you'll be all set to launch dependable Web3 endpoints while keeping cost and latency in check.

TL;DR for decision‑makers

  • So, if your main goal is to handle EVM smart-contract reads/writes and keep track of on-chain provenance, your best bet is to set up an Ethereum execution client. You can go with Reth or Erigon if you’re all about that high-throughput RPC action, or stick with Geth for something that's compatible with just about everything. Pair that with a consensus client and throw in an API gateway to help manage method allow-lists and rate limits. Just remember to add tracing only when necessary, so you don’t end up racking up those archive-grade costs. Check out more details on ethereum.org.
  • On the flip side, if you’re after ultra-low latency order flow or need to dive into account-graph analytics, then Solana's the way to go. Start by deploying an RPC node that has account indexes, then add Geyser gRPC or Jito ShredStream for those live feeds. You can even consider peering for stake-weighted QoS to boost your chances of inclusion when things get a bit congested. More info is available over at docs.solanalabs.com.

The rest of this post breaks it down step by step.


Part 1 -- What “Ethereum API” and “Solana RPC” actually expose

Ethereum: JSON‑RPC with a formal spec and CL-EL split

  • So, if you're diving into Ethereum, you'll find that the clients expose JSON-RPC 2.0, which comes with a standardized set of methods like eth_, net_, and web3_. These are all laid out in the Execution API/OpenRPC spec and EIP‑1474. Just keep in mind that the consensus (Beacon) and execution processes are separate, and they communicate through the Engine API using JWT authentication on port 8551. If you’re going for production, you need to run both, or you can connect your Execution Layer (EL) to a remote Consensus Layer (CL). Check it out here: (github.com).
  • After Dencun, thanks to EIP‑4844, blocks now include the blob_gas_used and excess_blob_gas, and if you're dealing with transactions of type 0x03, you'll see fields like max_fee_per_blob_gas and blob_versioned_hashes. You can expect to come across these fields when working with block methods. Plus, pricing details can now be accessed within contracts using the new BLOBBASEFEE opcode (0x4a). Dive into the details here: (eips.ethereum.org).

Why it matters

When you're budgeting, remember to set aside some funds for both an execution client and a consensus client. If you're diving into L2 data availability, don't forget to think about blob-aware fee estimation, too. It’s essential for keeping everything running smoothly!

Solana: JSON‑RPC + PubSub, account‑centric semantics

  • Solana nodes make it easy to interact by offering HTTP JSON‑RPC on port 8899 and PubSub WebSockets on port 8900. The commitment levels you choose--“finalized”, “confirmed”, or “processed”--will influence the finality semantics of what you read. Check out more details on solana.com.
  • Here are some key methods that really help shape the way your app behaves:

    • Use getLatestBlockhash along with lastValidBlockHeight to keep your transactions up-to-date. You can find more information on this here.
    • The getRecentPrioritizationFees method helps you figure out priority fees based on accounts that are in demand, creating localized fee markets. More details can be found here.
    • Don’t forget getMultipleAccounts and getProgramAccounts! Using filters and dataSlice can really help reduce payload size. Plus, enabling account indexes on the server side speeds things up a lot. Learn more about this on solana.com.

Why It Matters

The performance of Solana really depends on how accounts are accessed and the priority fees, rather than just the overall gas fees. So, it's super important to make sure your RPC setup is aligned with this.


Part 2 -- Open‑source servers for Ethereum endpoints

You’re going to choose an execution client by looking at things like RPC throughput, storage needs, and special features. After that, you'll connect it with a consensus client (like Lighthouse, Teku, Prysm, Nimbus, or Lodestar) using the Engine API and a shared JWT secret. Check out more details on this at ethereum.org.

Reth (Rust, high‑throughput, modern storage)

  • Status: The production-ready 1.0 has just dropped! It's designed for “blazing-fast” sync/RPC, with an archive size of around 2-2.8 TB and a full node size of about 1.2 TB expected by 2025/2026. (paradigm.xyz)
  • Why choose it: It's got a super speedy RPC path, an efficient database, and solid developer momentum. Plus, there’s this cool new feature called “Ress” stateless mode (still in the proof-of-concept phase) that can validate using just ~14 GB of disk space with help from witnesses provided by peers--looks promising for specialized infrastructure! (paradigm.xyz)
  • Operational note: The default Engine API is set to 8551 with JWT. Just a heads-up--only enable HTTP/WS when you actually need it, and make sure to restrict APIs to keep things secure. (reth.rs)

Erigon (Go, staged sync, separate RPC daemon)

  • Architecture: You can run the modular rpcdaemon either in-process or as a standalone service (local or remote) using Erigon’s private gRPC for better isolation and scaling. You can tweak settings like rpc.batch.concurrency and db.read.concurrency to fit your needs. Check out the details here.
  • APIs: We've got a bunch of useful APIs, including eth, debug, trace, txpool, GraphQL, and some Erigon-specific namespaces. Plus, there are handy OTS methods available for Otterscan. You can find more info here.
  • Storage Footprint Guidance: Just a heads up, the storage requirements are around ~920 GB for a full node and about ~1.77 TB for an archive node on the Ethereum mainnet as of September 2025. You can dive into the specifics here.

Geth (Go, reference implementation, broad compatibility)

  • Strengths: It's nice and stable, comes with rich debug tracers, and has a GraphQL endpoint as per EIP‑1767 that lets you do multi-field reads in a single query. Just keep in mind that heavy debug and trace calls might come with a pretty penny. (geth.ethereum.org)
  • Disk and pruning reality: If you're snap-synced, full nodes are gonna consume over 650 GB, with around 14 GB of growth every week. Resetting usage with offline pruning can help, and a little heads-up: don't expose the Engine API to the public. (geth.ethereum.org)

Nethermind (C#, extensible RPC modules)

  • It comes with OpenEthereum-style trace_* endpoints like trace_filter, trace_block, and more, which are pretty crucial for certain analytics and forensics tasks. Plus, the JSON-RPC modules are pluggable and can be enabled or disabled as needed. Check out the details here: (docs.nethermind.io)

Best‑fit summary

  • If you're looking for the highest RPC QPS per core or some modern features, check out Reth or Erigon.
  • For the broadest tooling compatibility and GraphQL support, Geth is the way to go.
  • Need heavy tracing or custom RPC modules? Nethermind has got you covered.

Part 3 -- Open‑source servers for Solana endpoints

Agave (Solana Labs/Anza fork) validator/RPC

  • Baseline hardware: You'll want at least 12-16 cores, along with 256-512 GB of RAM for RPC that includes account indexes. Don't forget NVMe for accounts and the ledger, and aim for 1-10 Gbit/s networking speed. Check out the details here.
  • Account-index setup: To handle real-world RPC workloads like getProgramAccounts and token queries, make sure to enable account indexing. You'll need to focus on parameters like program‑id, spl-token-owner, and spl-token-mint. Get the full scoop here.

Geyser gRPC plugins (Yellowstone family)

  • Check out a Geyser plugin for streaming slots, blocks, transactions, and account updates with super low latency--down to milliseconds! It’s way better than the old JSON-RPC polling method. There are several vendors and open-source solutions out there, like rpcpool/yellowstone-grpc, various connectors, and managed providers. You can find more details here.

Jito extensions (for low‑latency trading and inclusion odds)

  • ShredStream offers nearly instant block shreds, while the Block Engine's “sendBundle” feature delivers atomic, ordered bundles complete with tip accounts. This can come in super handy for MEV or for those coordinated multi-transaction actions. (docs.jito.wtf)

Stake‑weighted QoS (SWQoS)

  • Leaders have the ability to give priority to traffic that goes through staked validators. To set up a trusted RPC-validator pair, you can use staked-nodes-overrides and rpc-send-transaction-tpu-peer, which lets you access a priority lane for getting included during busy times. Check out more details here.

Part 4 -- Concrete build recipes

A) High‑throughput Ethereum read API for product analytics

  • Stack

    • Execution client: We’re using Erigon with the rpcdaemon running separately. This setup helps us keep those heavy reads isolated and only opens the necessary namespaces (eth, net, web3). Plus, we can throw debug/trace into a separate pool if needed. Check out the details here: docs.erigon.tech.
    • Consensus client: We've got Lighthouse or Teku on the same host or within the same VLAN. Just a heads-up: the Engine API uses JWT and only runs on port 8551, so make sure that port stays off-limits to the public. More info can be found at ethereum.org.
    • Front: For our front end, we’re sticking with HAProxy or Envoy, which allows for connection reuse, maintains per-method allow-lists, and includes response caching for things like eth_chainId and gasPrice. Don’t forget to throttle those wildcards on eth_getLogs!
  • Tuning

    • rpcdaemon: Let’s optimize it by adjusting --rpc.batch.concurrency and --db.read.concurrency based on your CPU and disk I/O. And if you notice the CPU is maxed out, go ahead and disable compression. You can find the specifics here: github.com.
    • Geth fallback: To streamline things, enable GraphQL for multi-field reads. This way, we can cut down on multiple JSON-RPC calls when it makes sense. Check out the details at geth.ethereum.org.
  • Why it works: This setup gives you nice low p95s for batched reads while keeping your trace/debug activities separate, so they don’t mess with the essential traffic.

B) Ethereum write path for DeFi: blob‑aware, safe/finalized‑aware

  • Make sure your fee estimator takes into account the EIP‑4844 blob base fee and includes max_fee_per_blob_gas for data-availability transactions. Don’t forget to expose eth_maxPriorityFeePerGas for wallets. Contracts can access BLOBBASEFEE (0x4a) if they need to calculate prices on-chain. (eips.ethereum.org)
  • Use “safe” and “finalized” block tags when consistency is key (think settlement bots) to steer clear of those pesky reorg surprises. (ethereum.org)
  • Keep tracing off the hot path. If you really need to, set aside some Nethermind or Geth nodes specifically for debug_traceTransaction and trace_* to prevent any slowdowns on writes. (geth.ethereum.org)

C) Solana consumer app: fast reads, predictable sends

  • Stack

    • Set up an RPC node with account indexes enabled for your programs or owners. Aim for at least 256 to 512 GB of RAM. Check out the requirements here.
    • Don't forget to add Geyser gRPC for subscribing to account and transaction events. This way, you'll get real-time analytics or notifications. More info here.
  • Client patterns

    • It's better to use getMultipleAccounts instead of multiple getAccountInfo calls. Use dataSlice with base64 encoding to cut down on payload size and skip jsonParsed on your hot paths. You can read more about it here.
    • For speedier transactions, check the recent prioritization fees using getRecentPrioritizationFees, focusing on the specific writable accounts you'll be working with (localized market). Details are available here.
    • Before you send anything, simulate your transactions using simulateTransaction and replaceRecentBlockhash to get accurate compute units and logs. This helps ensure everything runs smoothly. Learn more here.
  • Congestion overlays

    • If getting included is a must, consider working with a staked validator for SWQoS (trust goes a long way) or route your sends through a Jito Block Engine's “sendBundle” feature with a small randomized tip. Keep the standard RPC path as your fallback just in case. You can find more about this here.

D) Solana low‑latency trading infra

  • Set up Jito ShredStream proxies tailored for each region so you can get the quickest path from leaders. Make sure to forward shreds to your internal consumers and sync everything up with Geyser streams. Check out the details here: (docs.jito.wtf).
  • Implement those lite‑RPC/multiplexer patterns to distribute sends and confirmations across various RPCs and WS endpoints, adjusting for slot arbitration. You can dive deeper into this on GitHub: (github.com).

Part 5 -- Capacity planning and hardware reality

  • Ethereum

    • If you're running a full node today, you're looking at needing about 0.5 to 1.2 TB of storage, depending on the client and whether you're using pruning. For archive nodes, Erigon/Reth takes up around 2-3 TB, while the old-school hash-based archive modes can balloon up to about 12 TB. So, make sure you factor in some extra space for growth and pruning cycles. (geth.ethereum.org)
    • According to the folks over at ethereum.org, they recommend you have at least a 2 TB SSD, with 8 to 16 GB of RAM and a decent internet connection of 10 to 25+ Mbps. Oh, and don't forget to add on about 200 GB for your beacon data. (ethereum.org)
  • Solana

    • When it comes to setting up RPC nodes, you'll want to focus on having a powerful CPU clock, along with a hefty 256 to 512 GB of RAM (especially if you're indexing). It's key to go for high-TBW NVMe drives and a NIC that can handle 1 to 10 Gbit/s. Plus, make sure your account and ledger disks are separate and capable of high IOPS. (docs.solanalabs.com)

Part 6 -- Security and reliability checklists

  • First off, don’t let the Ethereum Engine API (8551) be accessible outside of your localhost or VLAN. Make sure to use JWT authentication on both sides. You can find more details on this over at ethereum.org.
  • Next, be picky about which JSON‑RPC namespaces you enable. For instance, if you’re using Nethermind, adjust the JsonRpc.EnabledModules settings. If you’re on Erigon, just stick to enabling eth, net, and web3 for public access. Everything else, like debug/trace, should be secured behind IP allow-lists. Check out this guide for more info.
  • You’ll want to set up an L4/L7 in front of your setup, like HAProxy or Envoy. This will help you:

    • Control how many requests each client can make and cap it per method. It’s best to use HTTP/1.1 keep-alive for those JSON‑RPC calls. Also, implement circuit breakers and tune QUIC/HTTP2 for WS PubSub when needed. You can learn more about this on haproxy.com.
  • Lastly, keep an eye on observability by exporting Prometheus metrics from your clients. Set up alerts for things like sync lag, peer count, mempool size, slot height/epoch, and RPC p95/p99. This way, you can stay on top of everything!

Part 7 -- Emerging practices you can adopt now

  • Ethereum Stateless Experiments: Reth, also known as "Ress," is making waves by letting you run fully validating execution layers with about 14 GB of disk space using state witnesses. For now, consider this more of a research project, but keep it in mind if you're facing capacity issues or are working on next-gen light infrastructure. (paradigm.xyz)
  • OpenRPC/Service Discovery: EIP-1901 is shaking things up with machine-readable JSON-RPC descriptions. This is super handy for whipping up client SDKs and checking whether specific methods are available during continuous integration. (eips.ethereum.org)
  • GraphQL for Selective Reads: Want to streamline your queries? Enabling Geth’s GraphQL can help with that. It allows for complex, multi-field queries, which means you can ditch multiple RPC calls and make app-side joins way easier. (geth.ethereum.org)
  • Solana SWQoS: If you've got control on both ends--like a trusted RPC and validator--this is where you want to be. It allocates a priority share of TPU bandwidth based on your stake, which can really cut down on inclusion variance during those busy times. (solana.com)
  • Geyser/Yellowstone: Want to keep your event ingestion smooth? Standardizing on gRPC streams is the way to go. It helps you avoid polling, which can really stabilize tail latencies for both indexers and notifiers. (github.com)

  • Ethereum: Set up a secure, minimal RPC interface on the Erigon rpcdaemon.

    • Just enable eth, net, and web3; let’s keep debug/trace on a separate node group.
    • Boost batch concurrency to really maximize read I/O:
      • Use these flags: --http.api=eth,net,web3 --rpc.batch.concurrency=128 --db.read.concurrency=128
    • Keep the Engine API local only: --private.api.addr=127.0.0.1:9090 and use JWT for 8551. (docs.erigon.tech)
  • Solana: Optimizing Account Reads

    • Server: When you're setting up your RPC, go ahead and start it with --account-index=program-id and --account-index=spl-token-owner. Also, make sure to dedicate a beefy 500 GB+ NVMe drive for your Accounts database. You can check out more details in the official documentation.
    • Client: Instead of making a bunch of getAccountInfo calls, streamline things by using a single getMultipleAccounts. Plus, you can optimize your data transfer by using {"encoding":"base64+zstd","dataSlice":{"offset":X,"length":Y}} to reduce the transfer size. More info on this can be found at Solana's website.
  • Solana: pricing, fees, and sending under load

    • To check the recent prioritization fees, use getRecentPrioritizationFees with the specific writable accounts that your transaction interacts with. Then, go ahead and run simulateTransaction with replaceRecentBlockhash. If it's really urgent, consider routing it to a SWQoS-peered validator or using Jito's sendBundle with a little random tip. (solana.com)

When to buy instead of build

  • Consider buying managed RPC when:

    • You really need those global low-latency edges (think multi-region), have SWQoS relationships, or need access to ShredStream that you can't whip up quickly.
    • Your workload is all over the place, and you'd rather go for elastic pricing instead of over-provisioning just for that p99.
  • Think about building when:

    • You’ve got a steady throughput, have strict data governance requirements, or need custom namespaces/filters (like Nethermind trace_*, Erigon OTS) that you might not find with vendors. Check out the details here.

A simple selection framework

  • If your product is all about EVM first--like DeFi or enterprise provenance--go with Ethereum. For that cutting-edge performance, Reth is your best bet, or check out Erigon for modular RPC scaling. And don’t forget to include a minority consensus client to keep things diverse! (paradigm.xyz)
  • When you’re aiming for super high TPS and a lightning-fast user experience, Solana is the way to go. Just make sure to plan for account-aware RPC, factor in priority fees, and consider optional SWQoS/Jito paths for a reliable inclusion experience. (solana.com)

Final advice from the field

  • Keep it tight: Only share what you really need. Limit your JSON-RPC namespaces, block those mutating methods on public endpoints, and make sure your Engine APIs are secured with JWT and localhost bindings. Check it out here: (ethereum.org).
  • Get organized: Use dedicated nodes for tracing and indexing, and keep some “clean” nodes just for app traffic.
  • Focus on the important stuff: Think of “time to inclusion” for Solana and “safe/finalized consistency” for Ethereum as your service level objectives. Don’t just look at the p95 latency numbers.

Looking for a custom build plan that fits your needs? Whether it’s hardware BOM, flags, or HA topology, 7Block Labs is here to help. We can analyze your workload and compare it against the Reth, Erigon, Geth, and Agave/Jito stacks, then suggest an architecture that fits your budget.

Like what you're reading? Let's build together.

Get a free 30-minute consultation with our engineering team.

7BlockLabs

Full-stack blockchain product studio: DeFi, dApps, audits, integrations.

7Block Labs is a trading name of JAYANTH TECHNOLOGIES LIMITED.

Registered in England and Wales (Company No. 16589283).

Registered Office address: Office 13536, 182-184 High Street North, East Ham, London, E6 2JA.

© 2026 7BlockLabs. All rights reserved.