mirror of
https://github.com/d0zingcat/ore.git
synced 2026-05-14 07:26:51 +00:00
account discriminator macro
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user