Was ist die EVM?

25.03.2022

Die Ethereum Virtual Machine (EVM) ist eine deterministische Runtime-Umgebung und Rechenmaschine, in der die auf Ethereum bereitgestellten Smart Contracts ausgeführt werden. Der Begriff “virtuelle Maschine” wird üblicherweise für eine Virtualisierung oder Nachbildung eines realen Computers verwendet. Die EVM stellt allerdings nur eine Abstraktion der Berechnung und Speicherung dar und läuft daher in einem stärker eingeschränkten Bereich als herkömmliche virtuelle Maschinen.

Die EVM definiert im Wesentlichen die Regeln für die Berechnung eines neuen Gültigkeitszustands («new valid state») und dient als Grundlage für die Betriebsstruktur von Ethereum. Es handelt sich um einen isolierten virtuellen Stack, der in jeden Ethereum-Node eingebettet und für die Ausführung von Contract-Bytecode zuständig und aus komplexeren Programmiersprachen wie z.B. Solidity kompiliert wurde. Daher wird der Status nur aktualisiert, wenn die Ausführung der Sandbox-Version erfolgreich abgeschlossen wurde. Die Isolierung ist wichtig, um Hacks oder Bugs innerhalb eines Smart Contracts einzudämmen.

Da jeder Node dieselben algorithmischen Anweisungen verwaltet, um Smart-Contract-Transaktionen zu verifizieren und einen Konsens zu erzielen und aufrechtzuerhalten, wird die EVM oft als dezentraler, quasi Turing-vollständig “Weltcomputer” bezeichnet.

Turing-Vollständigkeit

Eine “vollständige Turing-Maschine” ist eine abstrakte, automatische Rechenmaschine, die Probleme auf der Grundlage algorithmischer Regeln löst und grundsätzlich fähig ist, jedes Programm auszuführen. Die EVM wird daher als “quasi-Turing-vollständig” bezeichnet, weil sie in der Lage ist, die Ausführung zu stoppen, wenn eine vordefinierte Menge an Berechnungen erreicht ist. Ohne einen Begrenzer läuft die EVM Gefahr, in das Halte-Problem («halting problem») zu geraten. Dies ist ein Zustand, in dem die EVM ein Programm ausführt, das nie aufhört. Die zur Überwindung des Halte-Problems verwendete Metrik ist «Gas», Ethereums Einheit für Rechen- und Speicheraufwand, die auch Denial-of-Service-Angriffe (DoS) löst.

Wie funktioniert die EVM?

Wie Bitcoin ermöglicht die Ethereum Blockchain die Übertragung digitaler Vermögenswerte zwischen den Wallets der Nutzer und zeichnet diese auf. Darüber hinaus dient sie den Nutzern als Plattform für die Bereitstellung dezentraler Anwendungen (dApps) und intelligenter Verträge zur Verwaltung bedingter Transaktionen im Netzwerk.

Damit Ethereum-Smart Contracts korrekt ausgeführt werden können, muss jeder Node überprüfen können, ob die vorherigen Bedingungen erfüllt wurden. Daher führt jede Node eine EVM-Instanz aus, die es ihnen ermöglicht, sich auf die Ausführung derselbenAnweisungen zu einigen.

Einige Smart Contracts beinhalten komplexere Bedingungen, die Eingaben aus mehreren Datenquellen oder den Aufruf anderer Smart Contracts innerhalb ihrer Infrastruktur erfordern. Damit bietet die EVM die Möglichkeit, alle aktuellen Zustände von Smart Contracts zu überwachen und in der Blockchain auszuführen. In der Praxis bedeutet dies, dass die EVM die Vereinbarung zwischen Smart Contracts und die anschliessenden Werttransfers erleichtert, wenn Ethereum-Nutzer in verschiedenen Teilen der Welt eine Vereinbarung miteinander treffen wollen, – ohne die Notwendigkeit einer zentralisierten Behörde. Wenn die Bedingungen entsprechend erfüllt und die Daten/Werte übertragen werden, hilft die EVM sicherzustellen, dass der korrekte, aktuelle Zustand vom Netzwerk aufrechterhalten wird.

Wie speichert und führt die EVM Smart Contracts aus?

Auf der Ethereum-Blockchain gibt es zwei Arten von Konten: externe Konten (External Owned Accounts, EOA) und Vertragskonten (Contract Accounts, CA). Informationen, die für EOAs relevant sind, werden durch private Schlüssel kontrolliert, während Informationen, die für CAs relevant sind, in den Smart Contracts selbst gespeichert werden. Einfache Wertübertragungen von einem EOA zum Anderen müssen die EVM nicht einbeziehen, aber alles andere erfordert eine von der EVM berechnete Statusaktualisierung. Aufgrund der Kontoabstraktion behandelt die EVM beide Konten gleich.

Intelligente Verträge, die z.B. in Solidity geschrieben wurden, werden in Bytecode kompiliert, der Opcodes enthält. Diese enthalten Anweisungen für die EVM zur Ausführung bestimmter Aufgaben. Bestimmte Opcodes manipulieren beispielsweise den Ethereum-Stack, und einige manipulieren den Speicher von Ethereum. Jedes Mal, wenn ein Opcode ausgeführt wird, verbraucht die EVM Gas – die für die Ausführung von Prozessen auf der Ethereum-Blockchain erforderliche Rechenleistung. Die Nutzer müssen das Gas mit dem digitalen Ethereum-Token ETH bezahlen, um ihre Smart Contracts auszuführen und Transaktionen zu ermöglichen.

EVM Datenspeicherung:

Die EVM speichert ihre Smart Contract-Daten in drei verschiedenen Bereichen: Speicherung, Datenbank und Stack.

Speicherung: Jedes Ethereum-Konto verfügt über eine dauerhafte Speicherung, der Teil des Ethereum-Status ist, für Daten wie “abgeleitete Berechnungen, Caching und Aggregate ausserhalb des Contracts”. Contracts können nur Daten in ihre eigenen Speicherungen schreiben, und es ist relativ kostspielig, dort gespeicherte Daten zu lesen.

Datenbank: Die Datenbank für temporäre Variablen ist linear und wird zwischen den Aufrufen eines Smart Contracts jeweils gelöscht. Die Datenbank wächst quadratisch und kostet mehr, wenn er skaliert, ist aber günstiger als die Speicherung.

Der Stack: Alle EVM-Rechenaktivitäten finden auf dem Stack statt. Der Stack kann bis zu 1024 lokale Variablen aufnehmen, wobei jedes Stack-Element 256 Bits enthält. Der Stack ist die günstigste Speicherungsform im Hinblick auf Gasgebühren.

EVM-Kompatibilität

Aufgrund des Netzwerkeffekts von Ethereum nutzen immer mehr andere Layer-1-Blockchains die EVM und profitieren daher von bereits verfügbaren Entwickler-Tools und der Blockchain-Infrastruktur. Dazu gehören Polygon, Avalanche C-Chain, Binance Smart Chain, Fantom Opera und weitere. EVM-Kompatibilität ist ausserdem wichtig für Layer-2-Lösungen wie Arbitrum oder Optimism.

BTCS-logo-mark_rgb.png

Bitcoin Suisse