Skip to main content
Preconfirmations передает транзакции в потоке до их распространения в виде шредов — Helius предварительно подтверждает их сразу после выполнения лидером и передает вместе со статусом выполнения. В этом руководстве вы создадите обработчик, который отслеживает целевой аккаунт, декодирует каждую транзакцию и реагирует с помощью Sender Max.
Для Preconfirmations требуется тариф Professional или выше. Стоимость составляет 10 кредитов за сообщение, при этом для каждой подписки действует минимум в 300 кредитов за каждый охваченный слот. См. раздел «Цены».

Ограничьте поток перед подключением

Нефильтрованный preconfSubscribe передает каждую транзакцию по цене 10 кредитов за каждую. Применяйте фильтрацию на стороне сервера, чтобы платить только за транзакции, на основе которых вы торгуете. Для каждой подписки по-прежнему действует минимум в 300 кредитов за каждый охваченный слот, поэтому используйте одну подписку с фильтром вместо нескольких подписок с узкими фильтрами.
Для большинства торговых обработчиков достаточно трех фильтров:
  • failed: false отбрасывает транзакции, о неуспешном выполнении которых уже известно: пытаться опередить их нет смысла.
  • regionInclude привязывает поток к региону, ближайшему к вашей инфраструктуре, чтобы переход между регионами не лишил вас преимущества во времени.
  • accountInclude находит любую транзакцию, которая ссылается на вашу цель: кошелек, пул AMM, программу и т. д. Helius обрабатывает таблицы поиска адресов на стороне сервера, поэтому фильтр срабатывает, даже если аккаунт загружается через ALT.

Подключитесь, оформите подписку и декодируйте данные

preconfSubscribe доступен через эндпоинт Gatekeeper (wss://beta.helius-rpc.com), а уведомления поступают в виде двоичных кадров, а не JSON. Каждый кадр содержит фиксированный 18-байтовый префикс, за которым следует транзакция, сериализованная с помощью bincode:
listener.js
Сначала проверьте байт версии. Если Helius обновит формат данных, номер версии увеличится. Ветвление по нему позволит декодеру продолжить работу. Десериализованная транзакция содержит инструкции, аккаунты и подпись.

Действуйте с помощью Sender Max

Предварительное подтверждение приносит пользу, только если ваша ответная транзакция будет включена в блок первой. Отправьте ответную транзакцию через Sender Max: чаевые в размере 0,001 SOL поступят в буфер приоритетных чаевых, а транзакция будет направлена по всем высокоскоростным маршрутам:
Этот обработчик должен быть кратким. Примите решение и отправьте транзакцию, а ведение журналов, учет и сверку вынесите из пути приема. Полный цикл отправки, включая прогрев соединения и оценку комиссии, описан в руководстве «Обеспечьте включение сделок в блок с помощью Sender».

Подтверждайте включение в блок и учитывайте возможные пропуски

Предварительное подтверждение позволяет увидеть транзакцию заранее. Она еще не включена в блок и по-прежнему может завершиться с ошибкой или быть отброшена, поэтому соблюдайте два правила:
  • Проверяйте транзакцию с помощью стандартных уровней подтверждения (getSignatureStatuses или потока с уровнем подтверждения processed), прежде чем считать окончательной наблюдаемую транзакцию или вашу ответную транзакцию.
  • Учитывайте возможные пропуски. Охват зависит от доли стейка, перенаправляемого в Helius, поэтому в некоторых слотах сообщения отсутствуют. Это ожидаемое поведение, а не разрыв соединения. Отличить одно от другого позволяет контрольный ping. После закрытия соединения подпишитесь заново.

Связанные руководства

preconfSubscribe API reference

Полная семантика фильтров, коды регионов и структура двоичных данных

Trade on Preprocessed Transactions

Охват до выполнения по цене 0,1 кредита за сообщение на всех платных тарифах