realloc & Contas em Crescimento
Programas podem crescer (ou encolher) dados de contas via a syscall/CPI realloc, pagando aluguel adicional de um pagador. Necessário quando esquemas crescem ou coleções dinâmicas se expandem.
Busque em todas as páginas da documentação
Programas podem crescer (ou encolher) dados de contas via a syscall/CPI realloc, pagando aluguel adicional de um pagador. Necessário quando esquemas crescem ou coleções dinâmicas se expandem.
account.realloc(new_len, false)?;
account.transfer_required_rent(payer)?; // conceitualmente - use o padrão CPI de reallocQuando usar isso:
// Nativo: use solana_program::program::realloc ou padrões de CPI do sistema por SDK
// Após realloc, zere os novos bytes e inicialize novos campos
let new_len = old_len + 8;
// realloc a conta para new_len com o pagador financiando a diferença de aluguelO que isso demonstra:
Restrição de realloc em 0.32.1.
// Documente max_len para limitar griefing.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Migração de nova conta | Mais seguro | Fricção do usuário |
| Tamanho máximo fixo antecipadamente | Desperdiça aluguel cedo | Simples |
| Armazenamento off-chain | Barato | Modelo de confiança |
O pagador signatário que você especificar.
Limite de conta de 10 MB.
Para o destinatário escolhido.
Atributo na conta.
Serialização de Tx por conta.
Prática de segurança necessária.
Caminho comum de atualização.
Suportado.
Analise o ix de realloc.
O pagador sim.
Defina o novo comprimento absoluto.
Planeje espaço extra antecipadamente.
Versões da Pilha: 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: 16 de jul. de 2026