Conceptos básicos de patrones de programas
10 ejemplos para empezar con Patrones de Programas: 7 básicos y 3 intermedios.
Busca en todas las páginas de la documentación
10 ejemplos para empezar con Patrones de Programas: 7 básicos y 3 intermedios.
Crear + escribir discriminador + estado.
// 1. CPI de create_account 2. Establecer discriminador 3. Serializar EstadoEl programa retiene fondos a través de la autoridad de la PDA.
// semillas [b"vault", user] + invocación_firmada de transferenciasLa clave pública almacenada debe firmar o coincidir con la PDA.
if !authority.is_signer { return Err(...); }La cuenta almacena el estado; las instrucciones validan las transiciones.
enum Status { Open, Filled, Cancelled }Dividir la cantidad a la tesorería en acción.
let fee = amount.checked_mul(bps)?.checked_div(10000)?;Leer la sysvar Clock para las fechas límite.
let clock = Clock::get()?;
if clock.unix_timestamp > deadline { return Err(...); }Datos cero, transferir lamports, marcar como cerrado.
// cero datos, transferir alquiler al destinatarioclose de Anchor.Condiciones + CPI de token desde la PDA del depósito en garantía.
// verificar + invocación_firmada de transferencia de tokenRelacionado: Bóveda y Depósito en Garantía
Parámetros globales con rotación de administrador.
struct Config { admin: Pubkey, fee_bps: u16 }Relacionado: Control de Acceso y Autoridades
Instrucción de migración para el diseño v2.
if version == 1 { migrate_v1_to_v2()? }Relacionado: Diseño de Datos Seguro para Actualizaciones
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: 16 jul 2026