Ethereumwei, Gwei et ETH, convertis avec une arithmétique entière exacte

Convertisseur Gwei

Saisissez dans l'un des trois champs, les deux autres suivent. Chaque conversion passe par le wei sous forme de BigInt, si bien que les 18 décimales survivent à l'aller-retour au lieu d'être aplaties par la virgule flottante.

Convertir
Un champ par unité. Le champ dans lequel vous tapez reste exactement tel que vous l'avez écrit.
Essayer :
En wei
1000000000
Les trois unités
Une même monnaie, trois échelles, fixées par le protocole.
wei

La plus petite unité, et la seule dans laquelle l'EVM travaille réellement. Les soldes, les montants de transaction et les prix du gas sont tous des entiers en wei ; il n'existe rien en dessous, donc aucun arrondi n'a lieu au niveau du protocole.

Gwei

109 wei, aussi appelé nanoether. Les prix du gas se situent dans cette plage, ce qui explique pourquoi l'unité est utilisée au quotidien : 20 Gwei se lit mieux que 20000000000 wei et que 0,00000002 ETH.

ETH

1018 wei. Ce que les utilisateurs voient dans un wallet, et l'unité dans laquelle presque aucune interface ne calcule réellement.

Lisez le prix du gas en direct depuis une API

7 jours d'essai, sans carte bancaire, sans KYC.

Démarrer l'essai gratuit

Les trois unités, et l'arithmétique qui les relie

Ethereum a une seule monnaie et plusieurs noms pour ses échelles. Deux d'entre eux comptent en pratique :

Unité En wei En ETH Autre nom
wei 1 0,000000000000000001
Gwei 1 000 000 000 0,000000001 nanoether, shannon
ETH 1 000 000 000 000 000 000 1 ether

Convertir revient à déplacer la virgule, pas à faire une multiplication nécessitant une bibliothèque. Gwei vers ETH déplace la virgule de neuf positions vers la gauche, ETH vers wei la déplace de dix-huit positions vers la droite. C'est en le faisant à la main que naissent les erreurs : neuf zéros et dix-huit zéros se ressemblent au premier coup d'œil, et une erreur de trois positions transforme un prix de gas de 20 Gwei en 20 mégawei.

Pourquoi Gwei existe tout court

L'EVM ne connaît pas de type fractionnaire. Les soldes, les valeurs de transaction et les prix du gas sont tous des entiers non signés en wei, parce que les entiers sont la seule chose sur laquelle le consensus peut s'accorder exactement. Cette décision est juste, et elle rend les prix du gas illisibles : un prix normal est un nombre de dix ou onze chiffres en wei, et une fraction à cinq décimales en ETH. Aucune des deux échelles ne convient à ce nombre.

Gwei se situe entre les deux, à 109 wei, et les prix du gas s'y expriment en un ou deux chiffres. C'est la seule raison pour laquelle cette unité est utilisée au quotidien. Ce n'est ni un token distinct ni une dénomination de Layer 2, seulement une échelle qui correspond à la taille des nombres que les gens citent. Les noms shannon et nanoether désignent la même chose et n'apparaissent presque jamais en dehors des tableaux d'unités.

La même logique s'applique en sens inverse pour les soldes. Personne n'exprime un wallet en wei, et personne n'exprime un prix de gas en ETH. Chaque échelle est utilisée là où ses nombres ont un nombre de chiffres lisible, ce qui explique pourquoi une interface qui touche aux deux ne cesse de convertir entre elles.

Pourquoi ce convertisseur utilise BigInt

Un number JavaScript est un double, exact pour les entiers seulement jusqu'à 253 − 1, soit 9 007 199 254 740 991. C'est environ 9 × 1015, en dessous des 1018 wei que contient un seul ETH. Au-delà de cette limite, les résultats sont silencieusement faux plutôt que rejetés :

1.1 * 1e18            // 1100000000000000100  — off by 100 wei
Number("1234567890123456789")
                      // 1234567890123456800  — last two digits lost
0.1 + 0.2             // 0.30000000000000004

Aucun de ces cas ne lève d'erreur. Ils renvoient un nombre à l'apparence plausible dont les derniers chiffres sont remplacés par ce sur quoi la représentation binaire est tombée. Dans un convertisseur, c'est gênant ; dans du code qui construit une valeur de transaction, c'est un bug que l'on découvre en production, quand un transfert déplace un montant légèrement différent de celui affiché.

La solution consiste à ne jamais laisser une valeur en wei devenir un float. Cette page analyse votre saisie comme une chaîne décimale, déplace la virgule par manipulation de chaîne, et conserve le résultat sous forme de BigInt. Saisir 18 décimales arbitraires dans le champ ETH renvoie exactement ces chiffres dans le champ wei. Le seul cas où des chiffres sont perdus, c'est lorsque vous saisissez plus de décimales que l'unité n'en comporte, et la page le signale au lieu d'arrondir en silence.

