Le gas, qu'on peut traduire en français par gaz ou essence, est une unité virtuelle présente dans Ethereum permettant d'organiser le paiement des frais de transaction. Par extension, le même concept est utilisé dans bon nombre de plateformes de smart contracts.

Si vous avez déjà effectué un transfert sur Ethereum, vous avez peut-être remarqué la présence de paramètres à modifier comme la limite de gaz (gas limit) ou le prix du gaz (gas price), sans comprendre quel était le lien avec les frais payés en éthers (ETH). Dans cet article, nous vous expliquons tout sur le fonctionnement du système de gaz.

 

Le gaz : effectuer des opérations sur le réseau Ethereum

Comme vous le savez peut-être, Ethereum est semblable à un ordinateur mondial décentralisé permettant d'exécuter des programmes appelés smart contracts. Il repose sur une machine virtuelle, appelée Ethereum Virtual Machine ou EVM, qui fonctionne simultanément sur chacun des nœuds d'un réseau pair-à-pair.

Ainsi, chacun des ordinateurs connectés au réseau Ethereum exécute toutes les opérations traitées par le système. Les opérations sont incluses dans les transactions. Afin d'empêcher les attaques par déni de service, ces opérations demandent des frais, frais qui sont payés grâce au système du gaz.

 

Qu'appelle-t-on le coût en gaz ? (gas cost)

Le gaz est une unité dans Ethereum qui sert d'intermédiaire entre l'utilisateur qui réalise une transaction et le validateur (mineur) qui confirme cette transaction. Le gaz est entièrement virtuel et personne ne peut en détenir ou en échanger : l'utilisateur paie les frais en éthers (ETH) et le validateur récupère également ces frais en éthers.

Le gaz est « acheté » (en éthers) au moment de la validation de la transaction, puis il est « consommé » comme carburant pour la machine virtuelle. Le validateur qui inclut la transaction dans son bloc récupère l'éther utilisé pour acheter le gaz.

Chaque opération dans Ethereum a un coût fixe en gaz. Celui-ci est calculé en fonction de la ressource en calcul nécessaire par rapport aux autres opérations.

Un transfert d'éther (ETH) entre deux comptes consomme ainsi toujours 21 000 gaz. Du côté de l'exécution des smart contracts, chaque opération a son coût propre, par exemple :

Nom Description Coût en gaz
ADD Réalise l'addition de deux nombres entiers. 3
MUL Réalise la multiplication de deux nombres entiers. 5
SHA3 Réalise le hachage d'une information par la fonction Keccak-256 30 + 6 × (taille de l'information en multiples de 256)
BALANCE Obtient le solde d'un compte donné. 400

Si vous voulez connaître le coût en gaz de chaque opération, il existe des listes comme celle-ci.

 

Qu'appelle-t-on la limite de gaz ? (gas limit)

Le gaz fait en sorte d'éviter les boucles et les récursions infinies dans Ethereum. C'est pour cela que l'on dit parfois que l'EVM est quasi Turing-complète.

Lorsqu'un contrat est exécuté par la machine virtuelle d'Ethereum, il consomme du gaz. Lorsqu'il ne dispose plus de gaz, il arrête de fonctionner.

Il existe donc un paramètre de la transaction, la limite de gaz ou gas limit, qui correspond à la quantité maximale de gaz que l'utilisateur est prêt à utiliser.

Puisque les contrats peuvent s'appeler les uns les autres, il est en effet souvent très difficile de savoir à l'avance combien de gaz va consommer une transaction : il faut l'estimer.

Trois situations peuvent se présenter :

  • L'utilisateur indique une limite trop basse. L'exécution se fait mais ne peut pas aller au bout, la transaction est donc invalidée mais les frais sont conservés par le validateur.
  • L'utilisateur estime correctement le coût en gaz et indique une limite égale. Ce cas de figure arrive régulièrement lorsqu'il s'agit d'effectuer un transfert d'éthers entre deux comptes : cela ne sert à rien d'indiquer une limite de gaz autre que 21 000 puisque le coût est fixe.
  • L'utilisateur communique une limite de gaz trop haute. Dans ce cas, tout se passe comme prévu et le gaz inutilisé est remboursé (en ETH) à l'utilisateur. C'est pour cela qu'il est conseillé, lorsqu'on ignore combien de gaz va consommer notre transaction, de mettre une limite haute.

Limite de gaz gas limit

Qu'appelle-t-on le prix du gaz ? (gas price)

Le prix du gaz est le second paramètre à spécifier lors de l'envoi d'une transaction. Comme son nom l'indique, il s'agit du prix en éthers auquel l'utilisateur achète le gaz.

