spl: Add cpi helper for token `intitialize_mint` (#529)

This commit is contained in:
suscd 2021-07-16 16:07:07 -07:00 committed by GitHub
parent f34d0730db
commit 255adef839
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 0 deletions

View File

@ -127,6 +127,30 @@ pub fn initialize_account<'a, 'b, 'c, 'info>(
)
}
pub fn initialize_mint<'a, 'b, 'c, 'info>(
ctx: CpiContext<'a, 'b, 'c, 'info, InitializeMint<'info>>,
decimals: u8,
authority: &Pubkey,
freeze_authority: Option<&Pubkey>
) -> ProgramResult {
let ix = spl_token::instruction::initialize_mint(
&spl_token::ID,
ctx.accounts.mint.key,
&authority,
freeze_authority,
decimals
)?;
solana_program::program::invoke_signed(
&ix,
&[
ctx.accounts.mint.clone(),
ctx.accounts.rent.clone(),
ctx.program.clone(),
],
ctx.signer_seeds,
)
}
pub fn set_authority<'a, 'b, 'c, 'info>(
ctx: CpiContext<'a, 'b, 'c, 'info, SetAuthority<'info>>,
authority_type: spl_token::instruction::AuthorityType,
@ -192,6 +216,12 @@ pub struct InitializeAccount<'info> {
pub rent: AccountInfo<'info>,
}
#[derive(Accounts)]
pub struct InitializeMint<'info> {
pub mint: AccountInfo<'info>,
pub rent: AccountInfo<'info>,
}
#[derive(Accounts)]
pub struct SetAuthority<'info> {
pub current_authority: AccountInfo<'info>,