tape/
lib.rs

1#![allow(unexpected_cfgs)]
2
3pub mod tape;
4pub mod miner;
5pub mod program;
6
7use tape::*;
8use miner::*;
9use program::*;
10
11use tape_api::instruction::*;
12use steel::*;
13
14pub fn process_instruction(
15    program_id: &Pubkey,
16    accounts: &[AccountInfo],
17    data: &[u8],
18) -> ProgramResult {
19    let (ix, data) = parse_instruction(&tape_api::ID, program_id, data)?;
20
21    match ix {
22        // Program instructions
23        InstructionType::Initialize => process_initialize(accounts, data)?,
24        InstructionType::Advance => process_advance(accounts, data)?,
25
26        // Tape instructions
27        InstructionType::Create => process_create(accounts, data)?,
28        InstructionType::Write => process_write(accounts, data)?,
29        InstructionType::Finalize => process_finalize(accounts, data)?,
30
31        // Miner instructions
32        InstructionType::Register => process_register(accounts, data)?,
33        InstructionType::Close => process_close(accounts, data)?,
34        InstructionType::Mine => process_mine(accounts, data)?,
35        InstructionType::Claim => process_claim(accounts, data)?,
36
37        _ => { return Err(ProgramError::InvalidInstructionData); }
38    }
39
40    Ok(())
41}
42
43entrypoint!(process_instruction);