EVM, Smart Contracts & Gas

Die Ethereum Virtual Machine und Smart Contracts

Die EVM (Ethereum Virtual Machine) ist die Laufzeitumgebung für Smart Contracts (selbst ausführende Computerprotokolle)Obwohl das Wort „Vertrag“ an gesetzliche Vereinbarungen erinnert, sind diese intelligenten Verträge einfache, nicht intelligente Codezeilen, die in der Blockchain ausgeführt werden. Sie garantieren allerdings, dass eine Ausführung immer dasselbe Ergebnis liefert. So könnten Smart Contracts z.B. gewährleisten, dass ein Grundstücksverkauf über das Internet für beide Parteien sicher vonstattengeht, ohne dass eine überwachende dritte Partei involviert sein müsste.

Der Begriff “Smart Contract” wurde in den 90er Jahren von Nick Szabo geprägt. Szabo beschrieb anhand des grundlegenden Beispiels eines Verkaufsautomaten, wie reale, vertragliche Verpflichtungen in Software- und Hardwaresysteme einprogrammiert werden können. Jede korrekte Münzeingabe in einem Automaten erzielt eine gewünschte Produktausgabe im Austausch. Dieser Wechsel folgt der bedingten Anweisung (Wenn-dann-Prinzip). In ähnlicher Weise können Verträge auf der Ethereum-Blockchain funktionieren. Wenn bestimmte Bedingungen erfüllt sind, dann führt der Smart Contract eine zuvor bestimmte Aktion aus. Bezahlt z.B. ein Käufer einen vorab vereinbarten Preis für ein Grundstück an den dafür vorgesehenen Smart Contract, dann erhält er im Gegenzug die digitale Grundstücksurkunde aus diesem Smart Contract.

Die Laufzeitumgebung (EVM) erstellt ein dezentrales, auf vielen teilnehmenden Rechnern verteiltes, virtuelles System, welches Programme bzw. Smart Contracts ausführt. Virtuelle Maschinen schaffen im Wesentlichen eine Abstraktionsebene zwischen dem ausführenden Code und der ausführenden Maschine. Dadurch können Programme auf verschiedenen Systemen problemlos ausgeführt werden und bieten eine höhere Sicherheit gegen Manipulation. Mit der EVM und der eigenen Programmiersprache Solidity¹ bietet Ethereum Entwicklern ein dezentrales Ökosystem. Obwohl die Interaktion mit der EVM über Smart Contracts teurer ist als die Ausführung von Programmen auf herkömmlichen, zentralen Servern, wird die Dezentralisierung gegenüber den Kosten (in Ether [ETH, Ξ] abgegolten)  bevorzugt – die zunehmenden Cyberangriffe belegen dabei die Verletzlichkeit unserer bestehenden Internet-Infrastruktur. Facebook hat zudem anschaulich gezeigt, was mit unseren Daten auf zentralen Servern von Unternehmen geschieht.

Um die EVM besser zu verstehen, könnte man sich BitTorrent ins Gedächtnis rufen, welches laut Vitalik Buterin „die erste dezentrale Anwendung (Dapp) war – eine Gemeinschaft unabhängiger Benutzer, die über ein offenes Internetnetzwerk Daten untereinander austauschen“. BitTorrent wurde 2001 von Bram Cohen als File-Sharing Protokoll entwickelt. Trotz abgestimmter, internationaler Milliarden-Dollar-Bemühungen es zu zerstören ist es auch heute noch quicklebendig. Um BitTorrent zu stoppen, müsste man die Software auf jedem einzelnen, teilnehmenden Computer weltweit entfernen. Gleiches gilt für die EVM. Deshalb wird das dezentrale Ethereum-Netzwerk als The Unstoppable World Computer (der unaufhaltsame Weltcomputer) bezeichnet. Um die Verlangsamung des Netzwerks zu verhindern, indem rechenintensive Smart Contracts als Angriffe verwendet werden, hat jeder Maschinenbefehl (Opcode) Basiskosten, und jede Standard-Transaktion beginnt mit 21000 Gas. Die Faustregel besagt, dass einfache, unkomplizierte Anweisungen weniger Gas, komplizierte mehr Gas verwenden. Gas ist die zweite Recheneinheit neben Ether. Während der Ether-Preis der Volatilität (Schwankungsanfälligkeit) des Marktes unterliegt, so bleiben die Gas-Preise immer konstant.

