Borsh (Binary Object Representation Serializer for Hashing) é o formato de serialização padrão para dados de conta e instrução do Anchor no Agave 4.1.1. bytemuck permite casting zero-copy de layouts de dados simples (plain-old-data) quando você controla o alinhamento e a validação. Escolha Borsh para flexibilidade; escolha bytemuck para caminhos críticos sensíveis a CU.
// Conta Anchor com discriminador// space = 8 + UserMeta::serialized_size() // ou INIT_SPACE em Anchor mais recente// Nunca use bytemuck-cast em contas não confiáveis sem verificações de proprietário + comprimento
bytemuck em structs packed ou com muitos bools - risco de comportamento indefinido. Correção:repr(C) + campos de preenchimento explícitos; teste no alvo.
Mudança de esquema sem migração - desserializa lixo. Correção: byte de versão + instrução de migração.
Misturar Serde JSON com dados on-chain - formato diferente. Correção: Apenas Borsh (ou customizado) dentro de programas.
try_from_slice não verificado em dados do usuário - causa pânico no código nativo. Correção:try_from_slice -> ProgramError::InvalidAccountData.
Suposições de Endianness - Borsh é LE; bytemuck segue o host para POD - use apenas tipos LE.