ore/
lib.rs

1pub mod consts;
2pub mod error;
3pub mod instruction;
4mod loaders;
5mod processor;
6pub mod state;
7pub mod utils;
8
9pub use consts::*;
10use instruction::*;
11use processor::*;
12use solana_program::{
13    self, account_info::AccountInfo, declare_id, entrypoint::ProgramResult,
14    program_error::ProgramError, pubkey::Pubkey,
15};
16
17declare_id!("mineRHF5r6S7HyD9SppBfVMXMavDkJsxwGesEvxZr2A");
18
19#[cfg(not(feature = "no-entrypoint"))]
20solana_program::entrypoint!(process_instruction);
21
22pub fn process_instruction(
23    program_id: &Pubkey,
24    accounts: &[AccountInfo],
25    data: &[u8],
26) -> ProgramResult {
27    if program_id.ne(&crate::id()) {
28        return Err(ProgramError::IncorrectProgramId);
29    }
30
31    let (tag, data) = data
32        .split_first()
33        .ok_or(ProgramError::InvalidInstructionData)?;
34
35    match OreInstruction::try_from(*tag).or(Err(ProgramError::InvalidInstructionData))? {
36        OreInstruction::Reset => process_reset(program_id, accounts, data)?,
37        OreInstruction::Register => process_register(program_id, accounts, data)?,
38        OreInstruction::Mine => process_mine(program_id, accounts, data)?,
39        OreInstruction::Claim => process_claim(program_id, accounts, data)?,
40        OreInstruction::Initialize => process_initialize(program_id, accounts, data)?,
41        OreInstruction::UpdateAdmin => process_update_admin(program_id, accounts, data)?,
42        OreInstruction::UpdateDifficulty => process_update_difficulty(program_id, accounts, data)?,
43    }
44
45    Ok(())
46}