Vai al contenuto

Limite di gas del blocco

Guida sensibile ai fork sul limite di gas del blocco Ethereum, target EIP-1559, tetto per transazione, gas usato, commissioni, throughput e risorse del nodo.

Aggiornato

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

Risposta diretta

Il limite di gas del blocco è il tetto del gas di esecuzione registrato nell’header di un blocco Ethereum. Le transazioni incluse devono rispettare la contabilità del protocollo affinché il gasUsed aggregato non superi gasLimit. Il gas è un’unità astratta; le regole per opcode, calldata, memoria, storage e rimborsi cambiano tra fork e non misurano direttamente istruzioni CPU, byte o transazioni.

Sulla Mainnet dopo Fusaka, il riferimento coordinato dei client è 60,000,000 gas per blocco, ma fa fede l’header effettivo e le preferenze dei validatori possono spostare gradualmente il limite secondo la regola relativa al blocco padre. Con elasticità 2, il target EIP-1559 è 30,000,000 gas; l’uso sopra il target aumenta la commissione base successiva. EIP-7825 limita separatamente il gas dichiarato per transazione a 2^24 = 16,777,216 gas, mentre EIP-7934 impone un limite RLP indipendente di 8,388,608 bytes. Sono valori specifici di rete e data.

Come funziona

  1. Fissa chain, rete, hash e numero del blocco, fork attivo, client o RPC e orario. Leggi gasLimit, gasUsed e baseFeePerGas dall’header, non da una tabella statica.
  2. Separa limite del blocco, target EIP-1559, gas dichiarato, gas effettivamente usato e prezzo per gas. Separa anche gas di esecuzione, gas dei blob, byte RLP e metriche L2.
  3. Riproduci validità ed esecuzione con il piano gas attivo: gas intrinseco, calldata, access list, espansione della memoria, accessi cold e warm, scritture storage, precompilati e rimborsi. La stima dipende da stato e block tag.
  4. Riconcilia la capacità sommando il gas delle ricevute o usando il cumulativo finale; conferma gasUsed <= gasLimit e considera ordine e costi dipendenti dallo stato. Il numero di transazioni non equivale al limite né a TPS fisso.
  5. Applica EIP-1559: con elasticità 2, target = gasLimit / 2; l’uso del padre sopra o sotto il target modifica la commissione base successiva. Il limite figlio deve restare nella banda stretta di circa 1/1024. La commissione base prezza la domanda, il limite vincola il lavoro accettato.
  6. Controlla i confini operativi. Una transazione oltre il tetto è invalida anche con spazio; lo è anche un blocco RLP sovradimensionato pur sotto il gas limit. L’assegnazione inutilizzata viene liberata; il contatore dei rimborsi è separato e limitato dal fork. REVERT conserva il gas residuo; un out-of-gas al livello superiore annulla lo stato e consuma tutta l’assegnazione fornita.
  7. Sottoponi a stress tempo di esecuzione di blocchi pieni, crescita dello stato, propagazione, slot mancati, reorg, capacità di builder e validatori, diversità dei client e variazioni dei parametri. Confronta blocchi e metriche reali prima di ritenere sostenibile un throughput maggiore.

Esempi svolti

  • Tetto dei trasferimenti semplici. Con 60,000,000 gas, entrano teoricamente floor(60,000,000 / 21,000) = 2,857 trasferimenti ETH semplici. Il target di 30,000,000 gas ne contiene 1,428; in uno slot ideale di 12-second, sono 1,428 / 12 = 119 transactions/second. È un limite omogeneo, non TPS osservato.
  • Blocco target misto. Supponi 400 * 21,000 = 8,400,000 gas per trasferimenti, 80 * 180,000 = 14,400,000 gas per swap e 6 * 1,200,000 = 7,200,000 gas per deployment. Totale: 30,000,000 gas in 486 transactions, cioè 486 / 12 = 40.5 transactions/second con lo slot assunto.
  • Limite e addebito effettivo. Una transazione dichiara 200,000 gas e usa gasUsed = 146,000. A 22 gwei, paga 146,000 * 22 = 3,212,000 gwei = 0.003212 ETH; i 54,000 gas inutilizzati non sono addebitati. Dichiarare 18,000,000 gas supera il tetto attuale di 16,777,216 gas ed è invalido anche con spazio.
  • Reazione della commissione base. Con gasLimit = 60,000,000, il target è 30,000,000. Da 24 gwei, un padre pieno a 60,000,000 gas aumenta la commissione successiva del massimo 12.5% a 27 gwei; un padre vuoto la riduce del 12.5% a 21 gwei. Non modifica il limite né garantisce l’utilizzo seguente.

Rischi

  • Usare un limite Mainnet obsoleto.
  • Applicare parametri Ethereum a un’altra chain EVM o L2.
  • Confondere limite del blocco e target EIP-1559.
  • Confondere limite del blocco e tetto per transazione.
  • Confondere gas dichiarato e gas effettivamente usato.
  • Trattare il gas come unità fissa di CPU, byte o transazioni.
  • Usare regole obsolete o ignorare il limite RLP indipendente.
  • Fidarsi di eth_estimateGas senza stato e block tag previsti.
  • Ignorare esecuzione dipendente dallo stato e ordine.
  • Confondere assegnazione inutilizzata e contatore dei rimborsi.
  • Ignorare gas addebitato in caso di revert o out-of-gas.
  • Trattare gas di esecuzione e dei blob come una risorsa.
  • Dedurre TPS soltanto da trasferimenti omogenei.
  • Ignorare slot mancati, reorg e ritardi di finalità.
  • Aumentare tempi estremi di esecuzione e propagazione.
  • Accelerare crescita dello stato e requisiti di archivio.
  • Elevare requisiti hardware di validatori, builder e RPC.
  • Aumentare centralizzazione o divergenza dei client.
  • Perdere cambi di preferenze, client o fork.
  • Trattare maggiore capacità come garanzia di commissioni inferiori o domanda.

Errori comuni

  • Il limite di gas del blocco è una costante universale di Ethereum o EVM.
  • Un limite di 60,000,000 gas impone di usarne 60 milioni o rende uguale il target EIP-1559.
  • Dividere il limite per 21,000 fornisce il TPS reale della chain.
  • Una transazione può consumare tutto il blocco se c’è spazio; il tetto attuale è indipendente.
  • Aumentare il limite riduce automaticamente le commissioni senza costi per nodi, stato, propagazione, domanda o decentralizzazione.

Argomenti correlati

Fonti

Navigazione

Cerca nella wiki...