Рекомендации для агентов
Используйте get_transactions_for_address вместо двухэтапного поиска
get_transactions_for_address объединяет поиск подписей и получение транзакций в одном вызове с фильтрацией на стороне сервера.
Используйте send_smart_transaction для стандартной отправки
Этот метод автоматически выполняет симуляцию, оценивает количество вычислительных единиц, получает приоритетные комиссии и подтверждает транзакцию. Не создавайте инструкции ComputeBudget вручную — SDK добавляет их автоматически.
Используйте Helius Sender для сверхнизкой задержки
Для транзакций, чувствительных ко времени (арбитраж, снайпинг, ликвидации), используйтеsend_smart_transaction_with_sender. Метод направляет их через мультирегиональную инфраструктуру Helius и Jito.
Используйте get_asset_batch для нескольких активов
Если нужно получить несколько активов, обрабатывайте их пакетно. Не вызывайте get_asset в цикле.
Используйте вебхуки вместо опроса
Не вызывайтеget_transactions_for_address в цикле для периодического опроса. Используйте вебхуки для уведомлений между серверами.
Пагинация
На основе токена или курсора (методы RPC V2)
На основе страниц (DAS API)
Фильтр token_accounts
При запросе get_transactions_for_address фильтр token_accounts определяет, включать ли активность аккаунта токена:
changed_since_slot — инкрементальное получение аккаунтов
changed_since_slot возвращает только аккаунты, изменённые после указанного слота. Это полезно для рабочих процессов синхронизации или индексирования. Поддерживается методами get_program_accounts_v2, get_token_accounts_by_owner_v2, get_account_info, get_multiple_accounts, get_program_accounts и get_token_accounts_by_owner.
Распространённые ошибки
-
transaction_details: Some(TransactionDetails::Full)не используется по умолчанию — по умолчаниюget_transactions_for_addressвозвращает только подписи. УстановитеTransactionDetails::Full, чтобы получить полные данные транзакций. -
Не добавляйте инструкции ComputeBudget при использовании
send_smart_transaction— SDK добавляет их автоматически. Добавление собственных инструкций приводит к ошибкеHeliusError::InvalidInput. -
Приоритетные комиссии указываются в микролампортах на вычислительную единицу — не в лампортах. Значения из
get_priority_fee_estimateуже указаны в правильных единицах. -
Нумерация страниц DAS начинается с 1 — первой страницей является
page: 1, а неpage: 0. -
async_connection()требуетnew_asyncилиHeliusBuilder— вызовhelius.async_connection()у клиента, созданного с помощьюHelius::new(), возвращаетErr(HeliusError::ClientNotInitialized). -
get_assetвозвращаетOption<Asset>— успешный ответ всё равно может содержатьNone, если актив не существует. ОбрабатывайтеOptionявно. -
Чаевые Sender обязательны —
send_smart_transaction_with_senderавтоматически определяет и добавляет чаевые. Минимум — 0.0002 SOL в режиме Dual или 0.000005 SOL только в режиме SWQOS. -
Флаги функций TLS — по умолчанию крейт использует
native-tls. Если OpenSSL недоступен, используйтеfeatures = ["rustls"](иdefault-features = false) для реализации TLS полностью на Rust. -
При получении транзакций установите максимальную поддерживаемую версию транзакции равной 1. В противном случае
get_transaction,get_blockиget_transactions_for_addressсTransactionDetails::Fullзавершаются ошибкой-32015для транзакций версии 1. В транзакциях версии 1 приоритетной комиссией являетсяtransactionConfig.priorityFeeсообщения — общее значение в лампортах; инструкции ComputeBudget для поиска отсутствуют. См. раздел Поддержка транзакций версии 1.
Обработка ошибок и повторные попытки
SDK предоставляет типизированные варианты ошибок через перечислениеHeliusError, поэтому их можно сопоставлять напрямую:
Стратегия повторных попыток
ПриRateLimitExceeded и InternalError повторяйте запросы с экспоненциальной задержкой: