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 →