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

Підключайтеся до Robinhood Chain за допомогою viem або ethers, розгортайте за допомогою Foundry або Hardhat, слухайте журнали WebSocket або події webhook та запитуйте активність токенізованих акцій.

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

  • Перший крок: Підключіться через viem або ethers, зберігши network.mjs та один приклад клієнта перед запуском.
  • Готово, коли: клієнт підтвердить, що RPC chain ID збігається з chain_id у каталозі, та виведе номер останнього блоку без помилки RPC chain ID mismatch.

Параметри mainnet та варіанти доступу.

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

Доступ до 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}
Підписки WebSocketnewHeads, logs—
Базовий URL Data APIGET 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. Для читань без ключа використовуйте public.url каталогу та лише методи, перелічені в public.methods; доступність публічного HTTP не означає доступ до WebSocket.

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.

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.

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; транзакції в mainnet потребують mainnet ETH. В офіційному посібнику з мережі та розгортання наведено chain ID для mainnet та testnet (дата перегляду: 2026-10-07). Таблиці ендпоінтів на цій сторінці використовують /v1/chains.

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

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 для Hello.sol, налаштувань інструментів, трансляції та перевірки квитанцій.

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

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

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() з іншого термінала, використовуючи ті самі експортовані змінні розгортання:

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

Зберігайте останній оброблений блок і дедуплікуйте за (blockHash, transactionHash, logIndex). Після повторного підключення відновіть пропущені блоки за допомогою обмежених запитів eth_getLogs; узгоджуйте журнали, позначені як removed, у разі реорганізації. Див. підписки WebSocket та ліміти діапазону блоків.

Для подій адрес, що доставляються на ваш HTTPS-отримувач, GET /v1/push/chains містить список підтримуваних мереж та налаштування підтвердження; використовуйте заголовок x-api-key. Дотримуйтесь посібника з webhook push для підписок, перевірки підпису, дедуплікації та повторного відтворення. Для запитів активності токенів акцій у mainnet продовжте з посібником з акцій.

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

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

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

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":[]}'

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

Відповіді відповідають специфікації 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)

Дозволені методи для кожної мережі: Підтримувані мережі

Testnet

Щоб отримати тестовий ETH для транзакцій, перегляньте посібник із крана Robinhood Chain testnet.

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.

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":[]}'

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

{"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}
Підписки WebSocketnewHeads, 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)

Дозволені методи для кожної мережі: Підтримувані мережі

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

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

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

Детальні параметри запиту, конверти відповідей (StockDailyListEnvelope та StockTokenEnvelope), примітки щодо пагінації та оцінки споживання CU див. у посібнику з токенізованих акцій.

Повний стартовий шаблон: 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 ключ у Консолі. Перегляньте деталі налаштування в посібнику зі швидкого старту.
  • Програмна реєстрація: автономні AI-агенти, автоматизовані скрипти та конвеєри CI можуть входити та створювати API ключі за допомогою підписів Ethereum-гаманця (EIP-191) без браузера. Дотримуйтесь посібника з програмної реєстрації.
  • AI-агенти: автономні AI-агенти можуть досліджувати можливості Robinhood Chain за допомогою офіційного сервера Model Context Protocol (MCP). Див. Підключення AI-агентів до BlockVectra.
  • Підвищення лімітів: після поповнення балансу загальний ліміт викликів на секунду для акаунта знімається; для кожного ключа продовжують діяти ліміти швидкості та сплесків Compute Unit (CU). Поточні тарифи та розрахункові одиниці див. на сторінці цін.

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

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

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