Урок 3

Techniques d'optimisation du gaz avec Remix

Il est essentiel de s'exercer maintenant que vous avez maîtrisé certaines approches fondamentales de l'optimisation du stockage. Prenez connaissance des exemples proposés et essayez de créer les vôtres. Dans la session suivante, nous approfondirons l'optimisation de la visibilité des fonctions et la réutilisation du code avec les bibliothèques. Gardez à l'esprit que l'optimisation est à la fois un art et une science. Continuez à expérimenter !

Optimiser le stockage

La majorité des dépenses en gaz d'Ethereum se concentrent sur le stockage. Chaque opération qui modifie l'état (stockage) du réseau Ethereum est généralement coûteuse. Par conséquent, se concentrer sur la manière dont les données sont conservées et accessibles peut entraîner des réductions de coûts significatives. Dans cette session, nous examinerons quelques moyens d'optimiser le stockage avec Remix.

Pourquoi le stockage est-il coûteux ?

La blockchain Ethereum fournit un stockage permanent. Tout ce qui est sauvegardé sur la blockchain sera disponible aussi longtemps que la blockchain survivra, mais cette permanence a un coût. L'optimisation du stockage permet non seulement de réduire les coûts, mais aussi de garantir une utilisation efficace de l'état global d'Ethereum.

Variables de stockage d'emballage

Introduction

Solidity stocke les variables dans des emplacements. Chaque slot a une taille de 32 octets. Lorsque les variables peuvent tenir dans un seul emplacement, elles peuvent être lues ou mises à jour avec une seule opération SLOAD ou SSTORE, respectivement.

Exemple

Considérons deux contrats :

Solidity
// Sans optimisation
pragma solidity ^0.8.9 ;

contract UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
Solidity
// Avec optimisation
pragma solidity ^0.8.9 ;

contract OptimizedStorage {
    uint128 public value1;
    uint128 public value2;
}
  1. Déployez les deux contrats dans Remix et notez les différences de gaz lorsque vous interagissez avec leurs variables.

  2. Dans la version optimisée, les valeurs 1 et 2 partagent un seul emplacement de 32 octets.

Réutilisation des emplacements de stockage

Introduction

Lorsque vous n'avez plus besoin d'un emplacement de stockage, en particulier d'un emplacement de stockage de données temporaire, vous pouvez le supprimer ou le mettre à zéro pour obtenir un remboursement de gaz.

Exemple

Solidity
pragma solidity ^0.8.9 ;

contract RefundExample {
 uint256 public temporaryData ;

 function storeTemporaryData(uint256 data) public {
        temporaryData = data;
    }

    function clearTemporaryData() public {
        delete temporaryData;
    }
}
  1. Déployez ce contrat dans Remix.

  2. Enregistrez des données temporaires, puis effacez-les.

  3. Vérifiez le coût du gaz. Remarquez le remboursement de gaz que vous obtenez pour l'opération de suppression.

Utiliser les événements au lieu du stockage pour les données historiques

Introduction

S'il n'est pas nécessaire d'accéder aux données sur la chaîne, envisagez de les enregistrer en tant qu'événement plutôt que de les stocker. Les événements sont beaucoup moins coûteux que les opérations de stockage.

Exemple

Solidity
pragma solidity ^0.8.9 ;

contract EventExample {
 event DataStored(uint256 data) ;

 function storeData(uint256 data) public {
        emit DataStored(data);
    }
}
  1. Déployez et interagissez avec le contrat dans Remix.

  2. Notez que le coût du gaz est moins élevé que celui du stockage.

Perspectives d'avenir

Il est essentiel de s'exercer maintenant que vous avez maîtrisé certaines approches fondamentales de l'optimisation du stockage. Prenez connaissance des exemples proposés et essayez de créer les vôtres. Dans la session suivante, nous approfondirons l'optimisation de la visibilité des fonctions et la réutilisation du code avec les bibliothèques. Gardez à l'esprit que l'optimisation est à la fois un art et une science. Continuez à expérimenter !

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 3

