Skip to main content
Рекомендации и рекомендуемые шаблоны для агентов, использующих Helius Rust SDK. Инструкции по установке и началу работы см. в обзоре.

Рекомендации для агентов

Используйте 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.

Распространённые ошибки

  1. transaction_details: Some(TransactionDetails::Full) не используется по умолчанию — по умолчанию get_transactions_for_address возвращает только подписи. Установите TransactionDetails::Full, чтобы получить полные данные транзакций.
  2. Не добавляйте инструкции ComputeBudget при использовании send_smart_transaction — SDK добавляет их автоматически. Добавление собственных инструкций приводит к ошибке HeliusError::InvalidInput.
  3. Приоритетные комиссии указываются в микролампортах на вычислительную единицу — не в лампортах. Значения из get_priority_fee_estimate уже указаны в правильных единицах.
  4. Нумерация страниц DAS начинается с 1 — первой страницей является page: 1, а не page: 0.
  5. async_connection() требует new_async или HeliusBuilder — вызов helius.async_connection() у клиента, созданного с помощью Helius::new(), возвращает Err(HeliusError::ClientNotInitialized).
  6. get_asset возвращает Option<Asset> — успешный ответ всё равно может содержать None, если актив не существует. Обрабатывайте Option явно.
  7. Чаевые Sender обязательны — send_smart_transaction_with_sender автоматически определяет и добавляет чаевые. Минимум — 0.0002 SOL в режиме Dual или 0.000005 SOL только в режиме SWQOS.
  8. Флаги функций TLS — по умолчанию крейт использует native-tls. Если OpenSSL недоступен, используйте features = ["rustls"] (и default-features = false) для реализации TLS полностью на Rust.
  9. При получении транзакций установите максимальную поддерживаемую версию транзакции равной 1. В противном случае get_transaction, get_block и get_transactions_for_address с TransactionDetails::Full завершаются ошибкой -32015 для транзакций версии 1. В транзакциях версии 1 приоритетной комиссией является transactionConfig.priorityFee сообщения — общее значение в лампортах; инструкции ComputeBudget для поиска отсутствуют. См. раздел Поддержка транзакций версии 1.

Обработка ошибок и повторные попытки

SDK предоставляет типизированные варианты ошибок через перечисление HeliusError, поэтому их можно сопоставлять напрямую:

Стратегия повторных попыток

При RateLimitExceeded и InternalError повторяйте запросы с экспоненциальной задержкой: