Fundamentos de Serialización
10 ejemplos para empezar con la Serialización de Cuentas: 7 básicos y 3 intermedios.
Busca en todas las páginas de la documentación
10 ejemplos para empezar con la Serialización de Cuentas: 7 básicos y 3 intermedios.
Serializa el estado estructurado en datos de cuenta.
#[derive(BorshSerialize, BorshDeserialize)]
pub struct Config { pub fee_bps: u16 }Declara previamente el espacio para create_account.
impl Config { pub const LEN: usize = 2; }InitSpace de Anchor se calcula automáticamente.Etiqueta el tipo de cuenta para evitar confusiones.
pub const DISCRIMINATOR: [u8; 8] = [0xC0, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x01];Valida la longitud y el discriminador primero.
if data.len() < Config::LEN { return Err(ProgramError::InvalidAccountData); }InvalidAccountData.Usa Pod para arrays fijos grandes.
#[repr(C)]
#[derive(Pod, Zeroable, Clone, Copy)]
pub struct Book { pub bids: [u64; 256] }repr(C).Las instrucciones a menudo usan Borsh; las cuentas pueden ser híbridas.
// ix: enum Instruction { Update { val: u64 } }Las cuentas más grandes necesitan más lamports.
let rent = Rent::get()?.minimum_balance(Config::LEN);realloc aumenta la renta necesaria.El primer byte indica la versión del esquema.
pub enum Version { V1 = 1, V2 = 2 }Relacionado: Versionado y Migración de Datos
realloc para crecerExpande la cuenta cuando el esquema crece.
// CPI realloc + transferencia de renta y luego nuevos camposrealloc.Relacionado: realloc y Cuentas en Crecimiento
Suma el discriminador + campos + relleno.
pub const SPACE: usize = 8 + Config::LEN;init space de Anchor.Relacionado: Cálculo de Espacio
Versiones de la Pila: Esta página fue 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, y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 19 jul 2026