Noções Básicas de Serialização
10 exemplos para você começar com a Serialização de Contas - 7 básicos e 3 intermediários.
Busque em todas as páginas da documentação
10 exemplos para você começar com a Serialização de Contas - 7 básicos e 3 intermediários.
Serializa o estado estruturado em dados da conta.
#[derive(BorshSerialize, BorshDeserialize)]
pub struct Config { pub fee_bps: u16 }Declara o espaço antecipadamente para create_account.
impl Config { pub const LEN: usize = 2; }InitSpace do Anchor calcula automaticamente.Marca o tipo da conta para evitar confusão.
pub const DISCRIMINATOR: [u8; 8] = [0xC0, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x01];Valida o comprimento e o discriminador primeiro.
if data.len() < Config::LEN { return Err(ProgramError::InvalidAccountData); }InvalidAccountData.Use Pod para grandes arrays fixos.
#[repr(C)]
#[derive(Pod, Zeroable, Clone, Copy)]
pub struct Book { pub bids: [u64; 256] }repr(C).Instruções geralmente são Borsh; contas podem ser híbridas.
// ix: enum Instruction { Update { val: u64 } }Contas maiores precisam de mais lamports.
let rent = Rent::get()?.minimum_balance(Config::LEN);realloc aumenta o rent necessário.O primeiro byte indica a versão do esquema.
pub enum Version { V1 = 1, V2 = 2 }Relacionado: Versionamento e Migração de Dados
realloc para crescerExpande a conta quando o esquema cresce.
// CPI realloc + transferência de rent e depois novos camposrealloc.Relacionado: realloc e Contas em Crescimento
Soma discriminador + campos + preenchimento.
pub const SPACE: usize = 8 + Config::LEN;init space do Anchor.Relacionado: Cálculo de Espaço
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