Dans Remix, déployez un contrat ou exécutez une transaction.
Allez dans la liste des transactions (dans l'onglet Déployer & Exécuter
) et cliquez sur l'icône "bug" à côté de la transaction qui vous intéresse. Ceci lancera le débogueur.
Une fois que vous êtes dans le débogueur :
Navigation : Utilisez les boutons de commande pour naviguer dans chaque opération de votre transaction. Vous pouvez passer au-dessus, à l'intérieur ou à l'extérieur des fonctions et sauter à une étape particulière.
Panneau Détails : Ce panneau affiche les détails de l'opcode, l'étape d'exécution en cours et d'autres détails pertinents.
Solidity Locals : Affiche les variables locales de Solidity et leurs valeurs actuelles.
État : Affiche les changements d'état du contrat. C'est un excellent moyen d'identifier les changements inattendus qui peuvent entraîner une augmentation des frais d'essence.
Pile d'appels : Illustre la pile d'appels de la fonction en cours. Utile pour comprendre le contexte d'exécution actuel.
Changements de stockage : Met en évidence les modifications apportées au stockage au cours de l'exécution. Utile pour identifier les domaines potentiels d'optimisation du gaz.
Le débogueur ne sert pas seulement à corriger les bogues ; c'est aussi un excellent outil pour établir le profil de l'utilisation du gaz de votre contrat. Voici comment vous pouvez en tirer le meilleur parti :
Identifiez les étapes à forte consommation de gaz : Au fur et à mesure que vous avancez dans votre code, surveillez la consommation de gaz à chaque étape. Les étapes à forte teneur en gaz pourraient être des cibles d'optimisation.
Surveillez les actions de stockage : Les changements de stockage excessifs, en particulier ceux qui ne sont pas supprimés
, peuvent être des consommateurs de gaz.
Appels de fonctions : Les appels de fonctions externes, en particulier vers d'autres contrats, peuvent être coûteux. Assurez-vous qu'ils sont nécessaires.
Utilisons le Remix Debugger avec un contrat simple :
Solidity
pragma solidity ^0.8.9 ;
contract GasProfiler {
uint256 public count ;
function setCount(uint256 _count) public {
for (uint256 i = 0 ; i < _count ; i++) {
count += i;
}
}
}
Déployez et interagissez avec le contrat dans Remix.
Utilisez le débogueur sur la fonction setCount
et identifiez les opérations gourmandes en gaz. Ici, l'opération en boucle consommera plus de gaz au fur et à mesure que _count
augmente.
Comprendre et tirer le meilleur parti de Remix Debugger est une compétence qui vous aidera non seulement à diagnostiquer les problèmes, mais aussi à affiner votre contrat pour qu'il soit économe en gaz. En parcourant votre code, vous pouvez repérer des inefficacités qui pourraient ne pas être apparentes à un niveau plus élevé.
Dans Remix, déployez un contrat ou exécutez une transaction.
Allez dans la liste des transactions (dans l'onglet Déployer & Exécuter
) et cliquez sur l'icône "bug" à côté de la transaction qui vous intéresse. Ceci lancera le débogueur.
Une fois que vous êtes dans le débogueur :
Navigation : Utilisez les boutons de commande pour naviguer dans chaque opération de votre transaction. Vous pouvez passer au-dessus, à l'intérieur ou à l'extérieur des fonctions et sauter à une étape particulière.
Panneau Détails : Ce panneau affiche les détails de l'opcode, l'étape d'exécution en cours et d'autres détails pertinents.
Solidity Locals : Affiche les variables locales de Solidity et leurs valeurs actuelles.
État : Affiche les changements d'état du contrat. C'est un excellent moyen d'identifier les changements inattendus qui peuvent entraîner une augmentation des frais d'essence.
Pile d'appels : Illustre la pile d'appels de la fonction en cours. Utile pour comprendre le contexte d'exécution actuel.
Changements de stockage : Met en évidence les modifications apportées au stockage au cours de l'exécution. Utile pour identifier les domaines potentiels d'optimisation du gaz.
Le débogueur ne sert pas seulement à corriger les bogues ; c'est aussi un excellent outil pour établir le profil de l'utilisation du gaz de votre contrat. Voici comment vous pouvez en tirer le meilleur parti :
Identifiez les étapes à forte consommation de gaz : Au fur et à mesure que vous avancez dans votre code, surveillez la consommation de gaz à chaque étape. Les étapes à forte teneur en gaz pourraient être des cibles d'optimisation.
Surveillez les actions de stockage : Les changements de stockage excessifs, en particulier ceux qui ne sont pas supprimés
, peuvent être des consommateurs de gaz.
Appels de fonctions : Les appels de fonctions externes, en particulier vers d'autres contrats, peuvent être coûteux. Assurez-vous qu'ils sont nécessaires.
Utilisons le Remix Debugger avec un contrat simple :
Solidity
pragma solidity ^0.8.9 ;
contract GasProfiler {
uint256 public count ;
function setCount(uint256 _count) public {
for (uint256 i = 0 ; i < _count ; i++) {
count += i;
}
}
}
Déployez et interagissez avec le contrat dans Remix.
Utilisez le débogueur sur la fonction setCount
et identifiez les opérations gourmandes en gaz. Ici, l'opération en boucle consommera plus de gaz au fur et à mesure que _count
augmente.
Comprendre et tirer le meilleur parti de Remix Debugger est une compétence qui vous aidera non seulement à diagnostiquer les problèmes, mais aussi à affiner votre contrat pour qu'il soit économe en gaz. En parcourant votre code, vous pouvez repérer des inefficacités qui pourraient ne pas être apparentes à un niveau plus élevé.