Wie die EVM in Ethereum funktioniert - einfach erklärt

Wie die EVM in Ethereum funktioniert - einfach erklärt Sep, 26 2025

Du hast sicher schon von Bitcoin, aber Ethereum klingt noch etwas technischer? Die Kernfrage ist: EVM - wie sorgt sie dafür, dass alle diese sogenannten Smart Contracts überhaupt laufen? In diesem Artikel bekommst du eine klare Schritt‑für‑Schritt‑Erklärung, warum die EVM das Herzstück von Ethereum ist und wie du das Ganze praktisch nachvollziehen kannst.

Wichtige Punkte

  • Die Ethereum Virtual Machine (EVM) ist eine isolierte, deterministische Rechnerumgebung, die jeden Smart Contract ausführt.
  • Transaktionen werden in Gas als Arbeitseinheit, die die Ausführungskosten misst bezahlt.
  • Smart Contracts werden zuerst in Bytecode eine kompakte, maschinenlesbare Form, die die EVM versteht übersetzt und dann Opcode für Opcode abgearbeitet.
  • Der gesamte Ablauf ist transparent und reproduzierbar - das macht Ethereum zu einer vertrauenswürdigen Plattform.

Grundlagen der Ethereum-Architektur

Bevor wir in die EVM einsteigen, ein kurzer Überblick: Ethereum ein dezentrales Netzwerk, das neben einer Kryptowährung (Ether) auch eine Turing‑vollständige Programmiersprache für Smart Contracts bereitstellt. Jeder Knoten im Netzwerk hält eine Kopie der Blockchain, also einer chronologischen Liste aller Transaktionen und Zustandsänderungen. Die EVM ist dabei das Bindeglied zwischen den rohen Daten (Transaktionen) und dem neuen Zustand (z.B. geänderte Kontostände).

Was ist die EVM?

Die Ethereum Virtual Machine eine virtuelle Maschine, die in jeder Ethereum‑Node läuft und die Ausführung von Smart Contracts standardisiert. Sie arbeitet nach einem einfachen Prinzip: Sie nimmt Eingabedaten (z.B. Aufrufparameter) und führt deterministische Befehle (Opcodes) aus, bis ein Endzustand erreicht ist. Für Entwickler bedeutet das: Der gleiche Code liefert auf jedem Knoten exakt das gleiche Ergebnis - ein entscheidender Faktor für Vertrauen und Sicherheit.

Wie werden Smart Contracts ausgeführt?

Ein Smart Contract ein selbstausführender Vertrag, der in Code geschrieben ist und auf der Ethereum‑Blockchain gespeichert wird wird in drei Schritten aktiv:

  1. Der Entwickler schreibt den Vertrag in einer Hochsprache wie Solidity.
  2. Der Code wird vom Compiler in Bytecode eine Reihe von 0‑und‑1‑Werten, die die EVM versteht übersetzt und auf die Blockchain hochgeladen.
  3. Eine Nutzer‑Transaktion ruft eine Funktion des Contracts auf; die EVM führt die zugehörigen Opcodes aus, ändert den internen Zustand und schreibt das Ergebnis zurück in die Blockchain.

Damit das alles klappt, wird jeder Schritt von der EVM kontrolliert und durch Gas einer virtuellen Einheit, die Rechenleistung und Speicherverbrauch misst bezahlt.

Entwicklerarbeitsplatz mit Solidity‑Code, Bytecode‑Overlay und holographischer EVM‑Ausführung.

Gas und Transaktionsgebühren

Gas ist das Maß, das verhindert, dass jemand endlose Schleifen im Contract schreibt und das Netzwerk lahmlegt. Jeder Opcode hat einen festgelegten Gas‑Preis - zum Beispiel kostet das Laden eines Werts aus dem Speicher 3 Gas, das Schreiben 20 Gas. Der Absender der Transaktion legt einen Gas‑Preis in Ether fest (z.B. 50gwei). Der Gesamtpreis einer Transaktion errechnet sich aus verwendetes Gas × Gas‑Preis. Wenn das Gas‑Limit zu niedrig ist, bricht die Ausführung ab, aber das bereits verbrauchte Gas wird trotzdem bezahlt - das schützt das Netzwerk vor Missbrauch.

Opcodes und Bytecode - die Sprache der EVM

Die EVM versteht keine Hochsprache, sondern nur eine Reihe von sogenannten Opcodes - quasi die Grundbefehle, die in den Bytecode übersetzt werden. Beispiele:

  • ADD - addiert zwei Zahlen.
  • SLOAD - liest einen Wert aus dem Speicher.
  • CALL - ruft einen anderen Contract auf.

Der Bytecode eine kompakte, binäre Darstellung von Opcodes, die von der EVM gelesen wird besteht aus einer langen Zeichenkette (hexadezimal), die alle nötigen Opcodes in der richtigen Reihenfolge enthält. Der Compiler übernimmt die Übersetzung; du als Entwickler kannst den Bytecode aber auch direkt inspizieren, um zu prüfen, welche Opcodes verwendet werden und wie viel Gas sie kosten.

