Skip to main content
Melhores práticas e padrões recomendados para agentes usando o Helius Rust SDK. Para instalação e início, veja a visão geral.

Recomendações para Agentes

Use get_transactions_for_address em vez de pesquisa em dois passos

get_transactions_for_address combina a pesquisa de assinatura e busca de transação em uma única chamada com filtragem no servidor.

Use send_smart_transaction para envios padrão

Simula automaticamente, estima unidades de computação, busca taxas de prioridade e confirma. Não construa manualmente as instruções ComputeBudget — o SDK as adiciona automaticamente.

Use Helius Sender para latência ultra-baixa

Para transações sensíveis ao tempo (arbitragem, sniping, liquidações), use send_smart_transaction_with_sender. Ele roteia pela infraestrutura multi-região do Helius e Jito.

Use get_asset_batch para múltiplos ativos

Ao buscar mais de um ativo, agrupe-os. Não chame get_asset em um loop.

Use webhooks em vez de polling

Não faça polling em get_transactions_for_address em um loop. Use webhooks para notificações de servidor para servidor.

Paginação

Baseada em Token/Cursor (Métodos RPC V2)

Baseada em Página (API DAS)

Filtro token_accounts

Ao consultar get_transactions_for_address, o filtro token_accounts controla se a atividade da conta de token é incluída:

changed_since_slot — Busca Incremental de Conta

changed_since_slot retorna apenas contas modificadas após um determinado slot. Útil para fluxos de trabalho de sincronização ou indexação. Suportado por get_program_accounts_v2, get_token_accounts_by_owner_v2, get_account_info, get_multiple_accounts, get_program_accounts, e get_token_accounts_by_owner.

Erros Comuns

  1. transaction_details: Some(TransactionDetails::Full) não é o padrão — Por padrão, get_transactions_for_address retorna apenas assinaturas. Defina TransactionDetails::Full para obter dados completos da transação.
  2. Não adicione instruções ComputeBudget com send_smart_transaction — O SDK as adiciona automaticamente. Adicionar suas próprias causa um erro HeliusError::InvalidInput.
  3. As taxas de prioridade estão em microlamports por unidade de computação — Não em lamports. Os valores de get_priority_fee_estimate já estão na unidade correta.
  4. A paginação DAS é indexada em 1page: 1 é a primeira página, não page: 0.
  5. async_connection() requer new_async ou HeliusBuilder — Chamar helius.async_connection() em um cliente criado com Helius::new() retorna Err(HeliusError::ClientNotInitialized).
  6. get_asset retorna Option<Asset> — Uma resposta bem-sucedida ainda pode ser None se o ativo não existir. Lide explicitamente com Option.
  7. Gorjetas do remetente são obrigatóriassend_smart_transaction_with_sender determina e adiciona automaticamente gorjetas. Mínimo de 0,0002 SOL (modo duplo) ou 0,000005 SOL (apenas SWQOS).
  8. Flags de recurso TLS — O crate por padrão usa native-tls. Use features = ["rustls"] (e default-features = false) para TLS puro em Rust quando OpenSSL não estiver disponível.

Tratamento de Erros e Retentativas

O SDK fornece variantes de erro tipadas através do enum HeliusError, para que você possa fazer correspondência diretamente:

Estratégia de Retentativa

Retente em RateLimitExceeded e InternalError com backoff exponencial: