Historical State, Archive Reads, Debug Traces, Batch Research and Overages

Ethereum Archive RPC Cost: Historical Calls, Traces and Billing

Ethereum archive RPC cost depends on what you mean by historical data. Fetching an old transaction receipt is not the same workload as asking for an account balance, contract storage value or simulated eth_call at an old block. Ethereum separates historical chain records from historical state, and RPC providers price or route those workloads differently. Chainstack currently charges one Request Unit for standard full-node calls and two for Archive Node requests, with Debug and Trace workloads also positioned at two RUs. QuickNode currently assigns twenty API Credits to standard Ethereum methods and generally doubles the chain multiplier for Trace and Debug APIs. NOWNodes uses a shared-plan request quota and exposes Ethereum archive and trace interfaces through dedicated documented endpoints. The correct purchasing decision therefore starts by separating receipts, blocks and logs from old-state reads and execution traces, then modeling the exact batch workload, retry behavior and overage cost.

TL;DR

  • Old transaction history is not automatically archive state. Blocks, transactions and receipts are historical records; old balances, storage, code and historical eth_call depend on historical state.
  • Chainstack currently prices ordinary full-node calls at 1 RU and Archive Node calls at 2 RU. Its current material also places Debug and Trace calls at 2 RU.
  • QuickNode currently charges 20 API Credits for standard Ethereum methods and usually 40 credits for Debug and Trace APIs. Some designated large calls use higher multipliers.
  • NOWNodes shared plans count monthly requests directly. Ethereum archive state and debug_traceTransaction are currently documented through the Ethereum archive endpoint.
  • A research batch should be priced by method class. Count receipts, logs, historical state, traces, retries and failed windows separately.
  • Do not invent performance results. Use a fixed block, known block hash, fixed region, timestamps and acceptance criteria, then publish live measurements only when the endpoints were actually tested under the same conditions.
  • At sustained high volume, dedicated or fixed-capacity infrastructure may beat request billing. Compare total operating cost, not only the cheapest per-request headline.
Archive buying rule Separate historical records from historical state before pricing anything.

If your application needs an old transaction receipt, you may not need the same infrastructure required for a historical eth_call. Buying every historical workflow as "archive RPC" can overstate cost. Assuming every old request works on an ordinary full node can understate it.

When should you pay for Ethereum archive RPC?

Ethereum archive infrastructure is most valuable when your application needs state as it existed at previous block heights.

Examples include historical wallet balances, historical contract storage, old contract code, account nonce state, historical Merkle proofs where supported, or contract calls executed against an earlier state root.

Security research can need it.

Portfolio reconstruction can need it.

Tax and accounting systems can need it.

Protocol analytics can need it.

Forensic systems can need it.

Risk engines can need it when they reconstruct what a contract or account looked like before a later event.

Not every historical query requires the same infrastructure.

Ethereum's own JSON-RPC documentation distinguishes state methods from history methods.

State methods include operations such as eth_getBalance, eth_getStorageAt, eth_getTransactionCount, eth_getCode and eth_call.

When those methods target old blocks, historical state becomes relevant.

History methods include old blocks, transactions and transaction receipts.

Those are records of what was included on-chain rather than a query against every account and contract's state at that point.

This distinction should decide whether an archive product belongs in your bill.

If your application mostly retrieves known transaction hashes and their receipts, do not automatically price every request as archive state.

If your application reconstructs a lending position by querying token balances and contract storage at thousands of historical block heights, archive access is central.

If your application performs debug_traceTransaction, you also need to evaluate trace eligibility separately.

A provider can support archive state without exposing every debug namespace on every plan.

A provider can expose transaction history while restricting heavy traces.

A provider can expose traces at a higher billing multiplier even when the transaction receipt itself is cheap.

Start there.

Question Typical RPC method Data class Archive state normally required? Primary cost risk
What happened in this transaction? eth_getTransactionReceipt Transaction history Not necessarily Raw request volume
What block contained this transaction? eth_getBlockByNumber Block history Not necessarily Retention / provider history backend
What was this wallet balance at an old block? eth_getBalance Historical state Yes for reliable old-state access Archive request billing
What value was stored in this slot? eth_getStorageAt Historical state Yes Archive request billing
What would this view call return at block X? eth_call Historical state execution Yes for sufficiently old blocks Archive + execution cost
Which events occurred in this range? eth_getLogs Historical log records Not inherently old state Range limits and request multiplication
What internal calls occurred? debug_traceTransaction Execution trace Depends on implementation and age Trace eligibility and billing multiplier

For the infrastructure mechanics behind this distinction, TokenToolHub's archive nodes explainer is the useful prerequisite before pricing an archive-heavy production workload.

Old state reads and transaction history should be budgeted separately

Ethereum maintains chain history and state as related but different data structures.

Blocks contain transaction data.

Receipts describe transaction results, logs, gas usage and status.

State describes the current values associated with accounts and contracts.

Each block transforms one state into another.

An archive node preserves enough historical state to query those earlier versions directly.

A normal full node validates the chain but does not necessarily keep every previous state materialized forever.

Modern Geth documentation explains that ordinary full operation retains recent state while older state may be pruned or reconstructed from checkpoints depending on client configuration.

Archive mode keeps historical state indexed for direct querying.

That storage requirement is substantial.

Geth's modern path-based archive implementation is far more efficient than the older hash-based model, but it still requires much more storage and indexing than an ordinary pruned node.

That difference is one reason managed providers distinguish archive services commercially.

Transaction receipt research can be much cheaper

Suppose a forensic system already has five million transaction hashes and wants to retrieve their receipts.

The system is not asking "what was every contract storage slot when these transactions executed?"

It is requesting records already associated with those transactions.

A provider may serve those through ordinary historical infrastructure without charging an archive-state multiplier.

That can make large receipt-retrieval jobs materially cheaper than a state-reconstruction job with the same number of calls.

