Summary
Shared Solana RPC pools many callers onto the same endpoints, so throughput and priority depend on what everyone else is doing at that moment. Dedicated Solana nodes give your workload its own capacity, which matters when you rely on high-volume reads, WebSocket subscriptions, or predictable behavior under load. This comparison explains how to evaluate providers on both models, which workloads fit each, and what to check before you commit.
Solana RPC is not a single product. Two providers can both advertise "Solana RPC" while offering very different access models: a shared pool where many callers hit the same endpoints, or a dedicated node where capacity is reserved for your workload. The right choice depends on your request mix, your tolerance for variable latency, and how much you rely on stateful features such as WebSocket subscriptions.
This comparison is written for developers and infrastructure buyers who are choosing between shared and dedicated Solana node access and want concrete criteria rather than marketing claims. It covers how each model behaves, where each one fits, and what to verify in a provider before you commit.
Quick recommendation: which access model fits your workload
Start by matching your workload to the model, then confirm the details with the provider.
- Shared Solana RPC is usually the right starting point for prototypes, low-to-moderate read traffic, dashboards, and apps that can tolerate some variance during network-wide congestion. You get broad endpoint availability with minimal setup.
- Dedicated Solana nodes make more sense when your traffic is steady and high, when you depend on WebSocket subscriptions or large
getProgramAccounts-style reads, or when you need capacity that is not affected by other tenants' spikes. OnFinality offers dedicated node infrastructure for teams in this situation. - A hybrid setup — shared endpoints for general reads, a dedicated node for the heavy or stateful paths — is common for production apps that want cost control without giving up headroom on critical calls.
If you are still early in provider selection, the broader how to choose an RPC provider article covers evaluation criteria that apply across chains.
How shared and dedicated Solana access actually differ
Shared access means your requests are served from infrastructure that also serves other customers. Providers manage the pool, scale it, and route your calls to available capacity. You do not control which node answers, and your effective throughput depends partly on aggregate demand.
Dedicated access means a node (or set of nodes) is provisioned for your account. Your requests do not compete with unrelated tenants for the same capacity. That changes three things in practice:
- Consistency under load. Shared pools can slow down when many callers are active at once. Dedicated capacity is less exposed to other tenants' behavior.
- Stateful features. WebSocket subscriptions and long-lived connections are easier to reason about when the connection is not shared with unrelated traffic.
- Operational visibility. With dedicated infrastructure you can often get clearer signals about your own usage and headroom, which helps capacity planning.
Neither model is universally better. Shared access is efficient and cost-effective for bursty or light workloads. Dedicated access is about predictability and control, and it usually costs more.
Provider evaluation matrix for Solana
Use this matrix to compare providers on the dimensions that actually affect Solana workloads. OnFinality is listed first because it offers both shared RPC API access and dedicated node options, but the criteria apply to any provider you evaluate.
| Provider / model | Access model | Dedicated option | WebSocket support | Archive / historical reads | Best fit |
|---|---|---|---|---|---|
| OnFinality | Shared RPC API plus dedicated nodes | Yes, via dedicated node | Yes (HTTP and WS transports) | Depends on plan — confirm with the provider | Teams that want one vendor for shared and dedicated Solana access |
| Shared-only providers | Shared pool | Usually no | Varies | Varies | Prototypes, light read traffic |
| Dedicated-only providers | Dedicated | Yes | Varies | Varies | High-volume, stateful workloads |
| Self-hosted node | You operate it | N/A | Yes | You configure it | Teams with deep Solana ops experience |
When you compare, ask each provider the same questions: what happens to my throughput when the network is congested, how are WebSocket connections handled, is historical data available, and what does failover look like. For pricing shape, see RPC pricing, and for the full list of chains, see supported RPC networks.
Workload-to-model fit: a practical mapping
Different Solana workloads stress different parts of an RPC endpoint. This table maps common workloads to the access model that usually fits.
| Workload | Typical request pattern | Shared fit | Dedicated fit |
|---|---|---|---|
| Wallet or dApp frontend | Sporadic reads, getLatestBlockhash, sendTransaction | Good | Optional |
| Indexer or analytics job | High-volume getBlock, getTransaction, log scans | Limited | Strong |
| Trading bot or market maker | Frequent reads plus fast submission | Risky under load | Strong |
| Real-time UI | WebSocket accountSubscribe, logsSubscribe | Variable | Strong |
| NFT or token mint tooling | Bursts of getProgramAccounts | Limited | Strong |
If your workload sits in the "limited" or "risky" cells, that is a signal to evaluate dedicated access rather than assume a shared pool will absorb it.
What to verify before choosing a provider
Provider claims are easy to make and hard to compare. These checks turn vague promises into things you can test.
- Request and connection limits. Ask how rate limits are applied on shared plans and what changes on a dedicated node. Confirm whether limits are per-second, per-method, or per-connection.
- WebSocket behavior. Solana apps often rely on subscriptions. Confirm that WebSocket transport is supported, how many concurrent subscriptions are allowed, and what happens on reconnect.
- Method coverage. Verify that the methods you depend on — including heavier reads like
getProgramAccountsandgetSignaturesForAddress— are supported and not silently restricted. - Historical and archive data. If you need older blocks or transactions, confirm availability rather than assuming it.
- Failover and redundancy. Ask what happens during maintenance or an incident, and whether you can configure a secondary endpoint.
- Observability. Check whether you get usage metrics or logs that help you plan capacity.
OnFinality's Solana endpoints support HTTP and WebSocket transports; you can review the network details on the Solana network page.
Testing a Solana endpoint before you commit
You can compare shared and dedicated behavior with the same basic calls. Start with a simple health and slot check against the public endpoint:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth","params":[]}'
Then check the current slot and a recent block to confirm the endpoint is advancing:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getSlot","params":[]}'
For WebSocket subscriptions, connect and subscribe to a log stream. This is the pattern that most often separates shared and dedicated performance in production:
import WebSocket from "ws";
const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");
ws.on("open", () => {
ws.send(
JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "logsSubscribe",
params: [{ mentions: ["11111111111111111111111111111111"] }, { commitment: "confirmed" }],
})
);
});
ws.on("message", (data) => {
console.log(data.toString());
});
Run these checks against your candidate endpoints during a busy period, not just at a quiet time. The difference between shared and dedicated access usually shows up under load, not at idle.
Migration checkpoints when moving from shared to dedicated
If your testing shows that shared access is the bottleneck, plan the move rather than switching abruptly.
- Inventory your methods. List every RPC method your app calls and how often. This tells you what the dedicated node must handle.
- Separate critical paths. Identify which calls are latency-sensitive (transaction submission, subscriptions) and which are background (indexing, analytics).
- Run both in parallel. Point a subset of traffic at the dedicated node and compare behavior before cutting over.
- Update configuration centrally. Keep endpoint URLs in environment variables so you can switch without redeploying logic.
- Set up a fallback. Keep a secondary endpoint configured in case of maintenance or an incident.
- Re-check limits. Confirm that your new plan's limits match your measured usage, not your estimated usage.
A simple environment configuration keeps the switch manageable:
# .env
SOLANA_RPC_URL=https://solana.api.onfinality.io/public
SOLANA_RPC_FALLBACK_URL=<your-secondary-endpoint>
SOLANA_WS_URL=wss://solana.api.onfinality.io/public-ws
Common pitfalls in Solana RPC comparisons
- Comparing idle performance. Shared and dedicated endpoints can look identical when traffic is low. Test under realistic load.
- Ignoring WebSocket cost. Subscriptions behave differently from one-off HTTP calls, and not every plan treats them the same way.
- Assuming method parity. A provider may support common methods but restrict heavier reads. Confirm the specific methods you need.
- Skipping failover design. Even dedicated infrastructure benefits from a secondary endpoint and retry logic.
- Overlooking commitment levels. Solana's
processed,confirmed, andfinalizedcommitments affect what you see and how fresh it is. Make sure your provider and your app agree on the level you need.
Key Takeaways
- Shared Solana RPC is efficient for light or bursty workloads; dedicated nodes are about predictable capacity for heavy or stateful traffic.
- The difference between the two models usually appears under load, so test candidate endpoints during busy periods.
- Compare providers on limits, WebSocket support, method coverage, historical data, failover, and observability — not just headline claims.
- A hybrid approach (shared for general reads, dedicated for critical paths) is common in production.
- OnFinality offers both shared RPC API access and dedicated node infrastructure for Solana; review RPC pricing and supported RPC networks to plan.
Frequently Asked Questions
Is a dedicated Solana node always faster than shared RPC? Not necessarily at idle. Dedicated capacity mainly helps consistency and headroom under load, and for stateful features like WebSocket subscriptions.
Can I start on shared RPC and move to dedicated later? Yes. Keep endpoint URLs in configuration so you can switch without changing application logic, and test both in parallel before cutting over.
Do I need archive data for Solana? Only if you query older blocks or transactions. Confirm historical data availability with your provider rather than assuming it is included.
How many endpoints should a production Solana app use? At least a primary and a fallback. Some teams add a dedicated node for critical paths alongside a shared endpoint for general reads.
Where can I see OnFinality's Solana endpoint details? The Solana network page lists the available HTTP and WebSocket endpoints, and RPC pricing explains plan options.