JSON-RPC

JSON-RPC

Поддерживаемые методы JSON-RPC, веса CU и коды ошибок. Настройка эндпоинта, выбор сети, проверка доступности методов, цен и правил тарификации.

Обзор

Все запросы учитываются в Compute Units (CU) и имеют лимиты частоты на каждый ключ.

  • Эндпоинт: POST /v1/{chain}/{api_key} (ключ в пути) или POST /v1/{chain} (ключ в заголовке). Для Robinhood Chain значение {chain} равно robinhood_mainnet: https://api.blockvectra.com/v1/robinhood_mainnet. Один и тот же API key работает во всех поддерживаемых сетях
  • Протокол: HTTP POST, одиночный вызов или пакет
  • Учет: общая стоимость запроса в CU списывается из емкости burst ключа сразу при поступлении. За каждый принятый вызов, получивший ответ, взимается плата по опубликованному весу метода в CU; в Справочнике ошибок перечислены случаи, которые не тарифицируются. Биллинг рассчитывается ежечасно (с округлением в меньшую сторону до целых единиц, остаток переносится, расчет выполняется примерно через 15 минут после окончания периода)
  • Ethereum: собственный список методов и окно состояния, определяемое параметром state_window_blocks — см. Поддерживаемые сети → Ethereum.

Полные схемы параметров, сигнатуры методов и интерактивное тестирование запросов по всем методам представлены в Полном справочнике. Информацию о версионировании путей, правилах обратной совместимости и рекомендациях по SDK см. в разделе Версионирование и совместимость API.

Инструкции по получению API key и отправке первого запроса приведены в разделе Быстрый старт; там также рассматриваются способы передачи ключа и пакетные запросы.

Распространенные запросы

Практические примеры распространенных запросов.

Запрос логов (eth_getLogs)

Фильтрация логов контракта за недавний диапазон блоков — в данном случае событие Transfer стандарта ERC-20 (топик 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef). См. таблицу Правила учета CU ниже для уточнения текущего веса eth_getLogs в CU; диапазон шире, чем max_logs_block_range сети (из GET /v1/chains), отклоняется с кодом -32602.

export BLOCKVECTRA_API_KEY=rgw_your_api_key

curl -X POST "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_getLogs",
    "params": [{
      "fromBlock": "0x45a2409",
      "toBlock": "0x45a2609",
      "address": "0x1111111111111111111111111111111111111111",
      "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
    }],
    "id": 1
  }'

Трассировка транзакции (debug_traceTransaction)

Трассировка внутренних вызовов транзакции с помощью callTracer. См. таблицу Правила учета CU ниже для уточнения текущего веса debug_traceTransaction в CU. Как и другие методы чтения состояния, он отклоняется, если целевой блок выходит за пределы окна недавнего состояния сети (-32011). Размер окна определяется параметром state_window_blocks сети (из GET /v1/chains). В сетях, предоставляющих трассировки, используйте Data API для доступа к историческим трассировкам.

export BLOCKVECTRA_API_KEY=rgw_your_api_key

curl -X POST "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H 'Content-Type: application/json' \
  -H "x-api-key: $BLOCKVECTRA_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "method": "debug_traceTransaction",
    "params": ["0xYOUR_TRANSACTION_HASH", {"tracer": "callTracer"}],
    "id": 1
  }'

Правила учета Compute Units (CU)

Вес Compute Unit (CU) для каждого метода JSON-RPC.