Schritt‑für‑Schritt‑Ablauf einer typischen Transaktion

  1. Erstellung: Du öffnest deine Wallet, gibst die Zieladresse des Contracts und die gewünschten Eingabedaten (z.B. Funktionsparameter) ein.
  2. Gas‑Schätzung: Dein Client fragt die EVM nach einer Schätzung, wie viel Gas die Ausführung kosten könnte.
  3. Signatur: Die Transaktion wird mit deinem privaten Schlüssel signiert, sodass das Netzwerk dich eindeutig identifizieren kann.
  4. Broadcast: Die signierte Transaktion wird an das Peer‑to‑Peer‑Netzwerk gesendet.
  5. Mining/Validierung: Miner (oder Validatoren im Proof‑of‑Stake‑System) nehmen die Transaktion in einen Block auf, prüfen, ob das angegebene Gas‑Limit ausreicht, und führen den zugehörigen Bytecode in ihrer EVM aus.
  6. Zustandsänderung: Nach erfolgreicher Ausführung wird der neue Contract‑Zustand (z.B. aktualisierte Kontostände) in der Blockchain gespeichert.
  7. Bestätigung: Du siehst die Transaktion in deinem Wallet, inklusive Gas‑Kosten und eventueller Rückgabewerte.

Der ganze Prozess dauert je nach Netzwerklast von wenigen Sekunden bis zu mehreren Minuten - das ist der Preis für Dezentralisierung und Sicherheit.

Drei Panels zeigen EVM, Bitcoin‑Script‑VM und WASM als unterschiedliche Maschinen.

Praktische Tipps und häufige Stolperfallen

  • Gas‑Limits nicht zu niedrig setzen: Ein zu geringes Limit lässt die Ausführung abbrechen und kostet trotzdem das verbrauchte Gas.
  • Reentrancy‑Angriffe verstehen: Wenn ein Contract außenstehende Aufrufe tätigt, kann ein Angreifer den Aufruf zurück in den Contract schleusen und Werte stehlen. Verwende das „Checks‑Effects‑Interactions“-Pattern, um das Risiko zu senken.
  • Bytecode inspizieren: Tools wie Etherscan zeigen den veröffentlichten Bytecode an; das hilft, versteckte Schleifen oder ineffiziente Opcodes zu entdecken.
  • Upgrade‑Strategien: Da einmal deployte Contracts unveränderlich sind, setzen Entwickler oft Proxy‑Pattern ein, um Logik zu aktualisieren, ohne die Adresse zu ändern.

Vergleich: EVM vs. andere virtuelle Maschinen

EVM im Vergleich zu Bitcoin VM und WASM
Merkmal EVM Bitcoin VM (Script) WASM (für zk‑Rollups)
Programmiersprache Solidity, Vyper, Yul Stack‑basiertes Script Rust, AssemblyScript, C++
Determinismus Ja, bei gleicher Eingabe Ja, sehr eingeschränkt Ja, aber komplexer
Gas‑Modell Fein granular, pro Opcode Kein Gas, nur Script‑Größe Ähnlich wie EVM, aber mit Weight‑Units
Einsatzgebiet Allgemeine Smart Contracts Einfaches Zahlungs- & Verifizierungs‑Script Layer‑2, Skalierungslösungen

Mini‑FAQ - häufige Fragen zur EVM

Häufig gestellte Fragen

Was bedeutet „EVM‑kompatibel“?

Ein Netzwerk ist EVM‑kompatibel, wenn es dieselben Opcodes, das gleiche Gas‑Modell und dieselben Bytecode‑Formate wie die originale Ethereum‑Virtual‑Machine unterstützt. Das erlaubt, dass Contracts ohne Änderungen von Ethereum nach Binance Smart Chain, Polygon oder Avalanche migriert werden können.

Wie kann ich den Gasverbrauch meines Contracts reduzieren?

Vermeide teure Speicher‑Writes, nutze „view“‑Funktionen, packe mehrere Werte in ein bytes32‑Array und setze immutable Variablen ein. Der Compiler kann durch Optimierung Flags (z.B.-O) ebenfalls den Bytecode verkleinern.

Kann ich den EVM‑Code selbst schreiben, ohne Solidity?

Ja, du kannst den sogenannten Yul‑ oder EVM‑Assembly‑Code direkt schreiben. Das erfordert jedoch tiefes Verständnis der Opcodes und des Stack‑Modells, ist aber nützlich für besonders gas‑effiziente Routinen.

Was passiert, wenn ein Contract zu viel Gas verbraucht?

Die Transaktion wird abgebrochen, aber das bereits verbrauchte Gas wird dem Miner/Validator ausbezahlt. Der Contract‑Zustand bleibt unverändert - das schützt das Netzwerk vor unkontrollierten Schleifen.

Wie sicher ist die EVM gegenüber Bugs?

Die EVM selbst ist seit dem Launch 2015 stabil, weil ihr Kern in Solidity und Go/Erlang implementiert ist und umfangreich von der Community auditiert wurde. Die größte Fehlerquelle sind jedoch fehlerhafte Smart Contracts - deshalb sollten diese immer gründlich getestet und von Dritten geprüft werden.