Permanent Delegate Extension
Phần mở rộng PermanentDelegate
là một Mint account extension cho phép ủy nhiệm vĩnh viễn đối với tất cả token của mint có khả năng transfer hoặc burn bất kỳ token nào của mint đó, từ bất kỳ token account nào.
Khởi tạo Mint Account
Để khởi tạo extension PermanentDelegate
trên Mint
account, chúng ta chỉ cần sử dụng macro mà Anchor
đã tạo cho chúng ta.
Đây là cách tạo mint với Permanent Delegate extension:
#[derive(Accounts)]
pub struct CreateMint<'info> {
#[account(mut)]
pub signer: Signer<'info>,
#[account(
init,
payer = signer,
mint::decimals = 6,
mint::authority = signer.key(),
mint::token_program = token_program
extensions::permanent_delegate::delegate = signer,
)]
pub mint: InterfaceAccount<'info, Mint>,
pub system_program: Program<'info, System>,
pub token_program: Interface<'info, TokenInterface>,
}
Các hành động được phép
Không giống như ủy nhiệm thông thường có thể bị thu hồi, ủy nhiệm này là vĩnh viễn và bất biến.
Điều này có nghĩa là mọi hành động bình thường như transfer()
, burn()
, approve()
và freeze()
có thể được thực thi bất cứ khi nào cần thiết trực tiếp bởi authority mà không cần chữ ký của chủ sở hữu thực tế.
Điều này có nghĩa là chúng ta chỉ cần sử dụng instruction transferChecked()
, burnChecked()
, ... bình thường và truyền vào authority PermanetDelegate
trong field authority
.