Skip to main content
В этом руководстве вы шаг за шагом создадите реальный фильтр для отслеживания свопов Jupiter выбранного кошелька. Используйте обнаружение программ, чтобы проверить правильность фильтра до открытия подписки.
1

Look Up the Program

Угаданные имена инструкций — самая распространенная причина того, что фильтр неявно не находит совпадений. Сначала вызовите describeProgram, чтобы получить точные имена, с которыми выполняется сопоставление. Сейчас этот метод доступен только на wss://fs-beta.helius-rpc.com/?api-key=<API_KEY>, поэтому отправляйте запрос туда, а не через подключение подписки.
Request
Response
Используйте адрес программы вместо имени из каталога: несколько записей каталога могут иметь одинаковое имя, а поиск по имени может вернуть более старую версию программы. route и shared_accounts_route — две инструкции, охватывающие большинство свопов Jupiter v6, поэтому фильтр будет настроен на них.
2

Build the Filter

Объедините идентификатор программы, имена инструкций из предыдущего шага и отслеживаемый кошелек. Поля объединяются оператором AND, поэтому фильтр находит инструкции маршрута, в которых задействован SOL-счет кошелька:
accounts.roles привязывает user_transfer_authority к точной позиции кошелька в инструкции. Это условие строже, чем использование одного accounts.include: простое сопоставление по адресу также находило бы кошелек, указанный в инструкции в качестве другого, не связанного с ним счета. Имена ролей должны совпадать точно, поэтому они скопированы из списка roles, возвращаемого describeProgram, а не подобраны приблизительно. Оставьте includeCpi: true со значением по умолчанию: фактические перемещения токенов при свопе происходят во внутренних инструкциях.
3

Subscribe and Handle Notifications

Откройте подписку с этим фильтром, а затем считывайте декодированные аргументы каждой совпавшей инструкции:
matchedIndexes указывает только на инструкции, совпавшие с фильтром. Пропускайте все остальные инструкции транзакции. Перед чтением убедитесь, что поле decoded присутствует: инструкция маршрута из неиндексированной версии программы вместо него поступает с decoded: null и необработанными полями.

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

Filter Fields Reference

Все поля, параметры и ограничения фильтра.

Handling Reconnects

Поддерживайте эту подписку при разрывах соединения и развертываниях.