Ethereumwei, Gwei ed ETH, convertiti con aritmetica intera esatta

Convertitore Gwei

Digita in uno qualsiasi dei tre campi e gli altri due si aggiornano. Ogni conversione passa attraverso il wei come BigInt, così tutti e 18 i decimali sopravvivono al viaggio invece di essere appiattiti dal floating point.

Converti
Un campo per unità. Il campo in cui digiti resta esattamente come lo hai scritto.
Prova:
In wei
1000000000
Le tre unità
Stessa valuta, tre scale, fissate dal protocollo.
wei

L'unità più piccola e l'unica in cui lavora la EVM. Saldi, valori di transazione e prezzi del gas sono tutti interi in wei; non c'è nulla al di sotto, quindi a livello di protocollo non avviene alcun arrotondamento.

Gwei

109 wei, scritto anche come nanoether. I prezzi del gas rientrano in questo intervallo, ed è proprio per questo che l’unità è di uso quotidiano: 20 Gwei si legge meglio di 20000000000 wei e di 0,00000002 ETH.

ETH

1018 wei. Ciò che gli utenti vedono in un wallet, e l’unità in cui quasi nessuna interfaccia calcola realmente.

Leggi il prezzo del gas in tempo reale da un'API

7 giorni di prova, senza carta di credito, senza KYC.

Inizia la prova gratuita

Le tre unità, e l'aritmetica tra loro

Ethereum ha una sola valuta e diversi nomi per le sue scale. Due di questi contano nella pratica:

Unità In wei In ETH Detta anche
wei 1 0,000000000000000001
Gwei 1.000.000.000 0,000000001 nanoether, shannon
ETH 1.000.000.000.000.000.000 1 ether

Convertire è uno spostamento decimale, non una moltiplicazione per cui serve una libreria. Da Gwei a ETH la virgola si sposta di nove posizioni a sinistra, da ETH a wei di diciotto posizioni a destra. Farlo a mano è dove nascono gli errori: nove zeri e diciotto zeri si somigliano a colpo d'occhio, e un errore di tre posizioni trasforma un gas price di 20 Gwei in 20 megawei.

Perché esiste il Gwei

L'EVM non ha un tipo frazionario. Saldi, valori delle transazioni e gas price sono tutti interi senza segno in wei, perché gli interi sono l'unica cosa su cui il consenso può accordarsi in modo esatto. Questa scelta è corretta e rende i gas price illeggibili: un prezzo normale è un numero di dieci o undici cifre in wei, e una frazione a cinque decimali in ETH. Nessuna delle due scale si adatta al numero.

Il Gwei si colloca tra le due, a 109 wei, e i gas price lì atterrano su una o due cifre. Questa è l'intera ragione per cui l'unità è di uso quotidiano. Non è un token separato, non è una denominazione di Layer 2, è solo una scala che per caso corrisponde alla dimensione dei numeri che le persone citano. I nomi shannon e nanoether indicano la stessa cosa e compaiono raramente fuori dalle tabelle di unità.

La stessa logica vale al contrario per i saldi. Nessuno cita un wallet in wei, e nessuno cita un gas price in ETH. Ogni scala viene usata dove i suoi numeri hanno un numero di cifre leggibile, motivo per cui un'interfaccia che tocca entrambe continua a convertire tra loro.

Perché questo convertitore usa BigInt

Un numero JavaScript è un double, esatto per gli interi solo fino a 253 − 1, cioè 9.007.199.254.740.991. Sono circa 9 × 1015, meno dei 1018 wei contenuti in un singolo ETH. Oltre quel limite i risultati sono silenziosamente sbagliati invece di essere rifiutati:

1.1 * 1e18            // 1100000000000000100  — sbagliato di 100 wei
Number("1234567890123456789")
                      // 1234567890123456800  — le ultime due cifre perse
0.1 + 0.2             // 0.30000000000000004

Nessuno di questi genera un errore. Restituiscono un numero dall'aspetto plausibile con le cifre basse sostituite da qualunque cosa la rappresentazione binaria abbia prodotto. In un convertitore è un problema; in codice che costruisce il valore di una transazione è un bug che scopri in produzione, quando un transfer sposta un importo leggermente diverso da quello mostrato.

La soluzione è non lasciare mai che un valore in wei diventi un float. Questa pagina analizza il tuo input come stringa decimale, sposta la virgola con manipolazione di stringhe, e conserva il risultato come BigInt. Digitando 18 decimali arbitrari nel campo ETH ottieni esattamente quelle cifre nel campo wei. L'unico caso in cui alcune cifre vengono scartate è quando inserisci più decimali di quanti l'unità ne preveda, e la pagina te lo segnala invece di arrotondare in silenzio.

