# Посібник з інтеграції Robinhood Chain: клієнти RPC, розгортання та події

> Source: https://docs.blockvectra.com/uk/guides/robinhood-chain/

Використовуйте Robinhood Chain RPC для публічних перевірок підключення та автентифікованих читань або Data API для підтримуваних наборів даних mainnet. Розробники та AI-агенти використовують однакові ендпоінти; розділяйте запити до mainnet та testnet.

* **Перший крок:** [Підключіться через viem або ethers](#connect-with-viem-or-ethers), зберігши `network.mjs` та один приклад клієнта перед запуском.
* **Готово, коли:** клієнт підтвердить, що RPC chain ID збігається з `chain_id` у каталозі, та виведе номер останнього блоку без помилки `RPC chain ID mismatch`.

[Параметри mainnet та варіанти доступу](https://blockvectra.com/en/chains/robinhood_mainnet/).

## Завдання, які допомагає виконати цей посібник

* [Перевірте Robinhood Chain RPC](#connect-with-viem-or-ethers) за допомогою публічного читання з viem або ethers, після чого використовуйте ключ для автентифікованих методів.
* [Перевірте підключення до testnet RPC](#testnet), прочитавши `eth_chainId` перед виконанням операцій у testnet.
* [Запитуйте активність токенізованих акцій](#tokenized-stock-data) за допомогою Data API в mainnet після перевірки підтримки набору даних; метрики описують активність ончейн, а не ціни акцій.

## Доступ до RPC та WebSocket

* **Публічний RPC URL**: знайдіть ендпоінт без ключа, підтримувані публічні методи та ліміти запитів на [сторінці Robinhood Chain mainnet](https://blockvectra.com/en/chains/robinhood_mainnet/) або [сторінці testnet](https://blockvectra.com/en/chains/robinhood_testnet/).
* **JSON-RPC з API ключем**: використовуйте ендпоінти та приклади curl нижче. Для журналів див. [довідник методу eth\_getLogs](https://docs.blockvectra.com/en/api/json-rpc/methods/eth_getLogs/) та [посібник з обмеження діапазону блоків](https://docs.blockvectra.com/en/guides/getlogs-block-range/).
* **WebSocket з API ключем**: використовуйте ендпоінти WebSocket нижче та дотримуйтесь [посібника з підписок WebSocket](https://docs.blockvectra.com/en/guides/websocket-subscriptions/) для `newHeads` та `logs`. Публічний доступ до RPC надається через HTTP JSON-RPC; підключення WebSocket вимагають наявності ключа.

## Інформація про мережу та ендпоінти

Кожен запит до Robinhood Chain явно ідентифікує свою цільову мережу в шляху URL за допомогою слага `robinhood_mainnet`. JSON-RPC підтримує як автентифікацію за ключем у шляху, так і передачу ключа в заголовку запиту (`x-api-key`), тоді як Data API надає ендпоінти REST за адресою `/v1/data/robinhood_mainnet/`.

Параметри та ендпоінти нижче відображають активні параметри мережі:

| Параметр / Ендпоінт | Значення / Шаблон | Автентифікація |
|---|---|---|
| Chain ID (EIP-155) | `4663` | — |
| JSON-RPC (ключ у шляху) | `POST https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}` | API key у шляху URL |
| JSON-RPC (ключ у заголовку) | `POST https://api.blockvectra.com/v1/robinhood_mainnet` | Заголовок x-api-key: {api_key} |
| WebSocket (ключ у шляху) | `wss://api.blockvectra.com/v1/robinhood_mainnet/{api_key}` | API key у шляху URL |
| WebSocket (ключ у заголовку) | `wss://api.blockvectra.com/v1/robinhood_mainnet` | Заголовок x-api-key: {api_key} або Authorization: Bearer {api_key} |
| Підписки WebSocket | `newHeads, logs` | — |
| Базовий URL Data API | `GET https://api.blockvectra.com/v1/data/robinhood_mainnet/…` | Заголовок x-api-key: {api_key} |
| Публічний статус | `GET https://api.blockvectra.com/v1/status` | Без автентифікації (публічний) |

## Підключення через viem або ethers

Розробники та AI-агенти можуть використовувати однакові налаштування на стороні сервера. Використовуйте Node.js 24 або новішої версії, viem 2 або ethers 6 і починайте з публічних читань. Безпечно встановіть `BLOCKVECTRA_API_KEY` у змінних середовища для методів із ключем та WebSocket. Не розміщуйте ключі та URL RPC із ключами в клієнтському коді браузера, журналах та системах контролю версій.

Збережіть це як `network.mjs`. Почніть у testnet; встановіть `BLOCKVECTRA_CHAIN=robinhood_mainnet` для переходу на mainnet. Він читає `chain_id` та політику методів із [GET /v1/chains](https://api.blockvectra.com/v1/chains). Для читань без ключа використовуйте `public.url` каталогу та лише методи, перелічені в `public.methods`; доступність публічного HTTP не означає доступ до WebSocket.

```js
const chainSlug = process.env.BLOCKVECTRA_CHAIN ?? 'robinhood_testnet';
const key = process.env.BLOCKVECTRA_API_KEY;
const catalogUrl = 'https://api.blockvectra.com/v1/chains';
const response = await fetch(catalogUrl, { signal: AbortSignal.timeout(15_000) });
if (!response.ok) throw new Error(`Chains HTTP ${response.status}`);
const catalog = await response.json();
export const chainInfo = catalog.chains.find(item => item.chain === chainSlug);
if (!chainInfo || !Number.isSafeInteger(chainInfo.chain_id) || chainInfo.chain_id <= 0) {
  throw new Error('Missing chain or chain_id');
}
export function allows(method) {
  const matches = pattern => pattern.endsWith('*')
    ? method.startsWith(pattern.slice(0, -1)) : pattern === method;
  if (!key) return (chainInfo.public?.methods ?? []).some(matches);
  return (chainInfo.methods?.allow ?? []).some(matches)
    && !(chainInfo.methods?.deny ?? []).some(matches);
}
if (!allows('eth_chainId')) throw new Error('eth_chainId is unavailable');
export const rpcUrl = key
  ? new URL(`./${chainSlug}/${encodeURIComponent(key)}`, catalogUrl).href
  : chainInfo.public?.url;
if (!rpcUrl) throw new Error('Public RPC is unavailable; set BLOCKVECTRA_API_KEY');
```

Збережіть як `viem-client.mjs`, встановіть за допомогою `npm install viem@2`, потім виконайте `node viem-client.mjs`.

```js
import { createPublicClient, defineChain, http } from 'viem';
import { chainInfo, rpcUrl } from './network.mjs';

export const chain = defineChain({
  id: chainInfo.chain_id,
  name: chainInfo.name,
  nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 },
  rpcUrls: { default: { http: [rpcUrl] } },
});
export const client = createPublicClient({ chain, transport: http(rpcUrl) });
if (await client.getChainId() !== chain.id) throw new Error('RPC chain ID mismatch');
console.log(await client.getBlockNumber());
```

Для ethers збережіть як `ethers-client.mjs`, встановіть за допомогою `npm install ethers@6`, потім виконайте `node ethers-client.mjs`.

```js
import { JsonRpcProvider } from 'ethers';
import { chainInfo, rpcUrl } from './network.mjs';

const provider = new JsonRpcProvider(rpcUrl, chainInfo.chain_id, { batchMaxCount: 1 });
const network = await provider.getNetwork();
if (network.chainId !== BigInt(chainInfo.chain_id)) throw new Error('RPC chain ID mismatch');
console.log(await provider.getBlockNumber());
provider.destroy();
```

## Розгортання за допомогою Foundry або Hardhat

Спочатку поповніть адресу розгортання тестовим ETH через [кран testnet](https://docs.blockvectra.com/en/guides/robinhood-testnet-faucet/); транзакції в mainnet потребують mainnet ETH. В [офіційному посібнику з мережі та розгортання](https://docs.robinhood.com/chain/deploy-smart-contracts/) наведено chain ID для mainnet та testnet (дата перегляду: 2026-10-07). Таблиці ендпоінтів на цій сторінці використовують `/v1/chains`.

Експортуйте вибраний URL та chain ID з `network.mjs`. Перевірте `eth_sendRawTransaction` за `methods.allow` та `methods.deny` перед трансляцією.

```bash
export RPC_URL="$(node --input-type=module -e "import { rpcUrl, allows } from './network.mjs'; if (!allows('eth_sendRawTransaction')) throw new Error('Broadcast unavailable'); console.log(rpcUrl)")"
export CHAIN_ID="$(node --input-type=module -e "import { chainInfo } from './network.mjs'; console.log(chainInfo.chain_id)")"
```

Продовжте зі спільним [посібником з розгортання у Foundry або Hardhat](https://docs.blockvectra.com/en/guides/deploy-contract/) для `Hello.sol`, налаштувань інструментів, трансляції та перевірки квитанцій.

## Прослуховування подій контракту через WebSocket

Збережіть як `watch-logs.mjs` і встановіть `LOG_ADDRESS` для розгорнутого контракту або контракту токена, який ви відстежуєте. Запустіть `node watch-logs.mjs`. Код перевіряє `ws` та `subscriptions` з `/v1/chains` перед підпискою на `logs`.

```js
import { createPublicClient, webSocket, isAddress } from 'viem';
import { chain } from './viem-client.mjs';
import { chainInfo, rpcUrl } from './network.mjs';

if (!process.env.BLOCKVECTRA_API_KEY) throw new Error('WebSocket requires BLOCKVECTRA_API_KEY');
const address = process.env.LOG_ADDRESS;
if (!chainInfo.ws || !chainInfo.subscriptions?.includes('logs')) {
  throw new Error('WebSocket logs are unavailable; use HTTP backfill or webhook push');
}
if (!address || !isAddress(address)) throw new Error('Set LOG_ADDRESS');
const wsUrl = new URL(rpcUrl);
wsUrl.protocol = 'wss:';
const client = createPublicClient({ chain, transport: webSocket(wsUrl.href) });
const unwatch = client.watchEvent({
  address, poll: false,
  onLogs: logs => console.log(logs),
  onError: error => console.error(error),
});
process.once('SIGINT', () => { unwatch(); process.exit(0); });
```

Після запуску слухача надішліть транзакцію `ping()` з іншого термінала, використовуючи ті самі експортовані змінні розгортання:

```bash
cast send "$CONTRACT_ADDRESS" "ping()" --rpc-url "$RPC_URL" \
  --private-key "$DEPLOYER_PRIVATE_KEY"
```

Зберігайте останній оброблений блок і дедуплікуйте за `(blockHash, transactionHash, logIndex)`. Після повторного підключення відновіть пропущені блоки за допомогою обмежених запитів `eth_getLogs`; узгоджуйте журнали, позначені як `removed`, у разі реорганізації. Див. [підписки WebSocket](https://docs.blockvectra.com/en/guides/websocket-subscriptions/) та [ліміти діапазону блоків](https://docs.blockvectra.com/en/guides/getlogs-block-range/).

Для подій адрес, що доставляються на ваш HTTPS-отримувач, **GET /v1/push/chains містить список підтримуваних мереж** та налаштування підтвердження; використовуйте заголовок `x-api-key`. Дотримуйтесь [посібника з webhook push](https://docs.blockvectra.com/en/guides/webhook-push/) для підписок, перевірки підпису, дедуплікації та повторного відтворення. Для запитів активності токенів акцій у mainnet продовжте з [посібником з акцій](https://docs.blockvectra.com/en/guides/stocks/).

## Прямі приклади curl

Ви можете виконувати виклики JSON-RPC відразу, використовуючи стандартні клієнти HTTP. Замініть `{api_key}` на ваш API ключ BlockVectra:

**eth_chainId (Header)**

Запитуйте EIP-155 chain ID за допомогою заголовка запиту `x-api-key`:

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: {api_key}" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```


  **eth_blockNumber (Path)**

Запитуйте номер останнього блоку, передаючи API ключ у шляху URL:

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
```


### Структура відповіді

Відповіді відповідають специфікації JSON-RPC 2.0:

* **Успіх**: повертає конверт із `jsonrpc: "2.0"`, тим самим `id` та рядком `result`, що містить шістнадцяткове значення (`eth_chainId` повертає hex-кодований chain ID; `eth_blockNumber` повертає останню висоту блоку).
* **Заборонені методи**: запит методу поза межами дозволених методів мережі повертає код помилки JSON-RPC `-32601` (`method not available`, не тарифікується).
* **Запити поза вікном історії**: запити історичного стану, раніші за вікно збереження стану, повертають код помилки JSON-RPC `-32011` (не тарифікується).
* **Некоректні параметри**: неправильно сформовані або недозволені параметри запиту повертають код помилки JSON-RPC `-32602` (не тарифікується).

## Можливості та політика методів

Доступні методи JSON-RPC, ліміти діапазону блоків журналів та збереження історичного стану в Robinhood Chain динамічно публікуються через `GET /v1/chains`. Трасування виконання (`debug_trace*`, включаючи `debug_traceTransaction`) регулюється політикою методів мережі:

### Параметри мережі та ліміти

- **Діапазон блоків eth_getLogs**: Максимум 1000 блоків на запит
- **Вікно історичного стану**: Останні 900 блоків (запити за межами повертають -32011)
- **Трасування виконання (debug_trace*)**: Підтримується (debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash)

Дозволені методи для кожної мережі: [Підтримувані мережі](https://docs.blockvectra.com/en/chains/)

## Testnet

Щоб отримати тестовий ETH для транзакцій, перегляньте [посібник із крана Robinhood Chain testnet](https://docs.blockvectra.com/en/guides/robinhood-testnet-faucet/).

Robinhood Chain Testnet (chain ID: 46630) використовує той самий API ключ, що й mainnet, на ендпоінті `https://api.blockvectra.com/v1/robinhood_testnet`, з автентифікацією через заголовок запиту `x-api-key`.

Запити до testnet використовують ту саму вагу CU, що й mainnet, та списуються з того самого балансу і безкоштовних кредитів. Доступні методи JSON-RPC та збереження історичного стану в Robinhood Chain Testnet динамічно публікуються через `GET /v1/chains`.

Готовий до запуску трикроковий стартовий посібник, який зчитує testnet без ключа, передає журнали через WebSocket, а потім переносить той самий ключ на mainnet, див. у [стартовому посібнику Robinhood Chain Testnet](https://docs.blockvectra.com/en/guides/robinhood-testnet-starter/).

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_testnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: {api_key}" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```

Очікувана відповідь:

```json
{"jsonrpc":"2.0","id":1,"result":"0xb626"}
```

| Параметр / Ендпоінт | Значення / Шаблон | Автентифікація |
|---|---|---|
| Chain ID (EIP-155) | `46630` | — |
| JSON-RPC (ключ у шляху) | `POST https://api.blockvectra.com/v1/robinhood_testnet/{api_key}` | API key у шляху URL |
| JSON-RPC (ключ у заголовку) | `POST https://api.blockvectra.com/v1/robinhood_testnet` | Заголовок x-api-key: {api_key} |
| WebSocket (ключ у шляху) | `wss://api.blockvectra.com/v1/robinhood_testnet/{api_key}` | API key у шляху URL |
| WebSocket (ключ у заголовку) | `wss://api.blockvectra.com/v1/robinhood_testnet` | Заголовок x-api-key: {api_key} або Authorization: Bearer {api_key} |
| Підписки WebSocket | `newHeads, logs` | — |
| Базовий URL Data API | `Поки що недоступно` | — |
| Публічний статус | `GET https://api.blockvectra.com/v1/status` | Без автентифікації (публічний) |

### Параметри мережі та ліміти

- **Діапазон блоків eth_getLogs**: Максимум 1000 блоків на запит
- **Вікно історичного стану**: Останні 1023 блоків (запити за межами повертають -32011)
- **Трасування виконання (debug_trace*)**: Підтримується (debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash)

Дозволені методи для кожної мережі: [Підтримувані мережі](https://docs.blockvectra.com/en/chains/)

## Дані токенізованих акцій

У Robinhood Chain сервіс BlockVectra Data API надає щоденні ончейн-метрики та метадані для токенізованих акцій через два ендпоінти:

* **Щоденна таблиця лідерів (`GET /v1/data/robinhood_mainnet/stocks`)**: щоденна таблиця активності токенізованих акцій за вказану дату UTC, відсортована за спаданням активності переказів.
* **Отримання однієї токенізованої акції (`GET /v1/data/robinhood_mainnet/stocks/{token}`)**: метадані контракту токена та до 30 днів останніх щоденних метрик за адресою токена.

Детальні параметри запиту, конверти відповідей (`StockDailyListEnvelope` та `StockTokenEnvelope`), примітки щодо пагінації та оцінки споживання CU див. у [посібнику з токенізованих акцій](https://docs.blockvectra.com/en/guides/stocks/).

Повний стартовий шаблон: [blockvectra/robinhood-stock-tokens](https://github.com/blockvectra/robinhood-stock-tokens)

## Початок роботи та API ключі

Нові акаунти отримують 30,000,000 CU під час реєстрації — без кредитної картки.

Ви можете спочатку спробувати публічний ендпоінт без ключа `https://api.blockvectra.com/v1/robinhood_mainnet/public` (тільки гаманцеві методи JSON-RPC, для Data API потрібен ключ; методи та ліміти визначаються `/v1/chains`); зареєструйте акаунт, якщо вам потрібен вищий ліміт швидкості.

* **Вебконсоль**: зареєструйтесь за допомогою підпису Ethereum-гаманця та згенеруйте API ключ у [Консолі](https://console.blockvectra.com/login/?next=%2Fkeys%2F). Перегляньте деталі налаштування в [посібнику зі швидкого старту](https://docs.blockvectra.com/en/quickstart/).
* **Програмна реєстрація**: автономні AI-агенти, автоматизовані скрипти та конвеєри CI можуть входити та створювати API ключі за допомогою підписів Ethereum-гаманця (EIP-191) без браузера. Дотримуйтесь [посібника з програмної реєстрації](https://docs.blockvectra.com/en/guides/programmatic-signup/).
* **AI-агенти**: автономні AI-агенти можуть досліджувати можливості Robinhood Chain за допомогою офіційного сервера Model Context Protocol (MCP). Див. [Підключення AI-агентів до BlockVectra](https://docs.blockvectra.com/en/guides/ai-agents/).
* **Підвищення лімітів**: після поповнення балансу загальний ліміт викликів на секунду для акаунта знімається; для кожного ключа продовжують діяти ліміти швидкості та сплесків Compute Unit (CU). Поточні тарифи та розрахункові одиниці див. на [сторінці цін](https://blockvectra.com/en/pricing/).

## Наступні кроки

* [Перегляньте каталог датасетів](https://blockvectra.com/en/data/), щоб побачити всі набори даних, які індексує BlockVectra.
* [Перегляньте безкоштовний план та ціни](https://blockvectra.com/en/pricing/#free), щоб перевірити, що включено у ваш акаунт.
* [Увійдіть до консолі](https://console.blockvectra.com/login/?next=%2Fkeys%2F), щоб створити API ключ.
