Enviando SOL e Transações
Envie SOL nativo, confirme signatures e inspecione resultados de transação pelo terminal.
Receita
Card de receita de referência rápida - pronto para copiar e colar.
solana transfer <RECIPIENT> 0.5
solana transfer <RECIPIENT> 0.5 --allow-unfunded-recipient
solana confirm <SIGNATURE>
solana transaction <SIGNATURE>Quando usar:
- Pagar outra wallet ou financiar novo keypair.
- Verificar se transação pousou após envio pelo client.
- Depurar transfers falhados com output de confirmação verboso.
- Scriptar payouts de tesouraria em devnet ou mainnet.
Exemplo Funcional
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'O que isso demonstra:
transferconstrói, assina e submete instruction de transfer do system.--allow-unfunded-recipientcria conta system do destinatário se faltando.confirm -vimprime status em nível de commitment e logs de erro em falha.transactionbusca transação decodificada para post-mortems.
Aprofundamento
Como Funciona
- Transfers são uma instruction ao System Program movendo lamports.
- CLI assina com keypair configurado a menos que
--fee-payersobrescreva. - Recent blockhash embutido na transação expira após ~60-90 segundos.
- Confirmação faz poll RPC até nível de commitment escolhido ser atingido.
Flags de Transfer
| Flag | Efeito |
|---|---|
--allow-unfunded-recipient | Cria conta system do destinatário |
--fee-payer <KEYPAIR> | Payer separado para fees |
--with-memo <TEXT> | Anexa instruction do programa memo |
--no-wait | Retorna signature sem confirmar |
Notas bash
# Dry-run style check: fund then verify decrease
BEFORE=$(solana balance)
solana transfer <RECIPIENT> 0.1
AFTER=$(solana balance)
echo "sent: $(echo "$BEFORE - $AFTER" | bc)"Erros Comuns
- Blockhash expirado - RPC lento ou broadcast atrasado falha confirmação. Correção: retry transfer; use RPC mais fresco; veja Retries e Gerenciamento de Blockhash.
- Lamports insuficientes - valor mais fee excede saldo. Correção:
solana balancee deixe folga de fee. - Destinatário off-curve ou errado - typos queimam SOL em endereços inalcançáveis. Correção: verifique strings base58 duas vezes; teste com 0,001 SOL primeiro.
- Assumir confirm significa finalized - commitment padrão pode ser
confirmed. Correção: passe--commitment finalizedpara payouts de tesouraria. - Usar transfer para tokens - transfer SOL não move tokens SPL. Correção: use
spl-token transfer.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
Client @solana/kit | Sends integrados ao app com instructions customizadas | Pagamentos one-off CLI |
spl-token transfer | Mover tokens fungíveis | Apenas SOL nativo |
| Transações durable nonce | Sessões de assinatura longas | Transfers CLI simples one-shot |
| Bundles Jito | Pouso mainnet sensível a latência | Testes devnet |
FAQs
Qual fee cobra solana transfer?
Fee base é 5.000 lamports por signature a menos que adicione priority fees via instructions compute budget separadas (não adicionadas por transfer CLI padrão).
Posso enviar menos de 1 SOL?
Sim - valores suportam SOL decimal como 0.0001.
O que faz --no-wait?
Retorna signature imediatamente sem polling de confirmação - útil em scripts que confirmam separadamente.
Como especificar signer diferente?
Use --from <KEYPAIR> para assinar transfer com arquivo keypair não padrão.
Por que confirm retornou transaction failed?
Execute solana confirm -v para logs, depois solana transaction para meta completa. Causas comuns: fundos insuficientes, expiração de blockhash ou locks de conta.
Posso anexar memo?
Sim: solana transfer <ADDR> 0.1 --with-memo "invoice-123".
Quanto até transfer ser final?
confirmed é geralmente sub-segundo em RPC saudável. finalized leva um a dois epochs - minutos na mainnet.
Transfer funciona em localnet?
Sim - aponte config para validator local e garanta lamports em ambas contas.
Uma transação pode enviar para muitos destinatários?
Comando CLI transfer envia um destinatário por invocação. Faça batch com transação customizada ou script para múltiplos.
Como exportar transação para suporte?
solana transaction <SIG> --output json-compact > tx.json captura meta, logs e saldos.
Relacionado
- Airdrops e Saldos - financie antes de transferir
- Logs e Depuração - stream logs em torno de sends
- spl-token CLI - transfers de token
- Por Que Transações Falham em Pousar - falhas de pouso
Versões do stack: Esta página foi 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 e LiteSVM 0.6.x.