Zum Inhalt springen

Gas und Transaktionsgebühren

Fork-spezifischer Leitfaden zu Gaseinheiten, intrinsischen und Ausführungskosten, EIP-1559-Gebührenobergrenzen, Verbrennung der Basisgebühr, Prioritätsgebühren, Reverts, Out-of-Gas, Rückerstattungen, Blob-Gas und L2-Gebührenkomponenten.

Aktualisiert

Nur zu Bildungszwecken; stellt keine Anlageberatung oder Anlageempfehlung dar. Anlagen können zu Verlusten führen.

Direkte Antwort

Gas ist die Protokollrechnungseinheit für Ausführungsarbeit und Zustandszugriffe; eine Gasgebühr ist ein Geldbetrag, der aus den berechneten Gaseinheiten und einem Preis je Einheit ermittelt wird. Bei Ethereum nach EIP-1559 gilt effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas), die Ausführungsgebühr beträgt gasUsed * effectiveGasPrice, der Anteil der Basisgebühr wird verbrannt und der Prioritätsanteil über den Gebührenempfängerpfad des Blocks ausgezahlt. Gaslimit und Gebührenobergrenzen autorisieren Höchstwerte; sie werden nicht automatisch vollständig ausgegeben.

Der genaue Gasverbrauch hängt von Calldata, Opcode-Pfad, Speichererweiterung, kalten und warmen Zustandszugriffen, Speicheränderungen, verschachtelten Calls, Precompiles, Erfolg oder Fehlschlag, Rückerstattungen und dem aktiven Fork ab. Ein höherer Preis kann die Aufnahmechancen verbessern, behebt aber weder einen REVERT noch ein unzureichendes Gaslimit, einen bösartigen Contract, eine veraltete Quote oder fehlerhafte Calldata. Blob-Transaktionen und viele L2s fügen separate Daten- oder Protokollgebühren hinzu, die nicht pauschal dem EVM-Gas zugerechnet werden dürfen.

Netzwerkgebühr
0,000462 native
Fiat-Äquivalent
$1,39
Grundgebühr
22 gwei

Die Ergebnisse sind vereinfachte Bildungsmodelle. Sofern nicht anders angegeben, berücksichtigen sie keine Handelsplatzregeln, Steuern, Latenz, Oracle-Eigenschaften oder sonstigen protokollspezifischen Parameter.

