Was ist eine Virtual Machine? Eine einfache Erklärung

Was ist eine Virtual Machine? Eine einfache Erklärung

Was ist eine Virtual Machine?

Eine Virtual Machine, oft abgekürzt als VM, ist eine softwarebasierte Umgebung, die sich wie ein Computer oder wie eine Umgebung verhält, in der Programme ausgeführt werden können. Welche der beiden Varianten gemeint ist, hängt vom Typ der VM ab.

Bei einer systemorientierten VM erhältst du im Grunde einen vollständigen virtuellen Computer. Dieser kann ein eigenes Betriebssystem ausführen, Daten speichern und eine Netzwerkverbindung nutzen. Der echte physische Computer heißt Host. Die virtuellen Computer, die darauf laufen, heißen Guests.

Eine prozessorientierte VM ist dagegen eine Ausführungsumgebung für Programmcodes. Die Java Virtual Machine, kurz JVM, ist dafür ein bekanntes Beispiel.

Im Bereich Krypto arbeitet die Ethereum Virtual Machine, oft abgekürzt als EVM, auf ähnliche Weise. Sie ist kein virtueller Computer mit eigenem Betriebssystem, sondern eine Umgebung, die Smart Contracts nach festen Regeln ausführt.

Du kannst dir eine VM also als eine Softwareebene vorstellen, die festlegt, wie ein virtueller Computer oder Programmcodes ausgeführt werden.


Wichtigste Erkenntnisse

  • Eine Virtual Machine ist eine softwarebasierte Computerumgebung oder Ausführungsumgebung für Code.
  • Eine systemorientierte VM bildet einen vollständigen Computer nach.
  • Eine prozessorientierte VM führt Programmcodes innerhalb einer festen Runtime aus.
  • Die EVM ist eine Blockchain-VM für Smart Contracts, kein virtueller PC.
  • VM's können dabei helfen, Umgebungen voneinander zu trennen und Code nach festen Regeln auszuführen.

Wie funktioniert eine Virtual Machine?

Wie eine VM funktioniert, hängt vom Typ ab.

Bei einer systemorientierten VM sitzt meist ein Hypervisor zwischen der physischen Hardware und den virtuellen Computern. Ein Hypervisor ist Software, die Ressourcen wie Rechenleistung, Speicher, Speicherplatz und Netzwerkkapazität des Hosts auf verschiedene virtuelle Maschinen verteilt.

Stell dir vor, ein physischer Server betreibt drei virtuelle Maschinen. Jede VM kann dann so arbeiten, als hätte sie einen eigenen Computer, obwohl sie sich in Wirklichkeit die Hardware desselben Hosts teilen. Der Hypervisor regelt, welche Ressourcen jede VM nutzen darf, und hält die verschiedenen Umgebungen möglichst voneinander getrennt.

Die verfügbare Kapazität bleibt dabei von dem physischen Computer abhängig. Wenn dem Host zu wenig Speicher, Rechenleistung oder Speicherplatz zur Verfügung steht, können auch die virtuellen Maschinen darunter leiden.

Eine prozessorientierte VM funktioniert anders. Programmcodes werden dabei innerhalb einer festen Softwareumgebung ausgeführt. Java-Code wird zum Beispiel in Anweisungen umgewandelt, die von einer JVM ausgeführt werden können. Dadurch kann derselbe Code auf verschiedenen Betriebssystemen und Hardwaretypen laufen, solange dort eine geeignete JVM verfügbar ist.

Blockchain-VM's führen Programmcodes nach festen Regeln aus, die für die teilnehmenden Nodes gleich sind. Dadurch sollte derselbe Code mit derselben Eingabe immer zum selben Ergebnis führen.

Welche Arten von Virtual Machines gibt es?

Virtual Machines werden meist in zwei Haupttypen unterteilt: systemorientierte und prozessorientierte VM's.

Was ist eine systemorientierte Virtual Machine?

Eine systemorientierte Virtual Machine ist ein virtueller Computer, auf dem ein eigenes Betriebssystem und Anwendungen laufen können.