Historical eth_call is a state query

An eth_call can target a specific old block.

The node must execute the supplied message against the state associated with that block.

If the state has been pruned and cannot be reconstructed within the service's supported path, the request can fail.

This is exactly the kind of request archive infrastructure is designed to serve reliably.

Historical balances are deceptively expensive at scale

A single eth_getBalance request looks trivial.

A portfolio system that asks for ten thousand wallet balances at every daily block checkpoint across several years is not trivial.

Even when each request has a simple payload, the aggregate archive traffic can dominate the monthly bill.

Cost modeling therefore needs both method type and frequency.

How major providers bill Ethereum archive and trace workloads

NOWNodes

NOWNodes Ethereum Archive RPC

Flat shared request quota
Best fit: teams that prefer to think in raw monthly request volume and want a documented Ethereum archive endpoint for old-state and trace workloads.

NOWNodes currently documents the Ethereum archive endpoint at eth-archive.nownodes.io.

The archive interface supports historical-state methods such as eth_getBalance with an explicit block parameter.

The same current Ethereum documentation also exposes debug_traceTransaction through the archive endpoint.

That makes the service relevant to applications that combine old-state research and transaction-level execution analysis.

The shared commercial model is comparatively simple.

Plans are measured in monthly requests rather than per-method compute multipliers.

The current public allowance ladder includes 100,000 requests on Start, one million on Pro, ten million on Pro Plus, thirty million on Business, fifty million on Business Plus and one hundred million on Enterprise.

Current overage becomes materially cheaper at the higher tiers.

Pro Plus currently lists €5 per extra 100,000 requests, Business and Business Plus €1 per extra 100,000, and Enterprise €0.50 per extra 100,000.

For an archive-heavy research job, this means raw call count is an important first estimate.

Method eligibility, archive access, rate behavior and support still need to be verified for the selected account and workload.

Chainstack

Chainstack Archive Data

1 RU full • 2 RU archive / trace
Best fit: research and analytics systems that want ordinary history and current-state traffic priced separately from archive, Debug and Trace calls without per-method compute weights inside those classes.

Chainstack currently uses Request Units.

A Regional or Global full-node request costs one RU.

An Archive Node request costs two RUs.

Chainstack's current infrastructure material also positions Debug and Trace calls at two RUs rather than assigning different multipliers to individual trace methods.

This produces a simple budgeting rule.

Count standard calls once.

Count archive and qualifying trace calls twice.

Then compare the result with the plan's included RU allocation.

The current Growth plan includes twenty million RUs and Archive Data access.

Pro includes eighty million RUs.

Overage currently costs $15 per extra million RUs on Growth and $12.50 per million on Pro.

Throughput is separate from the monthly allocation.

Growth currently lists 250 RPS and Pro 400 RPS.

A batch system can therefore fit comfortably inside the monthly quota but still need pacing if it attempts to execute the entire job too aggressively.

QuickNode

QuickNode Ethereum Archive and Trace

20 credits standard • 40 credits Debug/Trace
Best fit: teams comfortable with API Credit accounting and wanting one Ethereum endpoint platform that combines archive access, Trace and Debug APIs, Streams and higher-capacity options.

QuickNode currently prices standard Ethereum methods at twenty API Credits.

Its Advanced API category, including Trace and Debug, uses twice the normal chain multiplier.

For Ethereum, that generally means forty API Credits for methods such as debug_traceTransaction and debug_traceCall.

Some methods designated as large calls can use a four-times chain multiplier.

Ethereum archive access is available through QuickNode's Ethereum infrastructure, and its current API overview exposes JSON-RPC, Debug, Trace and archive-specific Erigon interfaces.

Current builder pricing includes a one-month free trial with ten million credits.

Build is $49 monthly with eighty million credits.

Accelerate is $249 with four hundred fifty million credits.

Scale is $499 with nine hundred fifty million credits.

Business is currently $999 with two billion credits.

Overage on the standard paid plans currently declines from $0.62 per extra million credits on Build toward $0.50 per million on Business.

This model makes method classification critical.

Fourteen million Ethereum RPC calls are not fourteen million QuickNode credits.

The same fourteen million calls can consume hundreds of millions of credits.

Alchemy as a non-flat comparator

Alchemy

$0.525 per 1M CU on current PAYG
Useful comparison: Alchemy shows how archive research changes when billing is weighted by method complexity instead of a flat full/archive request class.

Alchemy currently includes Full Archive Data on its Free, Pay As You Go and Enterprise plans.

Debug and Trace APIs are currently available on Pay As You Go and Enterprise rather than the Free tier.

Billing uses Compute Units.

Current method costs include twenty CUs for eth_getBalance, twenty for eth_getTransactionReceipt, twenty for eth_getStorageAt, twenty-six for eth_call, sixty for eth_getLogs and forty for debug_traceTransaction.

The current Pay As You Go rate is $0.525 per million CUs.

This means an archive-heavy workload can be cheap or expensive depending on which historical methods dominate.

One million old balance reads and one million historical log calls are both one million raw requests.

They are not the same CU consumption.

What actually drives Ethereum archive operating cost

Ethereum archive RPC operating cost model A visual separating transaction history, historical state and trace calls, then showing billing, failure states and acceptance criteria. Price the research job by data class, not by the word “historical” Receipts, old state and execution traces can require different infrastructure and different billing treatment. HISTORY RECORDS Blocks • transactions • receipts • logs Often served from standard historical backend Do not automatically classify as old-state RPC HISTORICAL STATE Balance • storage • code • historical eth_call Archive-state infrastructure Can carry higher billing weight TRACE / DEBUG debug_traceTransaction • debug_traceCall Execution replay and internal call evidence Eligibility and method multiplier matter NORMALIZE THE BILLING MODEL NOWNodes: request count • Chainstack: 1 RU / 2 RU QuickNode: 20 / 40+ API Credits • Alchemy: method-specific CUs Then add retries, overage, RPS and dedicated capacity FAILURE STATE Pruned state • method disabled • timeout 429 • oversized log range Triggers retries or migration work COST STATE Included units exhausted Overage • burst RPS • batch growth Shared RPC may stop being economical ACCEPTANCE Fixed block returns known hash Old state returns valid result Trace succeeds within declared timeout PRODUCTION-READY ARCHIVE WORKLOAD
1

