Come si calcolano le commissioni gas di Ethereum: base fee, priority fee e limite di gas
Scopri cosa indicano unità di gas, limite di gas, base fee, priority fee e commissione massima su Ethereum, poi calcola il costo effettivo di una transazione.
In questa guidaIl gas misura il calcolo, non l'importo che invii
Breve sintesi
Le commissioni gas di Ethereum si calcolano moltiplicando il gas effettivamente utilizzato da una transazione per il prezzo effettivo del gas nel blocco che la include. Il protocollo stabilisce e brucia la base fee; la priority fee può andare al validatore. La commissione massima è un tetto, non necessariamente il prezzo che pagherai.
Il gas misura il calcolo, non l'importo che invii
Su Ethereum, il gas è l'unità usata per misurare il lavoro computazionale necessario all'EVM per elaborare una transazione. Un semplice trasferimento di ETH richiede un lavoro relativamente limitato; trasferire un token o eseguire varie condizioni di uno smart contract può richiederne di più. Due transazioni che inviano la stessa quantità di ETH possono quindi usare quantità diverse di gas se svolgono operazioni diverse.
Le unità di gas descrivono la quantità di lavoro. Il prezzo del gas indica quanto ETH offri per ogni unità. Il prodotto dei due valori determina la commissione. Il limite di gas è il numero massimo di unità che la transazione può consumare, mentre maxFeePerGas è il tetto del prezzo per unità. Questi campi non sono varianti intercambiabili di un'unica “commissione massima”.
Questa guida riguarda una transazione EIP-1559 standard sulla rete principale Ethereum. Altre blockchain e reti layer 2 possono avere strutture delle commissioni, asset di pagamento ed etichette diverse. Non applicare automaticamente i termini di Ethereum a ogni rete. La guida al gas di Ethereum.org e la guida alle transazioni definiscono i campi.
Il gas utilizzato dipende dal lavoro svolto dalla transazione
L'EVM assegna costi in gas ai calcoli e alle modifiche dello stato. Una chiamata a un contract può aggiungere l'esecuzione di funzioni, letture o scritture nell'archiviazione e registrazioni di eventi, operazioni non necessarie per un trasferimento semplice. Più operazioni o un percorso di esecuzione più lungo possono consumare più gas. Il gas utilizzato non si calcola moltiplicando la quantità di ETH inviata o il prezzo di mercato di un token.
Un trasferimento di ETH, un trasferimento di token e una chiamata a una dapp eseguono operazioni diverse. Le chiamate ai contract possono eseguire funzioni aggiuntive e leggere o aggiornare lo storage, quindi possono consumare più gas di un semplice trasferimento. Per una transazione inclusa, la ricevuta della transazione riporta il gas effettivamente utilizzato.
Ethereum.org indica 21.000 unità di gas come esempio per un trasferimento standard di ETH. È un riferimento per un trasferimento semplice, non un limite di gas riutilizzabile per le chiamate ai contract, il cui lavoro dipende dalle funzioni eseguite e dall’accesso allo storage.
Il gas di rete è diverso dalla commissione di prelievo di un servizio. Un exchange può aggiungere un costo operativo o applicare un proprio tariffario. Il gas on-chain paga le risorse computazionali elaborate dalla rete. Se la schermata di prelievo mostra un unico importo, verifica se include sia una commissione della piattaforma sia il costo della rete.
Il limite di gas e il gas utilizzato sono valori diversi
Il limite di gas (gasLimit) è il numero massimo di unità di gas che la transazione è autorizzata a consumare. Il gas utilizzato (gasUsed) è la quantità consumata effettivamente al termine dell'esecuzione. Impostare un limite più alto non significa che tutte le unità previste saranno addebitate. Per una transazione inclusa, la commissione dipende dal gas effettivamente consumato e dal prezzo effettivo del gas; le unità non utilizzate non vengono consumate.
Se la transazione stessa esaurisce il gas durante l’esecuzione, viene consumato l’intero limite di gas e la transazione non riesce. Le modifiche allo stato vengono annullate, ma il calcolo eseguito comporta comunque una commissione. Un limite più alto consente più lavoro, ma aumenta anche l’esposizione al costo massimo del gas: gasLimit × maxFeePerGas. L’addebito effettivo dipende comunque dal gas utilizzato e dal prezzo effettivo.
Il limite di gas è un tetto, non una previsione del consumo effettivo. Non è il prezzo per unità: alzare il prezzo non risolve la mancanza di unità di gas. Se non sai cosa eseguirà una chiamata, consulta le indicazioni ufficiali del wallet o dell’app invece di modificare il limite a caso.
La base fee varia con la domanda di spazio nei blocchi
Per una transazione EIP-1559, la base fee è il prezzo per unità di gas stabilito dal protocollo per un blocco. La commissione massima della transazione deve poter coprire la base fee del blocco che la include. Il protocollo adegua la base fee da un blocco all'altro in base alla quantità di gas usata dal blocco precedente rispetto al suo obiettivo. Può salire o scendere: non è una tariffa fissa permanente.
Il protocollo brucia la quota di base fee relativa al gas effettivamente utilizzato; i validatori non la ricevono come mancia. Poiché la base fee cambia da un blocco all’altro, una transazione in attesa può trovare una base fee diversa al momento dell’inclusione rispetto a quella del momento dell’invio.
Il gwei è una piccola denominazione dell'ETH: 1 gwei equivale a 0,000000001 ETH. Un prezzo del gas più alto aumenta il costo in ETH anche se il consumo resta uguale. Un maggiore consumo di gas aumenta il costo anche se il prezzo per unità non cambia. Entrambi possono modificare il costo in ETH, indipendentemente dal prezzo in dollari dell'ETH.
La priority fee è una mancia che può favorire l'inclusione
La priority fee è una mancia per unità di gas offerta al validatore che include la transazione. Gli utenti competono per lo spazio limitato nei blocchi, quindi una mancia più alta può rendere una transazione più interessante quando le altre condizioni sono simili. Segnala l'urgenza, ma non garantisce l'inclusione in un determinato blocco o entro un tempo preciso.
Una priority fee elevata è distinta dal numero di unità di gas richieste dalla transazione. La priority fee modifica il prezzo per unità; il limite di gas delimita il lavoro consentito. Una chiamata complessa a un contract può comunque fallire se il gas non basta, anche con una mancia alta. Al contrario, un numero sufficiente di unità di gas non aiuta se il limite di prezzo non copre la base fee del blocco.
Per selezionare le transazioni, i validatori considerano lo spazio nei blocchi e anche le altre condizioni. La specifica EIP-1559 assegna ruoli distinti alla base fee e alla priority fee e limita il loro prezzo effettivo combinato alla commissione massima.
La commissione massima è un tetto al prezzo, non il prezzo effettivo
maxFeePerGas è il prezzo massimo per unità che sei disposto a sostenere. maxPriorityFeePerGas è il tetto della mancia per unità che offri. Quando la transazione viene inclusa, il prezzo effettivo è la base fee più la mancia che rientra in entrambi i limiti. La mancia applicata è limitata al valore minore tra maxPriorityFeePerGas e maxFeePerGas - baseFee, perciò il prezzo effettivo non può superare la commissione massima.
Per esempio, supponiamo che la commissione massima sia 30 gwei, la mancia massima 2 gwei e la base fee del blocco 18 gwei. La mancia applicabile può essere di 2 gwei, quindi il prezzo effettivo è 20 gwei. La transazione non paga automaticamente 30 gwei solo perché quello è il massimo. Se la base fee sale a 31 gwei, un limite di 30 gwei non basta per quel blocco e la transazione non può essere inclusa lì.
Quando la base fee si avvicina alla commissione massima, resta meno spazio per la mancia. Anche con un tetto della mancia di 5 gwei, se maxFeePerGas - baseFee è soltanto 1 gwei, la mancia applicata può essere al massimo 1 gwei. Valuta i due limiti insieme alla base fee corrente.

