Выбор Webhooks, WebSocket или RPC-опроса
Сравните адресные уведомления, подписки через сокеты и ограниченный опрос по поддержке сетей, восстановлению, требованиям к приемнику и тарификации.
Используйте адресные Webhooks для доставки на HTTPS-приемник, WebSocket — для поддерживаемых подписок в реальном времени, а ограниченный опрос — когда рабочему процессу требуется собственный курсор и механизм восстановления.
Создание слушателей ончейн-событий для разработчиков и AI Agent требует сопоставления архитектуры приложения с возможностями сети, гарантиями доставки, ограничениями приемника и эксплуатационными затратами.
Матрица принятия решений
В таблице ниже сопоставляются все три механизма интеграции по поддерживаемым возможностям сетей, инфраструктурным требованиям, стратегиям восстановления и моделям тарификации:
| Измерение | Адресные Webhooks | Подписки WebSocket | Ограниченный RPC-опрос |
|---|---|---|---|
| Основной механизм | Push-уведомление, доставляемое через HTTPS POST на публичный эндпоинт | Потоковая подписка через постоянное TLS-соединение (wss://) | Инициируемые клиентом пакетные или периодические запросы HTTP JSON-RPC |
| Доступность в сетях | Все поддерживаемые сети, объявленные в GET /v1/push/chains | Поддерживается в Robinhood Chain (robinhood_mainnet и robinhood_testnet); неподдерживаемые сети имеют ws: false и возвращают HTTP 404 | Все поддерживаемые сети в GET /v1/chains через публичный RPC без ключа или аутентифицированный JSON-RPC |
| Требования к приемнику | Публично доступный HTTPS-URL, действующий TLS-сертификат, ответ 2xx в пределах тайм-аута, проверка подписи HMAC SHA-256 исходного тела запроса | Исходящее клиентское TCP/TLS-соединение (wss://); обработка ping/pong heartbeats и задержек при переподключении | Не сохраняющий состояние HTTP-клиент или периодический воркер; хранит локальный курсор блоков |
| Доставка и порядок | Доставка по модели как минимум один раз (at least once) с экспоненциальной задержкой повторов; приемник должен выполнять дедупликацию по id события или по ref + type между подписками | Строго упорядоченные фреймы в рамках одного активного сокета; уведомления сбрасываются во время отключений | Детерминированные ответы на запросы для подтвержденных высот блоков; клиент сам задает темп выполнения |
| Реорганизации сети | Отправка управляющих уведомлений для chain.reorg; приемник отбрасывает замененные события перед применением канонических повторов (replay) | Уведомления о логах содержат "removed": true для реорганизованных логов; newHeads требует проверки parent hash | Клиент отслеживает непрерывность цепочки по parentHash между тактами опроса для обнаружения реорганизаций |
| Восстановление после сбоев | Окно хранения на сервере позволяет выполнять replay через POST /v1/push/subscriptions/{id}/replay; пропуски до блока активации требуют довыгрузки через eth_getLogs | Очередь на стороне сервера отсутствует; клиент переподключается и довыгружает пропущенные диапазоны через eth_getLogs с дедупликацией по (blockHash, transactionHash, logIndex) | Возобновление запросов с сохраненного last_synced_block; разбиение на фрагменты по параметру сети max_logs_block_range из GET /v1/chains |
| Модель тарификации | Ежедневная плата за группу адресов на основе наибольшего количества адресов в статусе online в течение дня по UTC, плюс CU за доставленные события данных; см. тарификацию Webhook | Рукопожатие и heartbeat-сообщения не тарифицируются; eth_subscribe / eth_unsubscribe и отправленные в сокет единицы уведомлений тарифицируются в CU | Учет за каждый запрос в Compute Units: eth_blockNumber, eth_call, eth_getLogs; веса методов и количество CU за $1 из GET /v1/plans, показанные ниже |
| Оптимально для | Мониторинга депозитов пользователей, отслеживания адресов горячих кошельков, платежей мерчантов, асинхронных вебхуков событий | Потока newHeads и отфильтрованных логов logs в реальном времени, реактивных ботов, интерактивных интерфейсов в поддерживаемых сетях | Пакетной сверки, cron-задач, ETL-конвейеров, сетей без поддержки WebSocket (таких как HyperEVM) |
Действующие параметры конвертации
1 USD = 10,000 расчетных единиц, 1 расчетная единица = 1,000 CU (1 USD = 10,000,000 CU).
Формула: Вес в CU × 1,000,000 ÷ (10,000 × 1,000) USD.
| Метод | CU за вызов | Цена за 1M вызовов (USD) |
|---|---|---|
eth_blockNumber | 1 | $0.10 |
eth_call | 15 | $1.50 |
eth_getLogs | 30 | $3.00 |
debug_traceTransaction | 100 | $10.00 |
data.block | 5 | $0.50 |
Когда выбирать адресные Webhooks
Выбирайте Blockchain Webhook API, если ваш бэкенд работает как стандартный веб-сервис, способный принимать входящие HTTPS-запросы:
- Большие списки адресов: мониторинг депозитов или выводов средств по тысячам адресов клиентов без необходимости поддерживать постоянные сокеты для каждого кошелька.
- Бессерверные или контейнеризированные приемники: serverless-функции (AWS Lambda, Cloudflare Workers) запускаются при поступлении вебхуков и не требуют постоянного поддержания активных соединений.
- Автоматические повторные попытки и replay: временные сбои приемника сглаживаются автоматической экспоненциальной задержкой повторов. В пределах серверного окна хранения пропущенные доставки могут быть отправлены повторно с помощью эндпоинта replay.
- Учет границы активации: сопоставление начинается только после применения изменений подписки (
applied_from_block). События, произошедшие до добавления адреса или во время нахождения подписки в статусеoffline, необходимо запрашивать через исторические логи RPC.
Ознакомьтесь с процессами проверки подписи и повтора (replay) перед развертыванием производственных приемников вебхуков.
Когда выбирать подписки WebSocket
Выбирайте подписки WebSocket, когда требуется низкая задержка и ваш процесс способен поддерживать долгоживущий исходящий сокет:
- Заголовки блоков в реальном времени: получение потока
newHeadsпо мере добавления каждого блока к вершине цепочки. - Фильтры событий контрактов: получение потока логов контрактов
logsв реальном времени, соответствующих адресу или конкретномуtopic0. - Закрытые среды: идеально для локальных скриптов, CLI-агентов или бэкенд-сервисов за NAT или фаерволами, которые не могут предоставить входящий публичный HTTPS-порт.
- Проверка доступности сети: WebSocket поддерживается в Robinhood Chain (слаг сети
robinhood_mainnet, Chain ID 4663 иrobinhood_testnet). В HyperEVM в настоящее время поддержка WebSocket отсутствует (ws: false); попытка подключения по WebSocket к неподдерживаемой сети возвращает HTTP 404 (unknown_chain). - Дисциплина при отключении: уведомления WebSocket не сохраняются на сервере во время отключений. При обрыве сокета клиенты должны переподключаться со случайной экспоненциальной задержкой и довыгружать пропущенные блоки через
eth_getLogs.
Ознакомьтесь с руководством по подпискам WebSocket для изучения лимитов фильтров, ограничений на подключения (20 на ключ, 50 на аккаунт) и примеров подключения с помощью viem.
Когда выбирать ограниченный RPC-опрос
Выбирайте ограниченный опрос JSON-RPC при запуске периодических воркеров, конвейеров данных или при работе в сетях, где WebSocket недоступен:
- Сети без WebSocket: HyperEVM (
hyperevm_mainnet) в настоящее время предоставляет доступ по JSON-RPC HTTP, но не имеет WebSocket (ws: false). Опросeth_blockNumberи отправка запросовeth_getLogsв поддерживаемых диапазонах блоков обеспечивают обработку событий HyperEVM. - Контролируемый темп запросов: опрос позволяет разработчикам и AI Agent регулировать частоту запросов, управлять расходом Compute Units в пределах лимитов частоты запросов на ключ и избегать разрывов сокетов во время длительных задач. Лимиты на ключ — по умолчанию 400 CU/s и всплеск (burst) 1,600 CU.
- Лимиты диапазона блоков: аутентифицированные запросы
eth_getLogsограничены параметром сетиmax_logs_block_rangeиз GET /v1/chains. Превышение этого лимита возвращает код ошибки-32602(logs_range_too_large). Разделяйте более широкие интервалы на последовательные фрагменты, не превышающиеmax_logs_block_rangeцелевой сети.
| Сеть | Слаг сети | max_logs_block_range (блоков) |
|---|---|---|
| Arbitrum One | arb_mainnet | 1,000 |
| Base | base_mainnet | 1,000 |
| BNB Smart Chain | bsc_mainnet | 1,000 |
| Ethereum | eth_mainnet | 1,000 |
| Ethereum Sepolia | eth_sepolia | 1,000 |
| HyperEVM | hyperevm_mainnet | 1,000 |
| Polygon | polygon_mainnet | 1,000 |
| Robinhood Chain | robinhood_mainnet | 1,000 |
| Robinhood Chain Testnet | robinhood_testnet | 1,000 |
Алгоритмы разбиения на фрагменты см. в руководстве по выгрузке логов HyperEVM и руководстве по диапазону блоков eth_getLogs.
Полный контрольный список рабочих нагрузок и тесты для самопроверки см. в руководстве Как выбрать RPC-провайдера.
При выборе провайдера для небольшого объема опроса сравните провайдеров по стандартной тарификации и охвату RPC. Сравните тарификацию по фактическому использованию со стоимостью пробных версий и подписок; расходы на уведомления и довыгрузку рассчитываются по другим метрикам, чем чтение через RPC.
Руководства по реализации
WebSocket в Robinhood Chain
Для получения newHeads или отфильтрованных логов logs в реальном времени в Robinhood Chain следуйте руководству по подпискам WebSocket для настройки аутентификации и запросов на подписку. После отключения выполните повторное подключение с задержкой, подпишитесь заново и выполните довыгрузку пропущенных блоков с сохраненного курсора с помощью eth_getLogs; дедуплицируйте логи по кортежу (blockHash, transactionHash, logIndex).
Ограниченный опрос в HyperEVM
Для HyperEVM (hyperevm_mainnet) следуйте руководству по выгрузке логов HyperEVM для настройки ограниченного опроса и восстановления. Выполняйте запросы с сохраненного курсора фрагментами в пределах max_logs_block_range, сохраняйте события и прогресс вместе после успешной обработки и повторяйте запросы для неполных диапазонов. Проверяйте непрерывность цепочки и сканируйте перекрывающиеся диапазоны для обработки реорганизаций.
Следующие шаги
- Изучите каталог наборов данных, чтобы увидеть все наборы данных, индексируемые BlockVectra.
- Посмотрите бесплатный тариф и цены, чтобы узнать, что включено в ваш аккаунт.
- Войдите в консоль, чтобы создать API key.
Последнее обновление:
Push-вебхуки
Создавайте подписки на адреса по HTTP, проверяйте подписи исходного тела запроса, дедуплицируйте ID событий и восстанавливайте сохраненные совпадения или пропущенные блоки.
Подписки WebSocket
Подключайтесь к WebSocket-эндпоинтам BlockVectra для eth_subscribe newHeads и logs. Изучите методы подключения, правила фильтрации, задержки при переподключении и восстановление.