Estructuras Borsh
Las estructuras Borsh son el caballo de batalla para los cuerpos de cuentas de Solana. Diseñalas para un orden de campos estable, tamaño explícito y versionado compatible con versiones anteriores.
Busca en todas las páginas de la documentación
Las estructuras Borsh son el caballo de batalla para los cuerpos de cuentas de Solana. Diseñalas para un orden de campos estable, tamaño explícito y versionado compatible con versiones anteriores.
#[derive(BorshSerialize, BorshDeserialize)]
pub struct User { pub authority: Pubkey, pub points: u64 }Cuándo usar esto:
#[derive(BorshSerialize, BorshDeserialize)]
pub struct User {
pub authority: Pubkey,
pub points: u64,
pub bump: u8,
}
impl User {
pub const LEN: usize = 32 + 8 + 1;
}Lo que esto demuestra:
Pubkey 32 + u64 8 + u8 1 = 41 bytes de cuerpo.
Añadir campos; migrar cuentas antiguas.
// Option<Pubkey>: 1 + 32 bytes| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| cabecera bytemuck + cola Borsh | Híbrido | Cero copia pura |
| Múltiples cuentas pequeñas | Menos reasignación | Más alquiler total |
| Compresión de cuentas | Fuera de la cadena | Bytes crudos en la cadena |
32 bytes Borsh.
Longitud de 4 bytes + elementos - alquiler variable.
1 byte.
8 bytes LE.
Soportado - suma tamaños.
Ayuda a inicializar en el host.
10 MB teóricos.
Deriva macro de espacio.
Documentar en las actualizaciones.
Se prefiere un solo nivel por claridad.
Borsh ignora el align de Rust.
Recomendado.
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