Le prix du gaz est généralement exprimé en gigaweis (Gwei). Le wei est à Ethereum ce que le satoshi est à Bitcoin : il s'agit de la plus petite sous-unité de l'éther, étant égale à un attoéther soit 10-18 ETH. Un Gwei correspond à un milliardième d'éther. En résumé :

1 ETH = 1 000 000 000 Gweis
      = 1 000 000 000 000 000 000 weis

Le prix du gaz permet d'augmenter les frais payés par une transaction, et donc la priorité avec laquelle elle sera traitée par les validateurs (mineurs). En effet, puisqu'un bloc est limité à une certaine quantité de gaz consommé (12,5 millions de gaz en juillet 2020), celui-ci ne peut pas accueillir toutes les transactions en attente, et les validateurs sélectionnent les transactions les plus rentables en priorité.

Les frais payés sont calculés par la formule :

frais (Gwei) = coût en gaz (gaz consommé) × prix du gaz (Gwei)

Par exemple, pour une transaction classique (21 000 gaz consommés) et un prix du gaz de 30 Gwei, les frais seront de 630 000 Gweis c'est-à-dire 0,00063 ETH, soit 17 centimes d'euro au prix actuel (juillet 2020).

 

Intérêt du gaz

L'intérêt du système de gaz est multiple.

Premièrement, en tant que système imposant aux transactions de payer des frais, il permet de limiter les attaques par déni de service : afin de paralyser le réseau avec un grand nombre de transactions, un attaquant devrait en effet dépenser beaucoup d'argent. De plus, en faisant cela, il ferait monter le niveau général des frais, et ne pourrait pas soutenir son attaque sur une longue période de temps.

Deuxièmement, le gaz permet de décorréler les coûts de fonctionnement du réseau Ethereum du prix de l'éther. Contrairement au système des frais de transactions sur Bitcoin qui sont mesurés par rapport au poids d'une transaction (en satoshis par octet virtuel), le modèle Ethereum est de donner un coût fixe à chaque opération de sorte à avoir une estimation aussi réaliste que possible du traitement réalisé par les nœuds.

Troisièmement, grâce à la limite de gaz, ce modèle permet d'avoir une machine virtuelle pouvant faire marcher des programmes généralistes tout en arrêtant les boucles infinies.

 

Comment bien paramétrer le gaz ?

Bien que le calcul soit très souvent réalisé automatiquement par les portefeuilles, les utilisateurs doivent parfois modifier les paramètres de la limite de gaz et du prix du gaz eux-mêmes.

 

Calculer le bonne limite de gaz pour une transaction

Pour un transfert d'éther, comme on l'a dit, le coût en gaz est de 21 000. Vous n'avez donc pas à changer la limite de gaz : en effet, même si vous indiquez une limite de, disons, 50 000, les 29 000 gaz non consommés vous sont remboursés.

Pour un transfert de jetons ERC-20, le coût en gaz peut varier, allant de 25 000 à 150 000 gaz. Les portefeuilles règlent généralement ce paramètre de manière automatique, donc vous n'aurez pas à vous en faire. Si jamais il arrive que ce ne soit pas le cas, n'hésitez pas à indiquer une limite de gaz haute : le montant non consommé vous sera renvoyé.

Pour une interaction avec un smart contract, comme celui gérant une ICO par exemple, le coût en gaz n'est pas toujours connu à l'avance. Veillez bien à vous renseigner auprès des développeurs du smart contract qui indiquent généralement ce genre de chose dans leurs communiqués officiels.

⚠ Il ne sert à rien d'augmenter la limite de gaz pour faire en sorte que votre transaction soit traitée plus rapidement. Le paramètre à modifier pour cela est le prix du gaz (voir ci-dessous).

 

Estimer le prix du gaz correctement

Le prix du gaz (mesuré en Gwei) est la manière dont l'utilisateur modifie le niveau de frais payés par sa transaction, et par conséquent la priorité avec laquelle celle-ci va être traitée par le réseau. Plus vous serez pressé, plus vous aurez à augmenter ce paramètre pour que votre transaction passe avant les autres. Cela peut se révéler crucial lors des ICO populaires qui ne durent que peu de temps, comme celle du Basic Attention Token en mai 2017.

Bien souvent, votre portefeuille estime directement le montant des frais, et peut vous proposer des alternatives pour que vous choisissiez le montant correspondant à votre usage. Metamask propose ainsi trois options de frais : slow (lent), average (moyen) et fast (rapide).

