Instruction Arguments
Argumentos após Context<T> são serializados com Borsh nos dados da instrução. Use #[instruction(...)] na struct de contas para referenciar args em constraints.
Busque em todas as páginas da documentação
Argumentos após Context<T> são serializados com Borsh nos dados da instrução. Use #[instruction(...)] na struct de contas para referenciar args em constraints.
#[derive(Accounts)]
#[instruction(amount: u64, recipient: Pubkey)]
pub struct Transfer<'info> { /* use amount in constraint */ }
pub fn transfer(ctx: Context<Transfer>, amount: u64, recipient: Pubkey) -> Result<()> {
require!(amount > 0, MyError::InvalidAmount);
Ok(())
}Quando usar: Clientes passam parâmetros numéricos ou pubkeys além da lista de contas.
#[derive(Accounts)]
#[instruction(id: u64)]
pub struct CreatePool<'info> {
#[account(
init,
payer = payer,
space = 8 + Pool::INIT_SPACE,
seeds = [b"pool", id.to_le_bytes().as_ref()],
bump,
)]
pub pool: Account<'info, Pool>,
#[account(mut)]
pub payer: Signer<'info>,
pub system_program: Program<'info, System>,
}
pub fn create_pool(ctx: Context<CreatePool>, id: u64, fee_bps: u16) -> Result<()> {
require!(fee_bps <= 10_000, PoolError::InvalidFee);
ctx.accounts.pool.fee_bps = fee_bps;
Ok(())
}O que isso demonstra:
#[instruction] expõe args para constraintsrequire! cedoO Anchor antepõe um discriminator de instrução de 8 bytes, depois codifica args com Borsh na ordem dos parâmetros do handler.
checked_add/checked_mul.| Alternativa | Use quando | Não use quando |
|---|---|---|
| API só com contas | Quando toda entrada é estado on-chain | Escalares fornecidos pelo cliente |
| Dados de instrução manualmente (nativo) | Layouts não-Borsh | Fluxos de IDL do Anchor |
| Prefixo de byte de versão em layout customizado | Migração de layout de args | Programas Anchor greenfield |
0.32.1 em toda esta seção.
Não. Use constraints de seeds e assinatura em CPI.
No campo da struct de conta, definido na inicialização.
Use @solana/kit 7.0.0 com os mesmos bytes de seed.
O endereço declare_id do seu programa Anchor.
Não no array de seeds; bump é parâmetro separado em find_program_address.
Compare chaves logadas; verifique seeds e program id no client-side.
Sim quando mantêm dados; financie com payer no init.
Sim, com as mesmas signer seeds em cada CPI.
Veja os links em Relacionados para tópicos mais profundos sobre args.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026