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

8 byte discriminator did not match what was expected when initail PDA account

$
0
0

Get error (8 byte discriminator did not match what was expected)when executing test code. I have checked the Remaining account and the Deserializes account, and both of them pubkey is equal.

Code:

 for warrior_card_usage_ai in &ctx.remaining_accounts[0..warrior_cards_usage_len] {    if warrior_card_usage_ai.data_is_empty() {        msg!("creating warrior card usage account");        let rent_lamports = rent.minimum_balance(warrior_card_usage_data_len);        let cpi_accounts = CreateAccount {            from: ctx.accounts.payer.to_account_info(),            to: (*warrior_card_usage_ai).clone(),        };        let cpi_context = CpiContext::new(            ctx.accounts.system_program.to_account_info(),            cpi_accounts        );        // 定义 PDA 的种子数组        let collect_mint = attacker_cards[0].collection_mint;        msg!("collect_mint: {}", collect_mint);        // 使用 find_program_address 计算 PDA 和 bump        let seeds = &[b"warrior_cards_usage", attacker.as_ref(), collect_mint.as_ref()];        let (pda, bump) = Pubkey::find_program_address(seeds, ctx.program_id);        msg!("pda: {}, bump: {}", pda, bump);        let signer_seeds: &[&[u8]] = &[            b"warrior_cards_usage",            attacker.as_ref(),            collect_mint.as_ref(),&[bump],        ];        // cpi_context.with_signer(&[signer_seeds]);        msg!("Expected data length: {}", warrior_card_usage_data_len);        msg!("Minimum rent: {}", rent_lamports);        create_account(            cpi_context.with_signer(&[signer_seeds]),            rent_lamports,            u64::try_from(warrior_card_usage_data_len).unwrap(),            ctx.program_id        )?;    }    let mut warrior_cards_usage: Account<WarriorCardsUsage> =        Account::try_from_unchecked(warrior_card_usage_ai)?;    msg!("Warrior cards usage: {:?}", warrior_cards_usage.to_account_info().key());    msg!("Remaining account key: {}", warrior_card_usage_ai.key());    warrior_cards_usage.attacker = attacker;    warrior_cards_usage.battle_count = 99;    warrior_cards_usage.collection_mint = attacker_cards[0].collection_mint;    msg!("Warrior cards usage: {:?}", warrior_cards_usage);    warrior_cards_usages.push(warrior_cards_usage);}

Viewing all articles
Browse latest Browse all 7836

Trending Articles



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