La même discipline s'applique dans votre propre code. ethers propose parseEther et formatUnits, viem propose parseEther et formatGwei, et les deux renvoient des valeurs BigInt pour la même raison. Un value / 1e18 écrit à la main fonctionne, jusqu'au montant où il ne fonctionne plus.

Le coût du gas dans les trois unités

C'est avec le gas que la conversion est réellement utilisée, il est donc utile de voir un même calcul dans les trois échelles. Un simple transfert d'ETH coûte un montant fixe de 21 000 gas. À un prix de gas de 20 Gwei :

21000 gas × 20 Gwei  = 420,000 Gwei
                     = 420,000,000,000,000 wei
                     = 0.00042 ETH

Le montant de gas dépend de ce que fait la transaction ; le prix du gas dépend de la demande d'espace de bloc à cet instant. Depuis EIP-1559, le prix se scinde en une base fee, qui est brûlée, et une priority fee, qui revient au proposeur du bloc. Les deux sont exprimées par unité de gas, et toutes deux sont des valeurs en wei en interne, ce qui explique pourquoi les paramètres de transaction Chaingateway gasprice, maxFeePerGas et maxPriorityFeePerGas prennent comme exemple la valeur 1000000000 plutôt que 1. C'est un Gwei écrit en wei.

Faites attention à l'échelle quand vous relisez un prix : GET /api/v2/ethereum/gasprice renvoie un unique champ gasPrice dont la valeur d'exemple dans la référence est 12.28, un chiffre à l'échelle Gwei et non un entier en wei. Le renvoyer tel quel dans une transaction en tant que gasprice reviendrait à demander 12 wei par gas. Convertissez d'abord, puis multipliez par le gas que consomme votre transaction.

Le reste des endpoints Ethereum, y compris les transferts ERC-20 et les webhooks de transaction, est décrit sur la page API Ethereum. Les calculateurs associés se trouvent sous Outils.

Questions fréquentes

Combien de wei y a-t-il dans 1 ETH ?

10^18, soit 1 000 000 000 000 000 000 wei. Cet exposant est fixé par le protocole et n'a jamais changé.

Combien de wei y a-t-il dans 1 Gwei ?

10^9, soit 1 000 000 000 wei. Un ETH contient 10^9 Gwei, donc le Gwei se situe exactement à mi-chemin entre le wei et l'ETH sur une échelle logarithmique.

Comment convertir des wei en ETH à la main ?

Déplacez la virgule de dix-huit rangs vers la gauche, en complétant avec des zéros si le nombre fait moins de dix-neuf chiffres. 420 000 000 000 000 wei devient 0,00042 ETH. Convertir des Gwei en ETH est la même opération avec neuf rangs.

Le Gwei est-il la même chose que le nanoether ?

Oui. Gwei, nanoether et shannon sont trois noms pour 10^9 wei, soit 10^-9 ETH. Gwei est le nom resté en usage, parce que les prix du gas sont généralement exprimés dans cette unité.

Pourquoi utilise-t-on le Gwei plutôt que l'ETH pour les prix du gas ?

Une question de nombre de chiffres. Un prix du gas de 20 Gwei représente 20 000 000 000 wei ou 0,00000002 ETH, et aucun des deux ne se lit d'un coup d'œil. Le Gwei ramène les prix du gas courants à un ou deux chiffres.

Puis-je convertir des wei en ETH avec un nombre JavaScript classique ?

Pas de façon fiable. Un double n'est exact pour les entiers que jusqu'à 9 007 199 254 740 991, bien en dessous des 10^18 wei que contient un ETH, donc les grandes valeurs perdent leurs derniers chiffres sans qu'aucune erreur ne soit levée. 1.1 * 1e18 renvoie 1100000000000000100, cent wei d'écart. Utilisez BigInt, ou une librairie qui renvoie un BigInt.

Que coûte une transaction en ETH si le prix du gas est en Gwei ?

Multipliez le gas consommé par le prix du gas, puis convertissez. Un simple transfert consomme 21 000 gas ; à 20 Gwei cela fait 420 000 Gwei, soit 0,00042 ETH. Les appels de contrat consomment davantage de gas, et le chiffre de 21 000 est un plancher plutôt qu'une valeur typique.

Ce convertisseur arrondit-il les valeurs ?

Non. Chaque valeur est analysée comme une chaîne décimale et conservée en BigInt en wei, si bien que les 18 décimales survivent. Le seul cas où des chiffres sont supprimés est une saisie avec plus de décimales que l'unité n'en compte, comme une fraction dans le champ wei, et la page le signale au lieu d'arrondir silencieusement.