Marktkapitalisierung: $2.5665T -2.09%
Volumen (24h): $64.1207B 43.32%
Angst- und Gier-Index:

33 - Furcht

  • Marktkapitalisierung: $2.5665T -2.09%
  • Volumen (24h): $64.1207B 43.32%
  • Angst- und Gier-Index:
  • Marktkapitalisierung: $2.5665T -2.09%
Kryptos
Themen
Cryptospedia
Nachricht
Cryptostopics
Videos
Top Cryptospedia

Sprache auswählen

Sprache auswählen

Währung wählen

Kryptos
Themen
Cryptospedia
Nachricht
Cryptostopics
Videos

Was sind unveränderliche Variablen und Konstanten in Solidity und wie sparen sie Gas?

Immutable variables in Solidity are set once in the constructor and save gas by avoiding costly storage writes, while constants are compile-time literals embedded directly in bytecode for zero-cost access.

Nov 13, 2025 at 04:40 am

Unveränderliche Variablen in der Solidität verstehen

1. Unveränderliche Variablen in Solidity werden mit dem Schlüsselwort immutable deklariert und können während der Vertragskonstruktion nur einmal zugewiesen werden. Einmal festgelegt, können ihre Werte während der gesamten Vertragslaufzeit nicht mehr geändert werden.

2. Diese Variablen werden zum Zeitpunkt der Bereitstellung aufgelöst, sodass der Compiler die Speicherung optimieren kann, indem er sie in den Metadaten des Vertrags platziert und nicht in den Speicherplätzen, die für reguläre Statusvariablen verwendet werden.

3. Da unveränderliche Variablen keinen veränderlichen Speicher belegen, entfallen SSTORE-Vorgänge nach der Bereitstellung, die zu den teuersten Opcodes in Ethereum gehören.

4. Der Wert einer unveränderlichen Variablen wird normalerweise innerhalb des Konstruktors zugewiesen, was ihn ideal für Parameter macht, die zum Zeitpunkt der Bereitstellung bekannt sind, aber zwischen Instanzen desselben Vertrags variieren.

5. Die Verwendung unveränderlicher Elemente verbessert die Klarheit des Codes, indem sie Absichten signalisieren. Entwickler wissen, dass bestimmte Werte nach der Bereitstellung festgelegt sind, wodurch das Risiko unbeabsichtigter Änderungen verringert wird.

Die Rolle von Konstanten bei der Gasoptimierung

1. Konstanten werden mit dem Schlüsselwort „constant“ definiert und müssen bei der Deklaration einen Wert zugewiesen bekommen. Ihre Werte werden während der Kompilierung fest in den Bytecode codiert.

2. Da konstante Werte direkt in die EVM-Anweisungen eingebettet sind, fallen für deren Lesen keine Speicherzugriffskosten an – das bedeutet, dass beim Abrufen ihrer Werte keine SLOAD-Vorgänge ausgeführt werden.

3. Bei jeder Funktion, die eine Konstante verwendet, wird dieser Wert eingebunden, wodurch die Variablenreferenz zur Kompilierungszeit effektiv durch ihren Literalwert ersetzt wird.

4. Dieses Inlining-Verhalten reduziert sowohl den Ausführungsaufwand als auch die Vertragsgröße, da für diese Werte kein persistenter Speicher zugewiesen oder darauf verwiesen werden muss.

5. Konstanten eignen sich am besten für Werte, die über alle Bereitstellungen hinweg wirklich statisch sind, wie z. B. Protokollparameter oder mathematische Koeffizienten, die in Berechnungen verwendet werden.

Unterschiede zwischen Unveränderlichen und Konstanten

1. Während beide durch die Vermeidung von Laufzeitspeicherkosten Gas sparen, erfordern Konstanten, dass ihre Werte zur Kompilierungszeit bekannt sind, während unveränderliche Konstanten eine Zuweisung während der Erstellung ermöglichen.

2. Eine Konstante kann nicht von einer Eingabe oder einem externen Zustand abhängen – sie muss ein konstanter Ausdruck zur Kompilierungszeit sein, z. B. eine Zahl, eine Zeichenfolge oder das Ergebnis eines reinen Funktionsaufrufs mit konstanten Eingaben.

3. Unveränderliche Variablen bieten mehr Flexibilität; Sie können Konstruktorargumente annehmen, sodass verschiedene Vertragsinstanzen unterschiedliche Werte haben können und gleichzeitig von geringeren Laufzeitkosten profitieren.

4. Aus Sicht des Gasverbrauchs bieten Konstanten im Allgemeinen eine etwas bessere Optimierung, da ihre Werte vor der Bereitstellung vollständig aufgelöst werden, während unveränderliche Konstanten eine einmalige Initialisierung während der Erstellung erfordern.

5. Die missbräuchliche Verwendung eines der beiden Typen – beispielsweise die Deklaration eines sich häufig ändernden Werts als unveränderlich – kann zu unflexiblen Designs führen. Daher ist eine ordnungsgemäße Ausrichtung des Anwendungsfalls unerlässlich.

Mechanismen zur Gaseinsparung erklärt

1. Jeder Lesevorgang aus dem EVM-Speicher mit SLOAD verbraucht mindestens 2100 Gas, während der Zugriff auf im Coderaum gespeicherte Werte (wie Konstanten) nahezu Null kostet.

2. Das Schreiben in den Speicher mit SSTORE ist noch teurer und kostet bis zu 20.000 Gas beim ersten Schreiben und 5.000 Gas bei nachfolgenden Aktualisierungen – bei unveränderlichen Dateien entfallen diese Kosten nach der Erstellung vollständig.

3. Durch die Verlagerung von Daten aus dem Speicher in Code- oder Konstruktor-initialisierte Speicherbereiche reduzieren sowohl Konstanten als auch Unveränderliche den betrieblichen Fußabdruck intelligenter Verträge.

