Espacio y Alquiler
Las cuentas de Solana deben estar exentas de alquiler. El init de Anchor utiliza tu atributo space para asignar bytes, incluido el discriminador de 8 bytes.
Busca en todas las páginas de la documentación
Las cuentas de Solana deben estar exentas de alquiler. El init de Anchor utiliza tu atributo space para asignar bytes, incluido el discriminador de 8 bytes.
#[account]
#[derive(InitSpace)]
pub struct User {
pub authority: Pubkey,
pub points: u64,
}
// space = 8 + User::INIT_SPACE
#[account(init, payer = payer, space = 8 + User::INIT_SPACE)]
pub user: Account<'info, User>,Cuándo recurrir a esto: Añades campos al estado en la cadena o creas nuevos tipos de cuentas.
#[account]
#[derive(InitSpace)]
pub struct Config {
pub admin: Pubkey,
#[max_len(64)]
pub name: String,
pub fee_bps: u16,
}
#[account(init, payer = payer, space = 8 + Config::INIT_SPACE)]
pub config: Account<'info, Config>,Lo que esto demuestra:
InitSpace derive calcula el tamaño en tiempo de compilación.payer) suministra lamports para la exención de alquiler.max_len en cadenas/vectores limita la asignación.String / Vec: necesitan max_len con InitSpace.zero-copy) utilizan un dimensionamiento diferente (sin Borsh en la cadena).El mínimo para la exención de alquiler depende del tamaño asignado. Usa Rent::get()?.minimum_balance(space) en las pruebas para afirmar la financiación.
space: La cuenta es demasiado pequeña; la serialización falla (panics). Solución: Siempre añade 8 a INIT_SPACE.Unbounded String): Sin max_len; tamaño desconocido. Solución: Usa #[max_len(n)] con InitSpace.Undersized Vec): Crece más allá de la asignación. Solución: Preasigna la longitud máxima o usa realloc.INIT_SPACE incorrecto después de añadir un campo: La actualización rompe las nuevas inicializaciones. Solución: Incrementa la versión y migra.close = recipient.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
Restricción realloc | Crecimiento de cuentas | Tamaños fijos conocidos de antemano |
zero_copy | Estructuras fijas grandes | Cuentas de configuración pequeñas |
Cálculo manual de space | No es Anchor | InitSpace derive |
0.32.1 para anchor-lang, Anchor CLI y ejemplos en esta sección.
Sí. Solana CLI 3.0.10 maneja los pares de claves, los airdrops y la inspección de solana program.
target/idl/<program>.json en tu espacio de trabajo.
Sí, pero cada campo no verificado necesita restricciones explícitas o comprobaciones del manejador.
Usa anchor test con Surfpool 0.12.0 o LiteSVM 0.6.x en CI.
El discriminador de cuenta de Anchor; no lo elimines al dimensionar space.
Sí, o publica el IDL en la cadena para que los clientes tengan una fuente canónica.
Ejecuta con logs; Anchor imprime el nombre de la restricción y el índice de la cuenta.
Sí. Esta pila se dirige a validadores Agave con Solana CLI 3.0.10.
Consulta los artículos hermanos en "Relacionados" para temas más profundos sobre el espacio y el alquiler.
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