Ethereum et smart contracts · 6 min · démo interactive

Le gas sur Ethereum : calculateur interactif

Le gas mesure le travail, le gwei fixe son prix. Saisis tes valeurs et décompose chaque transaction entre ce qui est brûlé et ce qui part au validateur.

L’idée en une phrase

Le gas est l'unité qui mesure le travail qu'une transaction demande au réseau Ethereum, et tu paies ce travail à un prix qui varie selon l'affluence.

Le coût final se calcule toujours pareil : quantité de gas × prix du gas. La quantité dépend de ce que fait ta transaction. Le prix, exprimé en gwei, dépend de la demande sur le réseau. Un gwei vaut un milliardième d'ETH.

La démo

Calculer le coût d'une transaction

Les valeurs par défaut sont des exemples à remplacer, pas des données de marché. Cette page ne lit aucun cours en direct.

0,4620 €coût réel à ton prix
0,000231 ETHcoût réel en ETH
0,00021 ETHbase fee brûlée
0,000021 ETHpourboire au validateur
0,00042 ETHréservé au maximum
0,000189 ETHnon dépensé, rendu
Calcul : 21 000 gas × (10 + 1) gwei = 231 000 gwei. Prix de l'ETH saisi par toi : 2 000,00 €, jamais un cours en direct.

Faire varier la base fee

+12,5 %variation par bloc
32,47 gweiaprès 10 blocs
1 111,99 gweiaprès 40 blocs

Exemple sans JavaScript, avec des valeurs inventées : un transfert simple consomme 21 000 gas. À 10 gwei de base fee et 1 gwei de priority fee, il coûte 21 000 × 11 = 231 000 gwei, soit 0,000231 ETH. Si tu saisis 2 000 € pour 1 ETH, cela donne 0,462 €. Sur ce total, 0,00021 ETH sont brûlés et 0,000021 ETH vont au validateur.

Intégrer cette démo

Copie ce code sur ton site, ton cours ou ton blog. La démo reste gratuite ; garde simplement le lien vers protocole.org.

Pourquoi ça compte

Tu veux échanger un jeton sur un AMM. Ton wallet annonce un coût maximum, tu confirmes, et la transaction te coûte moins que prévu. Une autre fois, un contrat échoue et tu paies quand même. Sans le mécanisme du gas, ces deux situations semblent arbitraires. Elles sont pourtant la conséquence directe de quelques règles simples.

Le gas a aussi un rôle de sécurité. Un smart contract peut contenir n'importe quelle boucle, et une machine partagée ne peut pas se permettre de tourner sans fin. Chaque instruction de l'EVM consomme du gas. Une boucle infinie épuise le gas disponible et s'arrête. Le code d'un attaquant est donc limité par ce que son auteur peut payer.

Le code

Le code calcule en wei, sans virgule, comme l'EVM. Modifie gasUtilise au-delà de gasLimit pour voir l'échec, ou baisse maxFee sous la base fee.

Clique sur Lancer pour exécuter ce code dans ton navigateur.

Ce qui se passe vraiment

Commence par les champs. Le gas consommé vient de l'exécution. Un transfert simple d'ETH vers une adresse sans code coûte exactement 21 000 gas. Les autres valeurs du menu sont des ordres de grandeur, car le coût réel dépend du contrat et de son état. Le gas limit est la quantité maximale que tu autorises.

Depuis la mise à niveau London d'août 2021, l'EIP-1559 sépare le prix en deux. La base fee est fixée par le protocole, identique pour toutes les transactions d'un bloc, et elle est brûlée : ces ETH disparaissent de la circulation. La priority fee est un pourboire que tu proposes au validateur qui construit le bloc. Lui seul la reçoit.

Le champ max fee est ton plafond par unité de gas. Le prix réel est le plus petit de deux nombres : ton plafond, ou la base fee plus le pourboire. Avec un plafond à 20 gwei, tu réserves 21 000 × 20 = 420 000 gwei, mais tu n'en paies que 231 000. Le reste n'est jamais prélevé, d'où la ligne « rendu ». Descends le plafond à 8 gwei : la base fee de 10 gwei ne passe plus, la transaction attend qu'elle baisse.

