Discriminator

This commit is contained in:
Hardhat Chad
2024-02-15 18:00:30 +00:00
parent c2692c89d2
commit 9476fc5b21
11 changed files with 107 additions and 58 deletions

View File

@@ -2,6 +2,8 @@ use bytemuck::{Pod, Zeroable};
use crate::{impl_account_from_bytes, impl_to_bytes};
use super::{AccountDiscriminator, Discriminator};
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct Bus {
@@ -15,5 +17,11 @@ pub struct Bus {
pub available_rewards: u64,
}
impl Discriminator for Bus {
fn discriminator() -> super::AccountDiscriminator {
AccountDiscriminator::Bus
}
}
impl_to_bytes!(Bus);
impl_account_from_bytes!(Bus);

View File

@@ -3,7 +3,7 @@ use std::mem::transmute;
use bytemuck::{Pod, Zeroable};
use solana_program::keccak::{Hash as KeccakHash, HASH_BYTES};
use crate::{impl_account_from_bytes, impl_to_bytes};
use crate::impl_to_bytes;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
@@ -24,4 +24,4 @@ impl From<Hash> for KeccakHash {
}
impl_to_bytes!(Hash);
impl_account_from_bytes!(Hash);
// impl_account_from_bytes!(Hash);

View File

@@ -5,5 +5,18 @@ mod treasury;
pub use bus::*;
pub use hash::*;
use num_enum::{IntoPrimitive, TryFromPrimitive};
pub use proof::*;
pub use treasury::*;
#[repr(u8)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)]
pub enum AccountDiscriminator {
Bus = 100,
Proof = 101,
Treasury = 102,
}
pub trait Discriminator {
fn discriminator() -> AccountDiscriminator;
}

View File

@@ -3,7 +3,7 @@ use solana_program::pubkey::Pubkey;
use crate::{impl_account_from_bytes, impl_to_bytes};
use super::Hash;
use super::{AccountDiscriminator, Discriminator, Hash};
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
@@ -27,5 +27,11 @@ pub struct Proof {
pub total_rewards: u64,
}
impl Discriminator for Proof {
fn discriminator() -> super::AccountDiscriminator {
AccountDiscriminator::Proof
}
}
impl_to_bytes!(Proof);
impl_account_from_bytes!(Proof);

View File

@@ -3,7 +3,7 @@ use solana_program::pubkey::Pubkey;
use crate::{impl_account_from_bytes, impl_to_bytes};
use super::Hash;
use super::{AccountDiscriminator, Discriminator, Hash};
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
@@ -27,5 +27,11 @@ pub struct Treasury {
pub total_claimed_rewards: u64,
}
impl Discriminator for Treasury {
fn discriminator() -> super::AccountDiscriminator {
AccountDiscriminator::Treasury
}
}
impl_to_bytes!(Treasury);
impl_account_from_bytes!(Treasury);