Die VM erhält virtuelle Versionen von Hardware, etwa Prozessor, Speicher, Speicherplatz und eine Netzwerkverbindung. Ein Hypervisor verwaltet dann, wie die verschiedenen virtuellen Maschinen die echte Hardware des Hosts nutzen.

Hyper-V und KVM sind Beispiele für Technologien, mit denen solche virtuellen Maschinen erstellt werden können.

Ein Vorteil davon ist, dass mehrere Betriebssysteme auf einem physischen Server laufen können. So kannst du verschiedene Anwendungen oder Arbeitsumgebungen voneinander trennen, ohne für jede Umgebung einen eigenen physischen Computer zu brauchen.

Diese Trennung kann auch bei der Sicherheit helfen. Wenn eine virtuelle Maschine abstürzt oder angegriffen wird, bedeutet das nicht automatisch, dass auch die anderen virtuellen Maschinen betroffen sind. Eine sichere Konfiguration von Host und Hypervisor bleibt trotzdem wichtig.

Was ist eine prozessorientierte Virtual Machine?

Eine prozessorientierte Virtual Machine ist eine Ausführungsumgebung für Programmcodes und kein vollständiger virtueller Computer mit eigenem Betriebssystem.

Die Java Virtual Machine (JVM) ist dafür ein bekanntes Beispiel. Ein Java-Programm wird in ein Zwischenformat umgewandelt, das die JVM verstehen kann. Eine geeignete JVM kann diesen Code anschließend auf verschiedenen Betriebssystemen und Hardwaretypen ausführen.

Die JVM legt fest, welche Anweisungen verfügbar sind und wie sich Java-Code während der Ausführung verhalten soll. Die genaue technische Umsetzung kann sich von JVM zu JVM unterscheiden.

Blockchain-VM's ähneln eher diesem Typ von VM als einem vollständigen virtuellen Computer, weil sie vor allem dazu dienen, Programmcodes nach festen Regeln auszuführen.

Welche Rolle spielt eine Virtual Machine innerhalb der Blockchain?

Innerhalb einer programmierbaren Blockchain bestimmt eine Virtual Machine, wie Smart Contracts und andere Programmcodes ausgeführt werden.

Die VM legt fest, welche Anweisungen möglich sind und wie diese Anweisungen den Zustand der Blockchain verändern dürfen. Dadurch können verschiedene Nodes dieselbe Transaktion nach denselben Regeln ausführen und überprüfen.

Ethereum nutzt dafür die Ethereum Virtual Machine (EVM). Ethereum erfasst nicht nur Transaktionen, sondern auch einen aktuellen Zustand mit unter anderem Konten, Guthaben und Daten von Smart Contracts.

Wenn ein Smart Contract auf Ethereum bereitgestellt wird, wird der kompilierte Programmcode als Bytecode gespeichert. Ruft jemand den Vertrag später auf, führt die EVM diesen Bytecode aus.

Die Virtual Machine und der Konsensmechanismus haben dabei unterschiedliche Aufgaben. Die VM bestimmt, was eine Transaktion technisch macht. Der Konsens sorgt dafür, dass sich die Teilnehmer darüber einigen, welche Transaktionen und welcher neue Zustand vom Netzwerk akzeptiert werden.

Nicht jede Blockchain hat eine allgemeine VM für Smart Contracts. Bitcoin nutzt zum Beispiel Bitcoin Script, um Bedingungen für das Ausgeben von Bitcoin festzulegen. Das ist bewusst eingeschränkter als eine allgemeine Smart-Contract-Umgebung wie die EVM.

Wie funktioniert die Ethereum Virtual Machine (EVM)?

Eine Ethereum-Transaktion kann zum Beispiel ETH senden, einen neuen Smart Contract erstellen oder einen bestehenden Smart Contract aufrufen.

Wenn ein Smart Contract erstellt wird, wird der kompilierte Bytecode in einem Vertragskonto gespeichert. Wenn jemand den Vertrag später aufruft, führt die EVM diesen Bytecode aus.

Die EVM arbeitet als Stackmaschine. Einen Stack kannst du dir wie einen Stapel mit Werten vorstellen. Die EVM kann Werte auf diesen Stapel legen und sie wieder verwenden, um Berechnungen auszuführen.

