Інструкції затвердження та скасування
Затвердження (Approve) надає делегату право переказувати певну кількість токенів від імені власника рахунку. Це дозволяє програмні перекази токенів без надання повного контролю над рахунком.
Скасування (Revoke) видаляє поточні повноваження делегата над рахунком, повертаючи повний контроль власнику рахунку.
Перш ніж ми зможемо делегувати або скасувати будь-який токен-рахунок, нам потрібно вже мати:
- Ініціалізований рахунок
Mint
. - Ініціалізований рахунок
Token
або рахунокAssociated Token
, над яким ми збираємося взяти контроль
Ось як виглядає CPI до інструкції approve()
:
rust
approve(
CpiContext::new(
ctx.accounts.token_program.to_account_info(),
Approve {
to: ctx.accounts.token_account.to_account_info(),
delegate: ctx.accounts.delegate.to_account_info(),
authority: ctx.accounts.authority.to_account_info(),
},
),
&1_000_000,
)?;
А ось як виглядає CPI до інструкції revoke()
:
rust
revoke(
CpiContext::new(
ctx.accounts.token_program.to_account_info(),
Revoke {
pub source: ctx.accounts.token_account.to_account_info(),
authority: ctx.accounts.authority.to_account_info(),
},
),
)?;