You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solana程序初始化双PDA Token Account触发0x0自定义程序错误求助

问题

我在Solana程序中尝试初始化PDA Token Account,用于存储指定Mint的代币,代码如下:

#[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处于注释状态时,程序运行正常;但取消注释以创建两个不同Mint的Token Account时,出现错误:Transaction simulation failed: Error processing Instruction 0: custom program error: 0x0。

我推测这是SPL的NotRentExempt错误(即“Lamport余额低于免租金阈值”),且确认authority账户拥有足够lamports,但无法理解为何单账户正常、双账户触发该错误,恳请协助排查。

排查与解决方案

  • 检查state账户的免租状态
    错误码0x0对应SPL Token的NotRentExempt,但触发对象不一定是authority或新创建的TokenAccount。你的state账户标记为mut,如果指令逻辑中误操作减少了它的lamports,可能导致其自身不再满足免租条件。单账户交易时总开销低,未影响state余额;双账户时交易整体消耗变化,间接触发了state的余额问题。

  • 精确核算总lamports需求
    SPL TokenAccount固定占用165字节,免租所需lamports可通过rent.minimum_balance(165)计算。创建两个TokenAccount的总费用为2倍该值,加上position账户5000字节的免租费用,再加上交易基础优先级费用。即便你认为authority余额足够,也建议精确计算总需求——有时前端估算的余额会忽略隐性开销,导致双账户时总支出超出预期。

  • 定位具体触发错误的账户
    启动本地测试节点时添加--log参数,执行交易后查看完整日志,日志会明确指出是哪个账户因lamports不足触发NotRentExempt,这是最直接的排查方式。比如可能是token2_vault的初始化逻辑中,payer的lamports转移出现异常,或是position账户空间设置过大导致总费用超标。

  • 检查指令逻辑中的隐性lamport转移
    查看StartAuction的处理函数,确认是否有代码在初始化账户之外,额外转移了authority的lamports到其他账户。单账户时总支出在余额范围内,双账户时叠加额外转移费用后,刚好超出余额上限。

内容的提问来源于stack exchange,提问作者zdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:10:14