Noções Básicas de Padrões de Programa
10 exemplos para você começar com Padrões de Programa - 7 básicos e 3 intermediários.
Busque em todas as páginas da documentação
10 exemplos para você começar com Padrões de Programa - 7 básicos e 3 intermediários.
Criar + escrever discriminador + estado.
// 1. create_account CPI 2. set disc 3. serialize StateO programa mantém fundos via autoridade PDA.
// seeds [b"vault", user] + invoke_signed transfersA pubkey armazenada deve assinar ou corresponder à PDA.
if !authority.is_signer { return Err(...); }A conta armazena status; a instrução valida transições.
enum Status { Open, Filled, Cancelled }Divide o valor para a tesouraria na ação.
let fee = amount.checked_mul(bps)?.checked_div(10000)?;Leia o sysvar Clock para prazos.
let clock = Clock::get()?;
if clock.unix_timestamp > deadline { return Err(...); }Zera dados, transfere lamports, marca como fechada.
// zero data, transfer rent to recipientclose do Anchor.Condições + CPI de token da PDA de escrow.
// verify + invoke_signed token transferRelacionado: Cofre e Escrow
Parâmetros globais com rotação de admin.
struct Config { admin: Pubkey, fee_bps: u16 }Relacionado: Controle de Acesso e Autoridades
Instrução de migração para layout v2.
if version == 1 { migrate_v1_to_v2()? }Relacionado: Design de Dados Seguro para Upgrade
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