Files
ore/api/src/consts.rs
Hardhat Chad c35d60ff4d motherlode
2025-06-12 20:57:28 -07:00

84 lines
2.6 KiB
Rust

use const_crypto::ed25519;
use solana_program::{pubkey, pubkey::Pubkey};
/// The authority allowed to initialize the program.
pub const ADMIN_ADDRESS: Pubkey = pubkey!("HBUh9g46wk2X89CvaNN15UmsznP59rh6od1h8JwYAopk");
/// The decimal precision of the ORE token.
/// There are 100 billion indivisible units per ORE (called "grams").
pub const TOKEN_DECIMALS: u8 = 11;
/// One ORE token, denominated in indivisible units.
pub const ONE_ORE: u64 = 10u64.pow(TOKEN_DECIMALS as u32);
/// The duration of one minute, in seconds.
pub const ONE_MINUTE: i64 = 60;
/// The maximum token supply (5 million).
pub const MAX_SUPPLY: u64 = ONE_ORE * 5_000_000;
/// The seed of the block account PDA.
pub const BLOCK: &[u8] = b"block";
/// The seed of the stake account PDA.
pub const STAKE: &[u8] = b"stake";
/// The seed of the config account PDA.
pub const CONFIG: &[u8] = b"config";
/// The seed of the market account PDA.
pub const MARKET: &[u8] = b"market";
/// The seed of the miner account PDA.
pub const MINER: &[u8] = b"miner";
/// The seed of the mint account PDA.
pub const MINT: &[u8] = b"mint";
/// The seed of the permit account PDA.
pub const PERMIT: &[u8] = b"permit";
/// The seed of the treasury account PDA.
pub const TREASURY: &[u8] = b"treasury";
/// Program id for const pda derivations
const PROGRAM_ID: [u8; 32] = unsafe { *(&crate::id() as *const Pubkey as *const [u8; 32]) };
/// The address of the config account.
pub const CONFIG_ADDRESS: Pubkey =
Pubkey::new_from_array(ed25519::derive_program_address(&[CONFIG], &PROGRAM_ID).0);
/// The address of the mint account.
pub const MINT_ADDRESS: Pubkey = pubkey!("Kw7itxU5N79d6xGkMwPqd3CHHkwr3ZJsG6WFqDivcTz");
/// The address of the treasury account.
pub const TREASURY_ADDRESS: Pubkey =
Pubkey::new_from_array(ed25519::derive_program_address(&[TREASURY], &PROGRAM_ID).0);
/// Denominator for protocol fee calculations.
pub const FEE_RATE_BPS: u64 = 100;
/// Denominator for fee calculations.
pub const DENOMINATOR_BPS: u64 = 10_000;
/// Slot window size, used for sandwich resistance.
pub const SLOT_WINDOW: u64 = 4;
/// Amount of hash tokens to mint to market.
pub const HASH_TOKEN_SUPPLY: u64 = 10_000_000;
/// The virtual liquidity to seed the markets with (in ORE).
pub const VIRTUAL_LIQUIDITY: u64 = ONE_ORE * 5;
/// The minimum difficulty required for payout.
pub const NUGGET_DIFFICULTY: u64 = 10;
/// The difficulty threshold for the motherlode payout.
pub const MOTHERLOAD_DIFFICULTY: u64 = 35;
/// The fee to open a block.
pub const OPEN_FEE: u64 = ONE_ORE / 100;
// The reward rate per satisfying hash (0.002048 ORE).
// pub const REWARD_RATE: u64 = 204_800_000;