Розширення постійного делегата
Розширення PermanentDelegate є розширенням облікового запису Mint, яке дозволяє мати постійного делегата для всіх токенів цього мінту, який здатний переказувати або спалювати будь-який токен цього мінту з будь-якого токен-акаунту.
Initializing the Mint Account
Щоб ініціалізувати розширення PermanentDelegate на обліковому записі Mint, ми можемо просто використати макрос, який Anchor створив для нас.
Ось як створити мінт із розширенням постійного делегата:
#[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>,
}Permissioned Actions
На відміну від звичайних делегатів, які можна відкликати, ця делегована повноваження є постійною та незмінною.
Це означає, що кожну звичайну дію, як-от transfer(), burn(), approve() та freeze(), може виконувати безпосередньо повноважний орган, коли це потрібно, без необхідності підпису фактичного власника.
Це означає, що ми можемо просто використовувати звичайні інструкції transferChecked(), burnChecked(), ... і передавати повноваження PermanentDelegate у полі authority.