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

# Node Tracing / JSON RPC Requirements

### Standard JSON RPC Requirements

* Archive node with JSON RPC interface should strictly follow input/output interface described in [https://ethereum.github.io/execution-apis/api-documentation/](https://ethereum.github.io/execution-apis/api-documentation/)
* WebSocket interface (optional/highly recommended to enable) is used to subscribe to new block heads. Otherwise, Blockscout will trigger new blocks fetching by periodical polling the JSON RPC `eth_blockNumber` method.
* Support for the following standard Ethereum JSON RPC methods (documented at [https://ethereum.github.io/execution-apis/api-documentation/](https://ethereum.github.io/execution-apis/api-documentation/))
  * `eth_blockNumber`
  * `eth_call`
  * `eth_getBalance`
  * `eth_getCode`
  * `eth_getBlockByHash`
  * `eth_getBlockByNumber`
  * `eth_getTransactionByHash`
  * `eth_getTransactionByBlockHashAndIndex`
  * `eth_getTransactionByBlockNumberAndIndex`
  * `eth_getTransactionReceipt`
  * `eth_getUncleByBlockHashAndIndex`
  * `eth_getLogs`

### **Fetching Pending Transactions**

*Note pending transactions must be supported by the RPC node to enable this functionality with Blockscout*

| Client                  | Method                       |
| ----------------------- | ---------------------------- |
| Nethermind OpenEthereum | `parity_pendingTransactions` |
| Geth Erigon             | `txpool_content`             |

### Enable Tracing to Fetch Internal Transactions

| Client                         | Method                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Erigon Nethermind OpenEthereum | • `trace_replayBlockTransactions` (fetching of internal transactions)<br /><br />• `trace_block` (fetching of block rewards)                                                                                                                                                                                                                                                    |
| Geth                           | • `debug_traceBlockByNumber`<br /><br />• or `debug_traceTransaction`<br /><br />`callTracer` is used by default, starting from the Blockscout 5.1.0 release. To switch to a custom JS tracer, the Blockscout maintainer should set the `export INDEXER_INTERNAL_TRANSACTIONS_TRACER_TYPE=js` environment variable. Prior to the 5.1.0 release, js tracer was a default option. |
| RSK                            | • `trace_block` (fetching of internal transactions)                                                                                                                                                                                                                                                                                                                             |

### JSON RPC Performance Benchmarks

Time measures for response time of crucial JSON RPC methods for indexing in Blockscout. [Ways to improve speed](/faqs/faqs#how-do-i-speed-up-my-self-hosted-instance).

1. `eth_getBlockByNumber` without transaction receipts for a block with 15 transactions: Desired response time is \< 0.5s. For instance, in case of the Gnosis chain archive node, the response time for the block with \~20 transactions is \~0.4s.
2. `eth_getTransactionReceipt` for random transactions desired response time is \< 0.5s. For the Gnosis chain archive node the response time is \~0.3 - 0.4s.
3. Batched `eth_getTransactionReceipt` for 15 transactions acceptable response time is Less than 1s. For the Gnosis chain archive node, it is \~0.6 - 0.7s

### Rate Limit

The desired rate limit for RPC endpoint is 200 req/sec for the indexing phase and 100 req/sec for the indexed chain.

### EVM Requirements & Clients

* All EVM chains must [define these variables](/setup/env-variables#required-env-variables) during configuration.
* BlockScout currently supports Erigon, Geth, Nethermind, Hyperledger Besu, and Anvil clients. Define the node variant using the `ETHEREUM_JSONRPC_VARIANT` environment variable. [More information](/setup/requirements/client-settings)

### L2 -> L1 JSON RPC Methods

* Find information on JSON RPC method use with [different L2 types.](/setup/requirements/l2-greater-than-l1-json-rpc-method-requests)
