> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Throughput guidelines

> View Chainstack platform limits for node deployments, API requests, concurrent connections, and resource quotas across different subscription plan tiers.

## Rate limits

### Solana-specific

* Solana Mainnet:
  * Developer plan: 5 requests per second (RPS)
  * Growth plan: 50 requests per second (RPS)
* Solana Devnet:
  * Developer plan: 25 requests per second (RPS)
  * Growth plan: 250 requests per second (RPS)

### Arbitrum-specific

* Arbitrum Mainnet: `debug_traceBlockByNumber` 20 RPS on all plans

### BNB Smart Chain-specific

<Warning>
  **BSC limitation**: On BNB Smart Chain, `eth_getProof` only works against named block tags such as `"latest"`. A specific block number returns the error `proofs are available only for the 'latest' block`. This is a constraint of the BSC node client, not Chainstack.
</Warning>

### Cronos-specific

* Cronos Mainnet archive: `debug_traceBlockByNumber` 10 RPS on all plans

### All other protocols

For global plan RPS limits across all other protocols, see [Requests per second (RPS) plan limits](/docs/rps-plan-limits).

## EVM Range limits

For `eth_newFilter` requests, Developer subscription plan users get capped at 10,000 blocks per request.

For the `eth_getLogs`, the caps are:

* Developer plan — 100 blocks
* Growth plan — 10,000 blocks
* Pro plan — 10,000 blocks
* Business plan — 10,000 blocks
* Enterprise — 10,000 blocks. Customization available on request.

<Info>
  Learn more about `eth_getLogs` limits by reading [Understanding eth\_getLogs limitations](/docs/understanding-eth-getlogs-limitations).
</Info>

Need a larger range? [Dedicated nodes](/docs/dedicated-node) support custom block-range limits on request.

## EVM disabled debug methods

The following debug methods are disabled on EVM chains:

* `debug_executionWitness`
* `debug_executionWitnessByBlockHash`
* `debug_executePayload`

## Custom tracers on EVMs

EVM debug and trace methods accept two kinds of tracers:

* Native (built-in) tracers — selected by name, such as `callTracer`. Available on shared nodes, including [Global Nodes](/docs/global-elastic-node); the exact set depends on the protocol (see below).
* Custom JavaScript tracers — where you pass raw JavaScript as the `tracer` argument. These are disabled on shared nodes and are available as customized solutions on the [Enterprise plan](https://chainstack.com/pricing/) on [dedicated nodes](/docs/dedicated-node).

### Available native tracers

The following native tracers are enabled by default on all EVM chains:

* `4byteTracer`
* `callTracer`
* `prestateTracer`
* `noopTracer`

Ethereum (Mainnet, Sepolia, and Hoodi) additionally supports:

* `flatCallTracer`
* `muxTracer`
* `erc7562Tracer`

See [Debug and Trace | Ethereum](/reference/ethereum-debug-trace-rpc-methods#pre-built-native-tracers) for a description of each tracer.

### Disabled tracer error

Requesting a tracer that isn't enabled on the node—a custom JavaScript tracer, or a native tracer not available on that protocol—returns:

```json theme={"system"}
{
  "error": {
    "code": -32612,
    "message": "Custom tracers are disabled by default. See https://docs.chainstack.com/docs/limits for details."
  }
}
```

## Ethereum `eth_simulateV1` supports only full node

Running [eth\_simulateV1 | Ethereum](/reference/ethereum-simulatev1) will yield only a full node response—i.e. the data from the latest 128 blocks. Archive data is not supported for this call and the node will respond with `missing trie node`.

## Fantom method limits

The following limits are applied on all subscription plans:

* `debug_traceBlockByNumber`: 5 RPS
* `debug_traceBlockByHash`: 5 RPS

## Solana method limits

The following per-method RPS limits apply across all regions, except where a regional override is noted below:

| Method                    | RPS                                                           |
| ------------------------- | ------------------------------------------------------------- |
| `getBlockTime`            | 500                                                           |
| `getBlock`                | 400                                                           |
| `getTokenSupply`          | 300                                                           |
| `getTokenAccountsByOwner` | 80 — reduced to 20 in select regions (see below)              |
| `getSupply`               | 2                                                             |
| `getLargestAccounts`      | 0 — available on [Dedicated Nodes](/docs/dedicated-node) only |
| `getTokenLargestAccounts` | 0 — available on [Dedicated Nodes](/docs/dedicated-node) only |

[`getTokenAccountsByOwner`](/reference/solana-gettokenaccountsbyowner) — 80 RPS by default, reduced to 20 RPS in these regions:

* Chainstack Cloud Frankfurt `fra1` RPS: 20
* Chainstack Cloud Los Angeles `lax2` RPS: 20
* Chainstack Cloud Singapore `sgp1` RPS: 20

[`getProgramAccounts`](/reference/solana-getprogramaccounts) — unfiltered requests to large programs are blocked; always use `dataSize` or `memcmp` filters:

* Chainstack Global Network `global1` RPS: 3
* Chainstack Cloud London `lon1` RPS: 10
* Chainstack Cloud New York City `nyc1` RPS: 3

<Note>
  The `getConfirmedBlock` method was removed in Agave 2.0 and returns `Method not found` on current validators. Use [`getBlock`](/reference/solana-getblock) instead.
</Note>

Architectural limits (set by Solana, not Chainstack):

* `getBlocks`: 500,000 blocks range — [Solana architecture limit](https://solana.com/docs/rpc/http/getblocks).
* `getBlocksWithLimit`: 500,000 blocks range — [Solana architecture limit](https://solana.com/docs/rpc/http/getblockswithlimit).

## Solana accounts excluded from indexing

The following Solana accounts are excluded from the `program-id` secondary index and cannot be queried with [`getProgramAccounts`](/reference/solana-getprogramaccounts). Use [`getTokenAccountsByOwner`](/reference/solana-gettokenaccountsbyowner) instead:

* `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA` — SPL Token Program
* `kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6` — Kin

## Solana method availability

The following methods are available only on the paid plans:

* `getProgramAccounts`
* `getLargestAccounts` — this method is available only on [Dedicated Nodes](/docs/dedicated-node).
* `getSupply`
* `getTokenAccountsByOwner`

## Solana archive methods availability

While most methods are supported on Solana [Global Nodes](/docs/global-elastic-node), only the following methods can fetch archive data:

* `getSignaturesForAddress`
* `getTransaction`
* `getBlock`
* `getBlocks`
* `getBlockHeight`
* `getBlockTime`
* `getBlocksWithLimit`

Note that this is only true for mainnet as there are no Solana archive nodes for Devnet.
