Melhores Práticas de Contas e Restrições
Estruturas de conta com falha fechada e confiança mínima para programas Anchor de produção.
Como Usar Esta Lista
- Revise cada novo
#[derive(Accounts)]contra esta lista. - Trate
UncheckedAccountcomo uma exceção de segurança que requer um comentário. - Reexecute a revisão ao adicionar
init_if_neededou CPIs de token.
A - Higiene de Tipos
- Use
Signerpara autoridades, nãoUncheckedAccountcomis_signermanual. - Prefira
Account<T>em vez deUncheckedAccountpara estado de propriedade do programa. - Inclua
Program<Token/System>explicitamente para cada destino de CPI. - Use tipos de Interface para Token-2022 ao suportar extensões.
B - Restrições
- Valide PDAs com seeds + bump armazenado em cada instrução.
- Adicione
has_onepara relacionamentos de autoridade em vez de verificações apenas no manipulador. - Mapeie falhas de restrição para
#[error_code]com a sintaxe@. - Evite
init_if_neededsem verificações de autoridade em contas existentes.
C - Dimensionamento e Ciclo de Vida
- Use
InitSpace+max_lenpara campos de comprimento variável. - Feche contas para um destinatário definido para recuperar o aluguel.
- Documente migrações quando o espaço crescer com
reallocou novas contas. - Nunca confie na ordem de conta fornecida pelo cliente sem restrições de tipo.
FAQs
Qual versão do Anchor este site usa?
0.32.1 para anchor-lang, Anchor CLI e exemplos nesta seção.
Preciso do Solana CLI junto com o Anchor?
Sim. O Solana CLI 3.0.10 lida com keypairs, airdrops e inspeção de solana program.
Onde a IDL fica após o build?
target/idl/<program>.json em seu workspace.
Posso misturar `UncheckedAccount` com `Signer`?
Sim, mas cada campo não verificado precisa de restrições explícitas ou verificações no manipulador.
Como faço para testar sem devnet?
Use anchor test com Surfpool 0.12.0 ou LiteSVM 0.6.x em CI.
Qual é o prefixo de 8 bytes nos dados da conta?
Discriminador de conta Anchor; não o remova ao dimensionar space.
Devo commitar a IDL gerada?
Sim, ou publique a IDL on-chain para que os clientes tenham uma fonte canônica.
Como depuro falhas de restrição?
Execute com logs; o Anchor imprime o nome da restrição e o índice da conta.
O Anchor funciona no Agave 4.1.1?
Sim. Esta stack tem como alvo validadores Agave com Solana CLI 3.0.10.
O que devo ler a seguir nesta seção?
Veja artigos irmãos vinculados em Relacionados para tópicos mais aprofundados sobre melhores práticas de contas.
Relacionados
- Tipos de Conta - wrappers
- Restrições Personalizadas - invariantes
- Melhores Práticas Básicas do Anchor - hábitos de workspace
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.