Урок 5

Finale de l'optimisation des contrats intelligents - Conseils et astuces avancés

Dans nos leçons précédentes, nous avons couvert les concepts fondamentaux et les outils dont vous avez besoin pour optimiser le gaz sur les contrats intelligents Ethereum, en particulier en utilisant l'IDE Remix. Pour conclure ce cours, nous allons nous pencher sur des techniques avancées et des bonnes pratiques. Cette dernière leçon combinera les connaissances que nous avons accumulées, afin que vous puissiez repartir avec une bonne compréhension de l'optimisation du gaz dans les contrats intelligents Ethereum.

Refonte et réduction de la complexité du code

L'un des moyens les plus simples d'économiser du gaz est de simplifier votre code. Moins il y a de code à exécuter, moins il y a de gaz consommé.

Exemple de pratique

Considérez la fonction suivante :

Solidity
pragma solidity ^0.8.9 ;

contract OptimizationExample {
 address[] public admins ;

 function isUserAdmin(address user) public view returns (bool) {
 for (uint i = 0 ; i < admins.length ; i++) {
            if (admins[i] == user) return true;
        }
        return false ;
 }
}

La fonction ci-dessus utilise une boucle, qui devient de plus en plus coûteuse au fur et à mesure que l'on ajoute des administrateurs. Une structure plus économe en gaz utiliserait une cartographie :

Solidity
contrat OptimizationExampleOptimized {
 mapping(address => bool) public admins ;

 function isUserAdmin(address user) public view returns (bool) {
        return admins[user];
    }
}

Réutilisation des données

Lorsque vous travaillez avec Ethereum, n'oubliez pas que vous payez pour chaque bit de stockage. Si vous stockez les mêmes données à plusieurs endroits, réfléchissez à la manière dont vous pourriez les stocker une fois et les référencer ailleurs.

Utiliser les bibliothèques

Dans Solidity, les bibliothèques sont des morceaux de code réutilisables. Ils peuvent vous aider à écrire un code modulaire et, comme ils ne sont déployés qu'une seule fois et liés à d'autres contrats, ils peuvent permettre d'économiser du gaz à long terme.

Solidity
bibliothèque SafeMath {
 function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... autres fonctions mathématiques
}

contrat UsingSafeMath {
 using SafeMath for uint ;

 uint public value ;

 function increment(uint _value) public {
        value = value.add(_value);
    }
}

Supprimez le stockage inutile

Le mot-clé delete dans Solidity vous permet d'annuler des variables, ce qui permet de restituer une partie du gaz. Si vous n'avez plus besoin d'un élément de stockage particulier, supprimez-le pour demander ce remboursement.

Considérez les journaux d'événements

Si le stockage des données sur la blockchain peut être coûteux, l'enregistrement des événements est comparativement moins cher. Si vous avez des données qui n'ont pas besoin d'être lues dans le contrat mais qui doivent être vérifiables, envisagez d'utiliser les journaux d'événements.

Évitez les opérations coûteuses

Certaines opérations sont plus gourmandes en gaz que d'autres. Par exemple :

  • Les appels de fonctions externes sont plus coûteux que les appels de fonctions internes.
  • L'interaction avec le stockage est plus coûteuse que l'interaction avec la mémoire.
  • Les tableaux dynamiques peuvent parfois coûter plus cher en gaz que les tableaux de taille fixe.

Conclusion

L'optimisation des contrats intelligents pour le gaz est à la fois un art et une science. Les approches abordées dans ce cours, lorsqu'elles sont combinées, ont le potentiel de réduire considérablement les coûts de gaz de vos contrats. N'oubliez pas que l'écosystème Ethereum et ses outils, y compris Remix, sont en constante évolution. Tenez vos contrats à jour, testez-les et améliorez-les régulièrement pour les optimiser. La communauté Ethereum est vaste et utile, n'hésitez donc jamais à demander des conseils ou des bonnes pratiques. Amusez-vous bien à coder !

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 5

