Tutorial Solidity : estimer le cout d’utilisation en gaz d’un smart contrat

0

Dans ce tutoriel, nous allons créer un contrat Solidity simple pour lire et écrire des variables, puis estimer le coût d’utilisation de ce contrat en utilisant Remix IDE.

1 : Écrire le contrat Solidity

Créez un fichier nommé SimpleStorage.sol et ajoutez le code suivant :

solidityCopy codepragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 private data;

    function set(uint256 value) public {
        data = value;
    }

    function get() public view returns (uint256) {
        return data;
    }
}

Ce contrat contient une variable data de type uint256 et deux fonctions : set() pour modifier la valeur de data et get() pour récupérer la valeur actuelle de data.

2 : Compiler le contrat avec Remix IDE

  1. Accédez à l’éditeur Remix IDE (https://remix.ethereum.org/).
  2. Créez un nouveau fichier en cliquant sur l’icône « + » et nommez-le SimpleStorage.sol.
  3. Copiez et collez le code du contrat à partir de l’étape 1.
  4. Sélectionnez l’onglet « Solidity Compiler » sur le côté gauche.
  5. Choisissez la version du compilateur compatible avec la version pragma de votre contrat (0.8.0 dans notre exemple).
  6. Cliquez sur « Compile SimpleStorage.sol ».

3 : Déployer et estimer le coût de déploiement

  1. Sélectionnez l’onglet « Deploy & Run Transactions » sur le côté gauche de Remix.
  2. Dans la section « Environment », sélectionnez « JavaScript VM » pour déployer le contrat localement dans Remix.
  3. Dans la section « Contract », choisissez SimpleStorage dans la liste déroulante, puis cliquez sur « Deploy ».
  4. Surveillez la transaction de déploiement dans la section « Transactions ». Cliquez sur la transaction pour afficher les détails. Vous verrez ici le coût de gas pour déployer le contrat.

4 : Estimer le coût d’appel des fonctions set et get

  1. Sous la section « Deployed Contracts », vous verrez votre contrat SimpleStorage déployé.
  2. Pour appeler la fonction set, entrez une valeur (par exemple, 42) dans le champ « value » et cliquez sur le bouton « set ». Observez la transaction dans la section « Transactions ». Cliquez sur la transaction pour voir les détails, y compris le coût en gas.
  3. Pour appeler la fonction get, cliquez simplement sur le bouton « get ». Comme il s’agit d’une fonction view, il n’y aura pas de coût en gas pour l’appeler.

5. Analyse des cout du contrat SimpleStorage

Après avoir déployé le contrat sur Remix dans la javascript VM, on peut effectuer une transaction en entrant une valeur par exemple 8, dans la fonction SET :

Puis au centre de l’écran, on peut analyser le détail de la transaction :

Il a alors 3 lignes indispensables à comprendre :

gas50258 gas
transaction cost43702 gas
execution cost22498 gas

Ces trois lignes concernent le gas:

  1. Gas: Il s’agit de la limite de gas que spécifiée pour la transaction. Si une transaction consomme plus de gas que la limite spécifiée, elle échoue et tout gas consommé est perdu. Il est important de définir une limite de gas appropriée pour vos transactions.

  2. Transaction cost: Il s’agit du coût total en gas pour la transaction, y compris les coûts de base de la transaction et les coûts d’exécution du code du contrat. Le coût de transaction dépend du type de transaction (déploiement de contrat, appel de fonction, etc.), de la complexité du contrat et du montant des données stockées.

  3. Execution cost: Il s’agit du coût en gas spécifiquement lié à l’exécution du code du contrat. Ce coût exclut les frais de base de la transaction, tels que le coût de stockage des données de la transaction et l’inclusion de la transaction dans un bloc. Le coût d’exécution dépend de la complexité du contrat et des opérations effectuées lors de l’appel de la fonction.

Dans notre cas, cela signifie que la limite de gas pour la transaction était de 50 258. La transaction a effectivement coûté 43 702 gas au total, dont 22 498 gas étaient liés à l’exécution du code du contrat.

Pour estimer le coût en ether de cette transaction, on peut multiplier le coût de la transaction (ou le coût d’exécution si pour connaître uniquement le coût du code du contrat) par le prix actuel du gas en gwei, puis convertir ce montant en ether. Par exemple, si le prix actuel du gas est de 30 gwei, le coût de la transaction serait de 43 702 * 30 gwei = 1 311 060 gwei, soit environ 0.00131106 ether.

Maintenant que vous avez déterminé les coûts de gas pour déployer le contrat et appeler ses fonctions, vous pouvez les multiplier par le prix actuel du gas (en gwei) pour estimer le coût total en ether. Vous pouvez consulter les sites web comme https://etherscan.io/gastracker pour vérifier les prix actuels du gas.

N’oubliez pas que les coûts peuvent varier en fonction des conditions du réseau et du prix du gas, donc assurez-vous de prendre en compte ces fluctuations lors de l’estimation des coûts réels d’utilisation.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.