Estruturas Borsh
As estruturas Borsh são a base para os corpos de contas do Solana. Projete-as para ter ordem de campos estável, dimensionamento explícito e versionamento compatível com versões futuras.
Busque em todas as páginas da documentação
As estruturas Borsh são a base para os corpos de contas do Solana. Projete-as para ter ordem de campos estável, dimensionamento explícito e versionamento compatível com versões futuras.
#[derive(BorshSerialize, BorshDeserialize)]
pub struct User { pub authority: Pubkey, pub points: u64 }Quando usar isso:
#[derive(BorshSerialize, BorshDeserialize)]
pub struct User {
pub authority: Pubkey,
pub points: u64,
pub bump: u8,
}
impl User {
pub const LEN: usize = 32 + 8 + 1;
}O que isso demonstra:
LEN corresponde à soma dos campos.bump armazenado para assinatura de PDA.Pubkey 32 + u64 8 + u8 1 = 41 bytes de corpo.
Anexe campos; migre contas antigas.
// Option<Pubkey>: 1 + 32 bytesu8 + struct.LEN incorreto - Falhas em tempo de execução. Correção: Teste o len de serialização.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
Cabeçalho bytemuck + cauda Borsh | Híbrido | Puro zero-copy |
| Múltiplas contas pequenas | Menos realloc | Mais aluguel total |
| Compressão de conta | Fora da cadeia | Bytes brutos na cadeia |
32 bytes Borsh.
4 bytes de comprimento + elementos - aluguel variável.
1 byte.
8 bytes LE.
Suportado - soma os tamanhos.
Ajuda a inicializar no host.
10 MB teóricos.
Deriva a macro space.
Documentar em atualizações.
Nível único preferido para clareza.
Borsh ignora o align do Rust.
Recomendado.
Versões da Pilha: 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