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 ниже.
- Program Filtering
- Account-Specific
- Advanced Filtering
- Watching a Wallet
- Watching a Token
Отслеживайте транзакции с участием определенных программОтслеживайте все транзакции, затрагивающие интересующие вас программы:Лучше всего подходит для: мониторинга конкретных программ, отслеживания протоколов DeFi и взаимодействий со смарт-контрактами.
Практические примеры
Пример 1. Мониторинг транзакций DEX
Отслеживайте транзакции, затрагивающие популярные программы DEX:Пример 2. Мониторинг неуспешных транзакций
Отслеживайте неуспешные транзакции, чтобы выявлять проблемы в приложении:Пример 3. Мониторинг крупных транзакций
Отслеживайте транзакции со значительными переводами SOL:Пример 4. Отслеживание кошелька, включая переводы токенов
Отслеживайте все перемещения средств для кошелька, включая входящие переводы SPL-токенов, затрагивающие его ATA. Для этого добавьтеtokenAccounts в обычный фильтр accountInclude:
Структура данных транзакции
Transaction Message Structure
Transaction Message Structure
Token Balance Changes
Token Balance Changes
Instruction Details
Instruction Details
Справочник по логике фильтров
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).Рекомендации по производительности
- Volume Management
- Data Processing
Потоки транзакций могут содержать большой объем данных. Чтобы успевать их обрабатывать:
- Начните с фильтров по конкретным программам (не подписывайтесь на «все транзакции»)
- Используйте
confirmedвместоprocessed, если допустима дополнительная задержка примерно в 1,5 с - Контролируйте производительность обработки с помощью счетчика
- Рассмотрите возможность запуска параллельных потребителей за очередью
Обработка ошибок
Too Many Transactions
Too Many Transactions
Симптом: чрезмерный объем транзакций.Решения: добавьте более строгие фильтры (
accountRequired, accountExclude); используйте более высокий уровень подтверждения; реализуйте выборку или ограничение частоты запросов; обрабатывайте данные асинхронно.Missing Transactions
Missing Transactions
Симптом: ожидаемые транзакции не появляются.Решения: убедитесь, что адреса программ указаны правильно; проверьте, что транзакции действительно существуют; попробуйте
processed для более быстрых обновлений; ослабьте строгие фильтры accountRequired/accountExclude.Parse Errors
Parse Errors
Симптом: не удается разобрать данные транзакции.Решения: корректно обрабатывайте отсутствующие поля; проверяйте структуру перед обработкой; оборачивайте разбор в try/catch; см. раздел Декодирование данных транзакций.
Дальнейшие действия
Slot & Block Monitoring
Отслеживайте консенсус сети и создание блоков.
Stream Pump AMM Data
Практический пример: мониторинг транзакций AMM Pump.fun.
Decoding Transaction Data
Преобразуйте двоичные полезные нагрузки транзакций в читаемые транзакции Solana.
Yellowstone protocol reference
Тот же рабочий процесс с использованием необработанного протокола Yellowstone gRPC.