Anchor vs Nativo
Programas Solana nativos usam entrypoint! e análise manual de contas. O Anchor gera dispatch, discriminadores, validação de contas e IDL a partir de macros, ao custo de tamanho binário e alguma sobrecarga de CU.
Busque em todas as páginas da documentação
Programas Solana nativos usam entrypoint! e análise manual de contas. O Anchor gera dispatch, discriminadores, validação de contas e IDL a partir de macros, ao custo de tamanho binário e alguma sobrecarga de CU.
| Preocupação | Nativo | Anchor 0.32.1 |
|---|---|---|
| Ponto de entrada | Escrito manualmente | Gerado por #[program] |
| Verificações de conta | Manual no handler | Restrições #[derive(Accounts)] |
| Tipos de cliente | Mantidos manualmente | IDL / declare_program! |
| Erros | Códigos u32 personalizados | #[error_code] + mapeamento IDL |
Quando usar isso: Você escolhe um framework para um novo programa ou debate a migração de código nativo existente.
// Anchor: a validação é declarativa
#[derive(Accounts)]
pub struct Increment<'info> {
#[account(mut, has_one = authority)]
pub counter: Account<'info, Counter>,
pub authority: Signer<'info>,
}
// Equivalente nativo: verificações manuais em cada handler
// - verificar signatário
// - verificar owner == program_id
// - verificar counter.authority == authority.key()
// - desserializar com discriminadorO que isso demonstra:
declare_program! em 0.32anchor-spl e declare_program!.constraint e require!. Correção: Modele ameaças explicitamente.solana program log e medidores de CU.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Pinocchio + layout manual | Código sensível a CU | Você quer macros de conta do Anchor |
| Framework Steel | Padrões nativos estruturados | Você precisa de ferramentas IDL do ecossistema Anchor |
| Permanecer nativo | Programa minúsculo, sem geração de código de cliente | Necessidades ricas de validação de conta |
0.32.1 para anchor-lang, Anchor CLI e exemplos nesta seção.
Sim. Solana CLI 3.0.10 lida com keypairs, airdrops e inspeção de solana program.
target/idl/<program>.json em seu workspace.
Sim, mas cada campo não verificado precisa de restrições explícitas ou verificações no handler.
Use anchor test com Surfpool 0.12.0 ou LiteSVM 0.6.x em CI.
Discriminador de conta Anchor; não o remova ao dimensionar space.
Sim, ou publique a IDL on-chain para que os clientes tenham uma fonte canônica.
Execute com logs; o Anchor imprime o nome da restrição e o índice da conta.
Sim. Esta stack tem como alvo validadores Agave com Solana CLI 3.0.10.
Veja artigos irmãos vinculados em Relacionados para tópicos mais aprofundados de anchor vs nativo.
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: 19 de jul. de 2026