在我的程序中,我尝试初始化PDA Token Accounts,以便程序可以存储指定薄荷糖的代币,如下所示:
#[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>
}
如果token2_vault
账户被注解,如上图所示,一切都很好。但是当我取消注解时(为不同的薄荷糖设置两个令牌账户),我得到了一个令人困惑的错误:* * 交易模拟失败:处理指令0时出错:自定义程序错误:0**
假设这是这里指定的NotRentExempt
("Lamport余额低于免租阈值")SPL错误,并且authority
帐户肯定有足够的lamport,完全不清楚为什么我可以初始化一个帐户,而不是两个帐户,出现这样奇怪的错误。
先谢了!
1条答案
按热度按时间pgvzfuti1#
我通过向帐户定义添加种子来解决这个问题,如下所示:
我猜在没有定义种子的情况下,这两个帐户有相同的地址,导致了错误。为什么会产生0x0
NotRentExempt
错误还不清楚。