Anchor
SPL Token với Anchor

SPL Token với Anchor

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.

Chúng ta đặt một số lượng "được phê duyệt", và người được ủy quyền chỉ có thể chuyển tối đa số lượng đó

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.

Ngay lập tức hủy bỏ bất kỳ ủy nhiệm hiện có nào và chỉ chủ sở hữu account mới có thể revoke ủy nhiệm (không phải bản thân đối tượng được ủy nhiệm)

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 account Associated Token đã được khởi tạo nơi chúng ta sẽ kiểm soát

Số lượng token chúng ta đúc được "chuẩn hóa" với decimal. Điều này có nghĩa là nếu chúng ta muốn đúc 1 token có decimal là 6, chúng ta sẽ cần thực sự đặt 1_000_000 làm amount

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(),
        },
    ),
)?;
Nội dung
Xem mã nguồn
Blueshift © 2025Commit: fd080b2