Instruction Approve và Revoke
Approve cung cấp ủy quyền để chuyển một số lượng token cụ thể thay mặt cho chủ sở hữu account. Điều này cho phép chuyển token mà không cần cấp toàn quyền kiểm soát account.
Revoke loại bỏ quyền của đối tượng được ủy quyền hiện tại đối với account, trả lại toàn quyền kiểm soát cho chủ sở hữu account.
Trước khi chúng ta có thể delegate hoặc revoke bất kỳ token account nào, chúng ta sẽ cần phải có:
- Account
Mint
đã được khởi tạo. - Account
Token
hoặc accountAssociated Token
đã được khởi tạo nơi chúng ta sẽ kiểm soát
Cách gọi CPI đến instruction approve()
trông như thế này:
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,
)?;
Và đây là cách gọi CPI đến instruction 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(),
},
),
)?;