Qu’est-ce que le Gas sur Ethereum ?

Vous l'utilisez sans trop le comprendre ? Et pourtant le Gas est un élément fondamental d'Ethereum car c'est ce qui donne sa propriété utilitaire à l'Ether !

Qu’est-ce que le Gas sur Ethereum ?

Je pense qu'à chaque fois que vous devez effectuer une transaction sur Ethereum, vous devez vous retrouver devant ce type d'écran :

Transaction via MyCrypto

Chaque fois que vous utilisez un smartcontract cela demande à un mineur d'exécuter du code logiciel avec les paramètres de votre transaction.

Un exemple pour bien comprendre

Voici une explication simple et imagée :

  • Gas Price : c'est le modèle de voiture que vous allez utiliser
  • Gas Limit : c'est la taille du vôtre réservoir d'essence de votre voiture
  • Transaction : c'est la distance à effectuer entre vous et le destinataire
  • Émetteur : vous, le propriétaire de la voiture
  • Destinataire : un ami
  • Mineur : un chauffeur freelance

Envoyer 1 ETH à un ami, va donc demander au mineur (chauffeur), d'exécuter votre transaction (de parcourir le chemin entre vous et votre ami). Pour cela, il va utiliser le Gas Limit que vous avez mis à sa disposition (la quantité d'essence dans le réservoir). Si le Gas Limit est trop faible (s’il n'y a pas assez d'essence dans le réservoir), alors la transaction n'ira pas jusqu'au bout. Le mineur abandonnera votre transaction (il laissera votre voiture sur le bas coté) et passera à une autre.

Le Gas Price correspond à la prime que vous allez accorder au mineur pour effectuer votre transaction. Si elle est élevée (il se déplacera alors en avion), la transaction coutera cher mais elle sera rapide. Si elle est faible (il se déplacera en vélo), la transaction sera lente mais économique.

Gas Limit

Quand vous réalisez une transaction ou participez à une ICO il vous est souvent demandé d'indiquer une valeur de Gas Limit. C'est une provision que vous faites au mineur. Vous l'autorisez à se servir dans votre wallet à la hauteur de la limite que vous aurez fixée. Après avoir traité votre transaction, il viendra prendre la part qui lui est dû. L'enveloppe que vous lui fournissez ne sera pas forcément entièrement consommé.

Vous pouvez donc indiquer une valeur assez haute sans incidence, le surplus vous sera rendu.

Exemple : quand vous prenez de l'essence à la pompe, la station service va faire une vérification auprès de votre banque et va bloquer 150 euros. Cette somme sera mise à disposition de la station service. Quand vous reposez le pistolet à essence, la station service calcule votre prix et vous rend la différence.

Schématiquement, on peut dire que plus une transaction est compliquée et longue, plus cela va consommer de Gas et donc plus le Gas Limit devra être élevé.

A titre d'exemple, ajouter de la liquidité dans yEarn, demande 820 000 de Gas Limit (!), quand une simple transaction d'ETH demande 21 000 de Gas Limit. Cette transaction sera donc 40x plus cher.

Gas Price

Le Gas Price correspond à la prime que vous souhaitez donner au mineur pour choisir votre transaction. Plus le prix est élevé plus votre transaction sera rapidement traitée par un mineur.

Il est indispensable de bien choisir le prix du Gas, comme je l'explique dans cet article !

Le prix du Gas est indiqué en Gwei. 1 Gwei correspond à 0.000000001 Ether. Si vous avez défini une limite à 21 000 et un Gas Price à 10 Gwei, votre transaction coutera 0.00021 Ether

Le prix indiqué prend pour postulat que l'ensemble de l'enveloppe de Gas Limit sera utilisé. C'est pourquoi vous constaterai souvent que le cout effectif est un peu plus faible que celui estimé.

Si Gas Limit est trop faible ?

Votre transaction sera rejetée avec comme message d'erreur "Warning! Error encountered during contract execution [Out of gas] " Il vous faudra la refaire en indiquant une valeur plus haute. Je vous conseille de regarder les champs Gas Limit et Gas Used by Transaction sur une transaction valide de même type afin de voir la consommation réelle du smartcontract.

Le contrat EOS_TokenSale utilise plus de 90 000 Gas limite. La transaction est en "Out of Gas"
Cette autre transaction valide sur EOS_TokenSale à utilisé 90 558 de Gas Limit.

Si Gas Price est trop faible ?

Si votre Gas Price est trop faible la transaction sera mise en bas du panier et elle pourra prendre plusieurs jours avant d'être exécuté. Si le Gas est vraiment trop faible, il faudra la re-transmettre en conservant le même numéro de transaction "Nonce" et en indiquant un Gas Price significativement plus haut.

Bien calculer les frais de transaction ou de Gas sur Ethereum
A chaque utilisation d’une Blockchain, que ce soit Bitcoin, Ethereum ou Neo, il est nécessaire de fixer des frais de transaction. Ils servent à payer le mineur et définissent également sa priorité de traitement.