includeBam: false, чтобы получать только предподтверждения Helius.
Конечные точки
preconfSubscribe доступен через конечную точку Helius Gatekeeper:
wss://beta.helius-rpc.com/?api-key=<API_KEY>
beta относится к развертыванию Gatekeeper, а не к степени готовности Preconfirmations. По мере переноса трафика на Gatekeeper эта конечная точка станет стандартной.
Поток не является непрерывным. Покрытие зависит от доли стейка сети,
перенаправляемой в Helius или использующей BAM, поэтому в некоторых слотах сообщений не будет — корректно
обрабатывайте такие пропуски. См. раздел «Покрытие».
Авторизация
string
обязательно
Ваш ключ API Helius, передаваемый в параметре запроса
api-key. Требуется тариф Professional или выше.Тело запроса
array
Необязательно. Не указывайте
params, чтобы получать каждую транзакцию как от Helius, так и от BAM. Чтобы сузить поток, передайте объект фильтра первым элементом. Фильтрация выполняется на стороне сервера, поэтому вы получаете и оплачиваете только нужные вам транзакции.-32602 (недопустимые параметры). Фильтры инструкций проверяют только инструкции верхнего уровня. Они не сопоставляются с инструкциями, вызванными посредством межпрограммного вызова (CPI). Конечное смещение memcmp и dataSize не должны превышать 4 096 байт.
Фильтры аккаунтов сопоставляются не только со статическими ключами аккаунтов транзакции. Helius разрешает v0 таблицы поиска адресов на стороне сервера, поэтому accountInclude, accountExclude и accountRequired также сопоставляются с аккаунтами, которые транзакция загружает через ALT.
Коды регионов
Для предподтверждений Helius указывается регион, в котором Helius получил транзакцию. Для предподтверждений BAM указывается региональная конечная точка BAM, отправившая предподтверждение, а не место получения транзакции системой Helius. Конечные точки BAM в Сингапуре и Далласе соответствуют
sgp и dal.
Ответ
integer
Идентификатор подписки (необходим для отмены подписки)
Уведомления
После подтверждения JSON уведомления доставляются в виде двоичных кадров WebSocket, а не JSON. Предподтверждения Helius и BAM используют одинаковую структуру. Каждый кадр представляет собой упакованную последовательность байтов, содержащую одну транзакцию:
Полезная нагрузка не содержит поля источника. Не определяйте происхождение из BAM по
tx_index = 0, поскольку другие источники также могут сообщать 0.
Предподтверждение — это ранний сигнал, а не гарантия. Транзакция еще не попала в блокчейн и все еще может завершиться ошибкой или быть отброшена. Прежде чем считать ее окончательной, подтвердите ее включение с помощью стандартных проверок уровня подтверждения.
Декодирование транзакции
Байты транзакции пересылаются точно в том виде, в котором их сериализовал валидатор, со стандартной сетевой кодировкой для соответствующей версии транзакции. Транзакции Legacy и v0 используют структуру с подписями в начале, которую создаетbincode. Транзакция v1 (SIMD-0385) использует структуру с сообщением в начале и подписями в конце, поэтому bincode не может обработать полезную нагрузку v1.
Используйте декодер, поддерживающий все версии. В Rust agave-transaction-view разбирает транзакции Legacy, v0 и v1 на месте и является рекомендуемым вариантом. Также подойдет wincode с актуальным VersionedTransaction SDK Solana. При использовании JavaScript убедитесь, что версия вашей библиотеки поддерживает транзакции v1. Пример для Rust приведен в руководстве.
Дублирующиеся уведомления
Предподтверждения Helius и BAM дедуплицируются отдельно для каждого источника, но не между источниками. Небольшая доля транзакций достигает Helius обоими путями, поэтому вы можете дважды получить одну и ту же подпись, причем две копии могут содержать разные слоты. Выполняйте дедупликацию по подписи на стороне клиента и обеспечьте идемпотентность действий, запускаемых транзакциями. См. руководство.Стоимость
Минимум в 300 кредитов за слот вступает в силу 14 октября 2026 года. До этой даты
Preconfirmations оплачиваются из расчета 10 кредитов за сообщение без минимальной платы.
Минимальная плата рассчитывается отдельно для каждой подписки, поэтому за каждую открытую подписку
preconfSubscribe списывается не менее 300 кредитов за покрытый слот. Закрывайте ненужные подписки с помощью preconfUnsubscribe.
Оплата начисляется за каждое сообщение, а не за каждую уникальную подпись. Транзакция, доставленная как Helius, так и BAM, учитывается дважды. Установите includeBam: false, если хотите получать только предподтверждения Helius.
Связанные материалы
Preconfirmations Overview
Что такое Preconfirmations и какое место они занимают в конвейере валидатора.
preconfUnsubscribe
Остановите подписку по ее идентификатору.