Envío de SOL y Transacciones
Envía SOL nativo, confirma firmas e inspecciona los resultados de las transacciones desde la terminal.
Receta
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
solana transfer <RECIPIENT> 0.5
solana transfer <RECIPIENT> 0.5 --allow-unfunded-recipient
solana confirm <SIGNATURE>
solana transaction <SIGNATURE>Cuándo usar esto:
- Pagar a otra billetera o financiar un nuevo par de claves.
- Verificar que una transacción se ha completado después de la presentación del cliente.
- Depurar transferencias fallidas con salida de confirmación detallada.
- Crear scripts para pagos de tesorería en devnet o mainnet.
Ejemplo de Trabajo
solana config set --url devnet
solana airdrop 2
RECIPIENT="<RECIPIENT_PUBKEY>"
SIG=$(solana transfer "$RECIPIENT" 0.25 --allow-unfunded-recipient --fee-payer ~/.config/solana/id.json)
solana confirm -v "$SIG"
solana balance "$RECIPIENT"
solana transaction "$SIG" --output json-compact | jq '.transaction.message'Lo que esto demuestra:
transferconstruye, firma y envía una instrucción de transferencia del sistema.--allow-unfunded-recipientcrea la cuenta del sistema del destinatario si falta.confirm -vimprime el estado del nivel de compromiso y los registros de errores en caso de fallo.transactionrecupera la transacción decodificada para análisis posteriores.
Análisis Profundo
Cómo Funciona
- Las transferencias son una instrucción al Programa del Sistema que mueve lamports.
- La CLI firma con el par de claves configurado a menos que
--fee-payerlo anule. - El bloque hash reciente incrustado en la transacción expira después de ~60-90 segundos.
- La confirmación sondea el RPC hasta que se alcanza el nivel de compromiso elegido.
Indicadores de Transferencia
| Indicador | Efecto |
|---|---|
--allow-unfunded-recipient | Crear la cuenta del sistema del destinatario |
--fee-payer <KEYPAIR> | Pagador separado para las tarifas |
--with-memo <TEXT> | Adjuntar una instrucción del programa de memo |
--no-wait | Devolver la firma sin confirmar |
Notas de bash
# Verificación estilo "dry-run": financiar y luego verificar la disminución
BEFORE=$(solana balance)
solana transfer <RECIPIENT> 0.1
AFTER=$(solana balance)
echo "enviado: $(echo "$BEFORE - $AFTER" | bc)"Errores Comunes
- Bloque hash expirado - RPC lento o difusión retrasada fallan la confirmación. Solución: reintentar la transferencia; usar RPC más reciente; ver Reintentos y Gestión de Bloque Hash.
- Lamports insuficientes - la cantidad más la tarifa excede el saldo. Solución:
solana balancey dejar margen para la tarifa. - El destinatario está fuera de curva o es incorrecto - los errores tipográficos queman SOL a direcciones inalcanzables. Solución: verificar las cadenas base58; probar primero con 0.001 SOL.
- Asumir que confirmar significa finalizado - el compromiso predeterminado puede ser
confirmed. Solución: pasar--commitment finalizedpara pagos de tesorería. - Usar transfer para tokens - la transferencia de SOL no mueve tokens SPL. Solución: usar
spl-token transferen su lugar.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
Cliente @solana/kit | Envíos integrados en la aplicación con instrucciones personalizadas | Pagos puntuales desde la CLI |
spl-token transfer | Mover tokens fungibles | Solo SOL nativo |
| Transacciones con nonce duradero | Sesiones de firma de larga duración | Transferencias simples de la CLI de un solo uso |
| Paquetes Jito | Aterrizaje en mainnet sensible a la latencia | Pruebas en Devnet |
Preguntas Frecuentes
¿Qué tarifa cobra solana transfer?
La tarifa base es de 5.000 lamports por firma, a menos que agregue tarifas de prioridad a través de instrucciones separadas de presupuesto de cómputo (no agregadas por la transferencia predeterminada de la CLI).
¿Puedo enviar menos de 1 SOL?
Sí - las cantidades admiten SOL decimal como 0.0001.
¿Qué hace --no-wait?
Devuelve la firma inmediatamente sin esperar la confirmación; útil en scripts que confirman por separado.
¿Cómo especifico un firmante diferente?
Use --from <KEYPAIR> para firmar la transferencia con un archivo de par de claves no predeterminado.
¿Por qué confirm devolvió transacción fallida?
Ejecute solana confirm -v para ver los registros, luego solana transaction para obtener metadatos completos. Causas comunes: fondos insuficientes, expiración del bloque hash o bloqueos de cuenta.
¿Puedo adjuntar un memo?
Sí: solana transfer <ADDR> 0.1 --with-memo "invoice-123".
¿Cuánto tiempo hasta que una transferencia sea final?
confirmed suele ser inferior a un segundo en un RPC saludable. finalized tarda de uno a dos épocas, minutos en mainnet.
¿Funciona transfer en localnet?
Sí - apunte la configuración a un validador local y asegúrese de que ambas cuentas tengan lamports.
¿Puede una transacción enviar a muchos destinatarios?
El comando transfer de la CLI envía un destinatario por invocación. Agrupe con una transacción personalizada o un script para múltiples.
¿Cómo exporto una transacción para soporte?
solana transaction <SIG> --output json-compact > tx.json captura metadatos, registros y saldos.
Relacionado
- Airdrops y Saldos - financiar antes de transferir
- Registros y Depuración - transmitir registros alrededor de los envíos
- CLI spl-token - transferencias de tokens
- Por qué las Transacciones Fallan en Llegar - fallos en la llegada
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.