All posts
19 August 2026·5 min read·NodeFlare Team

Dedicated Optimism RPC Node — Full Method Access on Your Own Bare-Metal

Run a dedicated Optimism RPC node with debug_traceTransaction and trace_* unlocked on NodeFlare's own bare-metal. 2M CU/mo free, or a private node with SLA. No shared pool.

Optimism is the original OP Stack chain — every lesson that went into Base, Mode, Soneium, and the rest of the Superchain was learned here first. Production DeFi protocols, bridges, and indexers have been running on OP Mainnet since 2021. That history means real state, real log volume, and real consequences when an RPC endpoint can't keep pace.

A dedicated node gives you the burst headroom and method access that production requires, without the noisy-neighbour problem of a shared pool.

What "dedicated" means at NodeFlare

NodeFlare isn't an aggregator routing your calls through anonymous backends. Every chain we serve runs on hardware we operate ourselves — bare-metal servers we rack, configure, and monitor. When you connect to a NodeFlare dedicated Optimism endpoint, you are talking to a specific op-reth instance that no other tenant shares.

That changes a few things:

  • No noisy-neighbour rate spikes. A traffic surge from another customer's indexing job doesn't eat your quota or push you into a 429.
  • Full method access. debug_traceTransaction, debug_traceBlockByNumber, and the full trace_* family are open — the heavy methods most shared endpoints restrict or disable.
  • Consistent latency. Same node, same routing path, every request.
  • WebSocket connections. Subscribe to new blocks with eth_subscribe for real-time streaming without polling.
  • Custom limits on request. Need a guaranteed SLA, a private endpoint URL, or wider eth_getLogs block ranges? That's negotiable on a dedicated node, not possible on a shared tier.

Optimism facts for RPC design

Optimism Mainnet (Bedrock) produces a block every 2 seconds. That's fast enough to change the math on block-range queries, but slow enough that a single eth_getLogs window can span meaningful history without exploding your compute budget.

DetailValue
Chain ID10 (0xa)
Native gas tokenETH
Block time~2 s
Finality~2 s soft · L1-final ~13 min
Data availabilityEthereum (blobs post-Ecotone)
Debug / traceSupported (debug_*, trace_*)
WebSocketYes (wss://)
Exploreroptimistic.etherscan.io

The L1 data fee: every Optimism transaction pays two costs — L2 execution gas and an L1 data fee for posting calldata (or blob references) to Ethereum. Since the Ecotone upgrade shifted data to blobs, the L1 component dropped sharply, but it's still non-zero for data-heavy calls. The receipt's l1Fee field carries the real total; don't estimate from gasUsed × gasPrice alone.

Pre-Bedrock history: the regenesis in June 2023 means blocks before that date come from the legacy system and behave differently. debug_traceTransaction on very old blocks may return differently-shaped results or be unavailable — if your indexer reaches back that far, test the boundary explicitly.

Quick-start with the free keyed endpoint

A free API key gives you a dedicated path on NodeFlare's own hardware — 2,000,000 compute units/month, no credit card. It's the fastest way to move off a public shared endpoint:

Terminal
# Check the latest block — replace YOUR_KEY
curl -s https://rpc.nodeflare.app/optimism \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
TypeScript
// ethers v6 / TypeScript
import { JsonRpcProvider } from "ethers";

const provider = new JsonRpcProvider(
  "https://rpc.nodeflare.app/optimism",
  undefined,
  { staticNetwork: true }   // skip chainId probe — you know it's 10
);

const block = await provider.getBlockNumber();
TypeScript
// WebSocket — subscribe to new blocks
import { WebSocketProvider } from "ethers";

const ws = new WebSocketProvider("wss://rpc.nodeflare.app/optimism");
ws.on("block", (blockNumber) => {
  console.log("New OP block:", blockNumber);
});

Public (no-key) endpoint for low-volume testing: https://rpc.nodeflare.app/optimism/public

Debug tracing on Optimism

Optimism's op-geth node supports the full geth debug API. A few Optimism-specific points worth knowing before you write tracing code:

  • Deposit transactions (type 0x7e) appear in blocks without a matching mempool transaction — they originate on L1 as bridge transactions and are included by the sequencer. Traces for these show EVM execution but no gas-price component from the sender.
  • Use the callTracer preset for revert analysis. The default struct-logger traces every opcode and returns megabytes of data for complex transactions.
  • Pre-Bedrock blocks (before block ~105,235,063, June 2023) may not be fully traceable with current debug_ methods.
Terminal
curl -s https://rpc.nodeflare.app/optimism \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "debug_traceTransaction",
    "params": ["0xYOUR_TX_HASH", {"tracer": "callTracer"}],
    "id": 1
  }'

On a shared endpoint, a single debug_traceTransaction on a complex DeFi transaction can exhaust a significant portion of your daily rate-limit headroom. On a dedicated node, that headroom is yours alone.

Optimism RPC for indexers and DeFi protocols

Optimism hosts significant DeFi TVL — major DEXs, bridges, and lending protocols have been live here for years. Indexing swap events, bridge deposits, or token flows means running eth_getLogs across historical ranges, which is exactly the workload shared-tier limits throttle most aggressively.

On a NodeFlare dedicated node:

  • eth_getLogs runs with the block-range and filter configuration your indexer actually needs, not what a shared tier enforces.
  • debug_traceBlockByNumber works for replaying whole blocks — useful for MEV analysis and full-state reconstruction.
  • Compute-unit budgets apply to your usage only, not the aggregate of all tenants on the endpoint.
  • Two-second blocks mean ~43,000 blocks per day — a meaningful gap from Ethereum's ~7,200. Keep block-number arithmetic Optimism-tuned.

When to upgrade to a private dedicated node

The free keyed tier covers most development and staging workloads. Move to a private dedicated node when:

  • You need a guaranteed uptime SLA for production traffic.
  • Your eth_getLogs or debug_ jobs run at a volume or block-range width that shared limits would block.
  • You want a private endpoint URL not visible in network traces or client-side code.
  • You're running a bridge, indexer, or trading protocol that needs predictable burst headroom.

NodeFlare provides dedicated Optimism nodes with custom rate limits and an SLA — email [email protected] or see the dedicated nodes page for the full picture across all 22 EVM chains.

Try it