Mets le gas consommé à 30 000 avec un gas limit de 21 000 : la démo affiche un échec. L'exécution s'arrête quand le gas est épuisé, l'état est annulé, mais le travail déjà fourni reste payé.

La seconde partie montre pourquoi la base fee bouge. Le protocole vise des blocs remplis à 50 % de leur capacité. Au-dessus de cette cible, la base fee monte pour le bloc suivant, au maximum de 12,5 %. En dessous, elle baisse, au maximum de 12,5 % aussi. La formule est : variation = base × (gas utilisé − cible) ÷ cible ÷ 8. Curseur à 100 % : 1,1256 ≈ 2,03, donc la base fee double en 6 blocs, soit environ 72 secondes à 12 secondes par bloc. Curseur à 50 % : elle ne bouge pas.

Le calculateur simplifie deux points : il ne gère pas les arrondis en wei, et les remboursements de certaines opérations de stockage n'y figurent pas. Le prix en euros n'est que le résultat de ce que tu as saisi.

Dans la vraie vie

Le gas reflète le coût pour le réseau. Une addition (ADD) coûte 3 gas. Écrire une valeur dans un emplacement de stockage vide coûte plus de 20 000 gas, car tous les nœuds devront la conserver. Un calcul reste donc peu cher, tandis que stocker reste cher. C'est pour cela qu'un transfert de token coûte plusieurs fois plus qu'un transfert simple. Une transaction de déploiement de contrat part d'une base de 53 000 gas au lieu de 21 000.

Les données envoyées dans une transaction se paient aussi au gas, avec un tarif moindre pour les octets nuls. Les layer 2 regroupent des centaines de transactions pour en partager le coût, ce qui explique leurs frais bas.

Le mécanisme ne fixe pas un prix bas. L'EIP-1559 rend les frais plus prévisibles, mais une forte demande fait monter la base fee sans limite. Comparé à l'enchère des frais Bitcoin, le pourboire joue le rôle de priorité, tandis que la base fee est un prix affiché par le protocole.

La brûlure a un effet monétaire : elle retire de l'ETH de la circulation, pendant que les validateurs en reçoivent de nouveaux en récompense de leur staking. Selon l'activité, l'offre peut monter ou baisser. Ce n'est pas un mécanisme de valorisation, et cette page ne dit rien de l'évolution du prix.

Ce qui peut mal tourner

  • Prendre un exemple pour un cours. Le prix de l'ETH et les gwei de cette page sont saisis ou inventés. Pour une vraie transaction, c'est ton wallet qui donne l'estimation du moment.
  • Fixer un gas limit trop serré. L'exécution échoue et tu perds le gas consommé. Les wallets ajoutent une marge. Un gas limit élevé ne coûte rien de plus, car seul le gas consommé est payé.
  • Confondre gas limit et prix. Le gas limit est une quantité, la max fee est un tarif. Les deux multipliés donnent ce qui est réservé, pas ce qui est payé.
  • Signer sans regarder le plafond. Un wallet ou un site modifié peut proposer une max fee absurde. Compare le coût maximum affiché à ce que tu attends.
  • Rester bloqué. Une max fee inférieure à la base fee laisse la transaction en attente et bloque le nonce du compte. Il faut la remplacer, au même nonce, avec des frais plus élevés.
  • Envoyer vers un contrat comme vers une adresse. Un envoi vers un contrat peut consommer plus que 21 000 gas, ou être refusé. Vérifie la nature de l'adresse.
  • Payer un échec en boucle. Relancer un contrat qui échoue fait payer à chaque tentative. Lis d'abord le message d'erreur, surtout après une approbation de token manquante.

Teste-toi

1. Tu envoies un transfert simple avec base fee 20 gwei, priority fee 2 gwei, max fee 50 gwei. Combien paies-tu ?
2. Qui reçoit la base fee ?
3. Les blocs sont pleins à 100 % de leur capacité. Que fait la base fee au bloc suivant ?