Skip to main content
Prácticas recomendadas y patrones sugeridos para agentes que usan el SDK de TypeScript de Helius. Para instalarlo y comenzar, consulta la descripción general.

Recomendaciones para agentes

Usa getTransactionsForAddress en lugar de una consulta en dos pasos

getTransactionsForAddress combina la búsqueda de firmas y la obtención de transacciones en una sola llamada con filtrado del lado del servidor. Admite rangos de tiempo/slots, filtrado de cuentas de tokens y paginación.

Usa sendSmartTransaction para envíos estándar

Simula automáticamente, estima las unidades de cómputo, obtiene las comisiones de prioridad y confirma. No crees manualmente instrucciones de ComputeBudget; el SDK las agrega de forma automática.

Usa Helius Sender para lograr una latencia ultrabaja

Para transacciones sensibles al tiempo (arbitraje, sniping y liquidaciones), usa sendTransactionWithSender. Enruta las transacciones a través de la infraestructura multirregional de Helius y Jito.

Usa getAssetBatch para varios activos

Cuando obtengas más de un activo, agrúpalos en lotes. No llames a getAsset dentro de un bucle.

Usa webhooks o WebSockets en lugar de sondeos

No sondees getTransactionsForAddress dentro de un bucle. Usa webhooks para notificaciones entre servidores o WebSockets para transmitir datos en tiempo real del lado del cliente.

Paginación

El SDK usa distintas estrategias de paginación según el método.

Basada en tokens/cursores (métodos RPC V2)

Basada en páginas (API de DAS)

Filtro tokenAccounts

Al consultar getTransactionsForAddress, el filtro tokenAccounts controla si se incluye la actividad de las cuentas de tokens:

changedSinceSlot: obtención incremental de cuentas

changedSinceSlot devuelve únicamente las cuentas modificadas después de un slot determinado. Resulta útil para flujos de trabajo de sincronización o indexación. Es compatible con getProgramAccountsV2, getTokenAccountsByOwnerV2, getAccountInfo, getMultipleAccounts, getProgramAccounts e getTokenAccountsByOwner.

Errores comunes

  1. transactionDetails: "full" no es el valor predeterminado: de forma predeterminada, getTransactionsForAddress solo devuelve firmas. Configura transactionDetails: "full" para obtener los datos completos de las transacciones.
  2. No agregues instrucciones de ComputeBudget con sendSmartTransaction: el SDK las agrega automáticamente. Si agregas tus propias instrucciones, se duplicarán y la transacción fallará.
  3. Las comisiones de prioridad se expresan en microlamports por unidad de cómputo: no en lamports. Los valores de getPriorityFeeEstimate ya están en la unidad correcta para SetComputeUnitPrice.
  4. La paginación de DAS comienza en 1: page: 1 es la primera página, no page: 0.
  5. blockTime usa segundos Unix, no milisegundos: usa Math.floor(Date.now() / 1000) cuando filtres por blockTime.
  6. getAsset oculta los tokens fungibles de forma predeterminada: pasa options: { showFungible: true } para incluirlos.
  7. Los flujos de WebSocket necesitan limpieza: usa siempre una señal de AbortController y llama a helius.ws.close() cuando termines para evitar fugas de conexiones.
  8. Configura maxSupportedTransactionVersion: 1 al obtener transacciones. De lo contrario, getTransaction, getBlock e getTransactionsForAddress con transactionDetails: "full" fallan con el error -32015 en las transacciones v1. En las transacciones v1, la comisión de prioridad es message.transactionConfig.priorityFee, un total expresado en lamports; no hay instrucciones de ComputeBudget que analizar. Consulta Compatibilidad con transacciones v1.

Manejo de errores y reintentos

El SDK lanza objetos nativos Error con el código de estado HTTP integrado en la cadena del mensaje (por ejemplo, "API error (429): ..."). El objeto de error no tiene una propiedad .status, por lo que debes analizar el mensaje para detectar el estado.