Обзор
Предварительно обработанные транзакции — это транзакции Solana до выполнения, передаваемые до того, как они достигнут уровня подтвержденияprocessed. Helius объединяет несколько источников данных до выполнения — в основном шреды, декодируемые сразу по мере их поступления на валидатор, а также сигналы предварительного подтверждения — и передает их в виде единого потока без дубликатов. Вам не нужно получать необработанные пакеты шредов или поддерживать собственную инфраструктуру для их декодирования.
Транзакции из сигналов предварительного подтверждения поступают в этот поток позже, чем в специализированный продукт Preconfirmations, который по-прежнему предоставляет к ним наиболее ранний доступ.
Для получения предварительно обработанных транзакций используйте метод WebSocket preprocessedSubscribe (публичная бета-версия). Он доступен на всех платных тарифах по цене 0,1 кредита за сообщение.
preprocessedSubscribe (WSS)
Рекомендуемый способ потокового получения предварительно обработанных транзакций: фильтрация по аккаунтам, компактные двоичные данные и доступность на всех платных тарифах.
Место предварительно обработанных транзакций в жизненном цикле
В архитектуре Solana транзакции проходят несколько этапов, прежде чем будут полностью обработаны:- Получение шредов → Валидатор получает шреды транзакций (фрагменты данных). ← Необработанные шреды (UDP) передаются на этом этапе.
- Декодирование шредов → Шреды декодируются в необработанные транзакции. ← Предварительно обработанные транзакции в основном передаются на этом этапе.
- Выполнение транзакции → Среда выполнения исполняет транзакцию.
- Создание метаданных → Вычисляются балансы до и после выполнения, журналы и сведения об ошибках.
- Подтверждение → Транзакция достигает состояния processed/confirmed/finalized. ← LaserStream gRPC и LaserStream WebSocket передают данные на этом этапе.
Какие данные доступны?
Предварительно обработанные транзакции содержат полную подписанную транзакцию, но не содержат метаданных выполнения:Доступные данные
- ✅ Подпись транзакции — уникальный идентификатор транзакции
- ✅ Ключи аккаунтов — все аккаунты, на которые ссылается транзакция
- ✅ Инструкции — полные данные инструкций и вызовы программ
- ✅ Недавний хеш блока — ориентир для срока действия транзакции
- ✅ Подписи — все подписи транзакции
- ✅ Номер слота — слот, в котором наблюдалась транзакция
Отсутствующие данные
- ❌ Метаданные транзакции — изменения балансов токенов, балансы до и после выполнения, статус транзакции
- ❌ Ошибки транзакции — невозможно определить, завершилась ли транзакция с ошибкой
- ❌ Внутренние инструкции — межпрограммные вызовы (CPI) не включены
- ❌ Сообщения журналов — журналы программ создаются во время выполнения
- ❌ Израсходованные вычислительные единицы — метрики выполнения недоступны
Гарантии доставки
Доставка выполняется по мере возможности и не гарантируется; воспроизведение исторических данных отсутствует. Транзакция в потоке — это сигнал до выполнения, а не уровень подтверждения: она может завершиться с ошибкой, быть отброшена или попасть в другую ветвь. Удаляйте дубликаты по подписи и сверяйте данные с потоком уровня processed или confirmed, если важны результаты выполнения. Для критически важных приложений, которым требуются гарантированная доставка и полные данные, используйте LaserStream gRPC.Когда использовать предварительно обработанные транзакции
Они подходят приложениям, чувствительным к задержке, которым нужны декодированные транзакции до выполнения без поддержки собственного декодера шредов:- propAMM
- Снайперы
- Боты для копирования сделок
- Ликвидационные боты
- Арбитраж
Цены
preprocessedSubscribe доступен на всех платных тарифах и тарифицируется по ставке 0,1 кредита за сообщение — одно сообщение на каждую доставленную транзакцию. Подробнее см. в разделе «Кредиты».
Часто задаваемые вопросы
Can you update preprocessed subscription filters live?
Can you update preprocessed subscription filters live?
Нет, фильтр задается первоначальным
preprocessedSubscribe и затем не меняется. Чтобы избежать разрыва, рекомендуем открыть второе соединение с новым фильтром, дождаться подтверждения подписки и затем переключить сервис на новый фильтр.Is the preprocessedSubscribe concurrent subscription limit per API key or account?
Is the preprocessedSubscribe concurrent subscription limit per API key or account?
Ограничение в 10 одновременных соединений применяется отдельно к каждому ключу API. Для каждого ключа API в проекте действует собственное ограничение в 10 соединений.
Дальнейшие действия
Subscribe with preprocessedSubscribe
Конечная точка, фильтрация по аккаунтам, структура двоичных данных и примеры кода.
Preconfirmations
Транзакции передаются в потоке до их преобразования в шреды — это самый ранний сигнал о транзакции.
Raw Shreds (UDP)
Необработанные пакеты шредов через UDP. Декодирование шредов реализуете вы.
Helius Sender
Реагируйте на полученные данные, максимально быстро включая транзакции в блокчейн.