Skip to main content
Esta es la ruta básica para enviar transacciones. Se factura por envío y es la mejor opción cuando la fiabilidad importa más que la velocidad bruta (pagos, billeteras, aplicaciones). Si haces trading y necesitas la menor latencia, usa Helius Sender en su lugar.
Crear tu propia lógica de envío de transacciones es la mejor manera de garantizar el máximo rendimiento, control y fiabilidad para tu aplicación. Aunque el SDK de Helius proporciona un wrapper práctico para comenzar, es muy recomendable comprender e implementar este flujo de trabajo manual en sistemas de producción. Esta guía te mostrará los pasos necesarios para crear tu propia solución.

El flujo de trabajo manual

Enviar una transacción manualmente implica los siguientes pasos:
1

Build the Initial Transaction

Reúne tus instrucciones y firma la transacción para poder simularla.
2

Optimize Compute Units

Simula la transacción para determinar con precisión las CU necesarias y agrega un pequeño margen.
3

Add Priority Fees

Obtén una estimación de la comisión mediante la API de comisiones de prioridad de Helius y agrégala a tu transacción.
4

Send and Re-broadcast

Envía la transacción final e implementa una estrategia sólida de sondeo para gestionar la confirmación.
Los SDK de Helius son de código abierto. Puedes consultar el código subyacente del método sendSmartTransaction en nuestro SDK de TypeScript y SDK de Rust para ver una implementación de este flujo de trabajo lista para producción.

1. Crea la transacción inicial

Primero, reúne todas las instrucciones que quieras incluir en tu transacción. Luego, crea un objeto Transaction o VersionedTransaction. También tendrás que obtener un blockhash reciente. Este ejemplo prepara una transacción versionada. En esta etapa, también debes firmarla para poder simularla en el siguiente paso.

2. Optimiza el uso de unidades de cómputo (CU)

Para evitar desperdiciar comisiones o que falle tu transacción, debes establecer el límite de unidades de cómputo (CU) con la mayor precisión posible. Puedes hacerlo simulando la transacción mediante el método RPC simulateTransaction. Una práctica recomendada es simular primero con un límite de CU alto para garantizar que la propia simulación se complete correctamente y, después, usar el valor unitsConsumed de la respuesta para establecer tu límite real.
Ahora tienes una instrucción que establece con precisión el límite de cómputo. Agrégala a tu transacción final.

3. Establece la comisión de prioridad adecuada

A continuación, determina la comisión de prioridad óptima que debes agregar a tu transacción. Usar la API de comisiones de prioridad de Helius es la mejor manera de obtener una estimación en tiempo real basada en las condiciones actuales de la red. Tendrás que llamar al método RPC getPriorityFeeEstimate. Para maximizar la probabilidad de inclusión mediante las conexiones con stake de Helius, usa la opción recommended: true.

4. Crea, envía y confirma

Ahora, crea la transacción final con las nuevas instrucciones de presupuesto de cómputo, envíala e implementa un mecanismo sólido de sondeo para confirmar que se haya procesado.
No dependas de la lógica de reintentos predeterminada del proveedor RPC (maxRetries en sendTransaction). Aunque las conexiones con stake de Helius reenvían tu transacción directamente al líder, aún puede descartarse. Debes implementar tu propia lógica de retransmisión para garantizar una confirmación fiable.
Un patrón habitual consiste en volver a enviar periódicamente la misma transacción hasta que venza el blockhash. Solo vuelve a firmar la transacción si también obtienes un nuevo blockhash. Volver a firmarla con el mismo blockhash puede provocar que se confirmen transacciones duplicadas.
Este ejemplo proporciona un bucle de sondeo básico. Una aplicación lista para producción requiere una lógica más sofisticada, que incluya la gestión de distintos estados de confirmación y posibles tiempos de espera.

Protégete contra los ataques sándwich

Para evitar que tu transacción se dirija a validadores vinculados estadísticamente con ataques sándwich, agrega el parámetro de consulta mev-protect=true a tu URL de RPC. No necesitas cambiar la lógica de tu transacción:

MEV Protect

Consulta cómo funciona MEV Protect, qué métodos admite y cuáles son sus desventajas.

Obtén reembolsos por tus transacciones

Puedes participar para obtener una parte del MEV que generan tus transacciones, pagada automáticamente en SOL. No necesitas cambiar la lógica de tu transacción.

Transaction Rebates

Agrega un parámetro a tus llamadas a sendTransaction para comenzar a obtener reembolsos en SOL.

Métodos relacionados

sendTransaction

Envía una transacción firmada a la red

simulateTransaction

Simula una transacción para estimar las unidades de cómputo

getSignatureStatuses

Comprueba el estado de confirmación de las transacciones

getLatestBlockhash

Obtén un blockhash reciente para firmar transacciones

getBlockHeight

Obtén la altura de bloque actual para comprobar el vencimiento