Melhores Práticas do Modelo de Conta
Projete layouts de conta que escalam, permanecem seguros e minimizam custos de aluguel (rent) e computação (CU) no Agave 4.1.1.
Busque em todas as páginas da documentação
Projete layouts de conta que escalam, permanecem seguros e minimizam custos de aluguel (rent) e computação (CU) no Agave 4.1.1.
#[account]InitSpace + max_len para campos variáveis. Nunca adivinhe tamanhos de String/Vec no Anchor 0.32.1.version quando o esquema for evoluir. Alterações de campos somente anexáveis evitam quebras de desserialização.mut possui verificações de proprietário + autoridade. Account<T>, has_one, seeds, ou constraint explícito.UncheckedAccount sem restrições. Trate como culpado até provar que é válido.Signer + has_one juntos, não um sozinho.getMinimumBalanceForRentExemption nos clientes. Não codifique embutido os lamports de rent.realloc com moderação e plano de migração. Prefira novos tipos de conta para alterações que quebram a compatibilidade.seeds na cadeia.getProgramAccounts pelo discriminador. Reduz a carga útil do RPC e o trabalho de decodificação do cliente.Falta de validação de proprietário/autoridade em contas graváveis - leva a vulnerabilidades de drenagem.
Contas maiores que alguns KB lidas/escritas frequentemente. Meça a CU antes de migrar.
Um por objeto lógico (posição, pedido, cofre). Evite dezenas por ação para limitar o custo de UX do rent.
Sim, para integração sem atritos quando o rent excede a tolerância do usuário - orce o tesouro de acordo.
Mapeie cada instrução para cada conta mut; liste as verificações de tempo de execução aplicadas.
Somente com seeds fortes e verificações de autoridade - caso contrário, os atacantes inicializam em nome da vítima.
#[max_len(N)] no campo; InitSpace inclui 4 + N no total.
Apenas um programa proprietário. Compartilhe dados via CPI ou passagem somente leitura, não propriedade dupla.
Novo PDA + instrução de cópia + desativar tipo antigo. Nunca reordene campos Borsh existentes.
Sim - o singleton seeds = [b"config"] é o padrão para parâmetros de protocolo.
Use para conjuntos de dados massivos de baixa mutabilidade (cNFTs). Não para estado DeFi "quente".
Testes locais rápidos para init/close/realloc sem a sobrecarga do validador completo.
Versões da 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: 16 de jul. de 2026