Aller directement au contenu principal

Que sont les extensions de jetons Solana et comment s'y mettre ?

Mis à jour le
Aug 07, 2026

4 min de lecture

Présentation générale

Solana a lancé une extension du programme de jetons SPL natifs, baptisée « Token-2022 ». Token-2022 est une nouvelle norme qui étend le programme de jetons SPL et ajoute des fonctionnalités supplémentaires grâce aux « Token Extensions ». Le programme Token-2022 est conçu pour offrir une norme de jetons plus flexible et évolutive, permettant aux développeurs de mettre en place une tokenomique plus complexe et de bénéficier d'un meilleur contrôle.

Que sont les extensions de jetons ?

Les « Token Extensions » (également appelées « Token-2022 ») constituent un programme avancé de jetons sur la Solana , qui étend les capacités du programme de jetons existant. Elles sont conçues pour offrir aux développeurs une flexibilité accrue et des fonctionnalités supplémentaires sans compromettre la sécurité des jetons actuels.

Ce programme intègre toutes les fonctionnalités de la version précédente (il reste compatible avec les instructions Token et les structures de comptes d'origine) tout en proposant de nouvelles instructions et fonctionnalités. Ces extensions introduisent de nouveaux champs dans les « mints » et les comptes.

Les extensions de Mint comprennent actuellement :

FonctionnalitéDescription
Frais de transfertFrais (ou taxes) liés au transfert de jetons.
Fermeture de la MonnaiePermet la suppression des comptes Mint inactifs.
Jetons rémunérateursDes jetons qui génèrent des intérêts au fil du temps.
Jetons non transférablesUne fois émis, les jetons ne peuvent plus être transférés (on parle alors de « jetons liés à l'âme »).
Délégués permanentsCette entité dispose de droits de délégation illimités sur tous les comptes de cette plateforme de création de jetons, ce qui signifie qu'elle peut détruire ou transférer n'importe quel nombre de jetons.
Crochet de transfertUn programme devant interagir avec une instruction relative à un jeton (par exemple, le recouvrement de redevances)
Pointeur de métadonnéesUn pointeur vers un compte de métadonnées contenant des informations sur l'atelier monétaire.
MétadonnéesEnregistre des informations sur l'hôtel de monnaie, telles que son nom, son symbole et son logo (ou d'autres champs personnalisés).
(pas encore disponible) Transferts confidentielsPermet le transfert de jetons dont les montants sont chiffrés.

Les extensions de compte comprennent actuellement :

FonctionnalitéDescription
Note à joindre pour les virements entrantsTous les virements entrants doivent être accompagnés d'une note (comme pour un compte bancaire).
ImmutableUne fois définie, la propriété d'un compte ne peut plus être modifiée.
État par défaut du compteConditions prédéfinies applicables au compte.
CPI GuardInterdit certaines actions lors des appels entre programmes

Il est important de noter que le programme « Associated Token » reste inchangé, ce qui signifie qu'il peut être utilisé aussi bien avec le programme « Token » d'origine qu'avec le programme « Token-2022 ». Toutefois, pour utiliser les méthodes, programmes et instructions existants, vous devrez transmettre le Token-2022 identifiant du programme en tant que programId paramètre. Prenons par exemple le getAssociatedTokenAddressSync tiré de la solana bibliothèque :

/**
* Get the address of the associated token account for a given mint and owner
*
* @param mint Token mint account
* @param owner Owner of the new account
* @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)
* @param programId SPL Token program account
* @param associatedTokenProgramId SPL Associated Token program account
*
* @return Address of the associated token account
*/
export function getAssociatedTokenAddressSync(
mint: PublicKey,
owner: PublicKey,
allowOwnerOffCurve = false,
programId = TOKEN_PROGRAM_ID,
associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID
): PublicKey {
if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();

const [address] = PublicKey.findProgramAddressSync(
[owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],
associatedTokenProgramId
);

return address;
}

Comme vous pouvez le voir ci-dessus, le getAssociatedTokenAddressSync La fonction prend en paramètre un programId paramètre dont la valeur par défaut est l'identifiant du programme Token d'origine (ce qui est courant pour de nombreuses méthodes de jetons SPL). Pour utiliser le programme Token-2022, vous devez lui transmettre l'identifiant du programme Token-2022 en tant que programId paramètre. L'exemple ci-dessous illustre le calcul des adresses ATA pour le programme Token d'origine et le programme Token-2022 :

import { TOKEN_2022_PROGRAM_ID, getAssociatedTokenAddressSync } from "@solana/spl-token";
// ...
const mint: PublicKey = new PublicKey(SOME_TOKEN_MINT); // a mint of a token created with the original standard
const mint2022: PublicKey = new PublicKey(SOME_TOKEN_MINT_2022); // a mint of a token created with the Token-2022 standard
const ataOld = getAssociatedTokenAddressSync(mint, owner, false);
const ata2022 = getAssociatedTokenAddressSync(mint2022, owner, false, TOKEN_2022_PROGRAM_ID); // 👈 pass in the Token-2022 program ID

Notez que pour mint2022, nous avons dû passer par le TOKEN_2022_PROGRAM_ID (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb) en tant que programId paramètre.

Le programme 2022 fait encore l'objet d'un audit, mais il est accessible à des fins de test et de développement.

Comment se lancer avec les extensions de jetons

Consultez nos guides pour découvrir comment vous lancer dans le programme Token-2022 :