Рекомендации для агентов
Используйте getTransactionsForAddress вместо двухэтапного поиска
getTransactionsForAddress объединяет поиск подписи и получение транзакции в одном вызове с фильтрацией на стороне сервера. Поддерживаются диапазоны времени и слотов, фильтрация по токен-аккаунтам и пагинация.
Используйте sendSmartTransaction для стандартной отправки
Этот метод автоматически выполняет симуляцию, оценивает количество вычислительных единиц, получает приоритетные комиссии и подтверждает транзакцию. Не создавайте инструкции ComputeBudget вручную — SDK добавляет их автоматически.
Используйте Helius Sender для минимальной задержки
Для транзакций, критичных ко времени (арбитраж, снайпинг, ликвидации), используйтеsendTransactionWithSender. Этот метод направляет их через мультирегиональную инфраструктуру Helius и Jito.
Используйте getAssetBatch для нескольких активов
При получении нескольких активов объединяйте их в пакеты. Не вызывайте getAsset в цикле.
Используйте вебхуки или WebSocket вместо опроса
Не опрашивайтеgetTransactionsForAddress в цикле. Используйте вебхуки для уведомлений между серверами или WebSocket для потоковой передачи данных клиенту в реальном времени.
Пагинация
SDK использует разные стратегии пагинации в зависимости от метода.На основе токена или курсора (методы RPC V2)
На основе страниц (DAS API)
Фильтр tokenAccounts
При запросе getTransactionsForAddress фильтр tokenAccounts определяет, включать ли активность токен-аккаунта:
changedSinceSlot — инкрементальное получение аккаунтов
changedSinceSlot возвращает только аккаунты, измененные после указанного слота. Это полезно для синхронизации и индексирования. Поддерживается в getProgramAccountsV2, getTokenAccountsByOwnerV2, getAccountInfo, getMultipleAccounts, getProgramAccounts и getTokenAccountsByOwner.
Распространенные ошибки
-
transactionDetails: "full"не используется по умолчанию — по умолчаниюgetTransactionsForAddressвозвращает только подписи. УкажитеtransactionDetails: "full", чтобы получить полные данные транзакций. -
Не добавляйте инструкции ComputeBudget при использовании
sendSmartTransaction— SDK добавляет их автоматически. Если вы добавите собственные инструкции, возникнут дубликаты и транзакция завершится с ошибкой. -
Приоритетные комиссии указываются в микролампортах на вычислительную единицу — не в лампортах. Значения из
getPriorityFeeEstimateуже представлены в единицах, необходимых дляSetComputeUnitPrice. -
Пагинация DAS начинается с 1 — первая страница —
page: 1, а неpage: 0. -
blockTimeуказывается в секундах Unix, а не в миллисекундах — при фильтрации поblockTimeиспользуйтеMath.floor(Date.now() / 1000). -
getAssetпо умолчанию скрывает взаимозаменяемые токены — чтобы включить их, передайтеoptions: { showFungible: true }. -
Потоки WebSocket необходимо закрывать — всегда используйте сигнал AbortController и по завершении вызывайте
helius.ws.close(), чтобы избежать утечек соединений. -
Указывайте
maxSupportedTransactionVersion: 1при получении транзакций. ИначеgetTransaction,getBlockиgetTransactionsForAddressсtransactionDetails: "full"завершаются ошибкой-32015для транзакций v1. В транзакциях v1 приоритетная комиссия указана вmessage.transactionConfig.priorityFeeкак общая сумма в лампортах; инструкции ComputeBudget для поиска отсутствуют. См. раздел Поддержка транзакций v1.
Обработка ошибок и повторные попытки
SDK создает встроенные объектыError, в строку сообщения которых включен код состояния HTTP (например, "API error (429): ..."). В объекте ошибки нет свойства .status, поэтому для определения состояния необходимо анализировать сообщение.