Skip to main content

Доступные эндпоинты

Jetstream v2 обслуживается на тех же эндпоинтах, что и v1 — отдельного хоста нет. Сервис JetstreamV2 предоставляется через то же HTTP/2-соединение и маршрутизируется по пути gRPC-метода, поэтому вы подключаетесь к региону, ближайшему к вашей инфраструктуре, точно так же, как и для v1.
Jetstream использует обычный http:// (не https://) для gRPC-соединений. gRPC согласовывает собственную безопасность транспорта через HTTP/2. Используйте https:// только если ваш выделенный узел явно этого требует.

Аутентификация

Аутентификация такая же, как в v1: укажите ваш API-ключ в gRPC-заголовке метаданных x-token или используйте аутентификацию по белому списку IP. Подробнее см. в разделе Аутентификация.

Спецификация Protocol Buffer

Этот документ описывает спецификацию Protocol Buffer (protobuf), используемую OrbitFlare Jetstream v2. Полную спецификацию можно найти в нашем репозитории на GitHub — скачайте там jetstream_v2.proto, чтобы сгенерировать ваш клиент, или используйте определение, воспроизведённое ниже. Пакет jetstream.v2 полностью независим от v1 — сгенерируйте из него отдельный клиент.

Определение сервиса

Сообщения запросов

SubscribeTransactions — это двунаправленный поток. Клиент отправляет последовательность сообщений запросов — каждое несёт ровно одну полезную нагрузку — чтобы управлять своей подпиской, пока поток открыт.

SubscribeTransactionsRequest

Добавление фильтров

Фильтры добавляются динамически, пока поток открыт. Каждый фильтр несёт выбранный клиентом filter_id, который возвращается в каждой совпавшей транзакции и в подтверждении валидации.
Фильтр должен указывать хотя бы один из account_include / account_exclude / account_required. Пустые (совпадающие со всем) фильтры отклоняются — см. FilterResult.

Удаление фильтров

Сообщения ответов

SubscribeTransactionsResponse

Каждое сообщение в потоке несёт серверную временную метку и монотонно возрастающий номер sequence (на поток), чтобы клиенты могли обнаруживать пропуски. Устанавливается ровно одна полезная нагрузка.

Валидация фильтров

После каждого AddFilters / RemoveFilters сервер возвращает один FilterResult на каждый фильтр, подтверждая принятие или объясняя отклонение.

Heartbeat

Отфильтрованная транзакция

Каждая совпавшая транзакция перечисляет значения filter_id, с которыми она совпала, за которыми следует сама транзакция.

Общие типы

Потоковая передача слотов

SubscribeSlots — это серверный поток событий жизненного цикла слотов. Он не принимает параметров — откройте поток и получайте события по мере продвижения слотов.

Нестриминговые методы

Использование протокола

Типичный клиент v2:
  1. Сгенерируйте клиентский код из определения jetstream.v2 выше.
  2. Откройте двунаправленный поток SubscribeTransactions и аутентифицируйтесь (заголовок x-token или белый список IP).
  3. Отправьте запрос AddFilters с одним или несколькими элементами TxFilter, каждый с уникальным filter_id.
  4. Прочитайте подтверждения FilterResult, затем поток сообщений FilteredTransaction.
  5. Добавляйте или удаляйте фильтры в любой момент без повторного открытия потока.
  6. Отслеживайте sequence для обнаружения пропусков и рассматривайте закрытие соединения как сигнал к переподключению.
  7. При необходимости откройте SubscribeSlots (отдельный поток) для событий жизненного цикла слотов.

Генерация кода

Для TypeScript/JavaScript:
Для Rust:

Лучшие практики

  1. Фильтрация
    • Всегда задавайте хотя бы одно ограничение по аккаунту; пустые фильтры отклоняются.
    • Используйте стабильный, уникальный filter_id для каждого фильтра, чтобы вы могли сопоставлять совпадения и удалять фильтры позже.
  2. Обогащение
    • Держите include_enrichment выключенным, если вам не нужны дополнительные поля — экономный вывод меньше. Его включение не добавляет задержки; единственная цена — умеренно больший размер сообщения.
    • Обогащение действует на всю подписку: его включение на любом одном фильтре обогащает каждую транзакцию, которую получает сессия.
  3. Последовательность и переподключение
    • Отслеживайте номер sequence для обнаружения потерянных сообщений.
    • Реализуйте автоматическое переподключение; при переподключении повторно отправляйте ваш AddFilters.
  4. Живость
    • Используйте Heartbeat и Ping/Pong, чтобы подтвердить, что поток исправен, и измерять задержку.

Смотрите также

Обзор Jetstream v2

Что v2 добавляет по сравнению с v1, модель потоковой передачи и начало работы.

Справочник Jetstream (v1)

Спецификация Protocol Buffer для v1.

Поддержка

По техническим вопросам о протоколе v2 или деталях реализации присоединяйтесь к нашему сообществу в Discord.