Melhores Práticas de Codegen
Uma única fonte de verdade: macros do programa Rust geram IDL; clientes e crates CPI consomem artefatos gerados.
Como Usar Esta Lista
- Trate as alterações de IDL como alterações de API que exigem um changelog.
- Automatize o codegen no CI.
- Nunca edite manualmente a saída TS/Rust CPI gerada.
A - Fonte de IDL
- Confirme a IDL ou publique on-chain com cada release escolha um caminho canônico por organização.
- O CI falha em diff de IDL não confirmado após o build do Anchor sem desvios silenciosos de API.
- Faça vendor das IDLs de callee para declare_program! fixe a versão por implantação.
B - Codegen do Cliente
- Regenere Codama/TS ao atualizar a IDL não aplique patches em arquivos gerados.
- Fixe as versões do @solana/kit e da CLI Codama saída reproduzível.
- Envie enums de erro e evento para a camada de UI para decodificação.
FAQs
Versão do Anchor?
0.32.1 em todos os tópicos avançados.
Quando usar zero_copy?
Layouts fixos grandes quando o CU de Borsh é muito alto.
Realloc é reversível?
Não facilmente; planeje o crescimento futuro.
As contas restantes estão na IDL?
Não; documente separadamente.
declare_program! precisa de quê?
IDL JSON do callee em tempo de compilação.
O Anchor pode fazer CPI para Pinocchio?
Sim, com metadados de conta corretos.
Flags de recursos e IDL?
Evite IDLs diferentes por recurso na mainnet.
Como medir CU?
LiteSVM, Surfpool, simulação em devnet.
Tipos de conta personalizados são comuns?
Não; último recurso.
Próximos passos?
Veja os links relacionados para bp de codegen.
Relacionados
- A IDL do Anchor - IDL
- Codama a partir de uma IDL do Anchor - kit
- Melhores Práticas de Erros e Eventos - observabilidade
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.