Funktionsweise

  1. Legen Sie Chain, Fork, Block- oder State-Tag, Transaktionstyp, Absender, Nonce, Ziel, Wert, Calldata, Access List, Blob-Felder, Gas-Token und Gebührenwährung fest. Halten Sie fest, ob sich die Quote auf eine L1-Transaktion, L2-Ausführung, Datenveröffentlichung, Auszahlung oder zusammengesetzte Route bezieht.
  2. Rekonstruieren Sie vor der Ausführung das intrinsische Gas: Transaktionshülle, Calldata-Bytekosten, Erstellungs- und Access-List-Gebühren sowie typspezifischen Overhead. Liegt das Gaslimit unter dem intrinsischen Gas oder erfüllt der Absender die Gültigkeitsprüfungen des Protokolls für die maximalen Kosten nicht, wird die Transaktion vor einer aufgenommenen Ausführung abgelehnt, statt aufgenommen und danach revertiert zu werden.
  3. Verfolgen Sie die Ausführung unter dem Zielfork. Messen Sie dynamische Opcode-Kosten, Speichererweiterung, kalte und warme Konten oder Storage-Slots, SSTORE, Gasweiterleitung bei Calls, Wertübertragung, Precompile-Kosten, Logs und Rückerstattungen. Dieselbe ABI-Funktion kann je nach Zustand unterschiedliche Zweige durchlaufen und verschieden viel Gas verbrauchen.
  4. Trennen Sie die Ergebnisse. Eine erfolgreiche Ausführung schreibt ihre Auswirkungen fest. REVERT setzt den fehlgeschlagenen Bereich zurück und kann ungenutztes Frame-Gas zurückgeben; ein Out-of-Gas als außergewöhnlicher Abbruch verbraucht normalerweise das dem Frame zur Verfügung gestellte Gas. Ein aufgenommener Fehler auf oberster Ebene verbraucht dennoch Transaktions-Nonce und berechnetes Gas, obwohl Contract-Zustand, Wertübertragung und Logs zurückgesetzt werden.
  5. Bepreisen Sie das Ausführungsgas. Berechnen Sie für eine Typ-2-Transaktion den effektiven Gaspreis aus Basisgebühr, Prioritätsobergrenze und Gesamtobergrenze; teilen Sie anschließend das berechnete Gas in verbrannte Basisgebühr und Prioritätsgebühr auf. Unterscheiden Sie ungenutztes Gas und unausgeschöpften Spielraum der Gebührenobergrenze von protokollseitigen Gasrückerstattungen für berechtigte Zustandsbereinigung, die durch die aktive Rückerstattungsgrenze beschränkt sind.
  6. Bepreisen Sie andere Gebührenmärkte separat. Eine Blob-Transaktion zahlt Ausführungsgas zuzüglich blobGasUsed * blobGasPrice, begrenzt durch maxFeePerBlobGas; die Blob-Basisgebühr hat einen eigenen Anpassungspfad. Eine L2-Nutzergebühr kann L2-Ausführung, komprimierte L1-Daten oder Blob-Kosten, Operator- oder Protokollentgelte sowie Margen enthalten; Formeln und Skalare sind deployment- und upgradespezifisch.
  7. Stimmen Sie Schätzung, Aufnahme und Receipt ab. Prüfen Sie vor der Signatur das Guthaben gegen Wert plus maximal autorisierte Gebühren, simulieren Sie bei festgelegtem Zustand und setzen Sie begrenzte Gebührenobergrenzen. Erfassen Sie nach der Aufnahme Gaslimit, Gasverbrauch laut Receipt, effektiven Preis, Basisgebühr, Prioritätsgebühr, Rückerstattungseffekte, Blob-Gas, L2-Gebührenfelder, Status und Saldoänderung; behandeln Sie Schätzfehler, Ersetzung und Finalität getrennt.

Durchgerechnete Beispiele

  • Typ-2-Erfolg und Obergrenzen. Das Gaslimit beträgt 120,000, der Gasverbrauch 70,000, die Basisgebühr 25 gwei, die maximale Prioritätsgebühr 3 gwei und die maximale Gebühr 40 gwei. Der effektive Preis ist min(40, 25 + 3) = 28 gwei; die tatsächliche Gebühr beträgt 70,000 * 28 gwei = 0.001960 ETH, aufgeteilt in 0.001750 ETH verbrannte Basisgebühr und 0.000210 ETH Prioritätsgebühr. Die maximale Autorisierung für Ausführungsgebühren beträgt 120,000 * 40 gwei = 0.004800 ETH; die ungenutzten 50,000 gas und der nicht ausgeschöpfte Obergrenzenspielraum sind keine protokollseitigen Rückerstattungen für Zustandsbereinigung.
  • REVERT gegenüber Out-of-Gas. Zwei aufgenommene Calls haben jeweils ein Gaslimit von 100,000 und einen effektiven Preis von 30 gwei. Call A führt REVERT aus, nachdem der Gasverbrauch im Receipt 60,000 erreicht hat; seine Gebühr beträgt daher 60,000 * 30 gwei = 0.001800 ETH. Call B schöpft das gesamte Transaktionsgaslimit aus; seine Gebühr beträgt daher 100,000 * 30 gwei = 0.003000 ETH. Beide Fehler auf oberster Ebene setzen Contract-Auswirkungen zurück und verbrauchen die Absender-Nonce, doch REVERT kann ungenutztes Gas erhalten, Out-of-Gas dagegen nicht.
  • Rückerstattungsgrenze. In einem auf einen Fork beschränkten EIP-3529-Lehrbeispiel verbraucht die Ausführung vor Rückerstattung 100,000 gas und erzeugt einen Rückerstattungszähler von 30,000 gas. Die maximal angewandte Rückerstattung beträgt 100,000 / 5 = 20,000 gas, sodass 100,000 - 20,000 = 80,000 gas berechnet werden. Bei 20 gwei beträgt die Gebühr 0.001600 ETH statt 0.002000 ETH, eine Ersparnis von 0.000400 ETH; Regeln und berechtigte Vorgänge können sich je nach Fork ändern.
  • Separater Blob-Gebührenmarkt. Eine hypothetische Blob-Transaktion verwendet 100,000 Ausführungsgas zu 20 gwei und zwei Blobs. Bei 131,072 blob gas/blob beträgt das verbrauchte Blob-Gas 262,144; bei einem Blob-Gaspreis von 5 gwei beträgt die Blob-Gebühr 262,144 * 5 gwei = 0.00131072 ETH. Die Ausführungsgebühr beträgt 0.002000 ETH, sodass die kombinierte Protokollgebühr 0.00331072 ETH beträgt. Die gewählten 5 gwei dienen nur als Beispiel; die Blob-Gebühr ist weder ein Prioritätstip für Validatoren noch die gesamte End-to-End-Gebühr eines L2-Nutzers.