Separate history

Count old blocks, transactions, receipts and logs independently from state reconstruction.

2

Count old state

Historical balance, storage, code and eth_call requests belong in the archive-state bucket.

3

Count traces

Trace and Debug APIs can have different eligibility and billing weights from normal RPC.

4

Model failures

Add retries, timeouts, rate limits and range splitting to the real request count.

5

Verify outputs

Use fixed historical checkpoints and compare deterministic chain facts across providers.

6

Choose infrastructure

Compare metered RPC with dedicated or fixed-capacity options once the job is repeatable.

Model a real archive research batch before choosing a plan

Consider a monthly Ethereum research job with fourteen million raw RPC calls.

Five million calls retrieve transaction receipts for previously identified hashes.

Two million query historical event logs.

Four million retrieve account balances at old block heights.

Two million execute historical eth_call requests.

One million run debug_traceTransaction.

This is a much more useful workload description than "fourteen million archive requests."

Only six million calls are clearly old-state queries.

Five million are transaction-history retrieval.

Two million are log queries.

One million are traces.

Method class Monthly calls Archive-state class Trace class Primary billing question
eth_getTransactionReceipt 5,000,000 No No Standard history request price
eth_getLogs 2,000,000 No by itself No Method weight and range policy
Historical eth_getBalance 4,000,000 Yes No Archive access and unit multiplier
Historical eth_call 2,000,000 Yes No Archive state plus execution
debug_traceTransaction 1,000,000 Provider-dependent Yes Advanced method eligibility and price
Total 14,000,000 6,000,000 direct old-state calls 1,000,000 trace calls Normalize provider units

Chainstack billing example

Assume five million receipt calls and two million log calls are served as ordinary full-node requests.

That contributes seven million RUs.

The six million historical-state requests use Archive Data at two RUs each.

That contributes twelve million RUs.

If the one million trace calls fall under the current two-RU Debug and Trace rate, they contribute another two million.

The complete job consumes approximately twenty-one million RUs before retries.

The current Growth plan includes twenty million RUs.

One additional million RUs currently costs $15 on Growth.

Using only those published inputs, the batch would exceed Growth's included quota by approximately one million RU.

That does not automatically mean Pro is the correct purchase.

The current $49 Growth subscription plus one million RU of overage is approximately $64 for that modeled usage, assuming the required methods, throughput and account features fit Growth.

Pro provides substantially more headroom at eighty million RUs and 400 RPS, but the higher subscription price is purchasing capacity and features as well as usage.

QuickNode billing example

QuickNode's current Ethereum standard method multiplier is twenty API Credits.

Thirteen million non-trace calls therefore consume approximately 260 million credits.

The one million debug_traceTransaction calls use the current Advanced API multiplier of forty credits on Ethereum.

That contributes another forty million.

Total modeled consumption becomes approximately three hundred million API Credits before retries.

Build currently includes eighty million credits for $49 per month, with overage at $0.62 per additional million.

Two hundred twenty million overage credits would therefore add about $136.40 to the base subscription, producing an illustrative monthly total near $185.40.

Accelerate includes four hundred fifty million credits at $249 monthly and higher RPS capacity.

The cheaper arithmetic is not automatically the correct architecture because Build currently has lower throughput and other plan limits.

NOWNodes billing example

Under NOWNodes' shared request-count model, fourteen million provider calls begin as fourteen million requests.

That exceeds the current ten-million-request Pro Plus allowance.

Four million extra requests at the current Pro Plus overage rate of €5 per 100,000 would create €200 of overage before the plan's base subscription is considered.

The current Business tier includes thirty million monthly requests and therefore gives substantially more headroom for the same raw batch.

The exact archive and trace interface should still be validated before treating the request quota as sufficient.

Alchemy billing example

Alchemy illustrates why method-weighted pricing produces a different answer.

Five million transaction receipts at twenty CUs consume one hundred million CUs.

Two million eth_getLogs calls at sixty CUs consume one hundred twenty million.

Four million historical balance calls at twenty CUs consume eighty million.

Two million historical eth_call requests at twenty-six CUs consume fifty-two million.

One million debug_traceTransaction calls at forty CUs consume forty million.

The total is approximately 392 million CUs.

At the current Pay As You Go rate of $0.525 per million CUs, that modeled compute usage is approximately $205.80 before any additional throughput capacity requirement.

The exercise is not intended to declare a universal cheapest provider.

It shows why the method mix must be normalized before pricing.

Archive research cost = history calls + weighted old-state reads + weighted traces + failed windows + retries + overage + throughput + operational overhead

Ethereum trace API pricing needs its own calculation

A trace is not simply a more verbose transaction receipt.

A receipt tells you whether the transaction succeeded, how much gas it used, which logs were emitted and other transaction-result data.

A trace can reveal internal execution structure.

With a call tracer, you can inspect nested calls, value transfers, reverts and subcalls that are not represented as top-level transactions.

This makes trace APIs valuable for security analysis, explorers, smart-contract debugging, transaction classification and forensic research.

It also makes them more computationally demanding.

NOWNodes Ethereum trace endpoint

NOWNodes currently documents debug_traceTransaction through its Ethereum archive endpoint.

The current method documentation supports tracer configuration such as callTracer.

For a research pipeline, verify that the exact tracer configuration you require is allowed at the expected throughput.

Chainstack trace billing

Chainstack's current pricing material treats Debug and Trace calls at two RUs.

