Skip to content

Instantly share code, notes, and snippets.

@danmt
Last active August 10, 2023 14:24
Show Gist options
  • Save danmt/f8996a06a2942ef0d391becae271bc52 to your computer and use it in GitHub Desktop.
Save danmt/f8996a06a2942ef0d391becae271bc52 to your computer and use it in GitHub Desktop.
Dealing with unchecked accounts in Solana
pub fn is_discriminator_already_set<'info>(account: &UncheckedAccount<'info>) -> Result<bool> {
let data = account.try_borrow_data()?;
let mut disc_bytes = [0u8; 8];
disc_bytes.copy_from_slice(&data[..8]);
let discriminator = u64::from_le_bytes(disc_bytes);
Ok(discriminator != 0)
}
pub fn try_deserialize_unchecked<'info, T: AccountDeserialize>(
account: &UncheckedAccount<'info>,
) -> Result<T> {
let account_data = account.try_borrow_data()?;
let mut account_data_slice: &[u8] = &account_data;
T::try_deserialize_unchecked(&mut account_data_slice)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment