newbie here !I'm trying to mint some token 2022 from a rust program. i followed every single instruction i found about turning a classic token 2017 to a 2022 compatible, like changin the default program_id and stuff.
My test script fails with "failed to send transaction: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x4" (Owner does not match?)
Crates
use anchor_lang::prelude::*;use anchor_lang::solana_program::program::invoke_signed;use anchor_spl::metadata::mpl_token_metadata::instructions::FreezeDelegatedAccount;use anchor_spl::metadata::mpl_token_metadata::instructions::ThawDelegatedAccount;use anchor_spl::metadata::mpl_token_metadata::ID as MetadataTokenId;use anchor_spl::token;use anchor_spl::token_2022;use anchor_spl::{ associated_token::AssociatedToken, token_interface::{TokenAccount, Mint, MintTo, mint_to, TokenInterface}, token::{Approve, Mint as NftMint, Revoke, TokenAccount as NftTokenAccount},};
Accounts
#[account(mut)] pub stake_mint: InterfaceAccount<'info, Mint>, // reward spl token /// CHECK: manual check #[account(seeds = ["mint".as_bytes().as_ref()], bump)] pub stake_authority: UncheckedAccount<'info>, #[account( init_if_needed, payer=user, associated_token::mint=stake_mint, associated_token::authority=user, associated_token::token_program = token_2022_program, )] pub user_stake_ata: InterfaceAccount<'info, TokenAccount>, // reward spl token ata pub token_2022_program: Interface<'info, TokenInterface>
The function
pub(crate) fn process_redeem( redeem_account: &mut Redeem, stake_authority_bump: u8,) -> Result<()> {... let cpi_mint_program = redeem_account.token_2022_program.to_account_info(); let cpi_mint_accounts: MintTo<'_> = MintTo { mint: redeem_account.stake_mint.to_account_info(), to: redeem_account.user_stake_ata.to_account_info(), authority: redeem_account.stake_authority.to_account_info(), }; let seeds = &["mint".as_bytes(), &[stake_authority_bump]]; let signer = &[&seeds[..]]; let cpi_mint_ctx = CpiContext::new_with_signer(cpi_mint_program, cpi_mint_accounts, signer); token_2022::mint_to(cpi_mint_ctx, capped_redeem_amount as u64)?;...
Thanks to anybody willing to help me