This is useful when a workload mixes different tracing methods because the bill does not require a separate compute multiplier for every trace function.

The method still has to be supported by the applicable execution client and node configuration.

QuickNode trace billing

QuickNode currently classifies Trace and Debug as Advanced APIs at two times the chain multiplier.

Ethereum's standard multiplier is twenty credits, so commonly used Debug APIs such as debug_traceTransaction, debug_traceCall and debug_traceBlockByNumber currently cost forty credits each.

Some trace-replay methods can fall under QuickNode's designated large-call classification and consume more.

Check the exact method rather than assigning forty credits to every method containing the word "trace."

Trace retention and old transactions

Trace availability can depend on the node client and historical data retained by the provider.

A current transaction can often be replayed from recent state relatively easily.

Tracing an old transaction requires the provider's backend to reconstruct or retain the execution environment needed for the transaction.

This is why old traces should be tested explicitly rather than inferred from successful tracing of a transaction mined yesterday.

Logs can dominate cost without being archive state

Many analytics pipelines spend more on eth_getLogs than on explicit archive-state reads.

The reason is range multiplication.

Suppose you need ERC-20 Transfer events across three million Ethereum blocks.

One theoretical request with a huge range may be rejected or produce an impractically large response.

The application therefore divides the range.

At a ten-thousand-block window, three million blocks become three hundred RPC calls for one filter.

Repeat that for one hundred addresses or topics and the request total grows quickly.

If failed windows are bisected automatically, the bill grows again.

This is an important example of why "one research query" and "one RPC request" are not equivalent concepts.

Provider limits influence effective cost

Some providers allow larger ranges on paid plans.

Some cap response size.

Some recommend smaller windows for reliability even when a wider request is technically permitted.

A provider with a lower unit price can still cost more if you need ten times as many requests to retrieve the same dataset.

Measure completed research work, not only requests.

A repeatable archive failure and recovery test

Archive procurement should include a deterministic acceptance test.

The goal is not to manufacture an impressive latency chart.

The goal is to prove that the endpoint can retrieve known chain history, historical state and traces reliably enough for the application.

One useful historical checkpoint is Ethereum block 18,000,000.

That block was finalized on August 26, 2023 at 16:21:35 UTC.

Its independently verifiable block hash is:

Block number: 18000000
Hex block number: 0x112A880
Timestamp: 2023-08-26T16:21:35Z
Expected block hash:
0x95b198e154acbfc64109dfd22d8224fe927fd8dfdedfae01587674482ba4baf3

This gives the test a fixed history anchor.

Run the same calls against every candidate provider from the same cloud region.

Record timestamps in UTC.

Do not retry during the first attempt.

Then enable your production retry policy in a separate pass.

Step 1: history verification

At 2026-09-19T10:00:00Z or another declared test start, call eth_getBlockByNumber for 0x112A880.

The response should identify block 18,000,000 and return the known block hash above.

If it does not, stop the benchmark and investigate the endpoint, network or test fixture.

Step 2: archive-state verification

At the next recorded timestamp, call eth_getBalance for a fixed Ethereum address at block 18,000,000.

The acceptance requirement is not "a fast HTTP 200."

The endpoint must return a valid historical balance result rather than a pruned-state error.

Use at least two independent providers to compare the resulting value before accepting the test fixture.

This article does not publish a fabricated balance result because no simultaneous authenticated provider trial was executed for this article.

Step 3: historical eth_call

Choose a contract function whose result can be reproduced deterministically at block 18,000,000.

Use the exact same to address, calldata and block parameter on every provider.

The call must return the same encoded result across accepted endpoints.

If one provider returns "missing trie node," "historical state unavailable" or an equivalent pruning error, the archive acceptance test fails.

Step 4: trace verification

Choose one transaction from the fixed historical block.

Call debug_traceTransaction using the same tracer configuration.

Record whether the provider accepts the method.

Record whether it returns the expected top-level sender and destination.

Record timeout behavior.

Do not compare trace response time if one provider uses a different tracer or timeout configuration.

Step 5: induced reconnect or retry scenario

Run the same request set through your normal client with a deliberate short network interruption or controlled endpoint switch.

Record the first failed request timestamp.

Record the retry timestamp.

Record whether duplicate work is created.

For read-only research, duplicate requests usually affect cost rather than chain state.

The exercise shows how an outage translates into billable retry traffic.

Test Expected evidence Acceptance Failure state
Block 18,000,000 Known block hash Exact hash match Wrong chain, bad endpoint or inconsistent result
Historical balance Valid hex balance at fixed block Matches independent endpoint Pruned / unavailable historical state
Historical eth_call Deterministic encoded result Exact cross-provider result match Missing state or inconsistent call result
Historical trace Valid execution trace Required tracer works inside timeout Method blocked, trace unavailable or timeout
Controlled reconnect Timestamped failure and retry No lost research range Silent gap or unbounded duplicate requests
Billing reconciliation Provider usage delta Observed units match model within expected variance Unexplained billing multiplier
Measurement boundary Live latency results are intentionally not claimed here.

A meaningful provider latency comparison requires the same region, account class, method distribution, concurrency and timestamp window. The deterministic block checkpoint above is independently verifiable. Provider-specific p95, p99 and failure-rate figures should be published only after a controlled test is actually run.

Retries can turn a research batch into a billing surprise

Archive research systems often retry more aggressively than user-facing applications because completing the dataset matters more than returning one response immediately.

This is reasonable.

It also creates hidden usage.

Assume a fourteen-million-request monthly batch has a three-percent first-attempt failure or retry rate.

That creates roughly four hundred twenty thousand additional requests if each affected call retries once.

Under a flat request plan, add those requests directly.

Under a weighted plan, the cost depends on which calls failed.

If all failed requests were forty-credit traces, the credit impact is larger than if they were ordinary twenty-credit reads.

