Optimisation Gas — Solidity Efficace
Économisez 50%+ sur les coûts en gas. Apprenez les techniques qui séparent le code Solidity amateur du professionnel.
Le gas n'est pas qu'un détail technique — c'est l'expérience utilisateur. Une seule boucle inefficace peut rendre votre dApp inutilisable pendant les pics d'activité réseau. Contrats optimisés = utilisateurs heureux = plus d'adoption.
Top 5 des Techniques d'Optimisation Gas
Packing de Variables
Packez plusieurs variables dans un slot storage de 32 octets. Économise 20 000 gas par slot évité.
Unchecked Math
Utilisez unchecked {} pour l'arithmétique sûre et éviter les vérifications de débordement. Économise ~20 gas par opération.
Calldata au Lieu de Memory
Pour les fonctions externes, utilisez calldata pour tableaux/strings. Évite la copie, économise ~200 gas.
Custom Errors
Remplacez les chaînes require par des custom errors. Économise ~50 gas par revert.
Short-Circuit des Conditions
Ordonnez les conditions && et || par coût en gas. Les vérifications les moins chères en premier économisent du calcul gaspillé.
Exemple : Optimisation du Packing de Variables
❌ Non Optimisé (3 slots)
contract Unoptimized {
uint256 timestamp; // Slot 0
address owner; // Slot 1
bool isActive; // Slot 2
// 3 opérations SSTORE
// ~60 000 gas au déploiement
}✅ Optimisé (1 slot)
contract Optimized {
uint64 timestamp; // Slot 0 (8 octets)
address owner; // Slot 0 (20 octets)
bool isActive; // Slot 0 (1 octet)
// 1 opération SSTORE
// ~40 000 gas au déploiement
}L'optimisation : Packez uint64, address et bool dans un seul slot de 32 octets (8 + 20 + 1 = 29 octets). Économise 20 000 gas.
Questions Fréquentes
Pourquoi l'optimisation gas est-elle importante ?
Le gas coûte de l'argent. Un contrat mal optimisé peut coûter 2-3x plus cher par transaction aux utilisateurs. Pour les protocoles DeFi à gros volume, cela représente des millions en frais gaspillés. L'optimisation est un avantage compétitif.
Quel est le moyen le plus simple d'économiser du gas ?
Utilisez des custom errors au lieu de chaînes require (économise ~50 gas par revert), packez les variables storage étroitement (économise 20 000 gas par slot), et utilisez calldata au lieu de memory pour les paramètres de fonction externe (économise ~200 gas par tableau).
Dois-je optimiser dès le départ ?
Non. D'abord faites-le fonctionner, puis faites-le correctement, puis faites-le rapidement. L'optimisation prématurée conduit aux bugs. Utilisez les snapshots gas Foundry pour mesurer avant d'optimiser.
Maîtrisez l'Optimisation Gas
Pratiquez 15+ techniques d'optimisation avec de vrais défis de code. Mesurez vos améliorations avec les rapports gas Foundry.
Commencer gratuitement →