Discriminadores de Cuenta
Los discriminadores identifican qué tipo de struct posee el diseño de bytes de una cuenta. Bloquean ataques de confusión de tipos donde una cuenta maliciosa se interpreta como el tipo incorrecto.
Busca en todas las páginas de la documentación
Los discriminadores identifican qué tipo de struct posee el diseño de bytes de una cuenta. Bloquean ataques de confusión de tipos donde una cuenta maliciosa se interpreta como el tipo incorrecto.
if data[..8] != Account::DISCRIMINATOR { return Err(ProgramError::InvalidAccountData); }Cuándo usar esto:
pub const VAULT_DISC: [u8; 8] = *b"vault___";
pub fn load_vault(data: &[u8]) -> Result<Vault, ProgramError> {
if data.len() < 8 || data[..8] != VAULT_DISC { return Err(ProgramError::InvalidAccountData); }
Vault::deserialize(&mut &data[8..]).map_err(|_| ProgramError::InvalidAccountData)
}Lo que esto demuestra:
SHA256("account:TypeName")[:8] en 0.32.1.
Elige constantes únicas; documenta en IDL.
// Incluye el discriminador en ESPACIO: 8 + cuerpo| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Tipado solo por propietario | Un tipo de cuenta por programa | Programas multotipo |
| Byte de versión solamente | Más simple | Seguridad de tipo más débil |
| Discriminador automático de Anchor | Por defecto | Manual nativo |
Convención de Anchor; nativo puede diferir si es consistente.
Generalmente antepuesto manualmente o con un envoltorio de Anchor.
Sí, la primera escritura.
Cero datos completos.
Anchor incluye nombres de cuenta.
No es un límite de seguridad; la coincidencia del diseño es lo que importa.
El programa de token tiene su propio diseño; es diferente.
Usar campo de versión después del discriminador.
LiteSVM prueba negativa.
Interno de Anchor; reproducible.
Exportar constantes para clientes.
Bytes válidos, pero evitar la ambigüedad de todos los ceros.
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