Die Permanent Delegate Erweiterung
Die PermanentDelegate Erweiterung ist eine Mint-Konto-Erweiterung, die einen permanenten Delegierten für alle Token der Mint ermöglicht, der in der Lage ist, jeden Token dieser Mint von jedem Token-Konto zu übertragen oder zu verbrennen.
Initialisierung des Mint-Kontos
Um die PermanentDelegate Erweiterung auf einem Mint Konto zu initialisieren, können wir einfach das Makro verwenden, das Anchor für uns erstellt hat.
Hier ist, wie man eine Mint mit der Permanent Delegate Erweiterung erstellt:
#[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>,
}Berechtigte Aktionen
Im Gegensatz zu regulären Delegierten, die widerrufen werden können, ist diese Delegiertenautorität permanent und unveränderlich.
Das bedeutet, dass jede normale Aktion wie transfer(), burn(), approve() und freeze() jederzeit direkt von der Autorität ausgeführt werden kann, ohne dass die Signatur des eigentlichen Besitzers erforderlich ist.
Das bedeutet, dass wir einfach die normalen transferChecked(), burnChecked(), ... Anweisungen verwenden und die PermanentDelegate Autorität im authority Feld übergeben können.