批准和撤销指令
批准允许代理人代表账户所有者转移特定数量的代币。这使得程序化的代币转移成为可能,而无需授予完整的账户控制权。
撤销会移除当前代理人对账户的权限,将完整的控制权还给账户所有者。
在我们可以代理或撤销任何代币账户之前,我们需要已经完成以下操作:
- 初始化一个
Mint
账户。 - 初始化一个
Token
账户或Associated Token
账户,我们将对其进行控制
以下是 CPI 到 approve()
指令的样子:
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()
指令的样子:
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(),
},
),
)?;