МетодВес (CU)
eth_blockNumber1
eth_chainId1
eth_getBlockByNumber5
eth_blobBaseFee10
eth_feeHistory10
eth_gasPrice10
eth_getBalance10
eth_getBlockByHash10
eth_getBlockReceipts10
eth_getBlockTransactionCountByHash10
eth_getBlockTransactionCountByNumber10
eth_getCode10
eth_getHeaderByHash10
eth_getHeaderByNumber10
eth_getProof10
eth_getRawTransactionByBlockHashAndIndex10
eth_getRawTransactionByBlockNumberAndIndex10
eth_getRawTransactionByHash10
eth_getStorageAt10
eth_getTransactionByBlockHashAndIndex10
eth_getTransactionByBlockNumberAndIndex10
eth_getTransactionByHash10
eth_getTransactionCount10
eth_getTransactionReceipt10
eth_getUncleByBlockHashAndIndex10
eth_getUncleByBlockNumberAndIndex10
eth_getUncleCountByBlockHash10
eth_getUncleCountByBlockNumber10
eth_maxPriorityFeePerGas10
eth_syncing10
net_version10
web3_clientVersion10
web3_sha310
eth_call15
eth_createAccessList20
eth_estimateGas20
eth_simulateV120
eth_getLogs30
eth_sendRawTransaction30
debug_traceBlockByHash100
debug_traceBlockByNumber100
debug_traceCall100
debug_traceTransaction100
trace_block100
trace_call100
trace_get100
trace_replayTransaction100
trace_transaction100

Политика методов

Доступные методы зависят от сети; список для каждой сети приведен ниже, а остальные сведения описаны в разделе Поддерживаемые сети. Доступны только методы, соответствующие разрешенному имени или шаблону; любой другой метод возвращает -32601 method not available.

Разрешено во всех сетях ниже

  • eth_blockNumber
  • eth_call
  • eth_chainId
  • eth_estimateGas
  • eth_feeHistory
  • eth_gasPrice
  • eth_getBalance
  • eth_getBlockByHash
  • eth_getBlockByNumber
  • eth_getBlockReceipts
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber
  • eth_getCode
  • eth_getLogs
  • eth_getStorageAt
  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionByHash
  • eth_getTransactionCount
  • eth_getTransactionReceipt
  • eth_maxPriorityFeePerGas
  • eth_syncing
  • net_version
  • web3_clientVersion

Arbitrum One

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: 6,000 блоков

Также разрешено

  • debug_traceBlockByHash
  • debug_traceBlockByNumber
  • debug_traceCall
  • debug_traceTransaction
  • eth_blobBaseFee
  • eth_createAccessList
  • eth_getHeaderByHash
  • eth_getHeaderByNumber
  • eth_getProof
  • eth_getRawTransactionByBlockHashAndIndex
  • eth_getRawTransactionByBlockNumberAndIndex
  • eth_getRawTransactionByHash
  • eth_getUncleByBlockHashAndIndex
  • eth_getUncleByBlockNumberAndIndex
  • eth_getUncleCountByBlockHash
  • eth_getUncleCountByBlockNumber
  • eth_sendRawTransaction
  • eth_simulateV1
  • web3_sha3

Base

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: 10,000 блоков

Также разрешено

  • eth_blobBaseFee
  • eth_createAccessList
  • eth_getProof
  • eth_simulateV1
  • eth_getRawTransactionByHash
  • eth_getRawTransactionByBlockHashAndIndex
  • eth_getRawTransactionByBlockNumberAndIndex
  • eth_getUncleCountByBlockNumber
  • eth_getUncleCountByBlockHash
  • eth_getUncleByBlockNumberAndIndex
  • eth_getUncleByBlockHashAndIndex
  • eth_getHeaderByNumber
  • eth_getHeaderByHash
  • eth_sendRawTransaction
  • web3_sha3

BNB Smart Chain

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: 100 блоков

Также разрешено

  • eth_sendRawTransaction

Ethereum

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: 250,000 блоков

Также разрешено

  • debug_traceBlockByHash
  • debug_traceBlockByNumber
  • debug_traceCall
  • debug_traceTransaction
  • eth_blobBaseFee
  • eth_createAccessList
  • eth_getProof
  • eth_sendRawTransaction
  • trace_block
  • trace_call
  • trace_get
  • trace_replayTransaction
  • trace_transaction
  • web3_sha3

Ethereum Sepolia

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: —