Der EVM-Stack kann maximal 1.024 Einträge enthalten. Jeder Eintrag besteht aus 256 Bits.

Während der Ausführung nutzt die EVM temporären Speicher für Berechnungen. Dieser Speicher verschwindet nach der Transaktion. Smart Contracts können außerdem Daten in einem dauerhaften Vertragsspeicher ablegen, sodass diese bei späteren Transaktionen wieder verfügbar sind.

Jede EVM-Anweisung, auch Opcode genannt, hat bestimmte Gaskosten. Gas gibt an, wie viel Rechenaufwand und andere Netzwerkressourcen eine Aktion verbraucht. Die Gasgrenze einer Transaktion bestimmt, wie viel Gas die Ausführung maximal verbrauchen darf.

Am Ende zahlst du für das Gas, das tatsächlich verwendet wird. Bei Ethereum-Transaktionen nach EIP-1559 besteht der Gaspreis unter anderem aus einer Base Fee und einer Priority Fee. Die Base Fee wird verbrannt. Die Priority Fee geht an den Validator, der den Block vorschlägt, in dem die Transaktion aufgenommen wird.

Beispiel: Stell dir vor, du sendest eine Transaktion an einen Smart Contract, um Tokens zu übertragen. Die EVM führt den Code des Vertrags aus, prüft die Bedingungen und passt die gespeicherten Guthaben an, wenn alles stimmt. Für die Ausführung dieser Anweisungen verbraucht die Transaktion Gas.

Welche anderen Blockchain-Virtual Machines gibt es?

Neben der EVM gibt es andere Blockchain-Umgebungen für die Ausführung von Programmen und Smart Contracts. Diese können andere Programmiersprachen, Speichermodelle und Ausführungsregeln verwenden.

Solana nutzt zum Beispiel eine Runtime, in der Programme als sBPF-Bytecode ausgeführt werden. Programme werden in ELF-Dateien mit sBPF-Code kompiliert und laufen anschließend in einer abgeschirmten Umgebung.

Statt Gas verwendet Solana unter anderem Compute Units, um zu messen, wie viel Rechenaufwand eine Transaktion verbraucht. Die verschiedenen Anweisungen innerhalb einer Transaktion teilen sich dasselbe Compute-Budget.

Sui nutzt die Programmiersprache Move für Smart Contracts. Die Smart Contracts werden als Move Packages auf der Blockchain veröffentlicht und können On-Chain-Objekte erstellen und anpassen.

Sui arbeitet dabei mit einem Objektmodell. Ein On-Chain-Objekt hat unter anderem eine eindeutige ID, einen Eigentümer und eine Versionsnummer. Transaktionen können diese Objekte lesen, anpassen, übertragen oder neue Objekte erstellen.

Das unterscheidet sich von Ethereum, wo Konten und Vertragsspeicher eine zentrale Rolle spielen. Blockchain-VM's können also dasselbe allgemeine Ziel haben, aber technisch sehr unterschiedlich aufgebaut sein.

Wofür werden Virtual Machines verwendet?

Systemorientierte VM's werden häufig eingesetzt, wenn mehrere Betriebssysteme oder Anwendungen auf einem physischen Server laufen sollen. Das ist zum Beispiel in Cloud-Umgebungen und Rechenzentren der Fall.

Sie werden auch genutzt, um Entwicklungs-, Test- und Produktionsumgebungen voneinander zu trennen. Außerdem können komplette virtuelle Umgebungen als VM-Images oder virtuelle Festplatten gespeichert und später erneut gestartet werden.

Prozessorientierte VM's werden vor allem verwendet, um denselben Programmcodes auf verschiedenen Systemen ausführen zu können. Eine Anwendung muss sich dadurch nicht direkt an jede Kombination aus Hardware und Betriebssystem anpassen.

Blockchain-VM's ermöglichen programmierbare Transaktionen. Sie führen Smart Contracts aus und können dadurch zum Beispiel gespeicherte Daten ändern, Tokens verschieben oder andere Aktionen nach den Regeln eines Vertrags ausführen.

