AccountDeserialize

This commit is contained in:
Hardhat Chad
2024-02-15 19:28:43 +00:00
parent d244c4fbc0
commit 8d743d4f63
13 changed files with 25 additions and 9 deletions

View File

@@ -3,7 +3,7 @@ pub mod instruction;
mod loaders;
mod processor;
pub mod state;
mod utils;
pub mod utils;
use processor::*;
use solana_program::{

View File

@@ -6,6 +6,7 @@ use spl_token::state::Mint;
use crate::{
state::{Bus, Proof},
utils::AccountDeserialize,
BUS_COUNT, MINT_ADDRESS, TREASURY_ADDRESS,
};

View File

@@ -8,6 +8,7 @@ use crate::{
instruction::ClaimArgs,
loaders::*,
state::{Proof, Treasury},
utils::AccountDeserialize,
TREASURY,
};

View File

@@ -9,6 +9,7 @@ use crate::{
instruction::CreateProofArgs,
loaders::*,
state::Proof,
utils::AccountDeserialize,
utils::{create_pda, Discriminator},
PROOF,
};

View File

@@ -15,6 +15,7 @@ use crate::{
loaders::*,
state::{Bus, Treasury},
utils::create_pda,
utils::AccountDeserialize,
utils::Discriminator,
BUS, BUS_COUNT, INITIAL_DIFFICULTY, INITIAL_REWARD_RATE, MINT, MINT_ADDRESS, TOKEN_DECIMALS,
TREASURY, TREASURY_ADDRESS,

View File

@@ -17,6 +17,7 @@ use crate::{
instruction::MineArgs,
loaders::*,
state::{Bus, Proof, Treasury},
utils::AccountDeserialize,
EPOCH_DURATION,
};

View File

@@ -7,6 +7,7 @@ use crate::{
error::OreError,
loaders::*,
state::{Bus, Treasury},
utils::AccountDeserialize,
BUS_COUNT, BUS_EPOCH_REWARDS, EPOCH_DURATION, MAX_EPOCH_REWARDS, SMOOTHING_FACTOR,
TARGET_EPOCH_REWARDS, TREASURY,
};

View File

@@ -3,7 +3,7 @@ use solana_program::{
pubkey::Pubkey,
};
use crate::{instruction::UpdateAdminArgs, loaders::*, state::Treasury};
use crate::{instruction::UpdateAdminArgs, loaders::*, state::Treasury, utils::AccountDeserialize};
pub fn process_update_admin<'a, 'info>(
_program_id: &Pubkey,

View File

@@ -3,7 +3,9 @@ use solana_program::{
pubkey::Pubkey,
};
use crate::{instruction::UpdateDifficultyArgs, loaders::*, state::Treasury};
use crate::{
instruction::UpdateDifficultyArgs, loaders::*, state::Treasury, utils::AccountDeserialize,
};
pub fn process_update_difficulty<'a, 'info>(
_program_id: &Pubkey,

View File

@@ -1,12 +1,12 @@
use num_enum::{IntoPrimitive, TryFromPrimitive};
use solana_program::{
account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey, rent::Rent,
sysvar::Sysvar,
account_info::AccountInfo, entrypoint::ProgramResult, program_error::ProgramError,
pubkey::Pubkey, rent::Rent, sysvar::Sysvar,
};
/// Creates a new pda
#[inline(always)]
pub fn create_pda<'a, 'info>(
pub(crate) fn create_pda<'a, 'info>(
target_account: &'a AccountInfo<'info>,
owner: &Pubkey,
space: usize,
@@ -56,11 +56,16 @@ macro_rules! impl_to_bytes {
};
}
pub trait AccountDeserialize {
fn try_from_bytes(data: &[u8]) -> Result<&Self, ProgramError>;
fn try_from_bytes_mut(data: &mut [u8]) -> Result<&mut Self, ProgramError>;
}
#[macro_export]
macro_rules! impl_account_from_bytes {
($struct_name:ident) => {
impl $struct_name {
pub fn try_from_bytes(
impl crate::utils::AccountDeserialize for $struct_name {
fn try_from_bytes(
data: &[u8],
) -> Result<&Self, solana_program::program_error::ProgramError> {
if (Self::discriminator() as u8).ne(&data[0]) {
@@ -70,7 +75,7 @@ macro_rules! impl_account_from_bytes {
solana_program::program_error::ProgramError::InvalidAccountData,
))
}
pub fn try_from_bytes_mut(
fn try_from_bytes_mut(
data: &mut [u8],
) -> Result<&mut Self, solana_program::program_error::ProgramError> {
if (Self::discriminator() as u8).ne(&data[0]) {

View File

@@ -1,6 +1,7 @@
use ore::{
instruction::{InitializeArgs, OreInstruction},
state::{Bus, Treasury},
utils::AccountDeserialize,
BUS, BUS_COUNT, INITIAL_DIFFICULTY, INITIAL_REWARD_RATE, MINT, TREASURY,
};
use solana_program::{

View File

@@ -3,6 +3,7 @@ use std::str::FromStr;
use ore::{
instruction::{CreateProofArgs, MineArgs, OreInstruction},
state::{Proof, Treasury},
utils::AccountDeserialize,
BUS, PROOF, TREASURY,
};
use solana_program::{

View File

@@ -3,6 +3,7 @@ use std::str::FromStr;
use ore::{
instruction::OreInstruction,
state::{Bus, Treasury},
utils::AccountDeserialize,
BUS, BUS_COUNT, BUS_EPOCH_REWARDS, INITIAL_DIFFICULTY, INITIAL_REWARD_RATE, MAX_EPOCH_REWARDS,
MINT, TREASURY,
};