1use solana_program::{pubkey, pubkey::Pubkey};
2
3pub const TOKEN_DECIMALS: u8 = 9;
5
6pub const ONE_TOKEN: u64 = 10u64.pow(TOKEN_DECIMALS as u32);
8
9pub const EMISSION_PER_MINUTE: u64 = 10 * ONE_TOKEN;
11
12pub const INITIAL_ROUND_SECONDS: u64 = 60;
15
16pub const MIN_ROUND_SECONDS: u64 = 10;
18pub const MAX_ROUND_SECONDS: u64 = 3600;
19
20pub const fn round_budget(round_seconds: u64) -> u64 {
23 EMISSION_PER_MINUTE * round_seconds / 60
24}
25
26pub const ROUND_RETENTION: u64 = 2880;
30
31pub const INITIAL_MIN_DIFFICULTY: u64 = 20;
35
36pub const INITIAL_BASE_WEIGHT: u64 = 100 * ONE_TOKEN;
40
41pub const CONFIG_SEED: &[u8] = b"config";
43pub const TREASURY_SEED: &[u8] = b"treasury";
44pub const ROUND_SEED: &[u8] = b"round";
45pub const MINER_SEED: &[u8] = b"miner";
46
47pub const SPL_TOKEN_PROGRAM_ID: Pubkey = pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
49pub const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey =
50 pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
51pub const SYSTEM_PROGRAM_ID: Pubkey = pubkey!("11111111111111111111111111111111");
52pub const SLOT_HASHES_SYSVAR_ID: Pubkey =
53 pubkey!("SysvarS1otHashes111111111111111111111111111");
54
55pub const SPL_TOKEN_MINT_TO_IX: u8 = 7;