Anchor
SPL Token avec Anchor

SPL Token avec Anchor

Instructions Approve et Revoke

Approve accorde à un délégué le pouvoir de transférer un montant spécifique de jetons au nom du propriétaire du compte. Cela permet d'effectuer des transferts de jetons de manière programmatique sans donner le contrôle total du compte.

Nous fixons un montant "approuvé". Le délégué ne peut transférer que dans la limite de ce montant

Revoke supprime le pouvoir du délégué actuel sur le compte, redonnant ainsi le contrôle total au propriétaire du compte.

Annule immédiatement toute délégation existante. Seul le propriétaire du compte peut révoquer la délégation (et non le délégué lui-même)

Avant de pouvoir déléguer ou révoquer un compte de jetons, nous devons déjà avoir :

  • Initialisé un compte de Mint
  • Initialisé un compte de Token ou Associated Token que nous allons prendre le contrôle

Le nombre de jetons que nous déléguons est "normalisé" au niveau des décimales. Cela signifie que si nous voulons déléguer 1 jeton comportant 6 décimales, nous devrons en réalité saisir 1_000_000 comme montant

Voici à quoi ressemble le CPI à l'instruction approve() :

rust
approve(
    CpiContext::new(
        ctx.accounts.token_program.to_account_info(),
        Approve {
            to: ctx.accounts.token_account.to_account_info(),
            delegate: ctx.accounts.delegate.to_account_info(),
            authority: ctx.accounts.authority.to_account_info(),
        },
    ),
    &1_000_000,
)?;

Et voici à quoi ressemble le CPI à l'instruction revoke() :

rust
revoke(
    CpiContext::new(
        ctx.accounts.token_program.to_account_info(),
        Revoke {
            pub source: ctx.accounts.token_account.to_account_info(),
            authority: ctx.accounts.authority.to_account_info(),
        },
    ),
)?;
Blueshift © 2025Commit: 6d01265