
Apprenez à créer une application simple de suivi du gas en utilisant l'API gas MetaMask, Next.js et ShadcnUI.

Le terme « Gas » désigne une unité qui mesure la quantité d'effort de calcul nécessaire pour exécuter des opérations, comme effectuer des transactions ou exécuter des smart contracts. C'est comparable au carburant d'une voiture – indispensable pour que le réseau puisse traiter et valider les opérations. Chaque transaction sur Ethereum nécessite une quantité spécifique de gas, déterminée par sa complexité. Les utilisateurs définissent un prix du gas en Gwei (1 Gwei = 1 milliardième d'un Ether), représentant le montant d'Ether qu'ils sont prêts à payer par unité de gas.
Comprendre les prix du gas est essentiel dans les réseaux blockchain, car cela aide les utilisateurs à gérer le coût de leurs transactions. La connaissance des prix du gas actuels permet aux utilisateurs de choisir le moment le plus économique pour initier une transaction et d'en déterminer la vitesse. Être informé des prix du gas est également indispensable pour éviter les transactions échouées, planifier des budgets, comprendre la congestion du réseau et prendre des décisions d'investissement éclairées.
L'API Gas de MetaMask, disponible via Infura, est un outil spécialisé conçu pour fournir des informations en temps réel sur les prix du gas pour les réseaux compatibles avec l'Ethereum Virtual Machine (EVM). Elle fonctionne comme un oracle, offrant des données actualisées sur les coûts de calcul requis pour exécuter des opérations ou des transactions sur ces réseaux. L'API permet aux développeurs de créer des fonctionnalités avancées d'estimation du gas, pouvant générer des économies sur les opérations de transaction back-end ou améliorer l'interface utilisateur.
Dans ce tutoriel, nous allons apprendre à créer une application Gas Tracker en utilisant l'API Gas, Next.js et ShadcnUI. Cette application permettra aux utilisateurs de dapp d'accéder aux prix du gas recommandés en fonction de leurs priorités de transaction, contribuant ainsi à garantir l'inclusion efficace de ces transactions dans un bloc blockchain.
Une clé API Web3 et un secret de clé API valides.
Node.js et npm ou yarn installés.
Une bonne connaissance de Next.js et React.
Tout d'abord, assurez-vous que Node.js est installé sur votre machine. Une fois Node.js configuré, démarrez une nouvelle application Next.js en ouvrant votre terminal et en exécutant la commande suivante :
npx create-next-app@latestAprès l'exécution de la commande, plusieurs invites apparaîtront et un nouveau répertoire sera créé sous le nom de projet que vous avez spécifié – j'ai utilisé gastracker-app – établissant ainsi la structure de base de Next.js et installant les dépendances essentielles. Accédez maintenant au répertoire de votre projet :
Naviguez dans votre nouveau répertoire de projet et activez l'application Next.js en mode développement. Vous pouvez ensuite explorer votre application en accédant à http://localhost:3000 dans votre navigateur.
Pour notre application, nous utiliserons une bibliothèque de composants. Commençons par installer ShadcnUI :
npx shadcn-ui@latest initLors de l'installation, vous serez guidé pour configurer le fichier components.json avec les invites suivantes :
Cela étant fait, installons également le composant Card de Shadcn UI :
npx shadcn-ui@latest add cardDans ce tutoriel, nous nous concentrerons sur l'utilisation du composant Card de Shadcn UI. Pour en savoir plus sur ces composants, visitez le site web de Shadcn UI. Notre front end étant maintenant configuré, nous sommes prêts à commencer à travailler avec l'API Gas.
Dans le répertoire racine, créez un fichier nommé .env, dans lequel nous stockerons les identifiants suivants :
Assurez-vous d'obtenir l'API_KEY et l'API_KEY_SECRET depuis votre tableau de bord Infura. Il est essentiel de ne pas pousser la clé API vers GitHub. Dans le répertoire racine, vérifiez le fichier .gitignore pour confirmer que les lignes nécessaires y figurent.
Nous aurons également besoin des packages axios et dotenv :
Maintenant, créez un fichier nommé 'index.js' à la racine de notre gastracker-app et copiez-y le code suivant :
Dans une autre fenêtre de terminal, exécutez la commande suivante.
node index.jsVous devriez voir ce qui suit :
Si vous observez les données affichées dans le terminal, cela indique que nous recevons bien des réponses de l'API. L'étape suivante consiste à présenter ces données sur notre frontend. Vous pouvez maintenant supprimer le fichier index.js.
Pour définir des types personnalisés à utiliser dans tout le projet, créez un fichier nommé 'index.d.ts' dans le répertoire racine et ajoutez-y les lignes suivantes :
Ces déclarations d'interfaces TypeScript dans un fichier global définissent des structures pour les estimations de frais de gas et les réponses de l'API. Elles comprennent des détails tels que les suggestions de frais, les temps d'attente, la congestion du réseau et les tendances des frais pour différents niveaux de priorité de transaction sur un réseau blockchain.
Dans le dossier 'lib', créez un fichier nommé 'getData.ts' et ajoutez le code suivant :
Ces codes récupèrent les données de frais de gas depuis l'API Gas :
Configuration de l'authentification : Crée un Buffer à partir de l'INFURA_API_KEY et de l'INFURA_API_KEY_SECRET, définis comme variables d'environnement. Ce Buffer est ensuite converti en chaîne base64 (nommée 'Auth') pour l'authentification de base dans les requêtes API.
Spécification du Chain ID : Définit la variable chainId à 1, représentant généralement le mainnet Ethereum dans les contextes blockchain.
Fonction getData : Une fonction asynchrone conçue pour récupérer les données de frais de gas :
Elle utilise fetch pour effectuer une requête GET vers le point de terminaison de l'API Infura, récupérant les frais de gas suggérés pour le chainId spécifié.
Elle définit l'en-tête Authorization dans la requête en utilisant le token Auth créé précédemment.
En cas de succès, elle analyse la réponse en JSON et la retourne sous forme de GasFeesApiResponse, conformément à l'interface définie précédemment.
Elle consigne toutes les erreurs, telles que les problèmes réseau ou les erreurs serveur, dans la console.
Variabilité du Chain ID : Le chainId peut être ajusté en fonction du réseau pour lequel l'application est construite. L'API Gas sur Infura prend en charge la plupart des principaux réseaux EVM. Pour plus d'informations sur les réseaux pris en charge, consultez la documentation.
Nous voici maintenant à la partie la plus intéressante, où nous allons nous concentrer sur l'interface utilisateur pour afficher les données. Naviguons vers le dossier components et créons un composant nommé 'GasCard.tsx'.
Voici ce qui s'est passé :
Imports et récupération des données :
Le composant importe la fonction getData pour récupérer les données de frais de gas, ainsi que divers composants d'interface utilisateur tels que Card, CardContent, CardHeader et CardTitle, qui font partie de Shadcn UI installé précédemment.
À l'intérieur du composant GasCard, la fonction getData est invoquée pour récupérer les données de frais de gas.
Rendu des estimations de frais de gas :
Une fonction nommée renderGasFeeEstimateCard est définie, qui affiche une interface de carte pour une estimation de frais de gas spécifique (GasFeeEstimate) et un titre (title).
Cette fonction construit un composant Card affichant des détails tels que les frais de priorité maximaux, les frais maximaux par gas et les temps d'attente estimés.
Structure du composant :
La structure JSX du composant GasCard est décrite dans l'instruction return. Elle utilise une mise en page en grille pour afficher des cartes pour les estimations de frais de gas faibles, moyennes et élevées, affichées conditionnellement selon la disponibilité des données.
Une carte supplémentaire affiche plus d'informations telles que les frais de base estimés, la congestion du réseau, les plages de frais de priorité (récentes et historiques) et les tendances des frais de priorité et de base.
Il ne reste plus qu'à importer GasCard.tsx dans le fichier page.tsx. Après cela, toutes les données devraient être visibles sur notre frontend.
L'utilisation de l'API Gas sur Infura offre des avantages significatifs aux développeurs travaillant avec des réseaux compatibles EVM. Elle fournit des informations en temps réel sur le marché fluctuant du gas, permettant aux utilisateurs de prendre des décisions éclairées concernant leurs frais de transaction. Cela est particulièrement bénéfique pour optimiser à la fois la rapidité et la rentabilité des transactions.
Ce tutoriel explique comment démarrer avec l'API Gas et créer une application Gas Tracker simple. Vous pouvez trouver le code ici : GasAPI-Template sur GitHub.
Mais nous pouvons faire bien plus de choses intéressantes avec cela ; nous pouvons ajouter des moyens d'actualiser les données Gas à certains intervalles avec un compte à rebours, et nous pouvons également intégrer l'API Gas dans n'importe quelle application existante. Je vous recommande de consulter les ressources suivantes :
Documentation de l'API Gas : Documentation de l'API Gas Infura
EventSea : Une dapp Events full-stack qui utilise de manière créative l'API Gas : EventSea sur GitHub
Bonne construction ! 🚀
Traduit par IA. Peut contenir des erreurs. Veuillez toujours vérifier les informations.