If all failed Chainstack requests were archive calls, each retry consumes two RUs rather than one.

Failure composition matters.

Retry old-state jobs by range or record

Persist progress.

Do not restart a ten-million-request historical scan from the beginning because the process crashed near the end.

Checkpoint completed blocks, wallets or transaction hashes.

Retries should target unresolved work only.

Use exponential backoff for transient errors

Immediate repeated retries can convert a 429 response into a sustained rate-limit loop.

Add backoff and jitter.

Respect provider guidance.

Batch systems do not usually need millisecond retry pressure.

Throughput that completes reliably is more useful than throughput that burns additional units on avoidable failures.

Overage pricing changes the optimal plan

The cheapest subscription is not necessarily the cheapest monthly configuration.

A lower plan plus overage can beat the next tier.

At another traffic level, the overage becomes more expensive than simply upgrading.

This threshold should be calculated deliberately.

NOWNodes example

Pro Plus currently includes ten million requests and lists €5 per additional 100,000.

A fourteen-million-call batch adds four million requests above the included quota.

That is forty blocks of 100,000 requests.

Forty multiplied by €5 creates €200 of overage.

The current Business plan includes thirty million requests and has a much lower overage rate.

At this workload, compare the higher plan rather than assuming Pro Plus remains cheaper.

Chainstack example

The modeled batch above uses approximately twenty-one million RUs.

Growth currently includes twenty million.

One million additional RU at the current $15-per-million Growth rate adds $15.

The batch still remains close to the Growth allowance.

If research doubles to forty-two million RUs, the calculation changes substantially.

Then Pro's eighty-million-RU allocation can provide more predictable headroom.

QuickNode example

The modeled batch consumes about three hundred million API Credits.

Build currently includes eighty million.

The two hundred twenty million extra credits are billed at the plan's current overage rate.

Accelerate includes four hundred fifty million credits but costs more upfront.

Compare both monthly total and RPS requirements.

If Build's fifty RPS cap slows the job unacceptably, Accelerate's higher capacity can justify the subscription even when raw overage arithmetic is lower on Build.

How to run large archive research jobs efficiently

Batch design often saves more money than switching providers.

Checkpoint every completed range

If a job processes historical blocks in ten-thousand-block windows, persist completion after each successful window.

On restart, continue from the first unresolved range.

This avoids paying twice for completed history.

Separate immutable from changing data

A finalized transaction receipt does not need to be retrieved every night forever.

Historical block headers do not change after finality.

Cache immutable results.

Reserve provider calls for new or unresolved data.

Store trace results if your license and architecture permit it

Trace calls are more expensive than simple reads on several provider models.

Repeatedly tracing the same immutable transaction can be wasteful.

Store normalized trace output when your data policy permits.

Deduplicate transaction hashes

Analytics pipelines built from several event sources often discover the same transaction multiple times.

Deduplicate before receipt or trace retrieval.

This is a simple cost control with no loss of evidence.

Do not trace every transaction by default

Start with receipts and logs.

Trace only the subset where internal execution is needed.

A security scanner may need traces for proxy calls, failed interactions, nested value transfers or specific contract classes.

It does not automatically need a full trace for every ordinary transfer.

Route old-state reads deliberately

If your provider exposes separate full and archive endpoints, send only actual archive-state work to the archive service.

Recent block-number checks and ordinary receipt requests do not need to compete with heavy historical state jobs unless the provider architecture intentionally combines them.

Monitor the archive workload even when you do not monitor provider uptime

Infrastructure observability is broader than uptime.

Your application should know whether archive jobs are completing, whether request latency is rising, whether 429 responses are increasing and whether unresolved block ranges are accumulating.

TokenToolHub does not provide RPC provider uptime monitoring.

For teams selecting external observability systems, TokenToolHub's blockchain node monitoring tools guide covers monitoring-oriented products and operational signals.

Useful internal metrics include:

  • requests attempted by method;
  • requests succeeded by method;
  • archive-state failures;
  • trace failures;
  • HTTP 429 responses;
  • HTTP 5xx responses;
  • p50, p95 and p99 latency;
  • retry count;
  • unfinished historical ranges;
  • provider billing units consumed;
  • estimated month-end overage.

These metrics connect infrastructure reliability with budget control.

When dedicated archive infrastructure becomes rational

Metered shared archive RPC is attractive because it has almost no operational overhead.

You buy an endpoint and start querying.

At high sustained volume, the economics can reverse.

A dedicated archive node has a higher fixed cost but can remove ordinary per-request billing from the equation, depending on the provider contract.

It can also provide stronger isolation and more predictable resources.

This matters to research systems that run continuously rather than occasionally.

Imagine an analytics platform consuming hundreds of millions of historical state requests every month.

If the shared bill keeps increasing linearly with every additional query, a fixed dedicated configuration can become more attractive.

The break-even point depends on client, storage, region and redundancy.

Ethereum archive storage is not cheap.

Modern path-based Geth archive mode can reduce storage dramatically compared with legacy hash-based archive nodes, but full historical state still represents terabytes of data and ongoing indexing work.

A managed dedicated provider is therefore selling both hardware and operations.

Compare equivalent archive configurations

Ask whether the node is full archive from genesis.

Ask whether historical proofs are required.

Ask whether Trace and Debug namespaces are enabled.

Ask which execution client is used.

Ask whether the node has a replica.

Ask how failover works.

Ask whether snapshots or rebuilds are included.

Ask whether storage grows with a fixed fee or variable charge.

Only then compare dedicated quotes.

Migration and exit constraints

Ethereum JSON-RPC is relatively portable when the application remains close to standard methods.

Changing from one provider to another may require little more than endpoint configuration and authentication changes.

Archive migrations can become harder when the application depends on provider-specific interfaces.

Erigon namespaces differ from Geth Debug APIs.

Enhanced transaction APIs can return proprietary response formats.

