Quantcast
Channel: Recent Questions - Solana Stack Exchange
Viewing all articles
Browse latest Browse all 7939

Token 2022 rust anchor ( Instruction 0: custom program error: 0x4 )

$
0
0

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


Viewing all articles
Browse latest Browse all 7939

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>