NOUVEAU : Helius acquiert Light Protocol
Comment récupérer les jetons nouvellement frappés avec Helius
Blog/Développement

Comment récupérer les jetons nouvellement frappés avec Helius

Ingénieur en expérience développeurAnam Ansari sur XAnam Ansari sur LinkedIn
6 min de lecture
Sommaire

    Introduction

    Les memecoins Solana font beaucoup parler d’eux ces derniers temps, avec $WIF qui a dépassé 3,5 milliards de dollars et Boden qui a atteint 300 millions de dollars. Popcat et Wen ont récemment franchi le seuil des 350 millions de dollars. Slerf a également dépassé toutes les plateformes d’échange basées sur Ethereum en volume de transactions dès son premier jour. Après l’essor de BONK en novembre dernier, Solana voit plus de nouveaux jetons être créés que jamais.

    Cet article explique comment les jetons sont créés sur Solana, ce que sont les jetons SPL, et comment surveiller les nouveaux jetons et récupérer leurs métadonnées avec Helius.

    Comment les jetons sont-ils créés sur Solana ?

    Solana prend en charge le SOL natif ainsi que d’autres jetons. La Solana Program Library (SPL) définit des normes communes pour les jetons fongibles et non fongibles (NFT) sur Solana. Contrairement à Ethereum, où différentes normes sont définies pour les différents types de jetons non fongibles (ERC-721) et fongibles (ERC-20), la Solana Program Library ne possède pas de norme spécialement conçue pour chaque type de jeton. 

    Token Program

    L’implémentation standard des jetons fongibles et non fongibles (NFT) sur Solana est le Token Program. Il fournit des fonctionnalités permettant notamment de créer de nouveaux types de jetons et de comptes, de transférer et de brûler des jetons, et bien plus encore. Le Token Program est complet et aucune nouvelle fonctionnalité n’est prévue. Des modifications peuvent toutefois être apportées pour corriger des bugs importants ou critiques.

    Cependant, le Token Program est limité : les développeurs doivent le forker pour ajouter de nouvelles fonctionnalités, ce qui rend les transactions plus complexes et risquées. Pour y remédier, Solana a lancé Token-2022, un ensemble de fonctionnalités et d’améliorations supplémentaires, notamment :

    1.  Extensions de mint : transferts confidentiels, frais de transfert, fermeture du mint, jetons portant intérêt, jetons non transférables, délégué permanent, hook de transfert, pointeur de métadonnées, métadonnées.
    2. Extensions de compte : mémo obligatoire pour les transferts entrants, propriété immuable, état de compte par défaut, protection CPI. 

    Pour en savoir plus sur Token-2022, consultez cet article.

    Le Token Program de Solana permet de créer des comptes de mint et des comptes de jetons. Les comptes de mint contiennent les informations globales sur un jeton, tandis que les comptes de jetons enregistrent la relation entre un portefeuille et un compte de mint. Vous pouvez créer des jetons à l’aide du code ou de spl-token-cli suivants. Par exemple, exécutez cette commande dans la ligne de commande pour créer un jeton fongible, à condition que spl-token-cli soit installé :

    Code
    spl-token create-token

    Token Metadata Program

    Les comptes de mint contiennent certains attributs de données, comme l’offre actuelle du jeton. Cependant, ils ne disposent pas de données standardisées telles que le nom et le symbole. Pour résoudre ce problème, Metaplex a lancé le Token Metadata Program. Ce programme permet d’associer des données supplémentaires aux jetons fongibles et non fongibles à l’aide de PDA (Program Derived Addresses) dérivées de l’adresse de mint.

    Le Token Metadata Program a été initialement créé pour simplifier la création de NFT sur Solana. Cependant, il fonctionne également avec les SFT, qui sont des jetons semi-fongibles. Les SFT combinent les caractéristiques des jetons fongibles et non fongibles. Ils se comportent initialement comme des jetons fongibles, ce qui signifie qu’ils peuvent être échangés contre des jetons identiques sans perte de valeur pour aucune des parties. Après leur utilisation, ils perdent leur valeur d’échange et acquièrent les attributs de jetons non fongibles de collection. Les SFT fonctionnent comme un type de compte unique auquel sont associées des métadonnées représentant des caractéristiques dans un jeu ou un environnement de métavers. Dans certains contextes, les SFT sont privilégiés par rapport aux NFT pour leur efficacité, leur rapport coût-efficacité, leur flexibilité et leur sécurité transactionnelle accrue.

    Le Token Metadata Program prend également en charge les NFT programmables (pNFT). Cette nouvelle norme d’actif permet aux créateurs de définir des règles personnalisées pour des opérations spécifiques et de déléguer des autorisations plus précises à des autorités tierces. Le compte de jeton d’un pNFT est toujours gelé dans le SPL Token Program, que le pNFT soit délégué ou non. Ainsi, personne ne peut contourner le Token Metadata Program en interagissant directement avec le SPL Token Program.

    Surveiller les nouveaux jetons 

    Pour surveiller les jetons nouvellement frappés, nous allons configurer un webhook. Les webhooks permettent d’écouter les événements on-chain et de déclencher des actions spécifiques lorsqu’ils se produisent. Nous allons configurer notre webhook pour écouter le type de transaction TOKEN_MINT du Token Metadata Program. Les sources actuellement prises en charge pour ce type de transaction sont les suivantes (les autres sources seront identifiées par « UNKNOWN ») : 

    Code
     "TOKEN_MINT": [   "CANDY_MACHINE_V1",   "ATADIA",   "SOLANA_PROGRAM_LIBRARY" ]

    Vous pouvez créer des webhooks avec le tableau de bord Helius, ou par programmation en utilisant la documentation de référence de l’API. Pour en créer un depuis le tableau de bord, accédez à la section Webhooks dans le panneau de gauche et cliquez sur New Webhook. Configurez ensuite le webhook en fournissant les informations suivantes :

    1. Réseau : Mainnet/Devnet
    2. Type de webhook : vous pouvez sélectionner Enhanced, Raw ou Discord. Si vous choisissez Discord, vous devez fournir l’URL du webhook. Votre notification sera alors mise en forme et envoyée directement par le bot. Vous pouvez consulter ici les étapes permettant d’obtenir l’URL du webhook d’un bot Discord. Si vous sélectionnez Raw, vous ne pourrez pas spécifier le type de transaction. 
    3. Type de transaction : sélectionnez TOKEN_MINT pour écouter les nouveaux jetons frappés*.* Vous trouverez ici les autres types de transactions pris en charge par un programme. 
    4. URL du webhook : ajoutez l’endpoint qui écoutera les notifications (par exemple, un bot Discord, un site web, etc.). 
    5. En-tête d’authentification : saisissez un en-tête d’authentification à transmettre avec les requêtes POST à votre webhook. Notez que cette étape est facultative.
    6. Adresse du compte : ajoutez ici l’adresse du Token Metadata Program : metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s. Dans d’autres cas, vous pouvez ajouter plusieurs adresses de compte si nécessaire. Si vous souhaitez recevoir les événements d’un utilisateur particulier impliqué dans la transaction, vous pouvez inclure son adresse.

    Une fois la configuration confirmée, votre webhook est prêt à l’emploi. Vous pouvez créer le frontend approprié à partir de votre URL de webhook. Ici, nous avons sélectionné Discord comme type de webhook et fourni l’URL de webhook d’un bot Discord. Nous n’avons donc pas besoin de programmer le bot Discord. Nous recevrons des notifications comme celle-ci : 

    Récupérer les métadonnées d’un jeton

    Vous pouvez utiliser l’ID du jeton (son adresse de mint) pour obtenir les métadonnées d’un jeton donné. Analysez la notification JSON envoyée par le webhook Enhanced (lorsque le type de webhook est défini sur Enhanced). L’adresse de mint se trouve dans le champ "mint" du premier objet du tableau transferTokens. Une fois l’ID du jeton obtenu, vous pouvez utiliser la méthode getAsset fournie par la DAS API pour récupérer des informations supplémentaires sur le jeton. 

    Par exemple, vous pouvez utiliser la méthode getAsset pour obtenir des informations sur Jito Staked SOL (JitoSOL) :

    Code
    const url = `https://mainnet.helius-rpc.com/?api-key=<api_key>`
    
    const getAsset = async () => {
      const response = await fetch(url, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          jsonrpc: '2.0',
          id: 'my-id',
          method: 'getAsset',
          params: {
            id: 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn',
            displayOptions: {
    	    showFungible: true //return details about a fungible token
    	}
          },
        }),
      });
      const { result } = await response.json();
      console.log("Asset: ", result);
    };
    getAsset();

    Vous trouverez dans notre documentation davantage d’exemples de DAS API, ainsi qu’un schéma complet des requêtes et réponses de cette méthode.

    Conclusion

    Dans cet article, nous avons appris comment les jetons sont créés sur Solana, ce que sont les jetons SPL, et comment surveiller les nouveaux jetons en configurant un webhook et en récupérant leurs métadonnées avec Helius. Si vous avez besoin d’aide ou d’assistance, n’hésitez pas à nous contacter sur Discord !

    N’oubliez pas de saisir votre adresse e-mail ci-dessous pour ne manquer aucune actualité de Solana. Prêt à aller plus loin ? Découvrez les derniers articles du blog Helius et poursuivez dès aujourd’hui votre parcours sur Solana.

    Ressources

    Abonnez-vous à Helius

    Suivez les dernières actualités du développement sur Solana et recevez une notification à chaque publication

    Image agrandie