CPI Cross Program
Llama a otros programas con CPI. Los resultados aparecen en la misma sección: comentarios // en la misma línea cuando son cortos, bloques // multilínea debajo de la muestra cuando no lo son.
Busca en todas las páginas de la documentación
Llama a otros programas con CPI. Los resultados aparecen en la misma sección: comentarios // en la misma línea cuando son cortos, bloques // multilínea debajo de la muestra cuando no lo son.
CPI sin firmante PDA.
// invoke(&ix, &[from.clone(), to.clone(), system_program.clone()])?CPI donde un PDA debe firmar.
// invoke_signed(&ix, accounts, signer_seeds)?Pasa slices de AccountInfo que coincidan con el orden de las metadatos de la instrucción.
// accounts: &[AccountInfo]CPI no puede escalar privilegios más allá del llamador.
// no se puede marcar como escribible si la ix original carecía de escrituraEl tiempo de ejecución limita la profundidad de las llamadas CPI.
// mantén los gráficos de CPI poco profundosset_return_data / get_return_data para resultados de CPI.
// sol_set_return_data(bytes)Transfiere lamports a través del programa del sistema.
// system_instruction::transfer(&from, &to, lamports)SPL token transfer CPI.
// spl_token::instruction::transfer(...)AccountInfo se clona de forma económica (referencia a estado compartido).
// account_info.clone()Cuentas adicionales para objetivos CPI flexibles.
// ctx.remaining_accountsVerifica el ID del programa llamado antes de CPI.
// require_keys_eq!(token_program.key(), spl_token::id())El llamado puede hacer CPI adicionalmente hasta el límite de profundidad.
// diseña para seguridad contra la reentradaLos errores de CPI se propagan como ProgramError.
// map_err a tu enum de errorEl PDA debe ser escribible en las metadatos para mutar.
// AccountMeta::new(pda, false)Los slices de semillas deben vivir para la llamada invoke_signed.
// let seeds: &[&[u8]] = &[...]Versiones de Stack: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, Rust 1.91.1, y @solana/kit 7.0.0.
Revisado por Chris St. John·Última actualización: 18 jul 2026