Skip to main content

Установка

Сборка клиента

Минимально:
URL по умолчанию берётся из ORBITFLARE_JETSTREAM_URL. Все методы билдера те же, что у gRPC-клиента — те же дефолты и поведение.

Написание YAML-конфига

JetStream поддерживает фильтры транзакций и аккаунтов. Слоты, блоки и commitment — специфичны для Yellowstone, здесь их нет.

Справочник фильтров YAML

transactions — именованные фильтры. account_include совпадает с транзакциями, где задействованы эти адреса. account_exclude исключает. account_required — все перечисленные адреса должны быть в транзакции. accounts — следить за конкретными адресами через account или за всеми аккаунтами программы через owner. Поддерживается подстановка ${ENV_VAR}.

Подписка и чтение событий

Из YAML

Программно

С типизированным билдером

SubscribeRequestBuilder и TransactionFilter собирают тот же запрос без ручного написания proto. Каждый TransactionFilter предоставляет account_include, account_exclude и account_required и принимает любой итератор строкоподобных значений.

Чтение потока

Закрытие, несколько потоков, переподключение и ping/pong работают так же, как у gRPC-клиента.

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

Поток следит за свопами Raydium AMM и выводит подпись и число инструкций каждой транзакции.
С этим jetstream.yml:

JetStream v2

JetStream v2 (orbitflare_sdk::jetstream::v2) работает на тех же эндпоинтах и с той же аутентификацией, что и v1, и полностью аддитивен: v1 продолжает работать без изменений. Что добавляет v2:
  • Фильтры, управляемые во время работы — добавляйте и удаляйте фильтры на активном потоке без переподключения.
  • Порядковые номера для каждого сообщения — каждый ответ несёт монотонный sequence, так что вы можете обнаруживать потерянные сообщения.
  • Опциональное обогащение — запрашивайте плательщика комиссии, идентификаторы программ, цену за compute-unit, лимит вычислений, разрешённые адреса из address-таблиц и другое, для каждой транзакции.
  • События жизненного цикла слота — отдельный серверный поток событий слота alive/complete/dead.
Клиент v2 находится в jetstream::v2. Билдер идентичен v1 (те же методы, дефолты, переменная окружения ORBITFLARE_JETSTREAM_URL и failover):

Построение типизированных фильтров

Каждый фильтр — это TransactionFilter с выбранным клиентом id (через .with_id()). Этот id возвращается в каждой совпавшей транзакции и в подтверждении валидации фильтра, так что вы можете сопоставлять совпадения и позже удалить фильтр.
Фильтр должен задать хотя бы одно из account_include, account_exclude или account_required; пустые фильтры (совпадающие со всем) отклоняются. include_enrichment необязателен (по умолчанию выключен) и применяется ко всей подписке: если хотя бы один активный фильтр его включает, каждая получаемая транзакция обогащается.

Подписка на транзакции

Управление фильтрами на активном потоке

Возьмите handle из потока и добавляйте или удаляйте фильтры без переподключения. Удаления ссылаются на id фильтра, который вы задали через .with_id().

События жизненного цикла слота

subscribe_slots() — это отдельный серверный поток, он не принимает фильтров.

Проверки состояния

get_version() и ping() — унарные вызовы с тем же failover, что и у потоков.
Полную спецификацию protobuf, форматы сообщений, поля обогащения и статусы слотов см. в справочнике протокола JetStream v2.