namespaces 4.1.61

Cardinal namespaces service
Documentation
use {crate::state::*, anchor_lang::prelude::*};

#[derive(AnchorSerialize, AnchorDeserialize)]
pub struct InitGlobalContextIx {
    pub fee_basis_points: u64,
}

#[derive(Accounts)]
#[instruction(ix: InitGlobalContextIx)]
pub struct InitGlobalContextCtx<'info> {
    #[account(
        init,
        payer = payer,
        space = GLOBAL_CONTEXT_SIZE,
        seeds = [GLOBAL_CONTEXT_PREFIX.as_bytes()],
        bump,
    )]
    pub global_context: Account<'info, GlobalContext>,
    pub authority: Signer<'info>,
    #[account(mut)]
    pub payer: Signer<'info>,
    pub system_program: Program<'info, System>,
}

pub fn handler(ctx: Context<InitGlobalContextCtx>, ix: InitGlobalContextIx) -> Result<()> {
    let global_context = &mut ctx.accounts.global_context;
    global_context.bump = *ctx.bumps.get("global_context").unwrap();
    global_context.update_authority = ctx.accounts.authority.key();
    global_context.rent_authority = ctx.accounts.authority.key();
    global_context.fee_basis_points = ix.fee_basis_points;
    Ok(())
}