Transaktionen für einen Funktionsaufruf von Smart Contracts sind mit der Recheneinheit „Gas“ zu bezahlen. Je komplexer und rechenintensiver Smart Contracts sind, umso mehr Kosten entstehen. Wie lassen sich Gas Fees reduzieren?
Die Minimierung der Speichernutzung von Smart Contracts kann zu massiven Einsparungen führen.
Gas ist die Maßeinheit für den Rechenaufwand, der erforderlich ist, um bestimmte Operationen im Ethereum-Netzwerk auszuführen. Da jede Ethereum-Transaktion die Verwendung von Rechenressourcen erfordert, ist für jede Transaktion eine Gebühr erforderlich. Die für den Abschluss einer Ethereum-Transaktion erforderliche Gebühr wird als Gas bezeichnet.
Die Gas-Gebühren von Ethereum geben den Usern seit Langem Anlass zur Sorge. Selbst als Ethereum den Konsens-Mechanismus Proof-of-Stake als ein energieeffizienteres System einführte, gab es kaum Auswirkungen auf die Gas Fees. Um hohe Standards aufrechtzuerhalten, Risiken zu minimieren, sauberen Code zu schreiben und sichere, kostengünstige Smart Contracts zu erstellen, ist es wichtig, die Techniken zur Optimierung von Gas zu kennen.
Transaktionen und Rechenbedarf
Im Zuge der Kompilierung eines Smart Contracts in Solidity wird er in eine Reihe von „Operations-Codes“ (Opcodes) umgewandelt. Jedem Opcode wird eine vordefinierte Gasmenge zugewiesen, die der Rechenarbeit entspricht, die notwendig ist, um diese spezifische Operation auszuführen.
Opcodes und Bytecodes sind ähnlich. Bytecodes verwenden jedoch für die Darstellung hexadezimale Ganzzahlen. Bytecodes werden von der Ethereum Virtual Machine (EVM) ausgeführt, einer Software, die Smart Contracts ausführt und auf den Ethereum-Knoten- bzw. Netzwerkschichten sitzt.
Das Ziel der Optimierung besteht darin, die Gesamtzahl der Vorgänge zu reduzieren, die für die Ausführung eines Smart Contracts erforderlich sind; wobei optimierte Smart Contracts nicht nur den Gasverbrauch für die Verarbeitung von Transaktionen reduzieren, sondern auch vor böswilligem Missbrauch schützen.
Bestimmung des Gas-Verbrauchs
Die Schätzung, wie viel Gas ein Smart Contract verbrauchen wird, ist oftmals recht schwierig. Der Gas-Preis wird auf der Grundlage vieler verschiedener Faktoren bestimmt, darunter Angebot, Nachfrage sowie schwankende Preise für Kryptowährungen. Daher ist es besonders wichtig, Smart Contracts zielführend zu optimieren, um den Gasverbrauch überhaupt reduzieren zu können.
Viele IT-Experten für Smart Contracts verwenden verschiedene Tools zur Bestimmung des Gas-Verbrauchs, um zu vermeiden, dass Gas zu wenig oder zu viel bezahlt wird. Diese Schätzungen sind jedoch nicht immer ganz genau, da wie bereits benannt, viele unterschiedliche Faktoren die Kosten beeinflussen können. Beispielsweise erschweren unterschiedliche Blockgrößen, Blockzeiten, Blocklaufzeiten oder Vergleiche zu den letzten Blöcken eine genaue Schätzung der möglichen minimalen Gas-Gebühr für den jeweils folgenden Block.
So bieten Tools wie beispielsweise der Gas-Profiler einen detaillierten Überblick darüber, wie viel Gas eine Transaktion verbraucht, wenn sie on-chain oder off-chain läuft. Hierzu verwendet die Funktion Diagramme als visuelle Darstellung des Gas-Verbrauchs über die gesamte Transaktion hinweg. Anschließend kann der Verbrauch auf einzelne Funktionsaufrufe heruntergebrochen werden, woraus sich schließen lässt, welche Teile des Codes am meisten Gas für die Ausführung verbraucht hat.
Optimierungstechniken für Gas-Gebühren
Bei der Optimierung von Smart Contracts ist es wichtig, Bereiche des Codes zu identifizieren, die wahrscheinlich die größten Renditen (in Bezug auf eingespartes Gas) erzielen. In der Folge sind ein paar wesentliche Beispiele für Möglichkeiten der Reduktion des Gas-Verbrauchs skizziert:
Optimierung der Speichernutzung
Die Transaktionen, die auf Ethereum am meisten Gas verbrauchen, beinhalten typischerweise das Speichern und Abrufen von Daten, die über Transaktionen und Blöcke hinweg bestehen bleiben müssen. Die Anzahl der Speicherplätze und die Art und Weise, wie Daten in einem Smart Contract dargestellt werden, wirkt sich stark auf den Gas-Verbrauch aus.
Als Beispiel sei hier die Begrenzung der Speichernutzung angeführt. Speicherplätze sind idealerweise nur für wesentliche Daten zu verwenden. Speicher-Änderungen lassen sich verhindern, indem Zwischenergebnisse im Speicher oder auf einem Stack gespeichert werden.
Verbesserung der Betriebsabläufe
Nicht alle Implementierungen einer Lösung sind in Bezug auf den Gas-Verbrauch gleich effizient. Die Art und Weise, wie ein Funktionsaufruf oder ein komplexer logischer Ausdruck implementiert wird, kann zur verbrauchten Menge beitragen. Hier sind einige Fälle, in denen eine optimalere Lösung den Verbrauch an Gas reduzieren kann:
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Interne Funktionsaufrufe verwenden
Der Aufruf einer öffentlichen Funktion dauert wesentlich länger als der Aufruf einer internen, da alle Parameter ins Memory kopiert werden.
Weniger Funktionen
Beschränkung der Anzahl interner und privater Funktionen auf ein Minimum, um die Komplexität und Menge der Funktionen auszugleichen.
Vereinfachung von Ausrücken
Bei logischen Ausdrücken sollten die komplexen so weit wie möglich vereinfacht werden. Sie sind so zu verfassen, dass die Wahrscheinlichkeit einer unnötigen Auswertung des zweiten Ausdrucks minimiert wird.
Begrenzung von Modifikatoren
Der Code von Modifikatoren wird in eine modifizierte Funktion eingefügt, die ihre Größe und ihren Gas-Verbrauch erhöht. Um dies zu vermeiden, sind die Anzahl der Modifikatoren zu verringern.
Einzelner Zeilentausch
In einer Anweisung lassen sich die Werte zweier Variablen austauschen. Beispiel: (a, b) = (b, a) anstatt eine Hilfsvariable zum Austauschen zu verwenden.
Allgemeine Empfehlungen
Neben der Implementierung einiger spezifischer Lösungen empfiehlt es sich, einige Praktiken zu vermeiden, die zu höheren Gebühren beitragen können:
Minimierung des direkten Zugriffs auf Speichervariablen.
Vermeidung von Schleifen.
Unnötige Berechnungen eliminieren.
Effizientere und geeignetere Strukturen zur Darstellung der Daten finden.