Managed historical datasets can use vendor-specific query systems.

Streams and webhooks can create their own schemas.

Keep a provider-neutral research layer

Define internal operations such as "get receipt," "get old balance," "get historical storage," "trace transaction" and "get logs."

Map those operations to provider methods behind one adapter.

This keeps your research logic independent from vendor URLs.

Store provenance with the evidence

When historical evidence affects a risk decision, record the chain, block number, method, provider, timestamp and result hash or normalized output where appropriate.

If the provider changes later, you can reproduce the query.

This is especially important for forensic systems where an answer must remain auditable after the infrastructure vendor has changed.

Connect archive reliability with evidence quality

RPC reliability matters because downstream research inherits the quality of the source data.

If a receipt is missing, a transaction decoder cannot reconstruct information that was never retrieved.

If historical state is queried from the wrong block, the analytical conclusion can be wrong even when the RPC response is technically valid.

If a trace times out and the pipeline silently accepts an empty result, internal calls can disappear from the evidence model.

Infrastructure should therefore fail explicitly.

An unavailable trace should be marked unavailable.

A pruned-state failure should not become a zero balance.

A timed-out log range should remain unresolved until retried successfully.

For supported EVM transactions, TokenToolHub's Transaction Decoder can help inspect a successfully retrieved transaction after the infrastructure layer has delivered the required evidence.

The decoder is not an archive RPC benchmark.

It is an investigation layer operating on transaction evidence.

Likewise, the Token Safety Checker can analyze supported smart-contract evidence, but it should not be interpreted as an RPC provider uptime measurement.

Calculate full Ethereum archive RPC operating cost

Monthly plan price is only the start.

A useful total-cost model includes at least seven categories.

Cost component What creates it How to control it
Standard history Blocks, transactions, receipts and normal logs Cache immutable records
Archive state Old balances, storage, code and historical eth_call Query only required checkpoints
Trace / Debug Execution replay and internal call analysis Trace only transactions requiring deeper evidence
Retries Timeouts, 429s, transient failures Backoff, checkpointing and unresolved queues
Overage Usage above included quota Choose tier based on expected headroom
Throughput High RPS or concurrent batch processing Pace jobs or buy higher capacity
Engineering Retries, adapters, monitoring and migration Standardize method interfaces and provenance
Redundancy Secondary RPC for verification or failover Use selectively for critical queries
Dedicated infrastructure High sustained historical throughput Compare fixed cost against metered shared bill
Total Ethereum archive RPC cost = standard history + historical state + traces + retries + overage + throughput + redundancy + engineering + migration

Disqualifiers for an Ethereum archive RPC provider

Remove or downgrade the provider when

  • A known historical block can be retrieved but old account state cannot.
  • Historical eth_call fails for the block range your product needs.
  • debug_traceTransaction is central to the product but unavailable on the selected plan or endpoint.
  • The provider cannot explain archive retention for Ethereum clearly.
  • Trace availability is restricted to recent transactions while your research requires older execution.
  • Large log queries require so much splitting that effective request cost becomes uneconomic.
  • Overage pricing makes normal batch variability financially unpredictable.
  • The monthly quota is sufficient but the RPS limit makes the research window impractical.
  • Repeated 429 or timeout behavior creates excessive retry traffic.
  • Billing telemetry cannot be reconciled with observed application traffic.
  • The provider-specific interface makes migration disproportionately expensive.
  • A dedicated configuration cannot provide the historical depth or trace namespaces required.
  • You cannot verify critical outputs against an independent second data source.

Ethereum archive RPC acceptance checklist

Historical records

  • Retrieve block 18,000,000.
  • Confirm the independently known block hash.
  • Retrieve a known transaction from the block.
  • Retrieve its receipt.
  • Confirm returned block number and transaction hash.

Historical state

  • Choose a fixed address and old block.
  • Run eth_getBalance.
  • Run eth_getTransactionCount if required.
  • Run eth_getStorageAt against a documented contract slot where applicable.
  • Run a deterministic historical eth_call.
  • Compare output with at least one independent endpoint.

Trace support

  • Test the exact trace namespace your application uses.
  • Use the exact tracer configuration intended for production.
  • Test both recent and old transactions.
  • Record timeout limits.
  • Record whether traces are billed differently.
  • Do not infer historical trace support from one recent transaction.

Billing

  • Record standard request count.
  • Record archive-state request count.
  • Record trace count.
  • Record retries separately.
  • Compare provider dashboard usage with application logs.
  • Calculate overage at expected and stress-case volumes.
  • Compare one higher subscription tier before accepting overage-heavy pricing.

Failure recovery

  • Persist completed historical ranges.
  • Retry only unresolved work.
  • Apply exponential backoff to transient errors.
  • Track 429 and 5xx responses separately.
  • Do not convert missing archive data into a zero-value result.
  • Keep an independent provider path for high-value evidence where necessary.

Which infrastructure model fits which archive workload?

Simple

NOWNodes

Useful when raw monthly request quotas map cleanly to a mixed archive and trace research workload.

Flat

Chainstack

Useful when you want a simple 1-RU standard and 2-RU archive or trace model without method-by-method weights.

Credits

QuickNode

Useful for teams comfortable modeling Ethereum at 20-credit standard and higher advanced-method multipliers.

Compute

Alchemy

Useful when method-weighted CUs map well to the workload and light methods materially outnumber heavy calls.

Scale

Dedicated archive

Worth comparing once sustained historical traffic makes per-request billing the dominant operating expense.

Conclusion: Ethereum archive RPC cost starts with the data question

Ethereum archive RPC cost is easiest to understand after removing one common assumption: not every old Ethereum query is an archive-state request.

An old transaction receipt is historical data.

An old block is historical data.

An old transaction hash lookup is historical data.

Those records are different from asking the node to expose account or contract state as it existed at an old block.

