preprocessedSubscribe передает подписанные транзакции до того, как они достигнут уровня подтверждения processed. Транзакции декодируются из шредов по мере их поступления валидатору, поэтому вам не нужна собственная инфраструктура для десериализации шредов.
В этом руководстве вы создадите монитор, который отслеживает торговую программу до выполнения транзакций, удаляет дубликаты из потока, не превышает серверное ограничение обратного давления и сверяется с обработанными данными перед выполнением действий.
Ограничьте подписку целевыми данными
Поток без фильтров недоступен: вaccountInclude и accountRequired должна быть указана как минимум одна учетная запись. Для торгового монитора включите программу, с которой вы торгуете, и исключите лишние данные, за которые иначе пришлось бы платить:
accountRequired.
Декодируйте кадры и удаляйте дубликаты по подписи
Уведомления поступают в виде двоичных кадров: префикс длиной 73 байта, за которым следует транзакция, сериализованная с помощью bincode. Подпись находится в префиксе, поэтому вы можете удалять дубликаты, не декодируя тело. Поток объединяет несколько источников данных до выполнения, и одна транзакция может поступить несколько раз:monitor.js
Обрабатывайте входящие данные быстрее, чем они поступают из потока
Helius не буферизует данные для медленных потребителей неограниченно: если на стороне сервера накопится более 4 000 сообщений, подключение будет закрыто. Поэтому приведенный выше обработчик только считывает 73-байтовый префикс и добавляет сообщение в очередь. Десериализация и логика стратегии выполняются в отдельном цикле:Сверяйтесь с обработанными данными
Предварительно обработанная транзакция показывает, что пытался сделать отправитель, а не то, что произошло фактически. Она не содержит статуса выполнения, изменений баланса или журналов и может завершиться ошибкой, быть отброшена или попасть в другую ветвь. Доставка выполняется по мере возможности без исторического воспроизведения, поэтому:- Прежде чем стратегия зафиксирует что-либо как факт, сверьтесь с
transactionSubscribeна уровне подтвержденияprocessedилиconfirmed. - При отключении немедленно оформите подписку заново и учитывайте образовавшийся пробел, поскольку воспроизведение для его заполнения недоступно.
- Если вместо намерений транзакций вам нужно состояние учетной записи в реальном времени, оно доступно только после выполнения: используйте LaserStream gRPC на уровне подтверждения
processed.
Связанные руководства
preprocessedSubscribe reference
Полная структура полезной нагрузки, правила фильтрации, обратное давление и цены
Trade on Preconfirmations
Самый ранний сигнал о транзакции, который предлагает Helius, непосредственно от планировщика