Risiken

  • Falsche Chain, falscher Fork, Gas-Token, Transaktionstyp oder Gebührenwährung.
  • Verwechslung von Gaseinheiten, Wei, Gwei, ETH und Fiatumrechnungen.
  • Behandlung des Gaslimits als erwartete oder tatsächliche Gebühr.
  • Nichterfüllung der Vorabprüfungen für intrinsisches Gas oder maximale Kosten.
  • Vertrauen auf eine veraltete Schätzung nach Änderungen von Zustand, Basisgebühr oder Calldata.
  • Festlegung eines Gaslimits unter dem Bedarf des tatsächlich ausgeführten Zweigs.
  • Annahme, ein höherer Gaspreis könne einen Contract-REVERT verhindern.
  • Verwechslung von REVERT, Out-of-Gas, ungültigem Opcode und Ablehnung vor der Validierung.
  • Übersehen eines abgefangenen Child-Call-Fehlers trotz Status 1 auf oberster Ebene.
  • Fehlbepreisung kalter und warmer Zustandszugriffe oder einer unvollständigen Access List.
  • Nichtberücksichtigung von Speichererweiterung, Gasweiterleitung, Precompile- oder Log-Kosten.
  • Anwendung veralteter Storage-Rückerstattungsregeln oder Überschreitung der Rückerstattungsgrenze.
  • Erfassung ungenutzten Gases oder Obergrenzenspielraums als protokollseitige Gasrückerstattung.
  • Maximale Gebühr unterhalb der Basisgebühr des Aufnahmeblocks.
  • Zu hohe Prioritätszahlung ohne Verständnis der Builder- oder Sequenzer-Richtlinie.
  • Fehlender nativer Gas-Token trotz anderer vorhandener Vermögenswerte.
  • Nichtberücksichtigung von Blob-Gas, Blob-Gebührenobergrenze oder Datenverfügbarkeitsentgelten.
  • Verallgemeinerung der Ausführungs-, Daten-, Skalar- und Operatorformel einer L2.
  • Ignorieren von Wettläufen bei Ersetzung, Nonce, verworfener Transaktion und Saldoreservierung.
  • Deutung einer bezahlten oder erfolgreichen Transaktion als Nachweis für Contract-Sicherheit oder Finalität.

Häufige Irrtümer

  • Gas entspricht einem Prozentsatz des übertragenen Werts.
  • Ein höheres Gaslimit erhöht zwangsläufig den berechneten Betrag.
  • Eine hohe maximale Gebühr oder Prioritätsgebühr garantiert eine erfolgreiche Ausführung.
  • Jede ungenutzte Autorisierung und jede Rückerstattung für Zustandsbereinigung sind derselbe Mechanismus.
  • L2-Gebühren bestehen nur aus lokalem EVM-Gas und Blob-Gebühren sind gewöhnliches Ausführungsgas.

Verwandte Themen

Quellen

Navigation

Wiki durchsuchen...