Historical eth_getBalance, eth_getStorageAt, eth_getCode and eth_call are state questions.

That distinction determines whether archive infrastructure is required and how the provider may bill the request.

Trace workloads add another category.

A receipt can tell you whether a transaction succeeded and which logs were emitted.

A trace can expose the nested execution path.

For security research, that difference is substantial.

For infrastructure cost, it is also substantial.

Chainstack currently simplifies this by charging one RU for normal full-node calls and two RUs for archive requests.

Its current materials also classify Debug and Trace usage at two RUs.

That makes a mixed historical job relatively easy to model.

Count history once.

Count archive and trace twice.

Add retries.

Compare the result with twenty million RUs on Growth, eighty million on Pro or the appropriate higher tier.

Then verify throughput because a batch can exceed the RPS ceiling long before it exhausts the monthly allocation.

NOWNodes takes a different approach.

Its shared plans are based on monthly request quotas.

The current Ethereum documentation explicitly exposes an archive endpoint and documents historical balance queries and debug_traceTransaction against that infrastructure.

This model can be attractive when you want to forecast from raw call count.

The important step is checking whether the archive and trace capabilities you need are available under the selected account and whether overage changes the optimal tier.

A ten-million-request Pro Plus allowance looks close to a fourteen-million-call research job.

The current €5-per-100,000 overage rate means four million extra requests add €200 before the subscription fee.

At that point the thirty-million-request Business tier deserves comparison.

QuickNode requires a credit translation.

Standard Ethereum methods currently use twenty API Credits.

Trace and Debug APIs generally use twice that multiplier.

This means a raw fourteen-million-call batch can easily become hundreds of millions of credits.

The example in this guide reaches approximately three hundred million credits before retries.

That is why comparing "fourteen million calls" directly with QuickNode's included credit numbers would be meaningless.

Alchemy shows another valid model.

It prices by Compute Units.

Historical balance reads are currently lighter than historical eth_call.

eth_getLogs is heavier.

debug_traceTransaction has another weight.

A method-weighted model can be attractive when the workload is dominated by inexpensive methods.

It can become more expensive when logs and execution-heavy requests dominate.

Whichever provider you shortlist, use one repeatable acceptance test.

Block 18,000,000 is useful because its block hash and timestamp can be independently checked.

Retrieve it.

Confirm the known block hash.

Then query historical state at the same height.

Run a deterministic historical contract call.

Trace a known historical transaction with the tracer configuration your application intends to use.

Record every request timestamp.

Record the provider billing delta.

Record failures separately from retries.

If a live test was not run, do not publish invented latency or success numbers.

The same discipline applies to batch operations.

Checkpoint completed work.

Do not restart old ranges unnecessarily.

Cache immutable receipts.

Deduplicate transaction hashes.

Trace only transactions whose internal execution is materially useful.

Route archive queries deliberately.

Measure retries as billable workload.

And watch the overage threshold before the invoice forces a plan decision for you.

As volume grows, compare dedicated infrastructure.

Ethereum historical state is resource-intensive.

Managed shared RPC is valuable precisely because the provider absorbs that operational burden.

At hundreds of millions of archive or trace calls each month, the fixed cost of an isolated archive node can start competing with metered usage.

Compare equivalent client, retention, storage, region and redundancy requirements before making that decision.

For the broader infrastructure shortlist, TokenToolHub's Ethereum node provider comparison provides the next layer.

For the architecture behind historical-state retention, return to the archive node guide.

For operational visibility around nodes and endpoints, use the node monitoring tools research.

If a retrieved Ethereum transaction needs investigation after the RPC layer has delivered it, TokenToolHub's Transaction Decoder can examine supported EVM transaction evidence.

That investigation step should not be confused with measuring the provider itself.

Infrastructure answers whether evidence can be retrieved reliably.

Transaction analysis answers what that evidence means.

Best archive RPC fit = correct historical depth + required trace methods + reproducible outputs + predictable billing + recoverable failures + acceptable migration cost

When those six conditions are satisfied, archive RPC stops being an abstract premium feature.

It becomes a measurable research infrastructure cost.

Run the acceptance test before scaling the archive bill

Use a fixed historical block, verify a known block hash, test old state, run the exact trace method your research depends on, reconcile the provider's billing units and then scale the batch only after the results and cost model agree.

FAQs

What is an Ethereum archive RPC?

An Ethereum archive RPC provides access to historical Ethereum state, allowing methods such as eth_getBalance, eth_getStorageAt, eth_getCode or eth_call to target older block heights reliably.

Is every historical Ethereum request an archive request?

No. Old blocks, transactions and transaction receipts are historical records. Historical account balances, storage values, code and contract calls are state queries and are the workloads most directly associated with archive-state infrastructure.

Does eth_getTransactionReceipt require an archive node?

Not inherently. A receipt is transaction-history data rather than historical account state. Providers may serve old receipts from historical backends without treating the request as an archive-state lookup.

Does historical eth_getBalance require archive data?

For reliable access to sufficiently old balances, yes. The node needs the account state associated with the requested historical block or a mechanism capable of reconstructing it.

Does historical eth_call require an archive node?

Historical eth_call needs the contract and account state for the requested block. For old blocks beyond normal retained state, archive-quality infrastructure is the standard solution.

Is eth_getLogs an archive-state call?

Not in the same sense as historical eth_getBalance or eth_getStorageAt. Logs are historical event records. Large historical log searches can still be expensive because block ranges may need to be divided into many requests.

How does Chainstack price archive requests?

Chainstack currently charges one Request Unit for a normal Global or Regional full-node request and two Request Units for an Archive Node request.

How does Chainstack price Debug and Trace requests?

Chainstack's current pricing material describes Debug and Trace requests at two Request Units, providing a flat cost class rather than a separate multiplier for each individual trace method.

How many Chainstack RUs are included on Growth?

