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 objetoTransaction 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 RPCsimulateTransaction.
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.
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 RPCgetPriorityFeeEstimate. 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. 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.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 consultamev-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