Skip to main content
preprocessedSubscribe передает подписанные транзакции до того, как они достигнут уровня подтверждения processed. Транзакции декодируются из шредов по мере их поступления валидатору, поэтому вам не нужна собственная инфраструктура для десериализации шредов. В этом руководстве вы создадите монитор, который отслеживает торговую программу до выполнения транзакций, удаляет дубликаты из потока, не превышает серверное ограничение обратного давления и сверяется с обработанными данными перед выполнением действий.
Предварительно обработанные транзакции доступны на всех платных тарифах и стоят 0,1 кредита за сообщение. Для каждого ключа API допускается до 10 одновременных подключений.

Ограничьте подписку целевыми данными

Поток без фильтров недоступен: в accountInclude и accountRequired должна быть указана как минимум одна учетная запись. Для торгового монитора включите программу, с которой вы торгуете, и исключите лишние данные, за которые иначе пришлось бы платить:
Фильтры объединяются оператором AND, каждый список принимает до 5 000 адресов, а Helius обрабатывает таблицы поиска адресов на стороне сервера, поэтому учетная запись, загруженная через ALT, также соответствует фильтру. Чтобы отслеживать взаимодействия определенного кошелька с программой, укажите их оба в поле accountRequired.

Декодируйте кадры и удаляйте дубликаты по подписи

Уведомления поступают в виде двоичных кадров: префикс длиной 73 байта, за которым следует транзакция, сериализованная с помощью bincode. Подпись находится в префиксе, поэтому вы можете удалять дубликаты, не декодируя тело. Поток объединяет несколько источников данных до выполнения, и одна транзакция может поступить несколько раз:
monitor.js

Обрабатывайте входящие данные быстрее, чем они поступают из потока

Helius не буферизует данные для медленных потребителей неограниченно: если на стороне сервера накопится более 4 000 сообщений, подключение будет закрыто. Поэтому приведенный выше обработчик только считывает 73-байтовый префикс и добавляет сообщение в очередь. Десериализация и логика стратегии выполняются в отдельном цикле:
Если очередь растет без ограничений, сузьте фильтры. Каждая транзакция, которую вы отбрасываете на стороне клиента, по-прежнему стоит 0,1 кредита и учитывается при проверке ограничения обратного давления.

Сверяйтесь с обработанными данными

Предварительно обработанная транзакция показывает, что пытался сделать отправитель, а не то, что произошло фактически. Она не содержит статуса выполнения, изменений баланса или журналов и может завершиться ошибкой, быть отброшена или попасть в другую ветвь. Доставка выполняется по мере возможности без исторического воспроизведения, поэтому:
  • Прежде чем стратегия зафиксирует что-либо как факт, сверьтесь с transactionSubscribe на уровне подтверждения processed или confirmed.
  • При отключении немедленно оформите подписку заново и учитывайте образовавшийся пробел, поскольку воспроизведение для его заполнения недоступно.
  • Если вместо намерений транзакций вам нужно состояние учетной записи в реальном времени, оно доступно только после выполнения: используйте LaserStream gRPC на уровне подтверждения processed.

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

preprocessedSubscribe reference

Полная структура полезной нагрузки, правила фильтрации, обратное давление и цены

Trade on Preconfirmations

Самый ранний сигнал о транзакции, который предлагает Helius, непосредственно от планировщика