Также разрешено

  • eth_blobBaseFee
  • eth_createAccessList
  • eth_getProof
  • eth_sendRawTransaction
  • web3_sha3

HyperEVM

Отправка транзакций в этой сети пока не поддерживается (eth_sendRawTransaction возвращает -32601 method_not_allowed); методы чтения работают в обычном режиме.

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: —

Polygon

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: 126 блоков

Также разрешено

  • debug_traceBlockByHash
  • debug_traceBlockByNumber
  • debug_traceCall
  • debug_traceTransaction
  • eth_blobBaseFee
  • eth_createAccessList
  • eth_getHeaderByHash
  • eth_getHeaderByNumber
  • eth_getProof
  • eth_getRawTransactionByBlockHashAndIndex
  • eth_getRawTransactionByBlockNumberAndIndex
  • eth_getRawTransactionByHash
  • eth_getUncleByBlockHashAndIndex
  • eth_getUncleByBlockNumberAndIndex
  • eth_getUncleCountByBlockHash
  • eth_getUncleCountByBlockNumber
  • eth_sendRawTransaction
  • eth_simulateV1
  • web3_sha3

Robinhood Chain

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: 900 блоков

Также разрешено

  • eth_blobBaseFee
  • eth_createAccessList
  • eth_getProof
  • eth_simulateV1
  • eth_getRawTransactionByHash
  • eth_getRawTransactionByBlockHashAndIndex
  • eth_getRawTransactionByBlockNumberAndIndex
  • eth_getUncleCountByBlockNumber
  • eth_getUncleCountByBlockHash
  • eth_getUncleByBlockNumberAndIndex
  • eth_getUncleByBlockHashAndIndex
  • eth_getHeaderByNumber
  • eth_getHeaderByHash
  • eth_sendRawTransaction
  • web3_sha3
  • debug_traceTransaction
  • debug_traceCall
  • debug_traceBlockByNumber
  • debug_traceBlockByHash

Robinhood Chain Testnet

Максимальный диапазон блоков eth_getLogs: 1,000 блоков; Окно состояния: 1,023 блоков

Также разрешено

  • debug_traceBlockByHash
  • debug_traceBlockByNumber
  • debug_traceCall
  • debug_traceTransaction
  • eth_blobBaseFee
  • eth_createAccessList
  • eth_getHeaderByHash
  • eth_getHeaderByNumber
  • eth_getProof
  • eth_getRawTransactionByBlockHashAndIndex
  • eth_getRawTransactionByBlockNumberAndIndex
  • eth_getRawTransactionByHash
  • eth_getUncleByBlockHashAndIndex
  • eth_getUncleByBlockNumberAndIndex
  • eth_getUncleCountByBlockHash
  • eth_getUncleCountByBlockNumber
  • eth_sendRawTransaction
  • eth_simulateV1
  • web3_sha3

Лимиты:

  • Пакеты: не более 100 вызовов в одном запросе; также ограничено burst-емкостью CU ключа (см. ниже).
  • Тело запроса: не более 2 МиБ
  • Burst CU: каждый API key имеет корзину CU (пополнение cu_per_sec, емкость burst_cu — по умолчанию 400 CU/s и всплеск (burst) 1,600 CU; отображается для каждого ключа в таблице Keys в консоли). Отдельный запрос (включая весь пакет JSON-RPC), суммарный объем CU которого превышает емкость burst ключа, отклоняется с ошибкой -32022 request_exceeds_burst (request cost <N> CU exceeds burst capacity <M> CU); разделите его на более мелкие пакеты.

Коды ошибок

См. Справочник ошибок с описанием каждого кода ошибки, признаком тарификации и рекомендациями по действиям.

Полный справочник OpenAPI

См. Полный справочник OpenAPI для доступа к полной машиночитаемой спецификации со всеми сигнатурами методов, схемами запросов и ответов и подробным интерактивным описанием параметров.

Последнее обновление:

На этой странице