Розширення постійного делегата
Розширення 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()
, ... і передавати повноваження PermanetDelegate
у полі authority
.