Instruction Ordering & Dependencies
Clientes compõem múltiplas instruções Anchor em uma transação. A ordem importa quando instruções posteriores dependem de contas criadas ou mutadas por instruções anteriores.
Busque em todas as páginas da documentação
Clientes compõem múltiplas instruções Anchor em uma transação. A ordem importa quando instruções posteriores dependem de contas criadas ou mutadas por instruções anteriores.
1. create_user (init PDA)
2. create_ata (init token account)
3. deposit (transfer tokens)Quando usar: Você projeta fluxos de cliente ou documenta etapas de integração.
// Client sends ordered instructions in one transaction
const tx = await program.methods
.createUser()
.accounts({ /* ... */ })
.preInstructions([/* compute budget if needed */])
.rpc();
// Or batch:
// tx = new Transaction().add(ix1, ix2, ix3);// Program: deposit assumes user PDA already initialized
#[account(
seeds = [b"user", owner.key().as_ref()],
bump = user.bump,
constraint = user.initialized @ UserError::NotInitialized,
)]
pub user: Account<'info, UserState>,O que isso demonstra:
Use erros explícitos quando pré-requisitos estiverem ausentes em vez de panics.
NotInitialized.| Alternativa | Use quando | Não use quando |
|---|---|---|
| Uma instrução faz tudo | Cliente mais simples | CU maior por chamada |
| init_if_needed | Menos ix no cliente | Segurança mais fraca se mal usado |
| Txs versionadas com ALTs | Muitas contas | Txs legacy simples |
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 ordenação.
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: 19 de jul. de 2026