¿Por qué las transacciones no llegan?
Las transacciones no llegan cuando los blockhashes expiran, los presupuestos de cómputo se agotan, las tarifas de prioridad son demasiado bajas o el envío de RPC nunca llega a un líder.
Busca en todas las páginas de la documentación
Las transacciones no llegan cuando los blockhashes expiran, los presupuestos de cómputo se agotan, las tarifas de prioridad son demasiado bajas o el envío de RPC nunca llega a un líder.
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
solana confirm -v <SIGNATURE>
solana transaction <SIGNATURE> --output json-compact | jq '.meta.err, .meta.logMessages'const sim = await rpc.simulateTransaction(wireTx, { sigVerify: false }).send();
console.log(sim.value.err, sim.value.unitsConsumed);Cuándo usar esto:
import { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc(process.env.RPC_URL!);
const status = await rpc.getSignatureStatuses([signature]).send();
const value = status.value[0];
console.log({
confirmationStatus: value?.confirmationStatus,
err: value?.err,
slot: value?.slot,
});
const tx = await rpc
.getTransaction(signature, { encoding: "json", maxSupportedTransactionVersion: 0 })
.send();
console.log("error al aterrizar:", tx?.value?.meta?.err);
console.log("cola de logs:", tx?.value?.meta?.logMessages?.slice(-5));Lo que esto demuestra:
getSignatureStatuses muestra si la firma es desconocida (descartada) vs fallida vs confirmada.sendTransaction pero el validador descarta la tx si tiene un precio bajo.| Síntoma | Causa probable | Dirección de la solución |
|---|---|---|
| Firma no encontrada | Descartada / blockhash expirado | Reconstruir tx, tarifa de prioridad más alta |
| Error de programa en meta | Error de lógica | Corregir programa o cuentas |
| CU excedido | Límite demasiado bajo | Aumentar el presupuesto de cómputo |
| Blockhash no encontrado | Demasiado antiguo | Blockhash fresco + reintentar |
# Comprobar si la antigüedad del blockhash sigue siendo válida en el momento del envío - comparar el slot actual con el slot de la tx en los logs
solana slotsendTransaction devuelve la firma antes de la inclusión. Solución: rastrear el estado de confirmación por separado.| Alternativa | Usar cuándo | No usar cuándo |
|---|---|---|
| Paquetes Jito | Aterrizaje de alta contención | Pruebas simples en devnet |
| Nonce duradero | Flujo de firma de larga duración | Transacciones normales con blockhash fresco |
| Envío RPC privado | Mejor propagación | MVP sensible al costo |
| Ventana de menor tráfico | Mitigación de operaciones | UX en tiempo real orientada al usuario |
Generalmente, pero las condiciones de carrera son raras; trata la simulación como una señal fuerte.
Congestión de mainnet y mayor contención de bloqueo de cuentas - las tarifas y CU difieren.
El blockhash reciente de la transacción debe estar en la cola de blockhashes recientes conocida por los validadores - los hashes obsoletos rechazan la inclusión.
Sí - incluida en el bloque con error de programa meta.err; aún pagas la tarifa base.
getSignatureStatuses devuelve null para una firma desconocida después del período de espera.
No - mejoran la probabilidad bajo contención; los errores de programa y CU aún fallan.
false detecta errores temprano; true envío más rápido pero más txs malas descartadas.
v0 habilita ALTs para ajustar listas grandes de cuentas - los límites de tamaño heredados causan descartes silenciosos.
Jito da propinas a los validadores en la ruta del paquete; las tarifas de prioridad son el precio nativo de la unidad de cómputo - complementarias.
Versiones de Stack: Esta página fue escrita 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.
Revisado por Chris St. John·Última actualización: 16 jul 2026