Techniques d'optimisation du gaz avec Remix

Il est essentiel de s'exercer maintenant que vous avez maîtrisé certaines approches fondamentales de l'optimisation du stockage. Prenez connaissance des exemples proposés et essayez de créer les vôtres. Dans la session suivante, nous approfondirons l'optimisation de la visibilité des fonctions et la réutilisation du code avec les bibliothèques. Gardez à l'esprit que l'optimisation est à la fois un art et une science. Continuez à expérimenter !

Optimiser le stockage

La majorité des dépenses en gaz d'Ethereum se concentrent sur le stockage. Chaque opération qui modifie l'état (stockage) du réseau Ethereum est généralement coûteuse. Par conséquent, se concentrer sur la manière dont les données sont conservées et accessibles peut entraîner des réductions de coûts significatives. Dans cette session, nous examinerons quelques moyens d'optimiser le stockage avec Remix.

Pourquoi le stockage est-il coûteux ?

La blockchain Ethereum fournit un stockage permanent. Tout ce qui est sauvegardé sur la blockchain sera disponible aussi longtemps que la blockchain survivra, mais cette permanence a un coût. L'optimisation du stockage permet non seulement de réduire les coûts, mais aussi de garantir une utilisation efficace de l'état global d'Ethereum.

Variables de stockage d'emballage

Introduction

Solidity stocke les variables dans des emplacements. Chaque slot a une taille de 32 octets. Lorsque les variables peuvent tenir dans un seul emplacement, elles peuvent être lues ou mises à jour avec une seule opération SLOAD ou SSTORE, respectivement.

Exemple

Considérons deux contrats :

Solidity
// Sans optimisation
pragma solidity ^0.8.9 ;

contract UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
Solidity
// Avec optimisation
pragma solidity ^0.8.9 ;

contract OptimizedStorage {
    uint128 public value1;
    uint128 public value2;
}
  1. Déployez les deux contrats dans Remix et notez les différences de gaz lorsque vous interagissez avec leurs variables.

  2. Dans la version optimisée, les valeurs 1 et 2 partagent un seul emplacement de 32 octets.

Réutilisation des emplacements de stockage

Introduction

Lorsque vous n'avez plus besoin d'un emplacement de stockage, en particulier d'un emplacement de stockage de données temporaire, vous pouvez le supprimer ou le mettre à zéro pour obtenir un remboursement de gaz.

Exemple

Solidity
pragma solidity ^0.8.9 ;

contract RefundExample {
 uint256 public temporaryData ;

 function storeTemporaryData(uint256 data) public {
        temporaryData = data;
    }

    function clearTemporaryData() public {
        delete temporaryData;
    }
}
  1. Déployez ce contrat dans Remix.

  2. Enregistrez des données temporaires, puis effacez-les.

  3. Vérifiez le coût du gaz. Remarquez le remboursement de gaz que vous obtenez pour l'opération de suppression.

Utiliser les événements au lieu du stockage pour les données historiques

Introduction

S'il n'est pas nécessaire d'accéder aux données sur la chaîne, envisagez de les enregistrer en tant qu'événement plutôt que de les stocker. Les événements sont beaucoup moins coûteux que les opérations de stockage.

Exemple

Solidity
pragma solidity ^0.8.9 ;

contract EventExample {
 event DataStored(uint256 data) ;

 function storeData(uint256 data) public {
        emit DataStored(data);
    }
}
  1. Déployez et interagissez avec le contrat dans Remix.

  2. Notez que le coût du gaz est moins élevé que celui du stockage.

Perspectives d'avenir

Il est essentiel de s'exercer maintenant que vous avez maîtrisé certaines approches fondamentales de l'optimisation du stockage. Prenez connaissance des exemples proposés et essayez de créer les vôtres. Dans la session suivante, nous approfondirons l'optimisation de la visibilité des fonctions et la réutilisation du code avec les bibliothèques. Gardez à l'esprit que l'optimisation est à la fois un art et une science. Continuez à expérimenter !

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.