Vai al contenuto

Gas e commissioni di transazione

Guida sensibile al fork su unità di gas, costi intrinseci e di esecuzione, limiti delle commissioni EIP-1559, burn della commissione base, commissioni di priorità, revert, out-of-gas, rimborsi, gas dei blob e componenti delle commissioni L2.

Aggiornato

Solo a scopo educativo; non costituisce consulenza né raccomandazione d’investimento. Gli investimenti possono comportare perdite.

Risposta diretta

Il gas è l’unità contabile del protocollo per il lavoro di esecuzione e l’accesso allo stato; la commissione gas è un importo monetario calcolato sulle unità di gas addebitate e sul prezzo per unità. Su Ethereum con EIP-1559, effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas), la commissione di esecuzione è gasUsed * effectiveGasPrice, la quota relativa alla commissione base viene bruciata e quella di priorità viene pagata attraverso il percorso del fee recipient del blocco. Gas limit e limiti di commissione autorizzano valori massimi; non sono importi spesi automaticamente.

Il gas utilizzato effettivo dipende da calldata, percorso degli opcode, espansione della memoria, accessi allo stato cold e warm, modifiche allo storage, chiamate annidate, precompilati, successo o fallimento, rimborsi e fork attivo. Un prezzo più elevato può migliorare la competitività per l’inclusione, ma non può correggere un REVERT, un gas limit insufficiente, un contratto malevolo, una quotazione obsoleta o calldata errati. Le transazioni blob e molte L2 aggiungono componenti separati relativi ai dati o al protocollo che non vanno incorporati nel gas EVM per presunzione.

Tariffa di rete
0,000462 native
Equivalente Fiat
$1,39
Tariffa base
22 gwei

I risultati sono approssimazioni didattiche. Escludono regole della sede, tasse, latenza, comportamento degli oracoli e altri parametri specifici del protocollo se non indicati.

Come funziona

  1. Fissare chain, fork, blocco o state tag, tipo di transazione, mittente, nonce, destinazione, valore, calldata, access list, campi blob, token del gas e valuta della commissione. Registrare se la quotazione riguarda una transazione L1, un’esecuzione L2, la pubblicazione di dati, un prelievo o un percorso composito.
  2. Ricostruire il gas intrinseco prima dell’esecuzione: envelope della transazione, costi dei byte di calldata, creazione, access list e overhead specifico del tipo. Se il gas limit è inferiore al gas intrinseco o il mittente non soddisfa i controlli di validità del costo massimo previsti dal protocollo, la transazione viene rifiutata prima di un’esecuzione inclusa, anziché essere inclusa e poi revertita.
  3. Tracciare l’esecuzione nel fork di riferimento. Misurare costi dinamici degli opcode, espansione della memoria, account o slot di storage cold e warm, SSTORE, inoltro del gas nelle chiamate, trasferimento di valore, costi dei precompilati, log e rimborsi. La stessa funzione ABI può percorrere rami diversi e utilizzare quantità differenti di gas a seconda dello stato.
  4. Separare gli esiti. Un’esecuzione riuscita rende effettivi i suoi risultati. REVERT annulla l’ambito fallito e può restituire il gas non usato dal frame; un arresto eccezionale per out-of-gas normalmente consuma il gas messo a disposizione di quel frame. Un fallimento incluso al livello superiore consuma comunque il nonce della transazione e il gas addebitato, anche se lo stato del contratto, il trasferimento di valore e i log vengono annullati.
  5. Determinare il prezzo del gas di esecuzione. Per una transazione di tipo 2, calcolare il prezzo effettivo dalla commissione base, dal limite di priorità e dal limite totale; poi suddividere il gas addebitato tra commissione base bruciata e commissione di priorità. Distinguere gas inutilizzato e margine non consumato del limite di commissione dai rimborsi protocollari di gas generati da una pulizia dello stato idonea e limitati dal tetto di rimborso attivo.
  6. Determinare separatamente il prezzo degli altri mercati delle commissioni. Una transazione blob paga il gas di esecuzione più blobGasUsed * blobGasPrice, nel limite di maxFeePerBlobGas; la commissione base dei blob segue un proprio percorso di adeguamento. La commissione utente di una L2 può includere esecuzione L2, dati L1 compressi o costo dei blob, oneri dell’operatore o del protocollo e margini, con formule e scalari specifici del deployment e dell’upgrade.
  7. Riconciliare stima, inclusione e ricevuta. Prima di firmare, verificare che il saldo copra il valore più le commissioni massime autorizzate, simulare su uno stato fissato e impostare limiti circoscritti. Dopo l’inclusione, registrare gas limit, gas utilizzato in ricevuta, prezzo effettivo, commissione base, commissione di priorità, effetti dei rimborsi, gas dei blob, campi delle commissioni L2, status e variazione del saldo; trattare separatamente errore di stima, sostituzione e finalità.