La stessa disciplina si applica nel tuo codice. ethers ha parseEther e formatUnits, viem ha parseEther e formatGwei, ed entrambi restituiscono valori BigInt per lo stesso motivo. Un value / 1e18 scritto a mano funziona fino all'importo in cui smette di funzionare.

Il costo del gas nelle tre unità

Il gas è dove la conversione viene davvero usata, quindi aiuta vedere un calcolo in tutte e tre le scale. Un semplice transfer ETH costa un gas fisso di 21.000. A un gas price di 20 Gwei:

21000 gas × 20 Gwei  = 420.000 Gwei
                     = 420.000.000.000.000 wei
                     = 0,00042 ETH

La quantità di gas dipende da cosa fa la transazione; il gas price dipende dalla domanda di spazio nel blocco in quel momento. Da EIP-1559 in poi il prezzo si divide in una base fee, che viene bruciata, e una priority fee, che va al block proposer. Entrambe sono quotate per gas, ed entrambe sono valori in wei sotto il cofano, motivo per cui i parametri di transazione Chaingateway gasprice, maxFeePerGas e maxPriorityFeePerGas hanno come esempio il valore 1000000000 invece di 1. È un Gwei scritto in wei.

Fai attenzione alla scala quando leggi un prezzo restituito: GET /api/v2/ethereum/gasprice restituisce un unico campo gasPrice il cui valore d'esempio nel riferimento è 12.28, una cifra in scala Gwei e non un intero in wei. Rimandarla direttamente in una transazione come gasprice equivarrebbe a chiedere 12 wei per gas. Converti prima, poi moltiplica per il gas usato dalla tua transazione.

Il resto degli endpoint Ethereum, inclusi i transfer ERC-20 e i webhook di transazione, sono descritti nella pagina API Ethereum. I calcolatori correlati si trovano in Strumenti.

Domande frequenti

Quanti wei ci sono in un ETH?

10^18, cioè 1.000.000.000.000.000.000 wei. L'esponente è fissato dal protocollo e non è mai cambiato.

Quanti wei ci sono in un Gwei?

10^9, cioè 1.000.000.000 wei. Un ETH contiene 10^9 Gwei, quindi Gwei si trova esattamente a metà tra wei ed ETH su una scala logaritmica.

Come converto wei in ETH a mano?

Sposta la virgola decimale di diciotto posizioni verso sinistra, riempiendo con zeri se il numero è più corto di diciannove cifre. 420.000.000.000.000 wei diventa 0,00042 ETH. Da Gwei a ETH è la stessa operazione con nove posizioni.

Gwei è lo stesso di nanoether?

Sì. Gwei, nanoether e shannon sono tre nomi per 10^9 wei, cioè 10^-9 ETH. Gwei è il nome rimasto in uso, perché i prezzi del gas sono di solito quotati in questa unità.

Perché per i prezzi del gas si usa Gwei invece di ETH?

Numero di cifre. Un prezzo del gas di 20 Gwei corrisponde a 20.000.000.000 wei o a 0,00000002 ETH, e nessuna delle due è leggibile a colpo d'occhio. Gwei riporta i normali prezzi del gas a una o due cifre.

Posso convertire wei in ETH con un normale numero JavaScript?

Non in modo affidabile. Un double è esatto per gli interi solo fino a 9.007.199.254.740.991, ben al di sotto dei 10^18 wei contenuti in un ETH, quindi i valori più grandi perdono le cifre basse senza che venga sollevato alcun errore. 1.1 * 1e18 restituisce 1100000000000000100, cento wei di scarto. Usa BigInt, o una libreria che restituisce BigInt.

Quanto costa in ETH una transazione se il prezzo del gas è in Gwei?

Moltiplica il gas usato per il prezzo del gas, poi converti. Un semplice transfer usa 21.000 gas; a 20 Gwei sono 420.000 Gwei, cioè 0,00042 ETH. Le chiamate a contratto usano più gas, e la cifra di 21.000 è il minimo, non un valore tipico.

Questo convertitore arrotonda?

No. Ogni valore viene interpretato come stringa decimale e conservato come BigInt in wei, così tutti e 18 i decimali sopravvivono. L'unico caso in cui alcune cifre vengono scartate è un input con più decimali di quanti l'unità ne preveda, come una frazione nel campo del wei, e la pagina lo segnala invece di arrotondare in silenzio.