Recomendações para Agentes
Use getTransactionsForAddress em vez de pesquisa em duas etapas
getTransactionsForAddress combina pesquisa de assinatura e busca de transação em uma única chamada com filtragem no servidor. Suporta intervalos de tempo/slot, filtragem de contas de token e paginação.
Use sendSmartTransaction para envios padrão
Simula automaticamente, estima unidades de computação, busca taxas de prioridade e confirma. Não construa manualmente instruções ComputeBudget — o SDK as adiciona automaticamente.
Use Helius Sender para latência ultrabaixa
Para transações sensíveis ao tempo (arbitragem, sniping, liquidações), usesendTransactionWithSender. Ele faz o roteamento através da infraestrutura multirregional da Helius e Jito.
Use getAssetBatch para múltiplos ativos
Ao buscar mais de um ativo, agrupe-os. Não chame getAsset em um loop.
Use webhooks ou WebSockets em vez de polling
Não faça polling degetTransactionsForAddress em um loop. Use webhooks para notificações de servidor para servidor ou WebSockets para streaming em tempo real no lado do cliente.
Paginação
O SDK usa diferentes estratégias de paginação dependendo do método.Baseada em Token/Cursor (Métodos RPC V2)
Baseada em Página (API DAS)
Filtro tokenAccounts
Ao consultar getTransactionsForAddress, o filtro tokenAccounts controla se a atividade da conta de token está incluída:
changedSinceSlot — Busca Incremental de Contas
changedSinceSlot retorna apenas contas modificadas após um determinado slot. Útil para sincronização ou fluxos de indexação. Suportado por getProgramAccountsV2, getTokenAccountsByOwnerV2, getAccountInfo, getMultipleAccounts, getProgramAccounts, e getTokenAccountsByOwner.
Erros Comuns
-
transactionDetails: "full"não é o padrão — Por padrão,getTransactionsForAddressretorna apenas assinaturas. DefinatransactionDetails: "full"para obter dados completos da transação. -
Não adicione instruções ComputeBudget com
sendSmartTransaction— O SDK as adiciona automaticamente. Adicionar as suas próprias causa instruções duplicadas e falha na transação. -
As taxas de prioridade são em microlamports por unidade de computação — Não em lamports. Os valores de
getPriorityFeeEstimatejá estão na unidade correta paraSetComputeUnitPrice. -
A paginação DAS é indexada em 1 —
page: 1é a primeira página, nãopage: 0. -
blockTimeé em segundos Unix, não milissegundos — UseMath.floor(Date.now() / 1000)ao filtrar porblockTime. -
getAssetoculta tokens fungíveis por padrão — Passeoptions: { showFungible: true }para incluí-los. -
Streams de WebSocket precisam de limpeza — Sempre use um sinal AbortController e chame
helius.ws.close()quando terminar para evitar vazamentos de conexão.
Tratamento de Erros e Repetições
O SDK lança objetosError nativos com o código de status HTTP embutido na string de mensagem (por exemplo, "API error (429): ..."). Não há propriedade .status no objeto de erro, então a detecção de status requer análise da mensagem.