Skip to main content
Повсюду используются типы alloyAddress, U256, B256, Filter, TransactionRequest, типизированные блоки, транзакции, квитанции и логи — с собственным транспортом OrbitFlare: failover эндпоинтов, повторные попытки с backoff и самовосстанавливающиеся WebSocket-подписки. SDK ориентирован на Robinhood Chain, EVM-совместимый L2, и по умолчанию использует продакшен-эндпоинты OrbitFlare.

Установка

По умолчанию включён только RPC-клиент. Включите то, что нужно:

Типы alloy

Все адреса, хеши и числовые величины — типы alloy. Самые распространённые реэкспортированы в корне крейта (Address, U256, B256, Bytes, Filter, TransactionRequest, BlockNumberOrTag, …), а полные крейты доступны как orbitflare_robinhood_sdk::primitives (alloy-primitives) и orbitflare_robinhood_sdk::rpc_types (alloy-rpc-types-eth).

RPC-клиент

Пример клиента со всеми опциями:
У всего есть разумные значения по умолчанию — билдер по умолчанию использует продакшен-эндпоинт OrbitFlare, поэтому минимальная конфигурация:

Методы билдера

.url(url) — основной эндпоинт. Порядок разрешения: .url() в билдере, затем переменная окружения ORBITFLARE_ROBINHOOD_RPC_URL, затем значение по умолчанию https://robinhood.rpc.orbitflare.com (rpc::DEFAULT_RPC_URL). .urls(&[...]) — задать основной эндпоинт и все резервные за один вызов. Первый элемент — основной, остальные — fallback. .fallback_url(url) / .fallback_urls(&[...]) — добавить резервные эндпоинты для failover. При сбое основного SDK пробует fallback по порядку. Сбоящие эндпоинты помещаются в карантин с экспоненциальным периодом ожидания (10 с, 20 с, 40 с, максимум 60 с) и автоматически пробуются снова по его истечении; здоровые эндпоинты всегда в приоритете. .api_key(key) — ваш лицензионный ключ OrbitFlare. Если не задан, SDK читает ORBITFLARE_LICENSE_KEY из окружения. Ключ подставляется в URL эндпоинта в момент запроса. .block_tag(tag) — тег блока по умолчанию для запросов состояния (get_balance, call, get_code, …). Принимает всё, что конвертируется в BlockNumberOrTag. По умолчанию Latest. .retry(policy) — управляет повторами при временных ошибках (5xx, 429, обрывы соединения, код ошибки JSON-RPC -32005) с экспоненциальным backoff перед переключением на следующий эндпоинт. Ответы 429 с заголовком Retry-After учитываются. .timeout(duration) — HTTP-таймаут каждого отдельного запроса.

Доступные методы RPC

Чтение состояния сети

Фильтры логов

get_logs принимает Filter из alloy напрямую:

Вызовы контрактов и транзакции

call и estimate_gas принимают TransactionRequest из alloy. Чтобы отправить транзакцию, соберите и подпишите её с помощью alloy (alloy-signer, alloy-network), затем разошлите через SDK:

Произвольные методы

request вызывает любой RPC-метод по имени — SDK собирает JSON-RPC-обёртку, применяет retry и failover и возвращает поле result. Это покрывает и методы-расширения arb_*, которые Robinhood Chain обслуживает как сеть на Arbitrum Nitro. request_raw отправляет сырое тело JSON-RPC строкой.

WebSocket-клиент

Включите фичу ws. Robinhood Chain производит блоки примерно каждые 100 миллисекунд, поэтому newHeads срабатывает значительно чаще, чем в мейннете Ethereum и большинстве L2.
Минимально:
Обратите внимание: .build() асинхронный — перед возвратом устанавливается WebSocket-соединение. Методы .urls(), .fallback_url(s)(), .api_key() и .retry() у билдера общие с RPC-билдером; специфичные для WebSocket опции: .url(url) — основной WebSocket-эндпоинт. Порядок разрешения: .url(), затем ORBITFLARE_ROBINHOOD_WS_URL, затем значение по умолчанию wss://robinhood.rpc.orbitflare.com (ws::DEFAULT_WS_URL). .ping_interval_secs(n) — как часто SDK отправляет фреймы WebSocket Ping для обнаружения мёртвых соединений. По умолчанию: 10. .max_missed_pongs(n) — сколько ping без ответа перед тем, как соединение считается мёртвым и переподключается. По умолчанию: 3.

Подписки

Подписки типизированы — каждая выдаёт соответствующий тип alloy вместо сырого JSON:
Все подписки возвращают WsSubscription<T>. Вызовите .next() для следующего типизированного события (None — подписка закрыта) или .next_raw() для нетипизированного serde_json::Value.
Все подписки идут по одному WebSocket-соединению, и новые можно добавлять в любой момент. sub.unsubscribe().await удаляет подписку явно; если дропнуть подписку без вызова, тоже сработает — SDK обнаружит «сироту» и сам отправит отписку.

Переподключение

Если соединение обрывается, фоновая задача переподключается с экспоненциальным backoff и автоматически заново оформляет все активные подписки. Ваши вызовы .next() продолжают работать — события возобновятся после восстановления связи. Мёртвые соединения обнаруживаются активным ping/pong, настраивается через .ping_interval_secs() и .max_missed_pongs().

Переменные окружения

Полный пример

Скрипт мониторинга: читает кошелёк, затем следит за новыми блоками и ERC-20-переводами в реальном времени:

Исходный код

SDK с открытым исходным кодом: github.com/orbitflare/orbitflare-robinhood-sdk-rs