Was sind die Vorteile und Grenzen einer Virtual Machine?

Virtual Machines bieten verschiedene Vorteile, haben aber auch Grenzen.

Bei systemorientierten VM's sind das wichtige Vorteile:

  • Effizientere Nutzung der Hardware: Mehrere virtuelle Computer können sich die Ressourcen eines physischen Hosts teilen.

  • Trennung zwischen Umgebungen: Verschiedene Betriebssysteme und Anwendungen können unabhängig voneinander laufen.

  • Probleme bleiben häufiger begrenzt: Ein Fehler oder Absturz in einer VM hat nicht automatisch Auswirkungen auf alle anderen VM's auf demselben Host.

  • Umgebungen lassen sich leichter erneut verwenden: Mit VM-Images und virtuellen Festplatten kann eine komplette Softwareumgebung gespeichert und erneut gestartet werden.

Diese Trennung ist nicht vollständig wasserdicht. Bei einem sogenannten VM-Escape kann ein Angreifer aus einer virtuellen Maschine heraus versuchen, Zugriff auf den Hypervisor oder Host zu bekommen. Auch eine schlechte Konfiguration kann die Trennung zwischen VM's schwächen.

Virtual Machines verbrauchen außerdem selbst Ressourcen. Der Hypervisor und die verschiedenen virtuellen Betriebssysteme benötigen Rechenleistung, Speicher und Speicherplatz. Wenn zu viele VM's dieselbe physische Maschine nutzen, können sie miteinander um diese Ressourcen konkurrieren.

Bei prozessorientierten VM's ist Portabilität ein wichtiger Vorteil. Demgegenüber muss der Code immer innerhalb der Regeln und verfügbaren Ressourcen der Runtime funktionieren.

Bei Blockchain-VM's liegt der Vorteil vor allem in der vorhersehbaren Ausführung von Smart Contracts. Gleichzeitig sind Berechnungen und Speicher auf einer Blockchain begrenzt. Netzwerke setzen Grenzen dafür, wie viel Rechenaufwand und Speicher eine Transaktion oder ein Smart Contract nutzen darf.

Außerdem können komplexere Berechnungen höhere Transaktionskosten verursachen. Deshalb sind aufwendige Berechnungen nicht immer praktisch, wenn sie vollständig auf einer Blockchain ausgeführt werden sollen.

Fazit

Eine Virtual Machine kann ein vollständiger virtueller Computer sein, eine Umgebung für die Ausführung von Programmcodes oder eine spezialisierte Runtime für Smart Contracts.

Systemorientierte VM's machen es möglich, mehrere getrennte Computerumgebungen auf derselben physischen Hardware zu betreiben. Prozessorientierte VM's machen Programmcodes leichter zwischen verschiedenen Systemen übertragbar.

Innerhalb der Blockchain sorgen VM's wie die EVM dafür, dass Smart Contracts nach festen Regeln ausgeführt werden. Dadurch können Transaktionen mehr tun, als nur Werte zu senden.

Dem stehen allerdings Grenzen gegenüber. Virtual Machines bleiben von verfügbaren Ressourcen abhängig, und Blockchain-VM's setzen zusätzlich Grenzen für Rechenaufwand, Speicher und Kosten.

Über Finst

Finst ist eine führende Kryptowährungsplattform in den Niederlanden und bietet ultra-niedrige Trading-Gebühren, Sicherheit auf institutionellem Niveau sowie ein umfassendes Paket an Krypto-Services wie Trading, Verwahrung (Custody), Staking und Fiat On-/Off-Ramp. Finst wurde vom ehemaligen Kernteam von DEGIRO gegründet, ist als Crypto-Asset Service Provider von der niederländischen Finanzaufsicht (AFM) zugelassen und bedient private sowie institutionelle Kunden in 30 europäischen Ländern.

Die Krypto-Plattform für langfristige Anleger

Egal, ob du aktiv handelst oder langfristig investierst - mit Finst kannst du dein Krypto-Vermögen sicher und selbstbewusst aufbauen.

Gratis Konto eröffnen