Recomendaciones para agentes
Usa get_transactions_for_address en lugar de una búsqueda de dos pasos
get_transactions_for_address combina la búsqueda de firmas y la obtención de transacciones en una sola llamada con filtrado del lado del servidor.
Usa send_smart_transaction para envíos estándar
Simula automáticamente, estima las unidades de cómputo, obtiene las tarifas de prioridad y confirma. No crees manualmente instrucciones ComputeBudget; el SDK las agrega automáticamente.
Usa Helius Sender para una latencia ultrabaja
Para transacciones sensibles al tiempo (arbitraje, sniping y liquidaciones), usasend_smart_transaction_with_sender. Enruta a través de la infraestructura multirregional de Helius y Jito.
Usa get_asset_batch para varios activos
Cuando obtengas más de un activo, agrúpalos en un lote. No llames a get_asset dentro de un bucle.
Usa webhooks en lugar de sondeo
No consultesget_transactions_for_address dentro de un bucle. Usa webhooks para las notificaciones entre servidores.
Paginación
Basada en tokens/cursores (métodos RPC V2)
Basada en páginas (API de DAS)
Filtro token_accounts
Al consultar get_transactions_for_address, el filtro token_accounts controla si se incluye la actividad de las cuentas de tokens:
changed_since_slot: obtención incremental de cuentas
changed_since_slot devuelve solo las cuentas modificadas después de un slot determinado. Es útil para flujos de trabajo de sincronización o indexación. Es compatible con get_program_accounts_v2, get_token_accounts_by_owner_v2, get_account_info, get_multiple_accounts, get_program_accounts y get_token_accounts_by_owner.
Errores comunes
-
transaction_details: Some(TransactionDetails::Full)no es el valor predeterminado: de forma predeterminada,get_transactions_for_addresssolo devuelve firmas. ConfiguraTransactionDetails::Fullpara obtener los datos completos de las transacciones. -
No agregues instrucciones ComputeBudget con
send_smart_transaction: el SDK las agrega automáticamente. Si agregas tus propias instrucciones, se produce un errorHeliusError::InvalidInput. -
Las tarifas de prioridad se expresan en microlamports por unidad de cómputo: no en lamports. Los valores de
get_priority_fee_estimateya están en la unidad correcta. -
La paginación de DAS comienza en 1:
page: 1es la primera página, nopage: 0. -
async_connection()requierenew_asyncoHeliusBuilder: llamar ahelius.async_connection()en un cliente creado conHelius::new()devuelveErr(HeliusError::ClientNotInitialized). -
get_assetdevuelveOption<Asset>: una respuesta correcta aún puede serNonesi el activo no existe. ManejaOptionde forma explícita. -
Las propinas de Sender son obligatorias:
send_smart_transaction_with_senderdetermina y agrega automáticamente las propinas. El mínimo es de 0.0002 SOL (modo dual) o 0.000005 SOL (solo SWQOS). -
Indicadores de características de TLS: el crate usa
native-tlsde forma predeterminada. Usafeatures = ["rustls"](edefault-features = false) para TLS implementado completamente en Rust cuando OpenSSL no esté disponible. -
Establece la versión máxima de transacción compatible en 1 al obtener transacciones. De lo contrario,
get_transaction,get_blockeget_transactions_for_addressconTransactionDetails::Fullfallan con el error-32015en las transacciones v1. En las transacciones v1, la tarifa de prioridad es eltransactionConfig.priorityFeedel mensaje, un total expresado en lamports; no hay instrucciones ComputeBudget que examinar. Consulta Compatibilidad con transacciones v1.
Manejo de errores y reintentos
El SDK proporciona variantes de error con tipo mediante la enumeraciónHeliusError, por lo que puedes compararlas directamente:
Estrategia de reintentos
Reintenta cuando se produzcanRateLimitExceeded e InternalError con espera exponencial: