tachyon_math_library/instructions/
initialize.rs1use std::mem::size_of;
2
3use anchor_lang::prelude::*;
4
5use crate::error::ErrorCode;
6use crate::state::*;
7
8#[derive(Accounts)]
9pub struct Initialize<'info> {
10 #[account(mut)]
11 pub admin: Signer<'info>,
12 #[account(
13 init,
14 seeds = [FUNCTIONS_SEED],
15 bump,
16 payer = admin,
17 space = 8 + size_of::<Functions>()
18 )]
19 pub functions: Account<'info, Functions>,
20 pub rent: Sysvar<'info, Rent>,
21 pub system_program: Program<'info, System>,
22}
23
24pub fn handler(ctx: Context<Initialize>) -> Result<()> {
25 if ctx.accounts.functions.initialized {
26 return err!(ErrorCode::ProgramAlreadyInitialized);
27 }
28
29 ctx.accounts.functions.admin = ctx.accounts.admin.key();
30 ctx.accounts.functions.initialized = true;
31
32 Ok(())
33}