Manipuler des jetons sur Solana avec Rust et Anchor

11 juin 2026

Manipuler des jetons sur Solana avec Rust et Anchor

Récemment, j’ai écrit un tutoriel sur ce blog expliquant comment créer un nouveau jeton sur la blockchain Solana en utilisant la Solana Program Library (SPL), qui est la méthode officielle pour cela. Dans le tutoriel d’aujourd’hui, je veux montrer comment vous utilisez des jetons existants dans la création de protocoles DeFi au sein de cet écosystème, en utilisant la programmation en Rust avec le cadre Anchor.

Pour pouvoir tirer le meilleur parti de ce tutoriel et le comprendre, il est nécessaire que vous maîtrisiez déjà les bases de la programmation DeFi sur Solana, ainsi que les fondements du fonctionnement des jetons sur ce même réseau.

Allons-y !

#1 – Structure générale du protocole

En prenant comme base le tutoriel précédent sur la programmation DeFi et en l’adaptant pour qu’il utilise un spl-token au lieu de SOL, nous pouvons démarrer le développement en conservant certaines structures de base qui nous servent également dans cette nouvelle configuration. Pour une explication détaillée de celles-ci, reportez-vous au tutoriel précédent.



#[account]
pub struct Vault {
    pub owner: Pubkey,
    pub balance: u64,
}

#[error_code]
pub enum VaultError {
    #[msg("Amount must be greater than zero")]
    InvalidAmount,

    #[msg("Insufficient balance")]
    InsufficientBalance,
}

#[event]
pub struct DepositEvent {
    pub user: Pubkey,
    pub amount: u64,
    pub new_balance: u64,
}

#[event]
pub struct WithdrawEvent {
    pub user: Pubkey,
    pub amount: u64,
    pub new_balance: u64,
}

Mais pour qu’elle soit disponible, vous devez ouvrir le Cargo.toml le plus proche (qui se trouve dans le dossier du programme) et ajuster les paramètres ci-dessous, les autres configurations devant rester inchangées :

E dans le Cargo.toml plus loin, qui se trouve à la racine du projet, j’ai dû effectuer ce réglage :

En ce qui concerne les tests unitaires, nous devons installer la bibliothèque @solana/spl-token via NPM.

Et ensuite on l’importe et on effectue l’assertion dans le module de tests.

Déjà, dans les variables globales des tests, nous aurons certaines bien connues et d’autres spécifiques à ce lot de tests.

A saber :

Certaines de ces variables, ainsi que d’autres préparatifs, nous les ferons dans la fonction before, qui s’exécutera avant le premier test.

Nous commençons le before en calculant l’adresse PDA du vault Token Account et en la stockant dans la variable correspondante.

Ensuite, nous créons un nouveau mint Token SPL-Token pour les tests, afin de simuler une devise réelle. createMint attend la connexion à la blockchain, le portefeuille qui paiera le loyer, la pubkey qui sera l’autorité d’émission de la nouvelle monnaie, la valeur de freeze (null), le nombre de décimales, mais deux paramètres optionnels et, enfin, l’identifiant du programme à utiliser, ici nous travaillons avec la norme la plus récente, spl-token-2022.

Par la suite, nous créons l’ATA pour l’utilisateur de tests avec la fonction createAssociatedTokenAccount, qui attend la connexion, le payeur du loyer, le token mint, l’utilisateur propriétaire de ce compte et, en dernier lieu, l’identifiant du programme à utiliser.

Enfin, nous utilisons getAssociatedTokenAddress pour calculer l’ATA de notre utilisateur des tests et, avec cette information, nous minterons quelques jetons pour qu’il ait un solde dans les tests (10 jetons avec décimales 9).

Avec cela, nous avons effectué les préparatifs initiaux.

#2 – Dépôt de SPL-Token

Pour pouvoir effectuer le dépôt d’un spl-token, nous devons d’abord créer le contexte pour celui-ci, comme ci-dessous.

Fabien Delpont

Auteur

Fabien Delpont

Fabien Delpont, développeur et créateur du site Python Doctor.



Apprendre programmation cours python 3
Django internet web - Documentation débutant et expert
Version anglaise