I'm trying to transfer tokens from my program that has a transfer hook. I keep getting 0x7dc8348c Error.
My transfer checked call
// transfer the base token from base bank to the payer base token account based on the amount of base token to be received token_2022::transfer_checked( CpiContext::new_with_signer( token_program.to_account_info(), TransferChecked { from: base_token_bank.to_account_info(), mint: base_token.to_account_info(), to: payer_base_token_account.to_account_info(), authority: amm.to_account_info(), },&[&[SEED_AMM, &amm.id.to_be_bytes(), &[amm.bump]]], ), base_recieved, base_token.decimals, )?;
This is my context
#[derive(Accounts)]pub struct Buy<'info> { #[account(mut)] pub payer: Signer<'info>, // we use amm to store the SOL balance #[account(mut, address = Amm::pda(amm.id).0, )] pub amm: Account<'info, Amm>, #[account( mut, associated_token::mint = base_token, associated_token::authority = payer, associated_token::token_program = token_program, )] pub payer_base_token_account: Box<InterfaceAccount<'info, TokenAccount>>, #[account(mut, associated_token::mint = amm.base_token, associated_token::authority = amm, associated_token::token_program = token_program, )] pub base_token_bank: Box<InterfaceAccount<'info, TokenAccount>>, #[account(address = Amm::mint_pda(amm.id).0)] pub base_token: Box<InterfaceAccount<'info, Mint>>, #[account( seeds = [b"extra-account-metas", base_token.key().as_ref()], bump )] /// CHECK extra meta list account pub extra_meta_list: AccountInfo<'info>, pub system_program: Program<'info, System>, pub token_program: Program<'info, Token2022>, pub associated_token_program: Program<'info, AssociatedToken>,}
I invoke the initializeAmm first (initializes the mint with transfer hook and the extra_accounts_meta
pub struct InitializeAmm<'info> { #[account(mut)] pub authority: Signer<'info>, #[account(init, payer = authority, space = 8 + mem::size_of::<Amm>(), seeds = [SEED_AMM, &amm_id.to_be_bytes()], bump)] pub amm: Box<Account<'info, Amm>>, #[account( init, payer = authority, mint::authority = amm, mint::decimals = 9, mint::token_program = token_program, extensions::transfer_hook::authority = amm, extensions::transfer_hook::program_id = crate::ID, seeds = [SEED_MINT,&amm_id.to_be_bytes()], bump )] pub base_token: Box<InterfaceAccount<'info, Mint>>, #[ account( init, payer = authority, associated_token::authority = amm, associated_token::mint = base_token, associated_token::token_program = token_program, ) ] pub base_token_bank: Box<InterfaceAccount<'info, TokenAccount>>, /// CHECK transfer hook program #[account( mut, seeds = [b"extra-account-metas", base_token.key().as_ref()], bump )] pub extra_meta_list: AccountInfo<'info>, pub system_program: Program<'info, System>, pub token_program: Program<'info, Token2022>, pub associated_token_program: Program<'info, AssociatedToken>,}
Example transaction:https://explorer.solana.com/tx/22qAMoehhUbmX3jbcqNahy95KdViegfrWpCxMdWZDME7XjY7iRgybfGtRjzAVQFyS51DZcpaQ7T2mszga5cSderd?cluster=devnet
I can provide more info as needed.