CPI para o Programa do Sistema
O Programa do Sistema lida com a criação, atribuição, alocação de contas e transferências de lamports. A maioria dos programas faz CPI para ele para pagamento de aluguel e movimentação de SOL.
Busque em todas as páginas da documentação
O Programa do Sistema lida com a criação, atribuição, alocação de contas e transferências de lamports. A maioria dos programas faz CPI para ele para pagamento de aluguel e movimentação de SOL.
invoke(
&system_instruction::transfer(from.key, to.key, amount),
&[from.clone(), to.clone()],
)?;Quando usar isso:
let rent = Rent::get()?;
let lamports = rent.minimum_balance(space);
invoke(
&system_instruction::create_account(payer.key, new.key, lamports, space as u64, owner),
&[payer.clone(), new.clone(), system_program.clone()],
)?;O que isso demonstra:
create_account define o programa proprietário.| IX | Propósito |
|---|---|
| transfer | Mover lamports |
| create_account | Alocar + atribuir |
| allocate | Adicionar espaço |
| assign | Alterar proprietário (restrito) |
use solana_program::system_program;invoke_signed.lamports > 0. Correção: Verificar conta vazia.InsufficientFundsForRent; o runtime impõe a isenção de aluguel na criação. (A coleta/recolhimento de aluguel não está mais ativa, então a falha ocorre de imediato, não depois.) Correção: Financie Rent::get()?.minimum_balance(space).| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Cliente cria conta | Programa mais simples | Fluxos de PDA |
Anchor init | Abstrai | Nativo |
transfer_with_seed | Endereços derivados | PDA preferido |
11111111111111111111111111111111
Sim.
Transferir todos os lamports para fora.
Raro - sensível à segurança.
create para novas chaves.
invoke_signed.
Rent::get() no programa.
Permitido, mas inútil.
Conta de origem assinante.
Múltiplos CPIs ok.
Corresponder aos helpers system_instruction.
Testar matemática de aluguel.
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.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026