Si vous désirez calculer vous-même le prix optimal, il existe un site web donnant une estimation du temps d'attente selon le niveau de prix : ETH Gas Station. Sur la page principale du site, vous aurez trois indications de prix :

  • Safe Low : le nombre minimum de Gwei pour que la transaction soit confirmée en moins de 30 minutes.
  • Standard : le nombre minimum de Gwei pour que la transaction soit confirmée en moins de 5 minutes.
  • Fast : le nombre minimum de Gwei pour que la transaction soit confirmée en moins de 2 minutes.

Sur une autre page, vous aurez un tableau des temps de confirmation moyens pour chacun des niveaux de prix : https://ethgasstation.info/predictionTable.php

Quoi qu'il en soit, le prix que vous indiquerez dépendra de votre préférence : désirez-vous économiser en frais de transaction quitte à attendre plus longtemps, ou voulez-vous que votre transaction soit confirmée très vite quitte à payer beaucoup de frais ?

 

Petite parenthèse : le gas du réseau Neo

Avant de conclure, il faut souligner qu'une autre plateforme de smart contract, appelée Neo, utilise également ce terme dans un sens différent. La différence est que le gas de Neo (GAS) est ce que l'éther à Ethereum : l'unité de compte centrale de la plateforme qui a un cours sur le marché et qui permet de payer les frais et de récompenser les validateurs.

Sur la plateforme, il existe un deuxième jeton qui intervient dans le consensus : c'est le NEO. Celui-ci correspond à une sorte d'action, en permettant de sélectionner les validateurs par preuve d'enjeu et en donnant des dividendes en GAS à chaque détenteur de jetons NEO.

👉 Si vous voulez appronfondir le sujet, nous vous invitons à consulter notre présentation : Qu'est-ce que le NEO et comment en acheter ?

 

Le mot de la fin

Nous espérons que ce petit article sur le gaz du réseau Ethereum vous aura permis d'en apprendre plus sur le sujet. Comme vous avez pu le constater, ce n'est pas bien compliqué à comprendre.

Aujourd'hui, lorsque vous effectuez des opérations, un montant de gaz et son prix en Gwei associé sont insérés par défaut. De ce fait, la plupart du temps, vous n'aurez pas vraiment de questions à vous poser sur les montants à insérer.

Il vous sera toutefois permis de modifier ces valeurs à votre guise. Cela peut être utile quand vous avez besoin que votre paiement soit envoyé au plus vite, ou au contraire si vous souhaitez faire des économies sur les frais dans le cas où vous n'êtes pas pressé.

 

Merci à Benjamin M. pour sa participation à cet article.

A propos de l'auteur : Ludovic Lars

twitter-soothsayerdatatwitter-soothsayerdata

Je suis fasciné par les cryptomonnaies et par l’impact qu’elles pourraient avoir sur nos vies. De formation scientifique, je m’attache à décrire leur fonctionnement technique de la façon la plus fidèle possible. Sur Cryptoast, je me propose de vous aider à mieux comprendre comment fonctionnent les cryptomonnaies (principalement Bitcoin, Bitcoin Cash et Ethereum) et quels sont les enjeux qui animent cet écosystème fascinant.
Tous les articles de Ludovic Lars.

guest
4 Commentaires
Inline Feedbacks
View all comments
Ripou

"Un wei représente la plus petite unité divisible de l’Ethereum, comme un satoshi représente la plus petite fraction d’un Bitcoin. Un gwei représente un milliard de wei. Un Ethereum est divisible en un milliard de gwei." Donc si je vous suis, 1 ETH = 1 milliard de milliards de wei. C'est ça ? Donc 1 ETH = 1 000 000 000 gwei = 1 000 000 000 000 000 000 wei. On est d'accord ? Pour revenir à ma précédente question, je paye donc 100 000 gas à hauteur de 10 Gwei, c'est à dire 1 000 000 de Gwei.… Read more »

Robin Berné

Bonjour, c’est cela exactement ! Plus vous allez mettre un montant élevé de Gwei plus votre transaction / action va être réalisée rapidement. Vous pouvez également choisir de mettre moins de Gwei mais votre transaction sera plus longue (ou non prise en compte)
On en parle rapidement ici : https://cryptoast.fr/tutoriel-myetherwallet/#frais-gas

Ripou

Merci pour votre réponse Robin.

Ripou

Merci pour cet article !
Mais du coup le prix réel d'un gas c'est combien ?
Dans l'appli ledger Live, ils donnent un montant de gas par défaut de 100 000, et non pas 21 000. Donc admettons que pour transférer 1ETH, je paye 100 000 gas à hauteur de 10 Gwei (je ne comprends même pas ce que j'écris...), combien je paierai concrètement en ETH ?
Est-ce que ça dépend aussi du montant total du transfert ?
Merci de me répondre, je suis largué ^^'