JSON-RPC

JSON-RPC

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

Огляд

Усі запити обліковуються в Compute Units (CU) і підлягають обмеженню швидкості (rate limit) для кожного ключа.

  • Ендпоінт: 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). Поточну вагу eth_getLogs у CU див. нижче в таблиці Правила обліку в 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. Поточну вагу debug_traceTransaction у CU див. нижче в таблиці Правила обліку в 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
  }'

Правила обліку в 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 блоків; вікно стану: 5,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 MiB
  • CU burst: кожен API key має накопичувач (bucket) CU (швидкість поповнення cu_per_sec, ємність burst_cu — за замовчуванням 400 CU/s і burst 1,600 CU; відображається для кожного ключа в таблиці Keys консолі). Якщо сумарна вартість у CU окремого запиту — включно з усім пакетом JSON-RPC — перевищує ємність burst для ключа, запит відхиляється з кодом -32022 request_exceeds_burst (request cost <N> CU exceeds burst capacity <M> CU); розділіть його на менші пакети.

Коди помилок

Перегляньте довідник помилок для кожного коду помилки: чи тарифікується він і що слід зробити.

Повний довідник OpenAPI

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

Востаннє оновлено:

На цій сторінці