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

Enable Tracing to Fetch Internal Transactions

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