4. Verträge, die stark auf Konfigurationswerten basieren – wie etwa Gebührenprozentsätze, Adresszulassungslisten oder Token-Obergrenzen – profitieren erheblich, wenn diese als Konstanten oder unveränderliche Werte deklariert werden.

5. Compiler-Optimierungen nutzen diese Deklarationen, um redundante Vorgänge zu minimieren, unnötige Prüfungen zu vermeiden und schlankeren Bytecode zu generieren, was die Effizienz weiter steigert.

Häufig gestellte Fragen

Kann eine unveränderliche Variable geändert werden, nachdem der Konstruktor ausgeführt wurde? Nein. Sobald eine unveränderliche Variable im Konstruktor festgelegt ist, kann sie nicht mehr geändert werden. Jeder Versuch, es neu zuzuweisen, führt zu einem Kompilierungsfehler.

Gibt es Einschränkungen, welche Typen als konstant deklariert werden können? Ja. Nur Werttypen wie uint, int, bool, Adresse und String-Literale (mit einigen Einschränkungen) können konstant sein. Arrays und Strukturen können nicht als Konstanten deklariert werden, es sei denn, sie befinden sich in einer Inline-Assembly oder in Sonderfällen, die von neueren Compilerversionen behandelt werden.

Erhöhen unveränderliche Variablen die Bereitstellungsgaskosten? Aufgrund der Konstruktorlogik können sie die Bereitstellungskosten leicht erhöhen, dies wird jedoch durch langfristige Einsparungen bei Interaktionen ausgeglichen. Der Nettoeffekt über mehrere Transaktionen hinweg ist in der Regel eine deutliche Reduzierung der gesamten Gasausgaben.

Was passiert, wenn ich versuche, eine unveränderliche Variable außerhalb des Konstruktors zuzuweisen? Der Solidity-Compiler gibt einen Fehler aus. Die Zuweisung unveränderlicher Variablen ist ausschließlich auf den Konstruktorkontext beschränkt und gewährleistet so deren Integrität und Vorhersagbarkeit.

Haftungsausschluss:info@kdj.com

Die bereitgestellten Informationen stellen keine Handelsberatung dar. kdj.com übernimmt keine Verantwortung für Investitionen, die auf der Grundlage der in diesem Artikel bereitgestellten Informationen getätigt werden. Kryptowährungen sind sehr volatil und es wird dringend empfohlen, nach gründlicher Recherche mit Vorsicht zu investieren!

Wenn Sie glauben, dass der auf dieser Website verwendete Inhalt Ihr Urheberrecht verletzt, kontaktieren Sie uns bitte umgehend (info@kdj.com) und wir werden ihn umgehend löschen.

Verwandtes Wissen

So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position

So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position

Oct 26,2026 at 04:06am

Gesamtkostenkomponenten für BTCUSDT-Futures-Positionen 1. Die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position umfassen sowohl explizite als...

So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam

So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam

Oct 20,2026 at 06:39pm

Mechanik der Finanzierungsrate bei unbefristeten XRPUSDT-Verträgen 1. Die Finanzierungsraten für XRPUSDT Perpetual Swaps werden alle acht Stunden anha...

So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest

So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest

Oct 23,2026 at 09:34am

Verständnis der Break-Even-Stop-Loss-Mechanik 1. Ein Break-Even-Stop-Loss ist eine dynamische Order, die sich nach oben anpasst, wenn sich die Positio...

So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades

So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades

Oct 21,2026 at 02:00am

Verstehen der Schnittstelle des Binance-Futures-Rechners 1. Der Rechner ist direkt in die Binance-Futures-Handelsschnittstelle eingebettet und über di...

So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation

So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation

Oct 26,2026 at 12:20pm

Markpreis in BTCUSDT-Futures verstehen 1. Der Markpreis ist ein berechneter Wert, der von Börsen verwendet wird, um unfaire Liquidationen bei volatile...

So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an

So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an

Oct 30,2026 at 10:19pm

Grundlegendes zur Mechanik des unbefristeten Vertrags von TRUMPUSDT 1. TRUMPUSDT ist ein thematischer, unbefristeter Terminkontrakt, der an mehreren T...

So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position

So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position

Oct 26,2026 at 04:06am

Gesamtkostenkomponenten für BTCUSDT-Futures-Positionen 1. Die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position umfassen sowohl explizite als...

So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam

So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam

Oct 20,2026 at 06:39pm

Mechanik der Finanzierungsrate bei unbefristeten XRPUSDT-Verträgen 1. Die Finanzierungsraten für XRPUSDT Perpetual Swaps werden alle acht Stunden anha...

So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest

So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest

Oct 23,2026 at 09:34am

Verständnis der Break-Even-Stop-Loss-Mechanik 1. Ein Break-Even-Stop-Loss ist eine dynamische Order, die sich nach oben anpasst, wenn sich die Positio...

So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades

So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades

Oct 21,2026 at 02:00am

Verstehen der Schnittstelle des Binance-Futures-Rechners 1. Der Rechner ist direkt in die Binance-Futures-Handelsschnittstelle eingebettet und über di...

So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation

So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation

Oct 26,2026 at 12:20pm

Markpreis in BTCUSDT-Futures verstehen 1. Der Markpreis ist ein berechneter Wert, der von Börsen verwendet wird, um unfaire Liquidationen bei volatile...

So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an

So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an

Oct 30,2026 at 10:19pm

Grundlegendes zur Mechanik des unbefristeten Vertrags von TRUMPUSDT 1. TRUMPUSDT ist ein thematischer, unbefristeter Terminkontrakt, der an mehreren T...

Alle Artikel ansehen

User not found or password invalid

Your input is correct