Prácticas recomendadas de optimización
Un resumen condensado de las 25 prácticas de optimización de transacciones más importantes extraídas de cada página de esta sección.
-
Simular cada plantilla de mainnet: Leer
unitsConsumedy errores antes de enviar (Estimación de Unidades de Cómputo). -
Establecer el límite de unidades de cómputo con margen: 110% del mínimo de CU simulado.
-
Instrucciones del presupuesto de cómputo primero:
set_compute_unit_limiteset_compute_unit_pricepreceden a las ixs del programa (Ensamblaje de Transacciones). -
Tasas de prioridad dinámicas en mainnet: Apuntar a p75-p90 con un límite máximo (Establecimiento de Tasas de Prioridad).
-
Actualizar tasas por lote de envío: Las muestras obsoletas infravaloran durante los picos.
-
Seguimiento del estado de la firma: El éxito de
sendTransactionno garantiza el aterrizaje (Por qué las Transacciones No Aterrizan). -
Usar confirmación WebSocket:
signatureNotificationssupera a los bucles de sondeo ajustados. -
Reintentar con un blockhash nuevo: Volver a firmar después de la expiración; no retransmitir infinitamente txs obsoletas (Reintentos y Gestión de Blockhash).
-
Respetar lastValidBlockHeight: Dejar de retransmitir firmas muertas.
-
Usar v0 + ALTs para metadatos grandes: Los fallos de tamaño heredados son descartes silenciosos (Tablas de Búsqueda de Direcciones en la Práctica).
-
Esperar la ranura de activación de ALT: Después de extender antes de compilar el mensaje v0.
-
Creaciones de ATA idempotentes en la misma tx: Reduce fallos parciales de transacciones múltiples.
-
Proveedor RPC para envíos: El RPC público descarta paquetes bajo carga.
-
skipPreflight false por defecto: Capturar errores antes de quemar la confianza del usuario.
-
Limitar la tasa de prioridad máxima: Proteger a los usuarios de los picos de tarifas.
-
Mostrar estimación de tarifa total: Base + prioridad + propina Jito (opcional) en la UI.
-
Paquetes Jito para acuñaciones competitivas: Atomicidad + propina cuando la ruta nativa falla SLO (Paquetes Jito).
-
Simular paquetes antes de enviar: Reducir la tasa de envío de paquetes fallidos.
-
No reintentar fallos de aterrizaje: Solucionar primero el problema del programa/cuenta.
-
Efectos idempotentes en la cadena: Los reintentos son más seguros cuando cambia el blockhash.
-
Perfilar CU en LiteSVM/validador local: Capturar regresiones antes de mainnet.
-
Surfpool simula rutas DeFi: Precisión de la bifurcación de mainnet para rutas complejas.
-
Monitorizar SLO de tasa de aterrizaje: Alertar cuando el p95 de confirmación se degrada.
-
Documentar el playbook de aterrizaje: Manual de ejecución de incidentes para la congestión del día de acuñación.
-
Devnet no demuestra el aterrizaje en mainnet: Validar la política con sondas de polvo en mainnet.
Preguntas frecuentes
¿Pila de aterrizaje mínima viable?
Simular CU + tasa de prioridad dinámica + suscripción confirmada + reintento de blockhash con límite.
¿Cuándo son obligatorios los paquetes Jito?
Nunca son obligatorios: adoptarlos cuando la ruta nativa no cumple el SLO durante eventos pico.
¿Cómo se conectan las prácticas de optimización y RPC?
getRecentPrioritizationFees y simulateTransaction son cuestiones de RPC; consulte Prácticas recomendadas de RPC.
Relacionados
- Por qué las Transacciones No Aterrizan - modos de fallo
- Establecimiento de Tasas de Prioridad - ajuste de tarifas
- Transacciones No Aterrizan - respuesta a incidentes
- Tasas de Prioridad - fundamentos
Versiones de la pila: Esta página se escribió para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.