Finale de l'optimisation des contrats intelligents - Conseils et astuces avancés

Dans nos leçons précédentes, nous avons couvert les concepts fondamentaux et les outils dont vous avez besoin pour optimiser le gaz sur les contrats intelligents Ethereum, en particulier en utilisant l'IDE Remix. Pour conclure ce cours, nous allons nous pencher sur des techniques avancées et des bonnes pratiques. Cette dernière leçon combinera les connaissances que nous avons accumulées, afin que vous puissiez repartir avec une bonne compréhension de l'optimisation du gaz dans les contrats intelligents Ethereum.

Refonte et réduction de la complexité du code

L'un des moyens les plus simples d'économiser du gaz est de simplifier votre code. Moins il y a de code à exécuter, moins il y a de gaz consommé.

Exemple de pratique

Considérez la fonction suivante :

Solidity
pragma solidity ^0.8.9 ;

contract OptimizationExample {
 address[] public admins ;

 function isUserAdmin(address user) public view returns (bool) {
 for (uint i = 0 ; i < admins.length ; i++) {
            if (admins[i] == user) return true;
        }
        return false ;
 }
}

La fonction ci-dessus utilise une boucle, qui devient de plus en plus coûteuse au fur et à mesure que l'on ajoute des administrateurs. Une structure plus économe en gaz utiliserait une cartographie :

Solidity
contrat OptimizationExampleOptimized {
 mapping(address => bool) public admins ;

 function isUserAdmin(address user) public view returns (bool) {
        return admins[user];
    }
}

Réutilisation des données

Lorsque vous travaillez avec Ethereum, n'oubliez pas que vous payez pour chaque bit de stockage. Si vous stockez les mêmes données à plusieurs endroits, réfléchissez à la manière dont vous pourriez les stocker une fois et les référencer ailleurs.

Utiliser les bibliothèques

Dans Solidity, les bibliothèques sont des morceaux de code réutilisables. Ils peuvent vous aider à écrire un code modulaire et, comme ils ne sont déployés qu'une seule fois et liés à d'autres contrats, ils peuvent permettre d'économiser du gaz à long terme.

Solidity
bibliothèque SafeMath {
 function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... autres fonctions mathématiques
}

contrat UsingSafeMath {
 using SafeMath for uint ;

 uint public value ;

 function increment(uint _value) public {
        value = value.add(_value);
    }
}

Supprimez le stockage inutile

Le mot-clé delete dans Solidity vous permet d'annuler des variables, ce qui permet de restituer une partie du gaz. Si vous n'avez plus besoin d'un élément de stockage particulier, supprimez-le pour demander ce remboursement.

Considérez les journaux d'événements

Si le stockage des données sur la blockchain peut être coûteux, l'enregistrement des événements est comparativement moins cher. Si vous avez des données qui n'ont pas besoin d'être lues dans le contrat mais qui doivent être vérifiables, envisagez d'utiliser les journaux d'événements.

Évitez les opérations coûteuses

Certaines opérations sont plus gourmandes en gaz que d'autres. Par exemple :

  • Les appels de fonctions externes sont plus coûteux que les appels de fonctions internes.
  • L'interaction avec le stockage est plus coûteuse que l'interaction avec la mémoire.
  • Les tableaux dynamiques peuvent parfois coûter plus cher en gaz que les tableaux de taille fixe.

Conclusion

L'optimisation des contrats intelligents pour le gaz est à la fois un art et une science. Les approches abordées dans ce cours, lorsqu'elles sont combinées, ont le potentiel de réduire considérablement les coûts de gaz de vos contrats. N'oubliez pas que l'écosystème Ethereum et ses outils, y compris Remix, sont en constante évolution. Tenez vos contrats à jour, testez-les et améliorez-les régulièrement pour les optimiser. La communauté Ethereum est vaste et utile, n'hésitez donc jamais à demander des conseils ou des bonnes pratiques. Amusez-vous bien à coder !

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.