Cofre e Escrow
Cofres e escrows custodiam SOL ou tokens SPL sob autoridade PDA até que as regras do programa os liberem. Padrões corretos validam partes, usam bumps canônicos e aplicam checks-effects-interactions antes de CPI.
Busque em todas as páginas da documentação
Cofres e escrows custodiam SOL ou tokens SPL sob autoridade PDA até que as regras do programa os liberem. Padrões corretos validam partes, usam bumps canônicos e aplicam checks-effects-interactions antes de CPI.
// Hold: token CPI deposit to vault ATA owned by vault PDA
// Release: verify conditions -> invoke_signed transfer outQuando usar isso:
pub fn release(bump: u8, escrow_auth: &AccountInfo, source: &AccountInfo, dest: &AccountInfo, token_program: &AccountInfo, amount: u64) -> ProgramResult {
// 1. verify escrow state Open and expiry
// 2. mark Filled in account data BEFORE CPI
let ix = spl_token::instruction::transfer(token_program.key, source.key, dest.key, escrow_auth.key, &[], amount)?;
invoke_signed(&ix, &[source.clone(), dest.clone(), escrow_auth.clone(), token_program.clone()], &[&[b"escrow", &[bump]]])
}O que isso demonstra:
SOL: transferência do system + lamports PDA. SPL: conta de token + verificações de mint.
Use associated token addresses para usuários.
// Verify mint match source/dest token accounts.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Programa de escrow de terceiros | Battle-tested | Composabilidade |
| Multisig de carteira | Custódia humana | Automação |
| Locks nativos Lightning/SOL | Stack diferente | N/A |
PDA mantém lamports.
Suportada com estado.
Divida na mesma ix.
Retorne rent após vazio.
Adicione verificações de metadata.
Estude constraints.
Comprador/vendedor/admin conforme regras.
Sysvar Clock.
Crítico.
ID de programa correto.
Teste de fluxo completo.
Risco de protocolo separado.
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