Что такое transactionSubscribe?
Метод WebSocket transactionSubscribe (расширение Helius для стандартного WebSocket API Solana) позволяет получать события транзакций в реальном времени.
Чтобы использовать его, укажите TransactionSubscribeFilter и при необходимости добавьте TransactionSubscribeOptions для дополнительной настройки.
transactionSubscribe доступен на тех же унифицированных конечных точках wss://mainnet.helius-rpc.com и wss://devnet.helius-rpc.com, что и стандартные методы подписки Solana.
TransactionSubscribeFilter
vote: логический флаг для включения или исключения транзакций, связанных с голосованиемfailed: логический флаг для включения или исключения неуспешных транзакцийsignature: фильтрует обновления для конкретной транзакции по ее подписиaccountInclude: список аккаунтов, для которых вы хотите получать обновления транзакций. В обновлениях транзакций должен присутствовать хотя бы один из аккаунтов (например, аккаунт 1 ИЛИ 2).accountExclude: список аккаунтов, которые вы хотите исключить из обновлений транзакцийaccountRequired: транзакции должны включать все указанные аккаунты, чтобы попасть в обновления (например, аккаунт 1 И 2)tokenAccounts: включаемое расширение связанного аккаунта токена (ATA) (balanceChanged,allилиnone). См. раздел Отслеживание кошелька, включая переводы токенов ниже.
TransactionSubscribeOptions (необязательно)
commitment: уровень подтверждения для получения данных (processed,confirmedилиfinalized)encoding: формат кодирования возвращаемых данных (base58,base64илиjsonParsed)transactionDetails: уровень детализации возвращаемых данных (full,signatures,accountsиnone)showRewards: логический флаг, указывающий, следует ли включать данные о вознаграждениях в обновленияmaxSupportedTransactionVersion: задает максимальную версию транзакций, для которых вы хотите получать обновления. Установите значение1, чтобы получать транзакции устаревшего формата, v0 и v1. См. раздел Поддержка транзакций v1.
maxSupportedTransactionVersion необходим для возврата аккаунтов и полной информации о заданной транзакции (то есть transactionDetails: "accounts" | "full").Пример подписки на транзакции
В этом примере мы подписываемся на транзакции, содержащие аккаунт Raydium675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8.
Когда происходит транзакция, содержащая аккаунт 675k...1Mp8 в accountKeys транзакции, мы получаем уведомление WSS.
Согласно параметрам подписки, уведомление о транзакции будет отправлено с уровнем подтверждения processed, кодированием jsonParsed и уровнем детализации транзакции full, а также будет содержать вознаграждения.
Пример уведомления
Отслеживание кошелька, включая переводы токенов
При отслеживании кошелька с помощьюaccountInclude учитываются только транзакции, в которых публичный ключ кошелька непосредственно присутствует среди ключей аккаунтов. Один распространенный случай остается незамеченным: когда кто-либо отправляет на кошелек токен SPL (например, USDC), перевод затрагивает связанный аккаунт токена (ATA) кошелька, а не публичный ключ кошелька, поэтому обычная подписка accountInclude: [wallet] его не обнаруживает.
Задайте поле tokenAccounts, чтобы расширить условия сопоставления: отслеживаемый аккаунт также будет соответствовать транзакциям, в которых он владеет балансом токена:
balanceChanged: сопоставлять, если кошелек владеет балансом токена, сумма которого изменилась в транзакции (или аккаунт токена был закрыт). Используйте этот вариант, чтобы узнавать, когда средства действительно перемещаются. Это наиболее узкий, распространенный вариант с наименьшим объемом данных.all: сопоставлять любую транзакцию, ссылающуюся на принадлежащий кошельку баланс токена, даже если он не изменился. Объем данных выше.none: без расширения. Аналогично отсутствию поля (значение по умолчанию).
-32602. Подписки без tokenAccounts работают точно так же, как и раньше. Полное описание расширения ATA см. в разделе Фильтрация аккаунтов токенов (ATA) через WebSocket.
Мониторинг новых DCA Jupiter
DCA Jupiter, или усреднение долларовой стоимости, — это способ запланировать повторяющиеся сделки в Solana. Поскольку такие запланированные ордера на покупку и продажу записываются в блокчейне, трейдеры могут использовать методtransactionSubscribe и getAsset, чтобы отслеживать новые ордера.
Пример уведомления

Мониторинг новых токенов pump.fun
Пример уведомления

Управление подписками
Идентификаторы подписок
При успешном вызовеtransactionSubscribe сервер возвращает идентификатор подписки в поле result. Это то же число, которое отображается в params.subscription каждого уведомления этой подписки:
Отмена подписки
Чтобы прекратить получать уведомления, вызовитеtransactionUnsubscribe с идентификатором подписки. Каждый вызов transactionSubscribe в рамках одного подключения создает отдельную подписку с собственным идентификатором. Поэтому перед повторной подпиской обязательно отмените предыдущую, чтобы не получать дублирующиеся уведомления.
transactionUnsubscribe могут поступать уже отправленные сообщения. Это ожидаемое поведение.