Esempi svolti

  • Successo di tipo 2 e limiti. Il gas limit è 120,000, il gas utilizzato è 70,000, la commissione base è 25 gwei, la commissione massima di priorità è 3 gwei e la commissione massima è 40 gwei. Il prezzo effettivo è min(40, 25 + 3) = 28 gwei; la commissione effettiva è 70,000 * 28 gwei = 0.001960 ETH, suddivisa in 0.001750 ETH bruciati e 0.000210 ETH di commissione di priorità. L’autorizzazione massima per la commissione di esecuzione è 120,000 * 40 gwei = 0.004800 ETH; i 50,000 gas inutilizzati e il margine non consumato del limite non sono rimborsi protocollari per pulizia dello stato.
  • REVERT rispetto a out-of-gas. Due chiamate incluse hanno ciascuna gas limit 100,000 e prezzo effettivo 30 gwei. La chiamata A esegue REVERT quando il gas utilizzato in ricevuta raggiunge 60,000, quindi la sua commissione è 60,000 * 30 gwei = 0.001800 ETH. La chiamata B esaurisce l’intero gas limit della transazione, quindi la sua commissione è 100,000 * 30 gwei = 0.003000 ETH. Entrambi i fallimenti al livello superiore annullano gli effetti del contratto e consumano il nonce del mittente, ma REVERT può preservare gas inutilizzato mentre out-of-gas no.
  • Limite di rimborso. In un esempio didattico EIP-3529 circoscritto a un fork, l’esecuzione consuma 100,000 gas prima del rimborso e genera un contatore di rimborso di 30,000 gas. Il rimborso massimo applicato è 100,000 / 5 = 20,000 gas, quindi il gas addebitato è 100,000 - 20,000 = 80,000 gas. A 20 gwei, la commissione è 0.001600 ETH anziché 0.002000 ETH, con un risparmio di 0.000400 ETH; le regole e le operazioni idonee possono cambiare con il fork.
  • Mercato separato delle commissioni blob. Un’ipotetica transazione blob utilizza 100,000 gas di esecuzione a 20 gwei e due blob. Con 131,072 blob gas/blob, il gas dei blob utilizzato è 262,144; a un prezzo del gas dei blob di 5 gwei, la commissione blob è 262,144 * 5 gwei = 0.00131072 ETH. La commissione di esecuzione è 0.002000 ETH, quindi la commissione protocollare complessiva è 0.00331072 ETH. I 5 gwei scelti sono illustrativi, e la commissione blob non è una mancia di priorità per il validatore né la commissione end-to-end completa di un utente L2.

Rischi

  • Utilizzare chain, fork, token del gas, tipo di transazione o valuta della commissione errati.
  • Confondere unità di gas, wei, gwei, ETH e conversioni in valuta fiat.
  • Trattare il gas limit come commissione prevista o effettiva.
  • Non superare i controlli preliminari su gas intrinseco o costo massimo.
  • Affidarsi a una stima obsoleta dopo variazioni di stato, commissione base o calldata.
  • Impostare un gas limit inferiore alle necessità del ramo effettivamente eseguito.
  • Presumere che un prezzo del gas più elevato possa impedire un REVERT del contratto.
  • Confondere REVERT, out-of-gas, opcode non valido e rifiuto prima della validazione.
  • Non rilevare il fallimento intercettato di una chiamata figlia nonostante lo status superiore 1.
  • Valutare erroneamente accessi allo stato cold e warm o un’access list incompleta.
  • Ignorare espansione della memoria, inoltro del gas, costi dei precompilati o dei log.
  • Applicare regole obsolete sui rimborsi dello storage o superare il limite di rimborso.
  • Contabilizzare gas inutilizzato o margine del limite come rimborso protocollare del gas.
  • Impostare la commissione massima sotto la commissione base del blocco di inclusione.
  • Pagare una priorità eccessiva senza comprendere la politica del builder o sequencer.
  • Non disporre del token nativo del gas pur detenendo altri asset.
  • Omettere gas dei blob, relativo limite di commissione o oneri di disponibilità dei dati.
  • Trattare come universale la formula di esecuzione, dati, scalari e operatore di una L2.
  • Ignorare race condition di sostituzione, nonce, transazione scartata e riserva del saldo.
  • Trattare una transazione pagata o riuscita come prova di sicurezza del contratto o finalità.

Errori comuni

  • Il gas è una percentuale del valore trasferito.
  • Aumentare il gas limit incrementa necessariamente l’importo addebitato.
  • Una commissione massima o di priorità elevata garantisce un’esecuzione riuscita.
  • Tutta l’autorizzazione inutilizzata e tutti i rimborsi per pulizia dello stato sono lo stesso meccanismo.
  • Le commissioni L2 equivalgono soltanto al gas EVM locale e quelle dei blob sono normale gas di esecuzione.

Argomenti correlati

Fonti

Navigazione

Cerca nella wiki...