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_blockNumber | 1 |
eth_chainId | 1 |
eth_getBlockByNumber | 5 |
eth_blobBaseFee | 10 |
eth_feeHistory | 10 |
eth_gasPrice | 10 |
eth_getBalance | 10 |
eth_getBlockByHash | 10 |
eth_getBlockReceipts | 10 |
eth_getBlockTransactionCountByHash | 10 |
eth_getBlockTransactionCountByNumber | 10 |
eth_getCode | 10 |
eth_getHeaderByHash | 10 |
eth_getHeaderByNumber | 10 |
eth_getProof | 10 |
eth_getRawTransactionByBlockHashAndIndex | 10 |
eth_getRawTransactionByBlockNumberAndIndex | 10 |
eth_getRawTransactionByHash | 10 |
eth_getStorageAt | 10 |
eth_getTransactionByBlockHashAndIndex | 10 |
eth_getTransactionByBlockNumberAndIndex | 10 |
eth_getTransactionByHash | 10 |
eth_getTransactionCount | 10 |
eth_getTransactionReceipt | 10 |
eth_getUncleByBlockHashAndIndex | 10 |
eth_getUncleByBlockNumberAndIndex | 10 |
eth_getUncleCountByBlockHash | 10 |
eth_getUncleCountByBlockNumber | 10 |
eth_maxPriorityFeePerGas | 10 |
eth_syncing | 10 |
net_version | 10 |
web3_clientVersion | 10 |
web3_sha3 | 10 |
eth_call | 15 |
eth_createAccessList | 20 |
eth_estimateGas | 20 |
eth_simulateV1 | 20 |
eth_getLogs | 30 |
eth_sendRawTransaction | 30 |
debug_traceBlockByHash | 100 |
debug_traceBlockByNumber | 100 |
debug_traceCall | 100 |
debug_traceTransaction | 100 |
trace_block | 100 |
trace_call | 100 |
trace_get | 100 |
trace_replayTransaction | 100 |
trace_transaction | 100 |
Політика методів
Доступні методи залежать від мережі; список для кожної мережі наведено нижче, а решту відомостей — у розділі Підтримувані мережі. Доступні лише методи, назва або шаблон яких збігається з дозволеними; будь-який інший метод повертає -32601 method not available.
Дозволено для кожної мережі нижче
eth_blockNumbereth_calleth_chainIdeth_estimateGaseth_feeHistoryeth_gasPriceeth_getBalanceeth_getBlockByHasheth_getBlockByNumbereth_getBlockReceiptseth_getBlockTransactionCountByHasheth_getBlockTransactionCountByNumbereth_getCodeeth_getLogseth_getStorageAteth_getTransactionByBlockHashAndIndexeth_getTransactionByBlockNumberAndIndexeth_getTransactionByHasheth_getTransactionCounteth_getTransactionReceipteth_maxPriorityFeePerGaseth_syncingnet_versionweb3_clientVersion
Arbitrum One
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: 5,000 блоків
Також дозволено
debug_traceBlockByHashdebug_traceBlockByNumberdebug_traceCalldebug_traceTransactioneth_blobBaseFeeeth_createAccessListeth_getHeaderByHasheth_getHeaderByNumbereth_getProofeth_getRawTransactionByBlockHashAndIndexeth_getRawTransactionByBlockNumberAndIndexeth_getRawTransactionByHasheth_getUncleByBlockHashAndIndexeth_getUncleByBlockNumberAndIndexeth_getUncleCountByBlockHasheth_getUncleCountByBlockNumbereth_sendRawTransactioneth_simulateV1web3_sha3
Base
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: 10,000 блоків
Також дозволено
eth_blobBaseFeeeth_createAccessListeth_getProofeth_simulateV1eth_getRawTransactionByHasheth_getRawTransactionByBlockHashAndIndexeth_getRawTransactionByBlockNumberAndIndexeth_getUncleCountByBlockNumbereth_getUncleCountByBlockHasheth_getUncleByBlockNumberAndIndexeth_getUncleByBlockHashAndIndexeth_getHeaderByNumbereth_getHeaderByHasheth_sendRawTransactionweb3_sha3
BNB Smart Chain
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: 100 блоків
Також дозволено
eth_sendRawTransaction
Ethereum
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: 250,000 блоків
Також дозволено
debug_traceBlockByHashdebug_traceBlockByNumberdebug_traceCalldebug_traceTransactioneth_blobBaseFeeeth_createAccessListeth_getProofeth_sendRawTransactiontrace_blocktrace_calltrace_gettrace_replayTransactiontrace_transactionweb3_sha3
Ethereum Sepolia
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: —
Також дозволено
eth_blobBaseFeeeth_createAccessListeth_getProofeth_sendRawTransactionweb3_sha3
HyperEVM
Надсилання транзакцій у цій мережі поки не підтримується (eth_sendRawTransaction повертає -32601 method_not_allowed); методи читання працюють нормально.
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: —
Polygon
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: 126 блоків
Також дозволено
debug_traceBlockByHashdebug_traceBlockByNumberdebug_traceCalldebug_traceTransactioneth_blobBaseFeeeth_createAccessListeth_getHeaderByHasheth_getHeaderByNumbereth_getProofeth_getRawTransactionByBlockHashAndIndexeth_getRawTransactionByBlockNumberAndIndexeth_getRawTransactionByHasheth_getUncleByBlockHashAndIndexeth_getUncleByBlockNumberAndIndexeth_getUncleCountByBlockHasheth_getUncleCountByBlockNumbereth_sendRawTransactioneth_simulateV1web3_sha3
Robinhood Chain
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: 900 блоків
Також дозволено
eth_blobBaseFeeeth_createAccessListeth_getProofeth_simulateV1eth_getRawTransactionByHasheth_getRawTransactionByBlockHashAndIndexeth_getRawTransactionByBlockNumberAndIndexeth_getUncleCountByBlockNumbereth_getUncleCountByBlockHasheth_getUncleByBlockNumberAndIndexeth_getUncleByBlockHashAndIndexeth_getHeaderByNumbereth_getHeaderByHasheth_sendRawTransactionweb3_sha3debug_traceTransactiondebug_traceCalldebug_traceBlockByNumberdebug_traceBlockByHash
Robinhood Chain Testnet
максимальний діапазон блоків eth_getLogs: 1,000 блоків; вікно стану: 1,023 блоки
Також дозволено
debug_traceBlockByHashdebug_traceBlockByNumberdebug_traceCalldebug_traceTransactioneth_blobBaseFeeeth_createAccessListeth_getHeaderByHasheth_getHeaderByNumbereth_getProofeth_getRawTransactionByBlockHashAndIndexeth_getRawTransactionByBlockNumberAndIndexeth_getRawTransactionByHasheth_getUncleByBlockHashAndIndexeth_getUncleByBlockNumberAndIndexeth_getUncleCountByBlockHasheth_getUncleCountByBlockNumbereth_sendRawTransactioneth_simulateV1web3_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 для отримання повної машинозчитуваної специфікації з усіма сигнатурами методів, схемами запитів і відповідей та інтерактивним відображенням деталей параметрів.
Востаннє оновлено:
Підтримувані мережі
Підтримувані блокчейн-мережі, Chain ID, структури URL та доступність функцій. Переглядайте ендпоінти, методи та покриття наборів даних для кожної мережі.
Повний довідник
Повна специфікація API JSON-RPC 2.0 та індекс ендпоінтів. Переглядайте всі підтримувані методи, формати запитів і відповідей, типи схем та коди помилок.