Skip to main content
Мониторинг транзакций позволяет в реальном времени отслеживать выполнение транзакций, их успешное или неуспешное завершение, взаимодействия с программами и изменения балансов токенов в Solana. В этом руководстве рассматриваются стратегии фильтрации и практические реализации с использованием SDK helius-laserstream.
Предварительные требования: в этом руководстве предполагается, что вы выполнили инструкции из краткого руководства по LaserStream gRPC и получили ключ API.

Параметры фильтрации транзакций

LaserStream использует ту же структуру фильтров, что и Yellowstone gRPC, включая фильтр tokenAccounts (расширение ATA). Внутри transactions.<label> можно задать следующие поля:
  • accountInclude — совпадение, если присутствует любой из этих аккаунтов (логическое ИЛИ)
  • accountRequired — совпадение, только если присутствуют все эти аккаунты (логическое И)
  • accountExclude — исключение, если присутствует любой из этих аккаунтов
  • vote / failed — логические флаги для транзакций голосования и неуспешных транзакций
  • tokenAccounts — необязательное расширение связанного токен-аккаунта (ATA) ("balanceChanged", "all" или "none"), благодаря которому кошелек в accountInclude также соответствует транзакциям, где он владеет балансом SPL-токена. См. раздел Фильтрация токен-аккаунтов (ATA) и вкладку Watching a Wallet ниже.
  • matchMints — необязательный флаг, который также сопоставляет списки аккаунтов с минтами в балансах токенов до и после транзакции. Благодаря этому минт в accountInclude позволяет отследить каждый перевод, обмен, выпуск и сжигание этого токена. См. раздел Фильтрация по минту токена и вкладку Watching a Token ниже.
Отслеживайте транзакции с участием определенных программОтслеживайте все транзакции, затрагивающие интересующие вас программы:
Лучше всего подходит для: мониторинга конкретных программ, отслеживания протоколов DeFi и взаимодействий со смарт-контрактами.

Практические примеры

Пример 1. Мониторинг транзакций DEX

Отслеживайте транзакции, затрагивающие популярные программы DEX:

Пример 2. Мониторинг неуспешных транзакций

Отслеживайте неуспешные транзакции, чтобы выявлять проблемы в приложении:

Пример 3. Мониторинг крупных транзакций

Отслеживайте транзакции со значительными переводами SOL:

Пример 4. Отслеживание кошелька, включая переводы токенов

Отслеживайте все перемещения средств для кошелька, включая входящие переводы SPL-токенов, затрагивающие его ATA. Для этого добавьте tokenAccounts в обычный фильтр accountInclude:

Структура данных транзакции


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

Include Logic (OR)

accountInclude: транзакция должна включать ЛЮБОЙ из этих аккаунтов.["A", "B"] соответствует транзакциям с участием аккаунта A ИЛИ аккаунта B.

Required Logic (AND)

accountRequired: транзакция должна включать ВСЕ эти аккаунты.["A", "B"] соответствует транзакциям с участием аккаунта A И аккаунта B.

Exclude Logic (NOT)

accountExclude: транзакция НЕ должна включать ни один из этих аккаунтов.

Combined Logic

Итоговый фильтр: (accountInclude OR empty) AND (accountRequired AND all) AND NOT (accountExclude OR any).

Рекомендации по производительности

Потоки транзакций могут содержать большой объем данных. Чтобы успевать их обрабатывать:
  • Начните с фильтров по конкретным программам (не подписывайтесь на «все транзакции»)
  • Используйте confirmed вместо processed, если допустима дополнительная задержка примерно в 1,5 с
  • Контролируйте производительность обработки с помощью счетчика
  • Рассмотрите возможность запуска параллельных потребителей за очередью

Обработка ошибок

Симптом: чрезмерный объем транзакций.Решения: добавьте более строгие фильтры (accountRequired, accountExclude); используйте более высокий уровень подтверждения; реализуйте выборку или ограничение частоты запросов; обрабатывайте данные асинхронно.
Симптом: ожидаемые транзакции не появляются.Решения: убедитесь, что адреса программ указаны правильно; проверьте, что транзакции действительно существуют; попробуйте processed для более быстрых обновлений; ослабьте строгие фильтры accountRequired/accountExclude.
Симптом: не удается разобрать данные транзакции.Решения: корректно обрабатывайте отсутствующие поля; проверяйте структуру перед обработкой; оборачивайте разбор в try/catch; см. раздел Декодирование данных транзакций.

Дальнейшие действия

Slot & Block Monitoring

Отслеживайте консенсус сети и создание блоков.

Stream Pump AMM Data

Практический пример: мониторинг транзакций AMM Pump.fun.

Decoding Transaction Data

Преобразуйте двоичные полезные нагрузки транзакций в читаемые транзакции Solana.

Yellowstone protocol reference

Тот же рабочий процесс с использованием необработанного протокола Yellowstone gRPC.