spl: Add token initialize_account instruction (#166)

This commit is contained in:
Armani Ferrante 2021-04-10 14:54:19 +08:00 committed by GitHub
parent 0e02301e42
commit ae990e21d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 0 deletions

View File

@ -14,6 +14,7 @@ incremented for features.
## Features ## Features
* cli: Fund Anchor.toml configured wallet when testing ([#164](https://github.com/project-serum/anchor/pull/164)). * cli: Fund Anchor.toml configured wallet when testing ([#164](https://github.com/project-serum/anchor/pull/164)).
* spl: Add initialize_account instruction for spl tokens ([#166](https://github.com/project-serum/anchor/pull/166)).
## [0.4.1] - 2021-04-06 ## [0.4.1] - 2021-04-06

View File

@ -104,6 +104,27 @@ pub fn approve<'a, 'b, 'c, 'info>(
) )
} }
pub fn initialize_account<'a, 'b, 'c, 'info>(
ctx: CpiContext<'a, 'b, 'c, 'info, InitializeAccount<'info>>,
) -> ProgramResult {
let ix = spl_token::instruction::initialize_account(
&spl_token::ID,
ctx.accounts.account.key,
ctx.accounts.mint.key,
ctx.accounts.authority.key,
)?;
solana_program::program::invoke_signed(
&ix,
&[
ctx.accounts.account.clone(),
ctx.accounts.mint.clone(),
ctx.accounts.authority.clone(),
ctx.program.clone(),
],
ctx.signer_seeds,
)
}
#[derive(Accounts)] #[derive(Accounts)]
pub struct Transfer<'info> { pub struct Transfer<'info> {
pub from: AccountInfo<'info>, pub from: AccountInfo<'info>,
@ -132,6 +153,13 @@ pub struct Approve<'info> {
pub authority: AccountInfo<'info>, pub authority: AccountInfo<'info>,
} }
#[derive(Accounts)]
pub struct InitializeAccount<'info> {
pub account: AccountInfo<'info>,
pub mint: AccountInfo<'info>,
pub authority: AccountInfo<'info>,
}
#[derive(Clone)] #[derive(Clone)]
pub struct TokenAccount(spl_token::state::Account); pub struct TokenAccount(spl_token::state::Account);