-1

In my program I'm trying to init PDA Token Accounts so that my program can store tokens of specified mints like this:

#[derive(Accounts)]
pub struct StartAuction<'info> {
    #[account(init, seeds=[&state.positions_count.to_ne_bytes()], bump, payer = authority, space = 5000)]
    pub position: Account<'info, Position>,

    #[account(mut, seeds=[b"state"], bump)]
    pub state: Account<'info, State>,

    pub token: Account<'info, Mint>,
    pub token2: Account<'info, Mint>,

    #[account(init, payer = authority, token::mint = token, token::authority = position)]
    pub vault: Account<'info, TokenAccount>,

    // #[account(init, payer = authority, token::mint = token2, token::authority = position)]
    // pub token2_vault: Account<'info, TokenAccount>,

    #[account(mut)]
    pub authority: Signer<'info>,

    pub token_program: Program<'info, Token>,
    pub rent: Sysvar<'info, Rent>,
    pub system_program: Program<'info, System>
}

If the token2_vault account is commented like shown above everything is good. But when I uncomment it (to have two Token Accounts for different mints), I'm getting a confusing error: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x0.

Assuming that this is the NotRentExempt ("Lamport balance below rent-exempt threshold") SPL Error as specified here and given that the authority account definitely has enough lamports, it's completely unclear why I can init one account but not two, with such strange error.

Thanks in advance!

0

1 Answer 1

0

I solved it by adding seeds to the accounts definitions, like this:

#[derive(Accounts)]
pub struct StartAuction<'info> {
    #[account(init, seeds=[b"vault1".as_ref()], payer = authority, token::mint = token, token::authority = position)]
    pub vault: Account<'info, TokenAccount>,

    #[account(init, seeds=[b"vault2".as_ref()], payer = authority, token::mint = token2, token::authority = position)]
    pub token2_vault: Account<'info, TokenAccount>
}

I guess without defining seeds those two accounts had the same address which caused the error. Why this generates the 0x0 NotRentExempt error is still not clear.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.