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
Поддерживайте эту подписку при разрывах соединения и развертываниях.