Anchor
Token2022 з Anchor

Token2022 з Anchor

Розширення постійного делегата

Розширення PermanentDelegate є розширенням облікового запису Mint, яке дозволяє мати постійного делегата для всіх токенів цього мінту, який здатний переказувати або спалювати будь-який токен цього мінту з будь-якого токен-акаунту.

Initializing the Mint Account

Щоб ініціалізувати розширення PermanentDelegate на обліковому записі Mint, ми можемо просто використати макрос, який Anchor створив для нас.

Ось як створити мінт із розширенням постійного делегата:

rust
#[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.

Blueshift © 2025Commit: 6d01265