Guide d'optimisation des frais de Gas des smart contracts : 10 meilleures pratiques
Les frais de Gas sur le réseau principal d'Ethereum ont toujours été un problème épineux, surtout en période de forte congestion du réseau. Pendant les heures de pointe, les utilisateurs doivent souvent payer des frais de transaction élevés. Par conséquent, il est crucial d'optimiser les frais de Gas pendant la phase de développement des smart contracts. L'optimisation de la consommation de Gas peut non seulement réduire efficacement les coûts de transaction, mais aussi améliorer l'efficacité des transactions, offrant ainsi aux utilisateurs une expérience blockchain plus économique et efficace.
Cet article présentera le mécanisme des frais de Gas de la machine virtuelle Ethereum (EVM), les concepts clés de l'optimisation des frais de Gas, ainsi que les meilleures pratiques pour optimiser les frais de Gas lors du développement de smart contracts. Nous espérons que ces informations pourront inspirer et aider les développeurs, tout en permettant aux utilisateurs ordinaires de mieux comprendre le fonctionnement des frais de Gas de l'EVM, afin de relever ensemble les défis de l'écosystème blockchain.
Introduction au mécanisme des frais de Gas de l'EVM
Dans les réseaux compatibles EVM, le "Gas" est l'unité utilisée pour mesurer la puissance de calcul nécessaire à l'exécution d'opérations spécifiques.
Dans la structure de l'EVM, la consommation de Gas se divise en trois parties : l'exécution des opérations, les appels de messages externes et la lecture/écriture de la mémoire et du stockage.
En raison du besoin de ressources de calcul pour l'exécution de chaque transaction, des frais sont appliqués pour éviter les boucles infinies et les attaques de déni de service (DoS). Les frais nécessaires pour compléter une transaction sont appelés "frais de Gas".
Depuis l'entrée en vigueur de la fourche dure de Londres EIP-1559(), les frais de Gas sont calculés selon la formule suivante :
Frais de gaz = unités de gaz utilisées * (frais de base + frais de priorité)
Les frais de base seront détruits, tandis que les frais prioritaires serviront d'incitation pour encourager les validateurs à ajouter des transactions à la blockchain. En définissant des frais prioritaires plus élevés lors de l'envoi d'une transaction, on peut augmenter la probabilité que la transaction soit incluse dans le prochain bloc. Cela ressemble à un "pourboire" que l'utilisateur paie aux validateurs.
1. Comprendre l'optimisation du Gas dans l'EVM
Lorsque vous compilez des smart contracts avec Solidity, le contrat est converti en une série de "codes d'opération", c'est-à-dire des opcodes.
Toute section de code opérationnel (, telle que la création de smart contracts, l'appel de messages, l'accès au stockage de comptes et l'exécution d'opérations sur la machine virtuelle ), a un coût de consommation de Gas reconnu, ces coûts étant enregistrés dans le livre jaune d'Ethereum.
Après plusieurs modifications de l'EIP, certains coûts en Gas de codes d'opération ont été ajustés et peuvent différer de ceux du livre jaune.
2. Concepts de base de l'optimisation du gaz
Le principe central de l'optimisation du Gas est de privilégier les opérations à coût d'efficacité élevé sur la blockchain EVM, en évitant les opérations coûteuses en Gas.
Dans l'EVM, les opérations suivantes ont un coût relativement bas :
Lire et écrire des variables en mémoire
Lire des constantes et des variables immuables
Lire et écrire des variables locales
Lire la variable calldata, par exemple le tableau et la structure calldata.
Appel de fonction interne
Les opérations à coût élevé comprennent :
Lire et écrire des variables d'état stockées dans le stockage des contrats
Appel de fonction externe
Opérations en boucle
Meilleures pratiques pour l'optimisation des frais de gaz EVM
Sur la base des concepts fondamentaux ci-dessus, nous avons préparé une liste des meilleures pratiques pour l'optimisation des frais de Gas pour la communauté des développeurs. En suivant ces pratiques, les développeurs peuvent réduire la consommation de Gas de leurs smart contracts, diminuer les coûts de transaction et créer des applications plus efficaces et conviviales.
1. Essayez de réduire au minimum l'utilisation du stockage.
Dans Solidity, le stockage( est une ressource limitée, dont la consommation de Gas est bien supérieure à celle de la mémoire). Chaque fois qu'un smart contracts lit ou écrit des données dans le stockage, cela entraîne des coûts élevés en Gas.
Selon la définition du livre blanc d'Ethereum, le coût des opérations de stockage est supérieur de plus de 100 fois à celui des opérations en mémoire. Par exemple, les instructions OPcodes mload et mstore ne consomment que 3 unités de Gas, tandis que les opérations de stockage comme sload et sstore nécessitent au moins 100 unités, même dans les meilleures conditions.
Les méthodes pour limiter l'utilisation du stockage comprennent :
Stocker des données non permanentes en mémoire
Réduire le nombre de modifications de stockage : en conservant les résultats intermédiaires en mémoire, puis en attribuant les résultats aux variables de stockage une fois tous les calculs terminés.
( 2. Emballage de variables
Le nombre de slots de stockage ) utilisés dans les smart contracts et la manière dont les développeurs représentent les données auront un impact considérable sur la consommation de Gas.
Le compilateur Solidity va regrouper les variables de stockage continues pendant le processus de compilation et utiliser des emplacements de stockage de 32 octets comme unité de base pour le stockage des variables. Le regroupement des variables signifie organiser les variables de manière à ce que plusieurs d'entre elles puissent s'adapter à un seul emplacement de stockage.
Grâce à cet ajustement de détail, les développeurs peuvent économiser 20 000 unités de Gas. ### Stocker une case de stockage inutilisée nécessite 20 000 Gas (, mais maintenant, il ne faut que deux cases de stockage.
Puisque chaque emplacement de stockage consomme du Gas, l'emballage des variables optimise l'utilisation du Gas en réduisant le nombre d'emplacements de stockage nécessaires.
![Les dix meilleures pratiques d'optimisation des Gas pour les smart contracts Ethereum])https://img-cdn.gateio.im/webp-social/moments-995905cb414526d4d991899d0c2e6443.webp(
) 3. Optimiser les types de données
Une variable peut être représentée par plusieurs types de données, mais le coût des opérations correspondants à différents types de données est également différent. Choisir le type de données approprié aide à optimiser l'utilisation du Gas.
Par exemple, dans Solidity, les entiers peuvent être subdivisés en différentes tailles : uint8, uint16, uint32, etc. Étant donné que l'EVM effectue des opérations par unités de 256 bits, l'utilisation de uint8 signifie que l'EVM doit d'abord le convertir en uint256, et cette conversion consomme du Gas supplémentaire.
Vu isolément, utiliser uint256 est moins cher que uint8. Cependant, c'est différent si l'optimisation de l'emballage des variables est utilisée. Si le développeur peut emballer quatre variables uint8 dans un seul emplacement de stockage, alors le coût total pour les itérer sera inférieur à celui de quatre variables uint256. De cette façon, les smart contracts peuvent lire et écrire un emplacement de stockage une fois, et placer quatre variables uint8 dans la mémoire/le stockage en une seule opération.
4. Utiliser des variables de taille fixe au lieu de variables dynamiques
Si les données peuvent être contrôlées dans 32 octets, il est recommandé d'utiliser le type de données bytes32 au lieu de bytes ou strings. En général, les variables de taille fixe consomment moins de Gas que les variables de taille variable. Si la longueur en octets peut être limitée, essayez de choisir la longueur minimale de bytes1 à bytes32.
( 5. Mappages et tableaux
Les listes de données de Solidity peuvent être représentées par deux types de données : les tableaux ) Arrays ### et les mappages ### Mappings (, mais leur syntaxe et leur structure sont complètement différentes.
Dans la plupart des cas, les mappages sont plus efficaces et moins coûteux, mais les tableaux sont itérables et prennent en charge le regroupement des types de données. Par conséquent, il est recommandé d'utiliser des mappages en priorité lors de la gestion des listes de données, sauf si une itération est nécessaire ou si le regroupement des types de données peut optimiser la consommation de Gas.
![Les 10 meilleures pratiques d'optimisation du Gas pour les smart contracts Ethereum])https://img-cdn.gateio.im/webp-social/moments-5f3d7e103e47c886f50599cffe35c707.webp(
) 6. Utiliser calldata au lieu de memory
Les variables déclarées dans les paramètres de fonction peuvent être stockées dans calldata ou memory. La principale différence entre les deux est que memory peut être modifié par la fonction, tandis que calldata est immuable.
Rappelez-vous ce principe : si les paramètres de la fonction sont en lecture seule, vous devez privilégier l'utilisation de calldata plutôt que memory. Cela permet d'éviter les opérations de copie inutiles de calldata de la fonction vers memory.
Lors de la lecture de valeurs directement depuis calldata, sautez les opérations intermédiaires de mémoire. Cette méthode d'optimisation peut considérablement améliorer l'efficacité du Gas.
( 7. Utilisez autant que possible les mots-clés Constant/Immutable
Les variables Constant/Immutable ne sont pas stockées dans le stockage du contrat. Ces variables sont calculées au moment de la compilation et sont stockées dans le bytecode du contrat. Par conséquent, leurs coûts d'accès sont beaucoup plus bas que ceux du stockage, il est donc conseillé d'utiliser les mots-clés Constant ou Immutable autant que possible.
![Les dix meilleures pratiques d'optimisation de Gas pour les smart contracts Ethereum])https://img-cdn.gateio.im/webp-social/moments-9c566626ab499ef65d6f5089a2876ad3.webp###
8. Utiliser Unchecked en s'assurant qu'il n'y aura pas de dépassement/sous-dépassement.
Lorsque les développeurs peuvent s'assurer que les opérations arithmétiques ne provoqueront pas de dépassement ou de sous-dépassement, ils peuvent utiliser le mot-clé unchecked introduit dans Solidity v0.8.0 pour éviter des vérifications de dépassement ou de sous-dépassement inutiles, économisant ainsi des frais de Gas.
De plus, les versions 0.8.0 et supérieures du compilateur n'ont plus besoin d'utiliser la bibliothèque SafeMath, car le compilateur lui-même intègre déjà des fonctionnalités de protection contre les débordements et les sous-débordements.
( 9. Optimisation des modificateurs
Le code du modificateur est intégré dans la fonction modifiée, et chaque fois que le modificateur est utilisé, son code est copié. Cela augmente la taille du bytecode et augmente la consommation de Gas. On peut réduire la taille du bytecode et diminuer les coûts de Gas en restructurant la logique en fonction interne, permettant ainsi la réutilisation de cette fonction interne dans le modificateur.
) 10. Optimisation de court-circuit
Pour les opérateurs || et &&, l'évaluation logique se produit par court-circuit, c'est-à-dire que si la première condition peut déjà déterminer le résultat de l'expression logique, la deuxième condition ne sera pas évaluée.
Pour optimiser la consommation de Gas, il est conseillé de placer les conditions à faible coût de calcul en premier, ce qui pourrait permettre de sauter les calculs coûteux.
![Top 10 meilleures pratiques pour l'optimisation du Gas des smart contracts Ethereum]###https://img-cdn.gateio.im/webp-social/moments-c0701f9e09280a1667495d54e262dd2f.webp###
Conseils généraux supplémentaires
1. Supprimer le code inutile
Si le contrat contient des fonctions ou des variables non utilisées, il est conseillé de les supprimer. C'est la méthode la plus directe pour réduire le coût de déploiement du contrat et maintenir une taille de contrat réduite.
Voici quelques conseils pratiques :
Utilisez les algorithmes les plus efficaces pour effectuer des calculs. Si les résultats de certains calculs sont utilisés directement dans le contrat, alors ces processus de calcul redondants devraient être éliminés. En essence, tout calcul non utilisé devrait être supprimé.
Sur Ethereum, les développeurs peuvent obtenir des récompenses en Gas en libérant de l'espace de stockage. Si une variable n'est plus nécessaire, elle doit être supprimée à l'aide du mot-clé delete ou être définie sur sa valeur par défaut.
Optimisation des boucles : éviter les opérations de boucle coûteuses, fusionner les boucles autant que possible et déplacer les calculs répétitifs en dehors du corps de la boucle.
2. Utiliser des smart contracts précompilés
Les contrats précompilés offrent des fonctions de bibliothèque complexes, telles que les opérations de cryptage et de hachage. Comme le code ne s'exécute pas sur l'EVM mais sur le nœud client local, moins de Gas est nécessaire. L'utilisation de contrats précompilés peut permettre d'économiser du Gas en réduisant la charge de calcul requise pour exécuter des smart contracts.
Les exemples de contrats précompilés incluent l'algorithme de signature numérique à courbe elliptique (ECDSA) et l'algorithme de hachage SHA2-256. En utilisant ces contrats précompilés dans des smart contracts, les développeurs peuvent réduire les coûts de Gas et améliorer l'efficacité d'exécution des applications.
3. Utilisation du code d'assemblage en ligne
L'assemblage en ligne ( permet aux développeurs d'écrire du code bas niveau mais efficace, qui peut être exécuté directement par l'EVM, sans avoir besoin d'utiliser des opcodes Solidity coûteux. L'assemblage en ligne permet également un contrôle plus précis de l'utilisation de la mémoire et du stockage, ce qui réduit davantage les frais de Gas. De plus, l'assemblage en ligne peut exécuter certaines opérations complexes qui seraient difficiles à réaliser uniquement avec Solidity, offrant ainsi plus de flexibilité pour optimiser la consommation de Gas.
Cependant, l'utilisation d'assemblage en ligne peut également présenter des risques et être sujette à des erreurs. Par conséquent, il convient de l'utiliser avec prudence, réservé aux développeurs expérimentés.
![Les 10 meilleures pratiques d'optimisation du Gas des contrats intelligents Ethereum])https://img-cdn.gateio.im/webp-social/moments-839b91e2f02389949aa698d460a497d8.webp###
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
12 J'aime
Récompense
12
6
Partager
Commentaire
0/400
AlwaysAnon
· 07-09 16:21
Eh bien, encore une fois cette optimisation de gas, c'est agaçant.
Voir l'originalRépondre0
ForkTongue
· 07-07 17:09
Le gas est vraiment bon, ceux qui utilisent L2 le savent bien.
Voir l'originalRépondre0
NonFungibleDegen
· 07-07 01:27
les frais de gas me tuent littéralement en ce moment... ngmi ser
Voir l'originalRépondre0
AllTalkLongTrader
· 07-07 01:20
Fatigué, fatigué, les frais de gas sont énervants, je passe directement à L2.
Voir l'originalRépondre0
0xInsomnia
· 07-07 01:16
Le gas est si cher que l'on ose parler de meilleures pratiques.
Voir l'originalRépondre0
CryptoTherapist
· 07-07 01:10
traitons ensemble cette anxiété liée au gas... je sens un profond traumatisme dû aux frais élevés. l'optimisation consciente des contrats est la clé de la stabilité émotionnelle dans le trading.
Guide d'optimisation des frais de Gas pour les smart contracts EVM : 10 meilleures pratiques et analyse des concepts clés
Guide d'optimisation des frais de Gas des smart contracts : 10 meilleures pratiques
Les frais de Gas sur le réseau principal d'Ethereum ont toujours été un problème épineux, surtout en période de forte congestion du réseau. Pendant les heures de pointe, les utilisateurs doivent souvent payer des frais de transaction élevés. Par conséquent, il est crucial d'optimiser les frais de Gas pendant la phase de développement des smart contracts. L'optimisation de la consommation de Gas peut non seulement réduire efficacement les coûts de transaction, mais aussi améliorer l'efficacité des transactions, offrant ainsi aux utilisateurs une expérience blockchain plus économique et efficace.
Cet article présentera le mécanisme des frais de Gas de la machine virtuelle Ethereum (EVM), les concepts clés de l'optimisation des frais de Gas, ainsi que les meilleures pratiques pour optimiser les frais de Gas lors du développement de smart contracts. Nous espérons que ces informations pourront inspirer et aider les développeurs, tout en permettant aux utilisateurs ordinaires de mieux comprendre le fonctionnement des frais de Gas de l'EVM, afin de relever ensemble les défis de l'écosystème blockchain.
Introduction au mécanisme des frais de Gas de l'EVM
Dans les réseaux compatibles EVM, le "Gas" est l'unité utilisée pour mesurer la puissance de calcul nécessaire à l'exécution d'opérations spécifiques.
Dans la structure de l'EVM, la consommation de Gas se divise en trois parties : l'exécution des opérations, les appels de messages externes et la lecture/écriture de la mémoire et du stockage.
En raison du besoin de ressources de calcul pour l'exécution de chaque transaction, des frais sont appliqués pour éviter les boucles infinies et les attaques de déni de service (DoS). Les frais nécessaires pour compléter une transaction sont appelés "frais de Gas".
Depuis l'entrée en vigueur de la fourche dure de Londres EIP-1559(), les frais de Gas sont calculés selon la formule suivante :
Frais de gaz = unités de gaz utilisées * (frais de base + frais de priorité)
Les frais de base seront détruits, tandis que les frais prioritaires serviront d'incitation pour encourager les validateurs à ajouter des transactions à la blockchain. En définissant des frais prioritaires plus élevés lors de l'envoi d'une transaction, on peut augmenter la probabilité que la transaction soit incluse dans le prochain bloc. Cela ressemble à un "pourboire" que l'utilisateur paie aux validateurs.
1. Comprendre l'optimisation du Gas dans l'EVM
Lorsque vous compilez des smart contracts avec Solidity, le contrat est converti en une série de "codes d'opération", c'est-à-dire des opcodes.
Toute section de code opérationnel (, telle que la création de smart contracts, l'appel de messages, l'accès au stockage de comptes et l'exécution d'opérations sur la machine virtuelle ), a un coût de consommation de Gas reconnu, ces coûts étant enregistrés dans le livre jaune d'Ethereum.
Après plusieurs modifications de l'EIP, certains coûts en Gas de codes d'opération ont été ajustés et peuvent différer de ceux du livre jaune.
2. Concepts de base de l'optimisation du gaz
Le principe central de l'optimisation du Gas est de privilégier les opérations à coût d'efficacité élevé sur la blockchain EVM, en évitant les opérations coûteuses en Gas.
Dans l'EVM, les opérations suivantes ont un coût relativement bas :
Les opérations à coût élevé comprennent :
Meilleures pratiques pour l'optimisation des frais de gaz EVM
Sur la base des concepts fondamentaux ci-dessus, nous avons préparé une liste des meilleures pratiques pour l'optimisation des frais de Gas pour la communauté des développeurs. En suivant ces pratiques, les développeurs peuvent réduire la consommation de Gas de leurs smart contracts, diminuer les coûts de transaction et créer des applications plus efficaces et conviviales.
1. Essayez de réduire au minimum l'utilisation du stockage.
Dans Solidity, le stockage( est une ressource limitée, dont la consommation de Gas est bien supérieure à celle de la mémoire). Chaque fois qu'un smart contracts lit ou écrit des données dans le stockage, cela entraîne des coûts élevés en Gas.
Selon la définition du livre blanc d'Ethereum, le coût des opérations de stockage est supérieur de plus de 100 fois à celui des opérations en mémoire. Par exemple, les instructions OPcodes mload et mstore ne consomment que 3 unités de Gas, tandis que les opérations de stockage comme sload et sstore nécessitent au moins 100 unités, même dans les meilleures conditions.
Les méthodes pour limiter l'utilisation du stockage comprennent :
( 2. Emballage de variables
Le nombre de slots de stockage ) utilisés dans les smart contracts et la manière dont les développeurs représentent les données auront un impact considérable sur la consommation de Gas.
Le compilateur Solidity va regrouper les variables de stockage continues pendant le processus de compilation et utiliser des emplacements de stockage de 32 octets comme unité de base pour le stockage des variables. Le regroupement des variables signifie organiser les variables de manière à ce que plusieurs d'entre elles puissent s'adapter à un seul emplacement de stockage.
Grâce à cet ajustement de détail, les développeurs peuvent économiser 20 000 unités de Gas. ### Stocker une case de stockage inutilisée nécessite 20 000 Gas (, mais maintenant, il ne faut que deux cases de stockage.
Puisque chaque emplacement de stockage consomme du Gas, l'emballage des variables optimise l'utilisation du Gas en réduisant le nombre d'emplacements de stockage nécessaires.
![Les dix meilleures pratiques d'optimisation des Gas pour les smart contracts Ethereum])https://img-cdn.gateio.im/webp-social/moments-995905cb414526d4d991899d0c2e6443.webp(
) 3. Optimiser les types de données
Une variable peut être représentée par plusieurs types de données, mais le coût des opérations correspondants à différents types de données est également différent. Choisir le type de données approprié aide à optimiser l'utilisation du Gas.
Par exemple, dans Solidity, les entiers peuvent être subdivisés en différentes tailles : uint8, uint16, uint32, etc. Étant donné que l'EVM effectue des opérations par unités de 256 bits, l'utilisation de uint8 signifie que l'EVM doit d'abord le convertir en uint256, et cette conversion consomme du Gas supplémentaire.
Vu isolément, utiliser uint256 est moins cher que uint8. Cependant, c'est différent si l'optimisation de l'emballage des variables est utilisée. Si le développeur peut emballer quatre variables uint8 dans un seul emplacement de stockage, alors le coût total pour les itérer sera inférieur à celui de quatre variables uint256. De cette façon, les smart contracts peuvent lire et écrire un emplacement de stockage une fois, et placer quatre variables uint8 dans la mémoire/le stockage en une seule opération.
4. Utiliser des variables de taille fixe au lieu de variables dynamiques
Si les données peuvent être contrôlées dans 32 octets, il est recommandé d'utiliser le type de données bytes32 au lieu de bytes ou strings. En général, les variables de taille fixe consomment moins de Gas que les variables de taille variable. Si la longueur en octets peut être limitée, essayez de choisir la longueur minimale de bytes1 à bytes32.
( 5. Mappages et tableaux
Les listes de données de Solidity peuvent être représentées par deux types de données : les tableaux ) Arrays ### et les mappages ### Mappings (, mais leur syntaxe et leur structure sont complètement différentes.
Dans la plupart des cas, les mappages sont plus efficaces et moins coûteux, mais les tableaux sont itérables et prennent en charge le regroupement des types de données. Par conséquent, il est recommandé d'utiliser des mappages en priorité lors de la gestion des listes de données, sauf si une itération est nécessaire ou si le regroupement des types de données peut optimiser la consommation de Gas.
![Les 10 meilleures pratiques d'optimisation du Gas pour les smart contracts Ethereum])https://img-cdn.gateio.im/webp-social/moments-5f3d7e103e47c886f50599cffe35c707.webp(
) 6. Utiliser calldata au lieu de memory
Les variables déclarées dans les paramètres de fonction peuvent être stockées dans calldata ou memory. La principale différence entre les deux est que memory peut être modifié par la fonction, tandis que calldata est immuable.
Rappelez-vous ce principe : si les paramètres de la fonction sont en lecture seule, vous devez privilégier l'utilisation de calldata plutôt que memory. Cela permet d'éviter les opérations de copie inutiles de calldata de la fonction vers memory.
Lors de la lecture de valeurs directement depuis calldata, sautez les opérations intermédiaires de mémoire. Cette méthode d'optimisation peut considérablement améliorer l'efficacité du Gas.
( 7. Utilisez autant que possible les mots-clés Constant/Immutable
Les variables Constant/Immutable ne sont pas stockées dans le stockage du contrat. Ces variables sont calculées au moment de la compilation et sont stockées dans le bytecode du contrat. Par conséquent, leurs coûts d'accès sont beaucoup plus bas que ceux du stockage, il est donc conseillé d'utiliser les mots-clés Constant ou Immutable autant que possible.
![Les dix meilleures pratiques d'optimisation de Gas pour les smart contracts Ethereum])https://img-cdn.gateio.im/webp-social/moments-9c566626ab499ef65d6f5089a2876ad3.webp###
8. Utiliser Unchecked en s'assurant qu'il n'y aura pas de dépassement/sous-dépassement.
Lorsque les développeurs peuvent s'assurer que les opérations arithmétiques ne provoqueront pas de dépassement ou de sous-dépassement, ils peuvent utiliser le mot-clé unchecked introduit dans Solidity v0.8.0 pour éviter des vérifications de dépassement ou de sous-dépassement inutiles, économisant ainsi des frais de Gas.
De plus, les versions 0.8.0 et supérieures du compilateur n'ont plus besoin d'utiliser la bibliothèque SafeMath, car le compilateur lui-même intègre déjà des fonctionnalités de protection contre les débordements et les sous-débordements.
( 9. Optimisation des modificateurs
Le code du modificateur est intégré dans la fonction modifiée, et chaque fois que le modificateur est utilisé, son code est copié. Cela augmente la taille du bytecode et augmente la consommation de Gas. On peut réduire la taille du bytecode et diminuer les coûts de Gas en restructurant la logique en fonction interne, permettant ainsi la réutilisation de cette fonction interne dans le modificateur.
) 10. Optimisation de court-circuit
Pour les opérateurs || et &&, l'évaluation logique se produit par court-circuit, c'est-à-dire que si la première condition peut déjà déterminer le résultat de l'expression logique, la deuxième condition ne sera pas évaluée.
Pour optimiser la consommation de Gas, il est conseillé de placer les conditions à faible coût de calcul en premier, ce qui pourrait permettre de sauter les calculs coûteux.
![Top 10 meilleures pratiques pour l'optimisation du Gas des smart contracts Ethereum]###https://img-cdn.gateio.im/webp-social/moments-c0701f9e09280a1667495d54e262dd2f.webp###
Conseils généraux supplémentaires
1. Supprimer le code inutile
Si le contrat contient des fonctions ou des variables non utilisées, il est conseillé de les supprimer. C'est la méthode la plus directe pour réduire le coût de déploiement du contrat et maintenir une taille de contrat réduite.
Voici quelques conseils pratiques :
Utilisez les algorithmes les plus efficaces pour effectuer des calculs. Si les résultats de certains calculs sont utilisés directement dans le contrat, alors ces processus de calcul redondants devraient être éliminés. En essence, tout calcul non utilisé devrait être supprimé.
Sur Ethereum, les développeurs peuvent obtenir des récompenses en Gas en libérant de l'espace de stockage. Si une variable n'est plus nécessaire, elle doit être supprimée à l'aide du mot-clé delete ou être définie sur sa valeur par défaut.
Optimisation des boucles : éviter les opérations de boucle coûteuses, fusionner les boucles autant que possible et déplacer les calculs répétitifs en dehors du corps de la boucle.
2. Utiliser des smart contracts précompilés
Les contrats précompilés offrent des fonctions de bibliothèque complexes, telles que les opérations de cryptage et de hachage. Comme le code ne s'exécute pas sur l'EVM mais sur le nœud client local, moins de Gas est nécessaire. L'utilisation de contrats précompilés peut permettre d'économiser du Gas en réduisant la charge de calcul requise pour exécuter des smart contracts.
Les exemples de contrats précompilés incluent l'algorithme de signature numérique à courbe elliptique (ECDSA) et l'algorithme de hachage SHA2-256. En utilisant ces contrats précompilés dans des smart contracts, les développeurs peuvent réduire les coûts de Gas et améliorer l'efficacité d'exécution des applications.
3. Utilisation du code d'assemblage en ligne
L'assemblage en ligne ( permet aux développeurs d'écrire du code bas niveau mais efficace, qui peut être exécuté directement par l'EVM, sans avoir besoin d'utiliser des opcodes Solidity coûteux. L'assemblage en ligne permet également un contrôle plus précis de l'utilisation de la mémoire et du stockage, ce qui réduit davantage les frais de Gas. De plus, l'assemblage en ligne peut exécuter certaines opérations complexes qui seraient difficiles à réaliser uniquement avec Solidity, offrant ainsi plus de flexibilité pour optimiser la consommation de Gas.
Cependant, l'utilisation d'assemblage en ligne peut également présenter des risques et être sujette à des erreurs. Par conséquent, il convient de l'utiliser avec prudence, réservé aux développeurs expérimentés.
![Les 10 meilleures pratiques d'optimisation du Gas des contrats intelligents Ethereum])https://img-cdn.gateio.im/webp-social/moments-839b91e2f02389949aa698d460a497d8.webp###
( 4. Utiliser des solutions de Layer 2
faire