account discriminator macro

This commit is contained in:
Hardhat Chad
2024-08-25 14:52:10 +00:00
parent 630b0efd64
commit dce5c11a12
7 changed files with 43 additions and 30 deletions

View File

@@ -1,5 +1,8 @@
use bytemuck::{Pod, Zeroable};
use ore_utils::*;
use solana_program::pubkey::Pubkey;
use crate::consts::BUS;
use super::AccountDiscriminator;
@@ -22,10 +25,9 @@ pub struct Bus {
pub top_balance: u64,
}
impl Discriminator for Bus {
fn discriminator() -> u8 {
AccountDiscriminator::Bus.into()
}
/// Fetch the PDA of a bus account.
pub fn bus_pda(id: u64) -> (Pubkey, u8) {
Pubkey::find_program_address(&[BUS, id.to_le_bytes().as_slice()], &crate::id())
}
account!(Bus);
account!(AccountDiscriminator, Bus);

View File

@@ -1,5 +1,8 @@
use bytemuck::{Pod, Zeroable};
use ore_utils::{account, Discriminator};
use ore_utils::*;
use solana_program::pubkey::Pubkey;
use crate::consts::CONFIG;
use super::AccountDiscriminator;
@@ -20,10 +23,9 @@ pub struct Config {
pub top_balance: u64,
}
impl Discriminator for Config {
fn discriminator() -> u8 {
AccountDiscriminator::Config.into()
}
/// Derive the PDA of the config account.
pub fn config_pda() -> (Pubkey, u8) {
Pubkey::find_program_address(&[CONFIG], &crate::id())
}
account!(Config);
account!(AccountDiscriminator, Config);

View File

@@ -1,7 +1,9 @@
use bytemuck::{Pod, Zeroable};
use ore_utils::{account, Discriminator};
use ore_utils::*;
use solana_program::pubkey::Pubkey;
use crate::consts::PROOF;
use super::AccountDiscriminator;
/// Proof accounts track a miner's current hash, claimable rewards, and lifetime stats.
@@ -37,10 +39,9 @@ pub struct Proof {
pub total_rewards: u64,
}
impl Discriminator for Proof {
fn discriminator() -> u8 {
AccountDiscriminator::Proof.into()
}
/// Derive the PDA of a proof account.
pub fn proof_pda(authority: Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(&[PROOF, authority.as_ref()], &crate::id())
}
account!(Proof);
account!(AccountDiscriminator, Proof);

View File

@@ -1,5 +1,8 @@
use bytemuck::{Pod, Zeroable};
use ore_utils::{account, Discriminator};
use ore_utils::*;
use solana_program::pubkey::Pubkey;
use crate::consts::TREASURY;
use super::AccountDiscriminator;
@@ -9,10 +12,9 @@ use super::AccountDiscriminator;
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct Treasury {}
impl Discriminator for Treasury {
fn discriminator() -> u8 {
AccountDiscriminator::Treasury.into()
}
/// Derive the PDA of the treasury account.
pub fn treasury_pda() -> (Pubkey, u8) {
Pubkey::find_program_address(&[TREASURY], &crate::id())
}
account!(Treasury);
account!(AccountDiscriminator, Treasury);