【发布时间】:2022-07-31 14:18:06
【问题描述】:
我正在为 solana 使用血清锚定框架。我正在尝试使用#[account] 属性宏初始化新帐户。
每次我运行锚构建时,都会出现以下错误。
Error("the payer specified for an init constraint must be mutable.")
thread 'main' panicked at 'Code not parseable: Error("the payer specified for an init constraint must be mutable.")', lang/syn/src/idl/file.rs:360:58 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
下面是代码 sn-p,我正在这里尝试帐户初始化
#[derive(Accounts)]
#[instruction(pool_nonce: u8, vault_nonce: u8)]
pub struct InitializePool<'info> {
/// CHECK: This is not dangerous because we don't read or write from this account
authority: UncheckedAccount<'info>,
#[account(
mut,
// constraint = lp_token_pool_vault.mint == LP_TOKEN_MINT_PUBKEY.parse::<Pubkey>().unwrap(),
constraint = lp_token_pool_vault.owner == pool_signer.key(),
)]
lp_token_pool_vault: Box<Account<'info, TokenAccount>>,
#[account(
mut,
// constraint = lp_token_depositor.mint == LP_TOKEN_MINT_PUBKEY.parse::<Pubkey>().unwrap()
)]
lp_token_depositor: Box<Account<'info, TokenAccount>>,
lp_token_deposit_authority: Signer<'info>,
reward_mint: Box<Account<'info, Mint>>,
#[account(
constraint = reward_vault.mint == reward_mint.key(),
constraint = reward_vault.owner == pool_signer.key(),
constraint = reward_vault.close_authority == COption::None,
)]
reward_vault: Box<Account<'info, TokenAccount>>,
#[account(
seeds = [
pool.to_account_info().key.as_ref()
],
bump,
)]
/// CHECK: This is not dangerous because we don't read or write from this account
pool_signer: UncheckedAccount<'info>,
#[account(
zero,
)]
pool: Box<Account<'info, Pool>>,
#[account(
init,
payer = owner,
seeds = [
owner.key.as_ref(),
pool.to_account_info().key.as_ref()
],
bump,
space = 10240,
)]
vault: Box<Account<'info, Vault>>,
owner: Signer<'info>,
token_program: Program<'info, Token>,
system_program: Program<'info, System>,
}
【问题讨论】: