Discriminator

pub trait Discriminator {
    const DISCRIMINATOR: &'static [u8];
}
Expand description

Unique identifier for a type.

This is not a trait you should derive manually, as various Anchor macros already derive it internally.

Prior to Anchor v0.31, discriminators were always 8 bytes in size. However, starting with Anchor v0.31, it is possible to override the default discriminators, and discriminator length is no longer fixed, which means this trait can also be implemented for non-Anchor programs.

It’s important that the discriminator is always unique for the type you’re implementing it for. While the discriminator can be at any length (including zero), the IDL generation does not currently allow empty discriminators for safety and convenience reasons. However, the trait definition still allows empty discriminators because some non-Anchor programs, e.g. the SPL Token program, don’t have account discriminators. In that case, safety checks should never depend on the discriminator.

Required Associated Constants§

Source

const DISCRIMINATOR: &'static [u8]

Discriminator slice.

See Discriminator trait documentation for more information.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Discriminator for BatchAppend

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for BatchNullify

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for BatchUpdateAddressTree

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for DeregisterProgram

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeAddressMerkleTreeAndQueue

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeBatchedAddressMerkleTree

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeBatchedStateMerkleTree

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeGroupAuthority

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeStateMerkleTreeAndNullifierQueue

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InsertIntoQueues

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for MigrateState

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for NullifyLeaves

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RegisterProgramToGroup

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for ResizeRegisteredProgramPda

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RolloverAddressMerkleTreeAndQueue

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RolloverBatchedAddressMerkleTree

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RolloverBatchedStateMerkleTree

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RolloverStateMerkleTreeAndNullifierQueue

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for UpdateAddressMerkleTree

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for UpdateGroupAuthority

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RegisteredProgram

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RegisteredProgramV1

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for AddressMerkleTreeAccount

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for GroupAuthority

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for StateMerkleTreeAccount

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for QueueAccount

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for ProgramData

Source§

const DISCRIMINATOR: &'static [u8]