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/

  • 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/)

    • 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

ClientMethod

Erigon Nethermind OpenEthereum

parity_pendingTransactions

Geth

txpool_content

Enable Tracing to Fetch Internal Transactions

ClientMethod

Erigon Nethermind OpenEthereum

  • trace_replayBlockTransactions (fetching of internal transactions)

  • trace_block (fetching of block rewards)

Geth

  • debug_traceBlockByNumber

  • or debug_traceTransaction

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.

JSON RPC Performance Benchmarks

Time measures for response time of crucial JSON RPC methods for indexing in Blockscout. Ways to improve speed.

  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 during configuration.

  • BlockScout currently supports Erigon, Geth, Nethermind, Hyperledger Besu, and Ganache clients. Define the node variant using the ETHEREUM_JSONRPC_VARIANT environment variable. More information

Last updated

Logo

Copyright © Blockscout Limited 2023-2024