Calcola il costo effettivo e il tetto con un esempio
I valori seguenti sono ipotetici e servono solo a mostrare il calcolo. Supponiamo che una transazione abbia un limite di gas di 30.000 unità, ne utilizzi 24.000, e venga inclusa in un blocco con una base fee di 18 gwei. Impostiamo la mancia massima a 2 gwei e la commissione massima a 30 gwei. La mancia applicata è min(2, 30 - 18) = 2 gwei, quindi il prezzo effettivo è 18 + 2 = 20 gwei.
La commissione gas effettiva è 24.000 × 20 = 480.000 gwei. Poiché 1 ETH equivale a 1.000.000.000 gwei, sono 0,00048 ETH. La quota di base fee è 24.000 × 18 = 432.000 gwei, cioè 0,000432 ETH. La mancia è 24.000 × 2 = 48.000 gwei, cioè 0,000048 ETH. Sommate, le due quote danno la commissione effettiva di 0,00048 ETH.
Moltiplicando l'intero limite di gas per il tetto di prezzo si ottiene 30.000 × 30 = 900.000 gwei, cioè 0,0009 ETH: questo è il limite massimo del costo gas con tali impostazioni, se fossero usati per intero sia il limite sia il prezzo unitario massimo. Non è la commissione effettiva dell'esempio. L'ETH inviato al destinatario è distinto dalla commissione gas. Non considerare il tetto una spesa fissa né la commissione una percentuale del trasferimento. Sono valori illustrativi, non una quotazione in tempo reale.
Anche una transazione non riuscita può consumare gas
Non presumere che la commissione gas venga rimborsata solo perché il wallet mostra “non riuscita”. Se una transazione è inclusa in un blocco e l’esecuzione EVM viene poi annullata, le modifiche allo stato vengono annullate mentre il gas usato per i calcoli continua a comportare un costo. Se è la transazione stessa a esaurire il gas durante l’esecuzione, viene consumato l’intero limite di gas. Il calcolo è avvenuto anche se il risultato desiderato non è stato raggiunto.
Una transazione che non supera i controlli di validità prima dell'inclusione è un caso diverso. Per esempio, un trasferimento ETH inviato con meno gas della quantità richiesta può essere rifiutato prima di entrare in un blocco; in questo caso non viene consumato gas di esecuzione. “Rifiutata prima dell'inclusione” e “inclusa, poi annullata durante l'esecuzione” sono stati diversi.
Controlla l'hash della transazione per verificarne lo stato, il gas utilizzato, il prezzo effettivo del gas e l'esito dell'esecuzione. Il breve messaggio di errore del wallet potrebbe non indicare la causa. Ethereum.org distingue il rifiuto per controlli di validità prima dell'inclusione dalla transazione che esaurisce il gas durante l'esecuzione.
Leggi separatamente limite, prezzo e importo trasferito
Prima di firmare, verifica quale rete stai usando e se la transazione è un semplice trasferimento o una chiamata a un contract. Il wallet può mostrare una commissione stimata, il limite di gas, una stima della base fee, il tetto della priority fee, il tetto della commissione massima e l'importo di ETH o token da inviare. Sono valori che rispondono a domande diverse. Se la schermata mostra solo il costo gas massimo, apri i dettagli per capire a quale tetto si riferisce invece di considerarlo un addebito certo.
I wallet possono compilare le stime delle commissioni, quindi spesso non occorre regolare manualmente ogni campo. Sono stime basate sulle condizioni di rete del momento: non garantiscono quando la transazione sarà inclusa né quale sarà il costo finale. Un limite di prezzo basso può lasciarla in attesa. Aumentare il limite o la mancia senza capire la chiamata può aumentare il costo possibile senza risolvere il problema di fondo. Controlla i valori attuali e firma solo se la transazione ti è chiara.
Questa spiegazione riguarda il percorso standard delle transazioni su Ethereum mainnet. Una layer 2 o un'altra chain può mostrare costi aggiuntivi per i dati, usare un asset diverso per le commissioni o calcolarle in modo differente. Non applicare la formula di Ethereum a un'altra rete senza consultarne la documentazione. Per rete e indirizzo di destinazione, consulta la lista di controllo per i trasferimenti crypto; per il permesso separato che un contract può avere di usare i token, consulta la guida alle approvazioni dei token.
Domande frequenti
Q1Perché una transazione non riuscita può comunque costare ETH?
Se è stata inclusa e l'esecuzione è iniziata, i calcoli possono consumare gas anche se le modifiche allo stato vengono annullate. Controlla l'hash per distinguere un errore di esecuzione da un rifiuto prima dell'inclusione.
Q2`maxFeePerGas` è il prezzo effettivo del gas mostrato dal wallet?
No. È il tetto del prezzo per unità. Il prezzo effettivo combina la base fee del blocco incluso con la mancia che rientra nei limiti, quindi la transazione può pagare meno del massimo.
Q3Le transazioni Ethereum mainnet pagano il gas in ETH?
Le transazioni standard su Ethereum mainnet pagano il gas in ether, l'asset nativo della rete. Se un wallet mostra un altro token o uno sponsor terzo, verifica se si tratta di un meccanismo separato di pagamento delle commissioni. Altre chain possono funzionare diversamente.
Fonti e approfondimenti
Segnala un problema
Prepareremo un’e-mail con il link a questo articolo. Mark riceverà la segnalazione solo dopo l’invio
Controllo rapido
Hai finito la guida? Verifica ciò che hai capito con 3 domande
Domanda 01
Che cosa rappresenta `gasLimit`?
Scegli una risposta per vedere la spiegazione