The current Growth plan includes twenty million Request Units per month and Archive Data access.

How much is Chainstack Growth overage?

Current Growth overage is $15 per additional one million Request Units. Pricing can change, so verify the current plan page before budgeting.

How does NOWNodes charge for archive RPC?

NOWNodes' shared plans are primarily measured in monthly requests. The Ethereum documentation exposes a dedicated archive endpoint, so buyers should map raw request volume to the selected plan and confirm archive and trace eligibility.

Does NOWNodes support Ethereum debug_traceTransaction?

Yes. Current NOWNodes Ethereum documentation exposes debug_traceTransaction through the Ethereum archive endpoint and supports tracer configuration including callTracer.

Does NOWNodes support historical Ethereum balances?

Yes. Current NOWNodes Ethereum archive documentation supports eth_getBalance with an explicit historical block parameter through the Ethereum archive endpoint.

How does QuickNode price Ethereum archive RPC?

QuickNode uses API Credits. Standard Ethereum methods currently use a twenty-credit chain multiplier. Archive access is provided through its Ethereum infrastructure, while Trace and Debug APIs use higher multipliers.

How much does QuickNode debug_traceTransaction cost?

QuickNode currently classifies Debug and Trace as Advanced APIs at twice the Ethereum chain multiplier. Ethereum's standard multiplier is twenty credits, so debug_traceTransaction currently consumes forty API Credits per call.

Does QuickNode support Ethereum archive data?

Yes. QuickNode's current Ethereum infrastructure provides archive access, and its Ethereum API overview includes JSON-RPC, Debug, Trace and Erigon archive-oriented interfaces.

How much does QuickNode Build cost?

QuickNode currently lists Build at $49 per month with eighty million API Credits and fifty requests per second, with additional credits billed separately.

How much does QuickNode Accelerate cost?

QuickNode currently lists Accelerate at $249 per month with four hundred fifty million API Credits and 125 requests per second.

How does Alchemy price archive Ethereum calls?

Alchemy includes Full Archive Data and bills requests in Compute Units according to method complexity. Current Pay As You Go pricing is $0.525 per one million CUs.

How many Alchemy CUs does eth_getBalance use?

Alchemy currently assigns twenty Compute Units to eth_getBalance.

How many Alchemy CUs does historical eth_call use?

Alchemy currently assigns twenty-six Compute Units to eth_call. The block parameter can target historical state where archive data is available.

How many Alchemy CUs does eth_getLogs use?

Alchemy currently assigns sixty Compute Units to eth_getLogs on Ethereum.

How many Alchemy CUs does debug_traceTransaction use?

Alchemy currently lists debug_traceTransaction at forty Compute Units.

Why do trace APIs cost more?

Trace APIs replay or inspect EVM execution in more detail than a normal transaction receipt. They can require more compute, access to execution state and larger responses, so providers often give them a higher billing weight or restrict them to specific plans.

What should I test before buying archive RPC?

Test a known historical block, a fixed historical balance query, a deterministic historical eth_call and the exact Trace or Debug method your application needs. Record billing units, errors and timestamps.

Why use Ethereum block 18,000,000 in an archive test?

It provides a fixed historical checkpoint whose block number, timestamp and block hash can be independently verified. That makes it useful for checking that every provider is querying the same chain history.

What is the hash of Ethereum block 18,000,000?

The independently verifiable block hash is 0x95b198e154acbfc64109dfd22d8224fe927fd8dfdedfae01587674482ba4baf3.

Do retries count toward archive RPC cost?

They can. Each retry is another provider request attempt and can consume additional request units, API Credits or Compute Units depending on the provider's billing model.

How should archive batch jobs handle failures?

Checkpoint completed work, retry only unresolved ranges, use exponential backoff for transient errors and keep missing historical state distinct from legitimate zero-value results.

Should I cache transaction receipts?

Yes where appropriate. Finalized historical receipts are immutable, so repeatedly downloading the same receipt wastes RPC usage without adding new information.

Should I cache traces?

Where your data policy allows it, caching normalized trace output can reduce repeated expensive trace calls for immutable historical transactions.

When should I consider a dedicated archive node?

Dedicated infrastructure deserves comparison when sustained archive or trace volume makes metered shared RPC expensive, or when you need isolated resources, custom execution-client settings, predictable performance or special retention requirements.

Is running my own Ethereum archive node cheap?

No. Modern Geth path-based archive mode is significantly more storage-efficient than legacy archive implementations, but historical Ethereum state still requires substantial storage, indexing, synchronization and operational work.

Can TokenToolHub monitor my archive RPC uptime?

No. TokenToolHub's research tools are not RPC uptime-monitoring services. Use dedicated infrastructure monitoring and observability tooling for provider availability and endpoint performance.

Can Transaction Decoder help with archive research?

Transaction Decoder can investigate supported EVM transactions once the transaction evidence has been retrieved. It is useful for interpreting the transaction, not for benchmarking archive RPC speed or uptime.

What is the biggest Ethereum archive RPC pricing mistake?

The biggest mistake is labeling every historical request as an archive-state request. Separate transaction history, old state, logs and traces before comparing provider billing models.

References and primary documentation


RPC pricing, request-unit multipliers, API Credit schedules, Compute Unit values, archive availability, trace eligibility, rate limits and plan allowances can change. Verify current provider documentation before procurement. Historical-state access should be tested at the actual block depth required by your application. Latency and failure rates depend on region, plan, endpoint mode, concurrency and request type and should not be compared unless those conditions are controlled. TokenToolHub tools analyze supported blockchain evidence and do not represent RPC service uptime monitoring. This guide is technical infrastructure research and does not constitute financial or investment advice.

TH

Add TokenToolHub shortcut

Keep scanners, research tools, guides, and the community one tap away on this device.

On iPhone, open TokenToolHub in Safari, tap the Share icon, then choose Add to Home Screen.