mirror of
https://github.com/d0zingcat/ore.git
synced 2026-05-14 07:26:51 +00:00
59 lines
1.5 KiB
Rust
59 lines
1.5 KiB
Rust
mod claim;
|
|
mod close;
|
|
mod initialize;
|
|
mod mine;
|
|
mod open;
|
|
mod reset;
|
|
mod stake;
|
|
mod update;
|
|
mod upgrade;
|
|
|
|
use claim::*;
|
|
use close::*;
|
|
use initialize::*;
|
|
use mine::*;
|
|
use open::*;
|
|
use reset::*;
|
|
use stake::*;
|
|
use update::*;
|
|
use upgrade::*;
|
|
|
|
use ore_api::instruction::*;
|
|
use solana_program::{
|
|
self, account_info::AccountInfo, entrypoint::ProgramResult, program_error::ProgramError,
|
|
pubkey::Pubkey,
|
|
};
|
|
|
|
pub(crate) use ore_utils as utils;
|
|
|
|
#[cfg(not(feature = "no-entrypoint"))]
|
|
solana_program::entrypoint!(process_instruction);
|
|
|
|
pub fn process_instruction(
|
|
program_id: &Pubkey,
|
|
accounts: &[AccountInfo],
|
|
data: &[u8],
|
|
) -> ProgramResult {
|
|
if program_id.ne(&ore_api::id()) {
|
|
return Err(ProgramError::IncorrectProgramId);
|
|
}
|
|
|
|
let (tag, data) = data
|
|
.split_first()
|
|
.ok_or(ProgramError::InvalidInstructionData)?;
|
|
|
|
match OreInstruction::try_from(*tag).or(Err(ProgramError::InvalidInstructionData))? {
|
|
OreInstruction::Claim => process_claim(accounts, data)?,
|
|
OreInstruction::Close => process_close(accounts, data)?,
|
|
OreInstruction::Mine => process_mine(accounts, data)?,
|
|
OreInstruction::Open => process_open(accounts, data)?,
|
|
OreInstruction::Reset => process_reset(accounts, data)?,
|
|
OreInstruction::Stake => process_stake(accounts, data)?,
|
|
OreInstruction::Update => process_update(accounts, data)?,
|
|
OreInstruction::Upgrade => process_upgrade(accounts, data)?,
|
|
OreInstruction::Initialize => process_initialize(accounts, data)?,
|
|
}
|
|
|
|
Ok(())
|
|
}
|