Skip to main content
В этом руководстве мы создадим постоянно работающий слушатель для каждого нового токена Pump.fun. Он фильтрует две инструкции, которые Pump.fun использует для запуска токена, и сохраняет подключение при тайм-аутах из-за бездействия и развертываниях.
1

Look Up the Program

Pump.fun запускает токены с помощью одной из двух инструкций в зависимости от версии: create и create_v2. Прежде чем фильтровать по ним, подтвердите точные имена и роли аккаунтов с помощью describeProgram. Сейчас это доступно только в wss://fs-beta.helius-rpc.com/?api-key=<API_KEY>:
Request
Проверьте список instructions в ответе на наличие create и create_v2, а список roles — на наличие нужного аккаунта. Обычно это новый адрес минта, а также либо роль аккаунта creator, либо поле creator в args. Структуры двух версий инструкции могут различаться, поэтому приведенный ниже код проверяет как аргумент, так и несколько имен ролей, а не полагается только на один вариант.
2

Build the Filter

Настройте фильтрацию по программе и обоим именам инструкций. Оставьте includeCpi включенным: инструкции create/create_v2 в Pump.fun обычно находятся на верхнем уровне, но такая дополнительная проверка почти ничего не стоит. Также исключите неуспешные транзакции, поскольку неудачное развертывание не создает активный минт:
3

Connect with a Reconnect-Safe Client

Трекер развертываний — это постоянно работающий процесс, поэтому считайте отключения штатной ситуацией, а не исключением: контролируйте первоначальное установление соединения, поддерживайте подключение при отсутствии событий по фильтру и автоматически переподключайтесь после закрытия соединения.
pumpfun-deploys.js
Для простоты здесь используется фиксированная задержка переподключения в 3 секунды. В рабочем слушателе вместо этого применяйте экспоненциальную задержку — см. Обработка переподключений.
4

Handle Notifications and Log Each Deploy

Распределяйте входящие сообщения по id (ваши собственные запросы) или method (уведомления, отправленные сервером), а затем извлекайте минт, создателя и метаданные из декодированной инструкции:
Поскольку includeFailed имеет значение false, каждое регистрируемое уведомление соответствует действительно развернутому токену. Прежде чем доверять args и accounts, убедитесь, что присутствует ix.decoded. Нераспознанная сборка программы Pump.fun поступит с decoded: null и иначе отобразится как mint: null.

Следующие шаги

Track Jupiter Swaps

Более подробное описание процесса describeProgram → создание фильтра → подписка.

Handling Reconnects

Экспоненциальная задержка и заполнение пропусков слотов для постоянно работающих слушателей.

Fetch Pump.fun Mints

Исторический вариант: постранично просматривайте прошлые развертывания создателя с помощью Parsed Events.