Noções Básicas de Anchor - Melhores Práticas
Uma estrutura inicial limpa para novos workspaces do Anchor 0.32.1. Use como um checklist de PR para programas greenfield.
Como Usar Esta Lista
- Aplique ao criar ou revisar um novo crate de programa.
- Marque os itens antes do primeiro deploy em devnet.
- Combine com listas de melhores práticas específicas de seção à medida que você adiciona recursos.
A - Workspace
- Fixe anchor-lang 0.32.1 em todos os
Cargo.tomlde programa e corresponda ao Anchor CLI. - Commite Cargo.lock para que CI e colegas de equipe construam artefatos idênticos.
- Um programa por crate em
programs/com nomenclatura clara. - Mantenha os testes em TypeScript para iteração rápida do cliente, a menos que testes em Rust sejam necessários.
B - Layout do Programa
- Agrupe tipos de estado perto das structs de conta para módulos
lib.rslegíveis. - Nomeie instruções com verbo no início
initialize,deposit,withdraw. - Use #[error_code] para falhas voltadas ao usuário, não
Err(ProgramError::Custom)brutos. - Emita eventos para mudanças de estado indexáveis em vez de logs não estruturados.
C - Padrões de Segurança
- Prefira Signer a UncheckedAccount para autoridades e pagadores.
- Valide cada PDA com seeds + bump, nunca confie apenas em bumps fornecidos pelo cliente.
- Evite init_if_needed, a menos que seja idempotente por design, documente o risco de reinicialização.
- Feche contas para um destinatário definido com
close = destination.
D - Publicação
- Execute anchor test antes de cada deploy, incluindo casos de caminho de erro.
- anchor keys sync após o deploy para evitar incompatibilidade de ID.
- Publique IDL com tags de release para geração de código do cliente.
- Documente o detentor da autoridade de upgrade no README do repositório ou no runbook de operações.
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 a compilação?
target/idl/<program>.json no 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 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 do 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 depurar 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 pilha 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 noções básicas de Anchor.
Relacionados
- Noções Básicas de Anchor - tour de exemplos
- O Fluxo de Trabalho do Anchor - fluxo de iteração
- Melhores Práticas de Contas e Restrições - fortalecimento de contas
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.