I thought [those in the Bitcoin community] weren’t approaching the problem in the right way. I thought they were going after individual applications; they were trying to kind of explicitly support each [use case] in a sort of Swiss Army knife protocol.

Mit einer Turing-vollständigen Programmiersprache werden mögliche Anwendungen der Ethereum Blockchain lediglich durch die Kreativität eines Entwicklers begrenzt. Buterin verwendet eine Analogie, um einen Vergleich mit Bitcoin zu erklären:

Instead of creating a device that just does a specific number of things, you have a device that understands and supports this programming language and whatever people want to do [can potentially be implemented].

Vitalik Buterin², Bitcoin Magazine

Ether und Gas

Ether ist die digitale Währung des Ethereum-Netzwerks. Um kleinere Größen leichter abbilden zu können, hat auch Ether eine kleinere Einheit namens Wei³. Ether und Wei sind im übertragenen Sinne Euro und Cent. Anstelle von zwei Nachkommastellen besitzt Ether jedoch 18. Das bedeutet, dass 1 Ether = 10^18 Wei entspricht. Deshalb werden zusätzlich bekannte Präfixe wie kilo, mega, giga und terra verwendet. Gas wird zumeist in Gwei angegeben, was 10^9 Wei gleichkommt oder 0,000 000 001 Ether. Gas ist ein cleverer Mechanismus, den Ethereum als netzinterne Gebühr für die Abwicklung einer Transaktion oder eines Vertrages verwendet. Das Gas-System unterscheidet sich dabei nicht wesentlich von der Verwendung von KW zur Messung des Energieverbrauches zuhause. Durch diesen Mechanismus wird der rechnerische Verbrauch bei der Ausführung einer Codezeile von der Währungseinheit Ether und ihrem jeweiligen Marktwert entkoppelt. Dies bedeutet, dass selbst bei Marktpreisschwankungen von Ether, Transaktionen und das Ausführen von Smart Contracts in ihrem Preis konstant bleiben können, ohne durchweg den Preis für diese anpassen zu müssen. Es werden beispielsweise immer konstant 21000 Gas für eine Standard-Transkation verlangt, anstelle des jeweiligen Ether-PreisesDie Verrechnung und Anpassung von Gas und Ether erfolgt automatisiert und standardisiert im Hintergrund.
Der etwas geübtere Anwender kann aber auch selbst eine Anpassung des Gas-Preises vornehmen und tritt somit in einen Marktplatz ein, bei dem er selbst bestimmen kann, was ihm die Transaktion wert ist und wie schnell sie ausgeführt werden soll. Der Miner hingegen entscheidet, ob er diesen Preis akzeptiert bzw. wann er die Transaktion in einen Block mit aufnimmt. In Hoch-Zeiten werden somit höhere Gebote den Vorrang erhalten, lässt der Andrang nach, so werden auch sehr günstige Transaktions-Preise den Weg in einen Block finden. Wer zeitlich flexibel ist und eventuell eine Stunde auf die Finalität seiner Transaktion warten kann, bietet somit einen geringeren Gas-Preis an.

Im folgenden Video beschreibt Andreas Antonopoulos Smart Contracts und die Ethereum EVM:

¹ Die Programmiersprache ist Javascript und C++ sehr ähnlich. Smart Contract Sprachen wie Solidity können von der EVM nicht direkt ausgeführt werden. Stattdessen werden sie zu einfachen Maschinenbefehlen (sogenannten Opcodes) kompiliertDadurch wird die EVM Turing-vollständig und somit universell programmierbar. 

² Der Mitbegründer und Erfinder Ethereums. Vitalik Buterin versuchte eine Skriptsprache für die Anwendungsentwicklung in Bitcoin zu implementieren und nachdem das Projekt mit Bitcoin scheiterte, beschrieb er stattdessen 2013 Ethereum in einem Whitepaper

³ Der Computeringenieur erreichte mit seinem Bitcoin Vorgänger B-Money Bekanntheit. Wei Dai formulierte die Konzepte aller modernen Kryptowährungen.

⁴ Beim Mining werden Transaktionen validiert und diese in neue Blöcke aufgenommen. Diese widerum werden der Blockchain angehängt und erreichen somit Finalität. Für diese Arbeit wird der Miner entlohnt. Er erhält eine fixe Entlohnung für das Erstellen des Blocks (2 ETH) + alle aufgenommenen Transaktionen und Smart Contracts.