Посібник з інтеграції 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 та варіанти доступу.
Завдання, які допомагає виконати цей посібник
- Перевірте Robinhood Chain RPC за допомогою публічного читання з viem або ethers, після чого використовуйте ключ для автентифікованих методів.
- Перевірте підключення до testnet RPC, прочитавши
eth_chainIdперед виконанням операцій у testnet. - Запитуйте активність токенізованих акцій за допомогою Data API в mainnet після перевірки підтримки набору даних; метрики описують активність ончейн, а не ціни акцій.
Доступ до RPC та WebSocket
- Публічний RPC URL: знайдіть ендпоінт без ключа, підтримувані публічні методи та ліміти запитів на сторінці Robinhood Chain mainnet або сторінці testnet.
- JSON-RPC з API ключем: використовуйте ендпоінти та приклади curl нижче. Для журналів див. довідник методу eth_getLogs та посібник з обмеження діапазону блоків.
- WebSocket з API ключем: використовуйте ендпоінти WebSocket нижче та дотримуйтесь посібника з підписок WebSocket для
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. Для читань без ключа використовуйте 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} |
| Підписки 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)
Дозволені методи для кожної мережі: Підтримувані мережі
Дані токенізованих акцій
У 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). Поточні тарифи та розрахункові одиниці див. на сторінці цін.
Наступні кроки
- Перегляньте каталог датасетів, щоб побачити всі набори даних, які індексує BlockVectra.
- Перегляньте безкоштовний план та ціни, щоб перевірити, що включено у ваш акаунт.
- Увійдіть до консолі, щоб створити API ключ.
Востаннє оновлено:
Посібники
Практичні посібники та робочі процеси для інтеграції API BlockVectra, керування споживанням CU та створення мультичейн-застосунків.
Стартовий посібник Robinhood Chain Testnet
Почніть роботу з Robinhood Chain Testnet RPC: публічний RPC URL, читання без ключа, журнали WebSocket з API ключем, доступ до крана та перехід із тим самим ключем на mainnet.